Comparing version 0.2.2 to 0.3.3
@@ -1,16 +0,1 @@ | ||
var Coco; | ||
(Coco = require('./coco')).require = require; | ||
Coco.eval = function(code, options){ | ||
return (0, eval)(Coco.compile(code, options)); | ||
}; | ||
Coco.run = function(code, options){ | ||
options == null && (options = {}); | ||
return Function(Coco.compile(code, (options.bare = true, options)))(); | ||
}; | ||
if (toString() === '[object BackstagePass]') { | ||
this.EXPORTED_SYMBOLS = ['Coco']; | ||
} | ||
if (typeof window == 'undefined' || window === null) { | ||
return; | ||
} | ||
Coco.load = function(url, options){ | ||
@@ -28,10 +13,6 @@ var xhr; | ||
}; | ||
return xhr.send(null); | ||
xhr.send(null); | ||
return xhr; | ||
}; | ||
if (self.addEventListener) { | ||
addEventListener('DOMContentLoaded', runScripts, false); | ||
} else { | ||
attachEvent('onload', runScripts); | ||
} | ||
function runScripts(){ | ||
Coco.invoke = function(){ | ||
var type, script, _i, _ref, _len; | ||
@@ -50,2 +31,7 @@ type = /^(?:text\/|application\/)?coco$/i; | ||
} | ||
}; | ||
if (this.attachEvent) { | ||
attachEvent('onload', Coco.invoke); | ||
} else { | ||
addEventListener('DOMContentLoaded', Coco.invoke, false); | ||
} |
@@ -1,6 +0,6 @@ | ||
var Coco, lex, parser, fs, path; | ||
(Coco = exports).VERSION = '0.2.2'; | ||
var Coco, lex, parser, nodes, fs, path, _ref; | ||
Coco = exports; | ||
lex = require('./lexer').lex; | ||
parser = require('./parser').parser; | ||
parser.yy = require('./nodes'); | ||
parser.yy = nodes = require('./nodes'); | ||
parser.lexer = { | ||
@@ -20,44 +20,49 @@ lex: function(){ | ||
}; | ||
Coco.VERSION = '0.3.2'; | ||
Coco.compile = function(code, options){ | ||
var that; | ||
try { | ||
return parser.parse(lex(code)).compileRoot(options); | ||
} catch (e) { | ||
if (that = options != null ? options.fileName : void 8) { | ||
e.message = "in " + that + ", " + e.message; | ||
} | ||
throw e; | ||
} | ||
return parser.parse(lex(code)).compileRoot(options); | ||
}; | ||
Coco.nodes = function(it){ | ||
return parser.parse(typeof it == 'string' ? lex(it) : it); | ||
return parser.parse(typeof it === 'string' ? lex(it) : it); | ||
}; | ||
Coco.tokens = lex; | ||
if (!((fs = require('fs')) && (path = require('path')))) { | ||
return; | ||
} | ||
Coco.run = function(code, options){ | ||
var root; | ||
root = module; | ||
while (root.parent) { | ||
root = root.parent; | ||
Coco.lex = function(it){ | ||
return lex(it, { | ||
rewrite: false | ||
}); | ||
}; | ||
(_ref = Coco.nodes).parse = nodes.parse, _ref.fromJSON = nodes.fromJSON; | ||
if ((fs = require('fs')) && (path = require('path'))) { | ||
Coco.run = function(code, options){ | ||
var root, that; | ||
options || (options = {}); | ||
root = module; | ||
while (root.parent) { | ||
root = root.parent; | ||
} | ||
root.filename = process.argv[1] = (that = options.filename) ? fs.realpathSync(that) : '.'; | ||
root.moduleCache && (root.moduleCache = {}); | ||
if (!options.js) { | ||
if (require.extensions || path.extname(root.filename).toLowerCase() !== '.co') { | ||
code = Coco.compile(code, options); | ||
} | ||
} | ||
return root._compile(code, root.filename); | ||
}; | ||
if (require.extensions) { | ||
require.extensions['.co'] = function(module, filename){ | ||
return module._compile(Coco.compile(fs.readFileSync(filename, 'utf8')), filename); | ||
}; | ||
} else if (require.registerExtension) { | ||
require.registerExtension('.co', Coco.compile); | ||
} | ||
root.filename = fs.realpathSync((options != null ? options.fileName : void 8) || '.'); | ||
root.moduleCache && (root.moduleCache = {}); | ||
if (require.extensions || path.extname(root.filename).toLowerCase() !== '.co') { | ||
code = Coco.compile(code, options); | ||
} else { | ||
Coco.run = function(code, options){ | ||
options || (options = {}); | ||
return Function(Coco.compile(code, (options.bare = true, options)))(); | ||
}; | ||
Coco.require = require; | ||
if ("" + this === '[object BackstagePass]') { | ||
this.EXPORTED_SYMBOLS = ['Coco']; | ||
} | ||
return root._compile(code, root.filename); | ||
}; | ||
Coco.eval = function(code, options){ | ||
var __filename, __dirname; | ||
__dirname = path.dirname(__filename = options != null ? options.fileName : void 8); | ||
return eval(Coco.compile(code, options)); | ||
}; | ||
if (require.extensions) { | ||
require.extensions['.co'] = function(module, filename){ | ||
return module._compile(Coco.compile(fs.readFileSync(filename, 'utf8')), filename); | ||
}; | ||
} else if (require.registerExtension) { | ||
require.registerExtension('.co', Coco.compile); | ||
} |
@@ -1,2 +0,3 @@ | ||
var Tasks, Aliases, Flags, printTasks, __slice = [].slice; | ||
#!/usr/bin/env node | ||
var Tasks, Aliases, Flags, Options, __slice = [].slice; | ||
Tasks = { | ||
@@ -9,2 +10,3 @@ __proto__: null | ||
Flags = {}; | ||
Options = {}; | ||
global.Coco = require('./coco'); | ||
@@ -14,10 +16,9 @@ global.fs = require('fs'); | ||
global.task = function(name, description, action){ | ||
var abbr, _ref; | ||
var _ref, _name; | ||
if (!action) { | ||
_ref = [description], action = _ref[0], description = _ref[1]; | ||
_ref = [description, ''], action = _ref[0], description = _ref[1]; | ||
} | ||
abbr = name.split(/\W+/).filter(String).map(function(it){ | ||
Aliases[_name = name.split(/\W+/).filter(String).map(function(it){ | ||
return it[0]; | ||
}).join(''); | ||
Aliases[abbr] || (Aliases[abbr] = name); | ||
}).join('')] || (Aliases[_name] = name); | ||
return Tasks[name] = { | ||
@@ -40,3 +41,3 @@ name: name, | ||
} | ||
return task.action(this); | ||
return task.action(Options); | ||
}; | ||
@@ -51,28 +52,28 @@ global.say = function(it){ | ||
global.dir = fs.readdirSync; | ||
exports.run = function(){ | ||
var args, fileName, _ref; | ||
(function(){ | ||
var args, filename, _ref; | ||
args = process.argv.slice(2); | ||
if ((_ref = args[0]) === '-f' || _ref === '--cokefile') { | ||
fileName = args.splice(0, 2)[1]; | ||
filename = args.splice(0, 2)[1]; | ||
} | ||
return path.exists(fileName || (fileName = 'Cokefile'), function(it){ | ||
var optparse, options; | ||
return path.exists(filename || (filename = 'Cokefile'), function(it){ | ||
if (!it) { | ||
console.error('no "%s" in %s', fileName, process.cwd()); | ||
console.error('no "%s" in %s', filename, process.cwd()); | ||
process.exit(1); | ||
} | ||
Coco.run(slurp(fileName), { | ||
fileName: fileName | ||
require.paths.push(process.cwd()); | ||
Coco.run(slurp(filename), { | ||
filename: filename | ||
}); | ||
optparse = require('./optparse'); | ||
if (!args.length) { | ||
return printTasks(optparse); | ||
Options = require('./optparse')(Flags, args); | ||
if (args.length) { | ||
return Options.$args.forEach(invoke); | ||
} else { | ||
return printTasks(); | ||
} | ||
options = optparse(Flags, args); | ||
return options.$args.forEach(invoke, options); | ||
}); | ||
}; | ||
printTasks = function(optparse){ | ||
var width, pad, name, task, desc, _ref; | ||
say(''); | ||
}()); | ||
function printTasks(){ | ||
var width, pad, name, task, that, _ref; | ||
say('Usage: coke [coke options] [task options] [tasks]\n\nTasks:'); | ||
width = Math.max.apply(Math, Object.keys(Tasks).map(function(it){ | ||
@@ -84,9 +85,8 @@ return it.length; | ||
task = _ref[name]; | ||
desc = task.description ? task.description : ''; | ||
say("coke " + (name + pad).slice(0, width) + " " + desc); | ||
say(" " + (name + pad).slice(0, width) + " " + task.description); | ||
} | ||
if (Flags.length) { | ||
say('\n' + optparse(Flags, [])); | ||
if (that = Options.toString()) { | ||
say('\nTask options:\n' + that); | ||
} | ||
return say('\nCoke options:\n -f, --cokefile FILE use FILE as the Cokefile'); | ||
}; | ||
} |
@@ -1,2 +0,7 @@ | ||
var o, sources, compileScripts, compileScript, compileStdin, watch, writeJs, printTokens, repl, forkNode, help, version, __importAll = function(obj, src){ for (var key in src) obj[key] = src[key]; return obj }, __slice = [].slice, __bind = function(me, fn){ return function(){ return fn.apply(me, arguments) } }; | ||
#!/usr/bin/env node | ||
var o, sources, that, filename, _ref, __importAll = function(obj, src){ for (var key in src) obj[key] = src[key]; return obj }, __slice = [].slice, __import = function(obj, src){ | ||
var own = {}.hasOwnProperty; | ||
for (var key in src) if (own.call(src, key)) obj[key] = src[key]; | ||
return obj; | ||
}, __bind = function(me, fn){ return function(){ return fn.apply(me, arguments) } }; | ||
global.Coco = __importAll(require('./coco'), require('events').EventEmitter.prototype); | ||
@@ -23,3 +28,3 @@ global.fs = require('fs'); | ||
eval: 'compile a string from the command line', | ||
require: ['require a library before executing your script', 'FILE+'], | ||
require: ['require libraries before executing', 'FILE+'], | ||
bare: 'compile without the top-level function wrapper', | ||
@@ -29,43 +34,61 @@ lex: 'print the tokens the lexer produces', | ||
nodes: 'print the parse tree the parser produces', | ||
nodejs: ['pass options through to the "node" binary', 'ARGS+', '-N'], | ||
json: 'print the parse tree as JSON', | ||
nodejs: ['pass options through to the "node" binary', 'ARGS+', 'N'], | ||
version: 'display Coco version', | ||
help: 'display this help message' | ||
}); | ||
if (o.$unknowns.length) { | ||
say("Unrecognized option(s): " + o.$unknowns.join(' ') + "\n"); | ||
help(); | ||
process.exit(1); | ||
} | ||
o.run = !(o.compile || o.print); | ||
o.print || (o.print = o.eval || o.stdin && o.compile); | ||
o.compile || (o.compile = o.output); | ||
o.bare || (o.bare = o.eval && o.run); | ||
sources = o.$args; | ||
exports.run = function(){ | ||
var _ref; | ||
if (o.nodejs) { | ||
return forkNode(); | ||
} | ||
if (o.version) { | ||
return version(); | ||
} | ||
if (o.help) { | ||
return help(); | ||
} | ||
switch (false) { | ||
case !o.nodejs: | ||
forkNode(); | ||
break; | ||
case !o.version: | ||
version(); | ||
break; | ||
case !o.help: | ||
help(); | ||
break; | ||
default: | ||
require.paths.push(process.cwd()); | ||
if (o.interactive) { | ||
return repl(); | ||
if (that = o.require) { | ||
filename = module.filename; | ||
module.filename = '.'; | ||
that.forEach(require); | ||
module.filename = filename; | ||
} | ||
if (o.stdin) { | ||
return compileStdin(); | ||
switch (false) { | ||
case !o.interactive: | ||
repl(); | ||
break; | ||
case !o.stdin: | ||
compileStdin(); | ||
break; | ||
case !o.eval: | ||
compileScript('', sources.join('\n')); | ||
break; | ||
case !sources.length: | ||
(_ref = process.argv).splice.apply(_ref, [2, 9e9].concat(__slice.call(o.run | ||
? sources.splice(1) | ||
: []), __slice.call(o.$literals))); | ||
compileScripts(); | ||
break; | ||
default: | ||
version(); | ||
help(); | ||
repl(); | ||
} | ||
if (o.eval) { | ||
return compileScript('', sources[0]); | ||
} | ||
if (!sources.length) { | ||
return (version(), help(), repl()); | ||
} | ||
(_ref = process.argv).splice.apply(_ref, [2, 9e9].concat(__slice.call((o.run | ||
? sources.splice(1) | ||
: []).concat(o.$literals)))); | ||
return compileScripts(); | ||
}; | ||
compileScripts = function(){ | ||
} | ||
function compileScripts(){ | ||
sources.forEach(function(source){ | ||
return path.exists(source, function(yes){ | ||
yes || die("No such file or directory: " + source); | ||
return path.exists(source, function(it){ | ||
it || die("No such file or directory: " + source); | ||
return walk(source, path.normalize(source), true); | ||
@@ -77,3 +100,3 @@ }); | ||
if (stats.isDirectory()) { | ||
fs.readdir(source, function(e, files){ | ||
return fs.readdir(source, function(e, files){ | ||
return files.forEach(function(it){ | ||
@@ -84,57 +107,74 @@ return walk(path.join(source, it), base); | ||
} else if (top || path.extname(source).toLowerCase() === '.co') { | ||
fs.readFile(source, function(e, buf){ | ||
return compileScript(source, buf.toString(), base); | ||
}); | ||
if (o.watch) { | ||
watch(source, base); | ||
} | ||
return fs.readFile(source, function(e, buf){ | ||
return compileScript(source, buf.toString(), base); | ||
}); | ||
} | ||
}); | ||
} | ||
}; | ||
compileScript = function(file, input, base){ | ||
var options, req, t, _i, _ref, _len; | ||
options = { | ||
fileName: file, | ||
bare: o.bare | ||
} | ||
function compileScript(file, input, base){ | ||
var t, _ref; | ||
t = { | ||
file: file, | ||
input: input, | ||
options: { | ||
filename: file, | ||
bare: !!o.bare | ||
} | ||
}; | ||
if (o.require) { | ||
for (_i = 0, _len = (_ref = o.require).length; _i < _len; ++_i) { | ||
req = _ref[_i]; | ||
require(req[0] === '.' ? fs.realpathSync(req) : req); | ||
} | ||
} | ||
try { | ||
Coco.emit('compile', t = { | ||
file: file, | ||
input: input, | ||
options: options | ||
Coco.emit('lex', t); | ||
t.tokens = Coco.tokens(t.input, { | ||
rewrite: !o.lex | ||
}); | ||
switch (false) { | ||
case !(o.lex || o.tokens): | ||
return printTokens(Coco.tokens(input, { | ||
rewrite: !o.lex | ||
})); | ||
case !o.nodes: | ||
return say(Coco.nodes(input).toString().trim()); | ||
case !o.run: | ||
return Coco.run(input, options); | ||
default: | ||
t.output = Coco.compile(input, options); | ||
Coco.emit('success', t); | ||
switch (false) { | ||
case !o.print: | ||
return say(t.output.trim()); | ||
case !o.compile: | ||
return writeJs(file, t.output, base); | ||
if (o.lex || o.tokens) { | ||
printTokens(t.tokens); | ||
throw 'ok'; | ||
} | ||
Coco.emit('parse', t); | ||
t.nodes = Coco.nodes(t.tokens); | ||
if (o.nodes) { | ||
say(t.nodes.toString().trim()); | ||
throw 'ok'; | ||
} | ||
if (o.json) { | ||
say(t.nodes.stringify(1)); | ||
throw 'ok'; | ||
} | ||
Coco.emit('compile', t); | ||
t.output = t.nodes.compileRoot(t.options); | ||
if (o.run) { | ||
Coco.emit('run', t); | ||
if (o.eval) { | ||
console.log((0, eval)(t.output)); | ||
} else { | ||
Coco.run(t.output, (_ref = t.options, _ref.js = true, _ref)); | ||
} | ||
} else { | ||
Coco.emit('write', t); | ||
if (o.print) { | ||
say(t.output.trim()); | ||
} else { | ||
writeJs(t.file, t.output, base); | ||
} | ||
} | ||
} catch (e) { | ||
Coco.emit('failure', e, t); | ||
if (!Coco.listeners('failure').length) { | ||
return (o.watch ? warn : die)((typeof e != 'undefined' && e !== null ? e.stack : void 8) || e); | ||
if (e !== 'ok') { | ||
if (Coco.listeners('failure').length) { | ||
Coco.emit('failure', e, t); | ||
} else { | ||
if (file) { | ||
warn("Failed at: " + file + "\n"); | ||
} | ||
(o.watch ? warn : die)((typeof e != 'undefined' && e !== null ? e.stack : void 8) || e); | ||
} | ||
return; | ||
} | ||
} | ||
}; | ||
compileStdin = function(){ | ||
return Coco.emit('success', t); | ||
} | ||
function compileStdin(){ | ||
var code, stdin; | ||
@@ -151,4 +191,4 @@ code = ''; | ||
}); | ||
}; | ||
watch = function(source, base){ | ||
} | ||
function watch(source, base){ | ||
return fs.watchFile(source, { | ||
@@ -161,12 +201,10 @@ persistent: true, | ||
} | ||
return fs.readFile(source, function(err, code){ | ||
if (err) { | ||
die(err.stack || err); | ||
} | ||
return fs.readFile(source, function(e, code){ | ||
e && die(e.stack || e); | ||
return compileScript(source, code.toString(), base); | ||
}); | ||
}); | ||
}; | ||
writeJs = function(source, js, base){ | ||
var filename, srcDir, that, dir, jsPath, compile; | ||
} | ||
function writeJs(source, js, base){ | ||
var filename, srcDir, that, dir, jsPath; | ||
filename = path.basename(source, path.extname(source)) + '.js'; | ||
@@ -176,7 +214,8 @@ srcDir = path.dirname(source); | ||
jsPath = path.join(dir, filename); | ||
compile = function(){ | ||
return fs.writeFile(jsPath, js || ' ', function(err){ | ||
if (err) { | ||
return warn(err); | ||
} else if (o.compile && o.watch) { | ||
function compile(){ | ||
return fs.writeFile(jsPath, js || '\n', function(e){ | ||
if (e) { | ||
return warn(e); | ||
} | ||
if (o.compile && o.watch) { | ||
return (function(){ | ||
@@ -191,5 +230,5 @@ try { | ||
}); | ||
}; | ||
return path.exists(dir, function(exists){ | ||
if (exists) { | ||
} | ||
return path.exists(dir, function(it){ | ||
if (it) { | ||
return compile(); | ||
@@ -200,4 +239,4 @@ } else { | ||
}); | ||
}; | ||
printTokens = function(tokens){ | ||
} | ||
function printTokens(tokens){ | ||
var lines, tag, val, lno, l, _i, _len, _ref, _results = []; | ||
@@ -217,21 +256,32 @@ lines = []; | ||
return _results; | ||
}; | ||
repl = function(){ | ||
var stdin, repl; | ||
global.__defineGetter__('quit', function(){ | ||
return process.exit(0); | ||
}); | ||
repl = require('readline').createInterface(stdin = process.openStdin()); | ||
stdin.on('data', __bind(repl, repl.write)); | ||
} | ||
function repl(){ | ||
var repl, Script, context, readline, stdin, buf, _ref; | ||
module.filename = process.cwd() + '/repl'; | ||
Script = process.binding('evals').Script; | ||
context = (_ref = Script.createContext(), __import(_ref, global), _ref.module = module, _ref.require = require, _ref); | ||
readline = require('readline'); | ||
stdin = process.openStdin(); | ||
buf = ''; | ||
if (readline.createInterface.length < 3) { | ||
repl = readline.createInterface(stdin); | ||
stdin.on('data', __bind(repl, repl.write)); | ||
} else { | ||
repl = readline.createInterface(stdin, process.stdout); | ||
} | ||
repl.on('close', __bind(stdin, stdin.destroy)); | ||
repl.on('line', function(it){ | ||
var code, _; | ||
code = buf + '\n' + it; | ||
if ('\\' === code.slice(-1)) { | ||
buf = code.slice(0, -1); | ||
return; | ||
} | ||
buf = ''; | ||
try { | ||
global._ = Coco.eval("" + it, { | ||
_ = Script.runInContext(Coco.compile(code.slice(1), { | ||
bare: true, | ||
globals: true, | ||
fileName: 'repl' | ||
}); | ||
if (_ !== void 8) { | ||
console.dir(_); | ||
} | ||
repl: true | ||
}), context); | ||
_ === void 8 || console.dir(context._ = _); | ||
} catch (e) { | ||
@@ -243,13 +293,16 @@ say(e); | ||
process.on('uncaughtException', function(it){ | ||
return say('\n' + ((typeof it != 'undefined' && it !== null ? it.stack : void 8) || it)); | ||
return say('\n' + ((it != null ? it.stack : void 8) || it)); | ||
}); | ||
__defineGetter__('quit', function(){ | ||
return process.exit(0); | ||
}); | ||
repl.setPrompt('coco> '); | ||
return repl.prompt(); | ||
}; | ||
forkNode = function(){ | ||
var args, i, arg; | ||
} | ||
function forkNode(){ | ||
var args, i, that; | ||
args = process.argv.slice(1); | ||
i = 0; | ||
while (arg = args[++i]) { | ||
if (arg === '-N' || arg === '--nodejs') { | ||
while (that = args[++i]) { | ||
if (that === '-N' || that === '--nodejs') { | ||
args.splice(i--, 2); | ||
@@ -263,8 +316,8 @@ } | ||
}); | ||
}; | ||
help = function(){ | ||
return say('Usage: coco [options] [files]\n\n' + o); | ||
}; | ||
version = function(){ | ||
} | ||
function help(){ | ||
return say("Usage: coco [options] [files] [arguments]\n\nOptions:\n" + o); | ||
} | ||
function version(){ | ||
return say("Coco " + Coco.VERSION); | ||
}; | ||
} |
@@ -1,48 +0,44 @@ | ||
var unwrap, yy, o, bnf, operators, name, alternatives, alt, token, tokens; | ||
var unwrap, o, bnf, operators, name, alternatives, alt, token, tokens; | ||
unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/; | ||
yy = /\b(?:(?!Er)[A-Z][\w.]+|mix\b)/g; | ||
o = function(patterns, action, options){ | ||
patterns = patterns.trim().split(/\s+/); | ||
action && (action = unwrap.exec(action)[1].replace(yy, 'yy.$&')); | ||
return [patterns, action != null ? action : '$1', options]; | ||
action && (action = unwrap.exec(action)[1].replace(/\b(?!Er)[A-Z][\w.]*/g, 'yy.$&').replace(/\.L\(/g, '$&yylineno, ')); | ||
return [patterns, action || '', options]; | ||
}; | ||
bnf = { | ||
Assignable: [o('SimpleAssignable'), o('Array'), o('Object')], | ||
Assignable: [ | ||
o('SimpleAssignable'), o('[ ArgList OptComma ]', function(){ | ||
return L(Arr($2)); | ||
}), o('{ Properties OptComma }', function(){ | ||
return L(Obj($2)); | ||
}) | ||
], | ||
Value: [ | ||
o('Assignable', function(){ | ||
return Value($1); | ||
}), o('Primitive', function(){ | ||
return Value($1); | ||
}), o('STRNUM', function(){ | ||
return Value(L(Literal($1))); | ||
}), o('LITERAL', function(){ | ||
return Value(L(Literal($1))); | ||
}), o('Parenthetical', function(){ | ||
return Value($1); | ||
}), o('THIS', function(){ | ||
return Value(Literal('this', true)); | ||
}), o('Value CALL( ArgList OptComma )CALL', function(){ | ||
return Value(Call($1, $3, $2)); | ||
}), o('Value CALL( ... )CALL', function(){ | ||
return Value(Call($1, null, $2)); | ||
return Value(L(Call($1, $3, $2))); | ||
}) | ||
], | ||
Primitive: [ | ||
o('STRNUM', function(){ | ||
return Literal($1); | ||
}), o('LITERAL', function(){ | ||
return Literal($1, true); | ||
}) | ||
], | ||
SimpleAssignable: [ | ||
o('IDENTIFIER', function(){ | ||
return Literal($1); | ||
}), o('ThisProperty'), o('Value DOT IDENTIFIER', function(){ | ||
return $1.add(Index(Key($3), $2)); | ||
return L(Var($1)); | ||
}), o('Value DOT IDENTIFIER', function(){ | ||
return $1.add(Index(L(Key($3)), $2)); | ||
}), o('Value DOT STRNUM', function(){ | ||
return $1.add(Index(Literal($3), $2)); | ||
return $1.add(Index(L(Literal($3)), $2)); | ||
}), o('Value DOT Parenthetical', function(){ | ||
return $1.add(Index($3.it, $2)); | ||
}), o('Value DOT [ ArgList OptComma ]', function(){ | ||
return $1.add(Index($4, $2)); | ||
}), o('Value CLONE Object', function(){ | ||
return new Clone($1.unwrap(), $3); | ||
return $1.add(L(Index($4, $2))); | ||
}), o('Value CLONE { Properties OptComma }', function(){ | ||
return new Clone($1.unwrap(), $4); | ||
}), o('SUPER', function(){ | ||
return new Super; | ||
return L(new Super); | ||
}) | ||
@@ -55,55 +51,54 @@ ], | ||
return Assign($1, $3, $2); | ||
}), o('Expression +- Expression', function(){ | ||
}), o('CREMENT SimpleAssignable', function(){ | ||
return Op($1, $2); | ||
}), o('SimpleAssignable CREMENT', function(){ | ||
return Op($2, $1, null, true); | ||
}), o('UNARY Expression', function(){ | ||
return ($1 === '!' | ||
? $2.invert() | ||
: Op($1, $2)); | ||
}), o('+- Expression', function(){ | ||
return Op($1, $2); | ||
}, { | ||
prec: 'UNARY' | ||
}), o('Expression +- Expression', function(){ | ||
return Op($2, $1, $3); | ||
}), o('Expression MATH Expression', function(){ | ||
}), o('Expression MATH Expression', function(){ | ||
return Op($2, $1, $3); | ||
}), o('Expression SHIFT Expression', function(){ | ||
}), o('Expression SHIFT Expression', function(){ | ||
return Op($2, $1, $3); | ||
}), o('Expression COMPARE Expression', function(){ | ||
}), o('Expression COMPARE Expression', function(){ | ||
return Op($2, $1, $3); | ||
}), o('Expression LOGIC Expression', function(){ | ||
}), o('Expression BITWISE Expression', function(){ | ||
return Op($2, $1, $3); | ||
}), o('Expression IMPORT Expression', function(){ | ||
}), o('Expression LOGIC Expression', function(){ | ||
return Op($2, $1, $3); | ||
}), o('Expression RELATION Expression', function(){ | ||
return ('!' === $2.charAt(0) | ||
? Op($2.slice(1), $1, $3).invert() | ||
: Op($2, $1, $3)); | ||
}), o('Expression IMPORT Expression', function(){ | ||
return Import($1, $3, $2 === '<<<<'); | ||
}), o('Expression RELATION Expression', function(){ | ||
return $2.charAt(0) === '!' | ||
? Op($2.slice(1), $1, $3).invert() | ||
: Op($2, $1, $3); | ||
}), o('UNARY Expression', function(){ | ||
return Op($1, $2); | ||
}), o('+- Expression', function(){ | ||
return Op($1, $2); | ||
}, { | ||
prec: 'UNARY' | ||
}), o('Expression ?', function(){ | ||
return Existence($1); | ||
}), o('CREMENT SimpleAssignable', function(){ | ||
return Op($1, $2); | ||
}), o('SimpleAssignable CREMENT', function(){ | ||
return Op($2, $1, null, true); | ||
}), o('Fun'), o('FUNCTION Fun', function(){ | ||
return mix($2, { | ||
statement: true | ||
}); | ||
}), o('FUNCTION IDENTIFIER Fun', function(){ | ||
return mix($3, { | ||
statement: true, | ||
}), o('Function'), o('FUNCTION Function', function(){ | ||
return $2.named($1); | ||
}), o('IfBlock'), o('IfBlock ELSE Block', function(){ | ||
return $1.addElse($3); | ||
}), o('Expression POST_IF Expression', function(){ | ||
return L(If($3, $1, { | ||
name: $2 | ||
}); | ||
}), o('IfBlock'), o('Expression POST_IF Expression', function(){ | ||
return If($3, $1, { | ||
name: $2 | ||
}); | ||
})); | ||
}), o('LoopHead Block', function(){ | ||
return $1.addBody($2); | ||
}), o('Expression LoopHead', function(){ | ||
return $2.addBody(Lines($1)); | ||
return $2.addBody(Block($1)); | ||
}), o('RETURN Expression', function(){ | ||
return Return($2); | ||
}), o('RETURN', function(){ | ||
return Return(); | ||
}), o('STATEMENT', function(){ | ||
return new Statement($1); | ||
}), o('THROW Expression', function(){ | ||
return new Throw($2); | ||
}), o('STATEMENT', function(){ | ||
return L(new Statement($1)); | ||
}), o('RETURN', function(){ | ||
return L(Return()); | ||
}), o('SWITCH Expression Cases', function(){ | ||
@@ -133,11 +128,13 @@ return new Switch($2, $3); | ||
return new Class($2, $3, $4); | ||
}), o('SimpleAssignable EXTENDS Expression', function(){ | ||
return Util.Extends($1, $3); | ||
}), o('Value EXTENDS Expression', function(){ | ||
return Util.Extends($1.unwrap(), $3); | ||
}) | ||
], | ||
Line: [ | ||
o('Expression'), o('COMMENT', function(){ | ||
return Comment($1); | ||
o('Expression'), o('PARAM( ArgList OptComma )PARAM BACKCALL Expression', function(){ | ||
return Call.back($2, $5, $6); | ||
}), o('COMMENT', function(){ | ||
return L(JS($1, true, true)); | ||
}), o('...', function(){ | ||
return new Throw(Literal("Error('stub code executed')")); | ||
return L(new Throw(JS("Error('unimplemented')"))); | ||
}) | ||
@@ -147,11 +144,15 @@ ], | ||
o('Line', function(){ | ||
return Lines($1); | ||
return Block($1); | ||
}), o('Body TERMINATOR Line', function(){ | ||
return $1.add($3); | ||
}), o('Body Block', function(){ | ||
return $1.add($2); | ||
}), o('Body TERMINATOR') | ||
], | ||
OptComma: [o('', 0), o(',', 0)], | ||
OptComma: [o(''), o(',')], | ||
Arg: [ | ||
o('Expression'), o('... Expression', function(){ | ||
return Splat($2); | ||
return L(Splat($2)); | ||
}), o('...', function(){ | ||
return L(Splat(Arr())); | ||
}) | ||
@@ -170,25 +171,9 @@ ], | ||
return $1.concat($4); | ||
}), o('ArgSeq'), o('ArgList , ArgSeq', function(){ | ||
return $1.concat($3); | ||
}), o('ArgList OptComma TERMINATOR ArgSeq', function(){ | ||
return $1.concat($4); | ||
}) | ||
], | ||
ArgSeq: [ | ||
o('Primitive Primitive', function(){ | ||
return [$1, $2]; | ||
}), o('ArgSeq Primitive', function(){ | ||
return $1.concat($2); | ||
}) | ||
], | ||
ThisProperty: [ | ||
o('THISPROP', function(){ | ||
return Value(Literal('this'), [Index(Key($1))], true); | ||
}) | ||
], | ||
Parenthetical: [ | ||
o('( Body )', function(){ | ||
return Parens($2.unwrap()); | ||
return L(Parens($2.unwrap())); | ||
}), o('( INDENT Body DEDENT )', function(){ | ||
return Parens($3.unwrap()); | ||
return L(Parens($3.unwrap())); | ||
}) | ||
@@ -200,37 +185,40 @@ ], | ||
}), o('INDENT DEDENT', function(){ | ||
return Lines(); | ||
return Block(); | ||
}) | ||
], | ||
Fun: [ | ||
Function: [ | ||
o('PARAM( ArgList OptComma )PARAM FUNC_ARROW Block', function(){ | ||
return Fun($2, $6, $5); | ||
return L(Fun($2, $6, $5)); | ||
}), o('FUNC_ARROW Block', function(){ | ||
return Fun([], $2, $1); | ||
return L(Fun([], $2, $1)); | ||
}) | ||
], | ||
Array: [ | ||
o('[ ArgList OptComma ]', function(){ | ||
return Arr($2); | ||
}) | ||
], | ||
Key: [ | ||
KeyBase: [ | ||
o('IDENTIFIER', function(){ | ||
return Literal($1); | ||
return L(Key($1)); | ||
}), o('STRNUM', function(){ | ||
return Literal($1); | ||
}), o('Parenthetical'), o('ThisProperty') | ||
return L(Literal($1)); | ||
}) | ||
], | ||
Key: [o('KeyBase'), o('Parenthetical')], | ||
KeyValue: [ | ||
o('Key'), o('LITERAL DOT KeyBase', function(){ | ||
return Assign($3, Value(Literal($1), [Index($3, $2)]), ':'); | ||
}), o('Key DOT KeyBase', function(){ | ||
return Assign($3, Value($1, [Index($3, $2)]), ':'); | ||
}) | ||
], | ||
Property: [ | ||
o('Key : Expression', function(){ | ||
return Assign($1.asKey(), $3, ':'); | ||
}), o('Key : INDENT Expression DEDENT', function(){ | ||
return Assign($1.asKey(), $4, ':'); | ||
}), o('Key'), o('... Key', function(){ | ||
return Splat($2); | ||
}), o('+- Key', function(){ | ||
o('Key : Expression', function(){ | ||
return Assign($1, $3, ':'); | ||
}), o('Key : Block', function(){ | ||
return Assign($1, $3.unwrap().asArr(), ':'); | ||
}), o('+- Key', function(){ | ||
return Assign($2.asKey(), Literal($1 === '+'), ':'); | ||
}), o('Key LOGIC Expression', function(){ | ||
}), o('KeyValue'), o('KeyValue LOGIC Expression', function(){ | ||
return Op($2, $1, $3); | ||
}), o('... Expression', function(){ | ||
return Splat($2); | ||
}), o('COMMENT', function(){ | ||
return Comment($1); | ||
return L(JS($1, true, true)); | ||
}) | ||
@@ -249,20 +237,4 @@ ], | ||
return $1.concat($4); | ||
}), o('KeySeq'), o('Properties , KeySeq', function(){ | ||
return $1.concat($3); | ||
}), o('Properties OptComma TERMINATOR KeySeq', function(){ | ||
return $1.concat($4); | ||
}) | ||
], | ||
KeySeq: [ | ||
o('STRNUM STRNUM', function(){ | ||
return [Literal($1), Literal($2)]; | ||
}), o('KeySeq STRNUM', function(){ | ||
return $1.concat(Literal($2)); | ||
}) | ||
], | ||
Object: [ | ||
o('{ Properties OptComma }', function(){ | ||
return Obj($2); | ||
}) | ||
], | ||
IfBlock: [ | ||
@@ -277,4 +249,2 @@ o('IF Expression Block', function(){ | ||
})); | ||
}), o('IfBlock ELSE Block', function(){ | ||
return $1.addElse($3); | ||
}) | ||
@@ -284,3 +254,3 @@ ], | ||
o('FOR Assignable FOROF Expression', function(){ | ||
return mix(new For, { | ||
return new For({ | ||
name: $2, | ||
@@ -291,3 +261,3 @@ index: $3, | ||
}), o('FOR Assignable FOROF Expression BY Expression', function(){ | ||
return mix(new For, { | ||
return new For({ | ||
name: $2, | ||
@@ -299,3 +269,3 @@ index: $3, | ||
}), o('FOR IDENTIFIER FORIN Expression', function(){ | ||
return mix(new For, { | ||
return new For({ | ||
object: true, | ||
@@ -307,3 +277,3 @@ own: !$1, | ||
}), o('FOR IDENTIFIER , Assignable FORIN Expression', function(){ | ||
return mix(new For, { | ||
return new For({ | ||
object: true, | ||
@@ -316,3 +286,3 @@ own: !$1, | ||
}), o('FOR IDENTIFIER FROM Expression', function(){ | ||
return mix(new For, { | ||
return new For({ | ||
index: $2, | ||
@@ -324,3 +294,3 @@ from: Literal(0), | ||
}), o('FOR IDENTIFIER FROM Expression TO Expression', function(){ | ||
return mix(new For, { | ||
return new For({ | ||
index: $2, | ||
@@ -332,3 +302,3 @@ from: $4, | ||
}), o('FOR IDENTIFIER FROM Expression TO Expression BY Expression', function(){ | ||
return mix(new For, { | ||
return new For({ | ||
index: $2, | ||
@@ -343,3 +313,3 @@ from: $4, | ||
}), o('FOR EVER', function(){ | ||
return new While; | ||
return L(new While); | ||
}) | ||
@@ -362,8 +332,10 @@ ], | ||
Root: [ | ||
o('Body'), o('Block TERMINATOR'), o('', function(){ | ||
return Lines(); | ||
o('Body'), o('Block TERMINATOR'), o('Block TERMINATOR Body', function(){ | ||
return $1.add($3); | ||
}), o('', function(){ | ||
return Block(); | ||
}) | ||
] | ||
}; | ||
operators = [['nonassoc', 'CREMENT'], ['left', '?'], ['right', 'UNARY'], ['left', 'MATH'], ['left', '+-'], ['left', 'SHIFT', 'IMPORT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'LOGIC'], ['right', ':', 'ASSIGN', 'RETURN', 'THROW', 'EXTENDS', 'INDENT'], ['right', 'IF', 'ELSE', 'SWITCH', 'CASE', 'DEFAULT', 'CLASS', 'FORIN', 'FOROF', 'FROM', 'TO', 'BY'], ['left', 'POST_IF', 'FOR', 'WHILE']].reverse(); | ||
operators = [['nonassoc', 'CREMENT'], ['left', '?'], ['right', 'UNARY'], ['left', 'MATH'], ['left', '+-'], ['left', 'SHIFT', 'IMPORT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'BITWISE'], ['left', 'LOGIC'], ['right', ':', 'ASSIGN', 'RETURN', 'THROW', 'EXTENDS', 'INDENT'], ['right', 'IF', 'ELSE', 'SWITCH', 'CASE', 'DEFAULT', 'CLASS', 'FORIN', 'FOROF', 'FROM', 'TO', 'BY'], ['left', 'POST_IF', 'FOR', 'WHILE']].reverse(); | ||
tokens = (function(){ | ||
@@ -375,3 +347,7 @@ var _ref, _i, _ref2, _len, _j, _ref3, _len2, _results = []; | ||
alt = _ref2[_i]; | ||
alt[1] = "" + (name === 'Root' ? 'return' : '$$ =') + " " + alt[1] + ";"; | ||
if (name === 'Root') { | ||
alt[1] = "return " + (alt[1] || '$$'); | ||
} else { | ||
alt[1] && (alt[1] = "$$ = " + alt[1] + ";"); | ||
} | ||
for (_j = 0, _len2 = (_ref3 = alt[0]).length; _j < _len2; ++_j) { | ||
@@ -386,4 +362,3 @@ token = _ref3[_j]; | ||
return _results; | ||
}()); | ||
tokens = tokens.join(' '); | ||
}()).join(' '); | ||
exports.parser = new (require('jison')).Parser({ | ||
@@ -390,0 +365,0 @@ bnf: bnf, |
568
lib/lexer.js
@@ -1,2 +0,2 @@ | ||
var string, untabify, JS_KEYWORDS, COCO_KEYWORDS, COCO_ALIASES, RESERVED, FORBIDDEN, IDENTIFIER, NUMBER, SYMBOL, SPACE, MULTIDENT, SIMPLESTR, JSTOKEN, REGEX, HEREGEX, HEREGEX_OMIT, MULTILINER, LINE_CONTINUER, __clone = function(it){ | ||
var rewrite, able, string, detab, unlines, enlines, JS_KEYWORDS, COCO_ALIASES, RESERVED, IDENTIFIER, NUMBER, SYMBOL, SPACE, MULTIDENT, SIMPLESTR, JSTOKEN, WORD, REGEX, HEREGEX, HEREGEX_OMIT, LINE_CONTINUER, _ref, __clone = function(it){ | ||
function fn(){ if (this.__proto__ !== it) this.__proto__ = it } | ||
@@ -7,2 +7,3 @@ return fn.prototype = it, new fn; | ||
}; | ||
_ref = require('./rewriter'), rewrite = _ref.rewrite, able = _ref.able; | ||
exports.lex = function(code, options){ | ||
@@ -14,7 +15,7 @@ return __clone(exports).tokenize(code || '', options || {}); | ||
code = code.replace(/\r/g, '').replace(/\s+$/, ''); | ||
this.tokens = [this.last = ['DUMMY', '', 0]]; | ||
this.tokens = [this.last = ['TERMINATOR', '', 0]]; | ||
this.line = o.line | 0; | ||
this.indent = this.indebt = this.dedebt = 0; | ||
this.indents = []; | ||
if (/^[^\n\S]+(?!#(?!##[^#]))\S/.test(code)) { | ||
if (/^[^\n\S]+[^\s#]/.test(code)) { | ||
code = '\n' + code; | ||
@@ -26,2 +27,3 @@ --this.line; | ||
case ' ': | ||
case '#': | ||
i = this.spaceToken(code); | ||
@@ -32,2 +34,5 @@ break; | ||
break; | ||
case '\\': | ||
i = this.backslashToken(code); | ||
break; | ||
case '\'': | ||
@@ -40,14 +45,11 @@ i = this.heredocToken(code, '\'') || this.singleStringToken(code); | ||
case '<': | ||
i = '[' === code.charAt(1) | ||
? this.wordsToken(code) | ||
: this.literalToken(code); | ||
i = this['[' === code.charAt(1) ? 'wordsToken' : 'literalToken'](code); | ||
break; | ||
case '/': | ||
i = '//' === code.substr(1, 2) | ||
? this.heregexToken(code) | ||
: this.regexToken(code) || this.literalToken(code); | ||
i = '*' === code.charAt(1) | ||
? this.commentToken(code) | ||
: '//' === code.substr(1, 2) | ||
? this.heregexToken(code) | ||
: this.regexToken(code) || this.literalToken(code); | ||
break; | ||
case '#': | ||
i = this.spaceToken(code) || this.commentToken(code); | ||
break; | ||
case '`': | ||
@@ -63,3 +65,3 @@ i = this.jsToken(code); | ||
if (o.rewrite != 0) { | ||
require('./rewriter').rewrite(this.tokens); | ||
rewrite(this.tokens); | ||
} | ||
@@ -69,12 +71,13 @@ return this.tokens; | ||
exports.identifierToken = function(it){ | ||
var match, id, at, tag, input, colon, prev, forcedIdentifier, alias, _ref, _ref2; | ||
var match, last, id, tag, colon, _ref, _ref2; | ||
if (!(match = IDENTIFIER.exec(it))) { | ||
return 0; | ||
} | ||
last = this.last; | ||
switch (id = match[1]) { | ||
case 'own': | ||
if (!(this.last[0] === 'FOR' && this.last[1])) { | ||
if (!(last[0] === 'FOR' && last[1])) { | ||
break; | ||
} | ||
this.last[1] = ''; | ||
last[1] = ''; | ||
return id.length; | ||
@@ -89,3 +92,3 @@ case 'from': | ||
case 'ever': | ||
if (this.last[0] !== 'FOR') { | ||
if (last[0] !== 'FOR') { | ||
break; | ||
@@ -99,8 +102,7 @@ } | ||
this.seenFrom = false; | ||
this.seenRange = true; | ||
this.seenTo = true; | ||
return this.token('TO', id).length; | ||
} else if (this.last[0] === 'STRNUM' && /^[-+\d.]/.test(this.last[1])) { | ||
_ref = this.last; | ||
_ref[0] = 'RANGE'; | ||
_ref.op = id; | ||
} else if (last[0] === 'STRNUM' && /^[-+\d.]/.test(last[1])) { | ||
last[0] = 'RANGE'; | ||
last.op = id; | ||
return id.length; | ||
@@ -110,7 +112,7 @@ } | ||
case 'by': | ||
if (this.seenRange) { | ||
this.seenRange = false; | ||
if (this.seenTo) { | ||
this.seenTo = false; | ||
return this.token('BY', id).length; | ||
} else if (this.last[0] === 'RANGE' && this.last.to) { | ||
this.last.by = true; | ||
} else if (last[0] === 'RANGE' && last.to) { | ||
last.by = true; | ||
return id.length; | ||
@@ -120,18 +122,19 @@ } | ||
case 'all': | ||
if (!(this.last[0] === 'IMPORT' && this.last[1] === '<<<')) { | ||
if (!(last[0] === 'IMPORT' && last[1] === '<<<')) { | ||
break; | ||
} | ||
this.last[1] += '<'; | ||
last[1] += '<'; | ||
return id.length; | ||
} | ||
tag = (at = id.charAt(0) === '@') ? (id = id.slice(1), 'THISPROP') : 'IDENTIFIER'; | ||
input = match[0], colon = match[2]; | ||
forcedIdentifier = at || colon || (!(prev = this.last).spaced && prev[1].colon2 | ||
? this.token('DOT', '.') | ||
: prev[0] === 'DOT'); | ||
if (forcedIdentifier) { | ||
if (__indexOf.call(FORBIDDEN, id) >= 0) { | ||
tag = 'IDENTIFIER'; | ||
colon = match[2]; | ||
if (colon || last[0] === 'DOT' || this.able() && !this.token('DOT', '')) { | ||
if (__indexOf.call(JS_KEYWORDS, id) >= 0 || __indexOf.call(RESERVED, id) >= 0) { | ||
(id = new String(id)).reserved = true; | ||
} | ||
} else if (__indexOf.call(COCO_KEYWORDS, id) >= 0) { | ||
} else if (id === 'this' || id === 'eval') { | ||
this.token('LITERAL', id); | ||
this.last.callable = true; | ||
return id.length; | ||
} else if (__indexOf.call(JS_KEYWORDS, id) >= 0 || (id === 'then' || id === 'of' || id === 'arguments')) { | ||
switch (tag = id.toUpperCase()) { | ||
@@ -142,16 +145,15 @@ case 'FOR': | ||
case 'THEN': | ||
this.seenFrom = this.seenRange = false; | ||
this.seenFrom = this.seenTo = false; | ||
break; | ||
case 'CATCH': | ||
id = ''; | ||
break; | ||
case 'IMPORT': | ||
id = '<<<'; | ||
break; | ||
case 'UNLESS': | ||
tag = 'IF'; | ||
case 'TRUE': | ||
case 'FALSE': | ||
case 'NULL': | ||
case 'VOID': | ||
case 'ARGUMENTS': | ||
case 'DEBUGGER': | ||
tag = 'LITERAL'; | ||
break; | ||
case 'UNTIL': | ||
tag = 'WHILE'; | ||
break; | ||
case 'NEW': | ||
@@ -163,13 +165,10 @@ case 'DO': | ||
break; | ||
case 'TRUE': | ||
case 'FALSE': | ||
case 'NULL': | ||
case 'VOID': | ||
tag = 'LITERAL'; | ||
break; | ||
case 'BREAK': | ||
case 'CONTINUE': | ||
case 'DEBUGGER': | ||
tag = 'STATEMENT'; | ||
break; | ||
case 'CATCH': | ||
case 'FUNCTION': | ||
id = ''; | ||
break; | ||
case 'IN': | ||
@@ -180,4 +179,4 @@ case 'OF': | ||
if (tag === 'OF') { | ||
this.seenRange = true; | ||
id = prev[0] === 'IDENTIFIER' && (_ref = this.tokens)[_ref.length - 2][0] === ',' && (this.tokens.splice(-2, 2), prev[1]); | ||
this.seenTo = true; | ||
id = last[0] === 'IDENTIFIER' && (_ref = this.tokens)[_ref.length - 2][0] === ',' && (this.tokens.splice(-2, 2), last[1]); | ||
} | ||
@@ -188,3 +187,3 @@ this.seenFor = false; | ||
} | ||
if (prev[1] === '!') { | ||
if (last[1] === '!') { | ||
this.tokens.pop(); | ||
@@ -195,24 +194,38 @@ id = '!' + id; | ||
} | ||
} else if (alias = COCO_ALIASES.hasOwnProperty(id)) { | ||
if (id === 'not' && prev.alias && prev[1] === '===') { | ||
prev[1] = '!=='; | ||
} else { | ||
switch (id) { | ||
case 'and': | ||
case 'or': | ||
case 'is': | ||
case 'not': | ||
if (id === 'not' && last.alias && last[1] === '===') { | ||
last[1] = '!=='; | ||
return id.length; | ||
} | ||
this.token.apply(this, COCO_ALIASES[id]); | ||
this.last.alias = true; | ||
return id.length; | ||
case 'unless': | ||
tag = 'IF'; | ||
break; | ||
case 'until': | ||
tag = 'WHILE'; | ||
break; | ||
default: | ||
if (__indexOf.call(RESERVED, id) >= 0) { | ||
this.carp("reserved word \"" + id + "\""); | ||
} | ||
if (!last[1] && ((_ref = last[0]) === 'CATCH' || _ref === 'FUNCTION')) { | ||
return (last[1] = id).length; | ||
} | ||
} | ||
_ref = COCO_ALIASES[id], tag = _ref[0], id = _ref[1]; | ||
} else if (__indexOf.call(RESERVED, id) >= 0) { | ||
this.carp("reserved word \"" + id + "\""); | ||
} else if (prev[0] === 'CATCH' && !prev[1]) { | ||
return (prev[1] = id).length; | ||
} | ||
this.token(tag, id); | ||
if (alias) { | ||
this.last.alias = true; | ||
} | ||
if (colon) { | ||
this.token(':', ':'); | ||
} | ||
return input.length; | ||
return match[0].length; | ||
}; | ||
exports.numberToken = function(it){ | ||
var match, num, last, radix, rnum, _ref; | ||
var match, num, last, radix, rnum, sign, _ref; | ||
if (!(match = NUMBER.exec(it))) { | ||
@@ -225,5 +238,6 @@ return 0; | ||
case '.': | ||
if (this.callable() || ((_ref = last[0]) === '}' || _ref === 'LITERAL' || _ref === 'STRNUM')) { | ||
if (this.able()) { | ||
this.token('DOT', '.'); | ||
this.token('STRNUM', num.slice(1)); | ||
this.last.callable = true; | ||
return match[0].length; | ||
@@ -234,3 +248,3 @@ } | ||
if ((_ref = num.charAt(1)) !== '' && _ref !== 'x' && _ref !== '.') { | ||
this.carp("octal literal " + num + " is deprecated"); | ||
this.carp("deprecated octal literal " + num); | ||
} | ||
@@ -247,3 +261,3 @@ } | ||
} | ||
if (last[0] === '+-' && !last.spaced) { | ||
if (sign = last[0] === '+-' && !last.spaced) { | ||
num = last[1] + num; | ||
@@ -255,4 +269,6 @@ this.tokens.pop(); | ||
last[last.to ? 'by' : 'to'] = num; | ||
} else if (sign) { | ||
this.token('STRNUM', num); | ||
} else { | ||
this.token('STRNUM', num); | ||
this.strnum(num); | ||
} | ||
@@ -266,3 +282,3 @@ return match[0].length; | ||
} | ||
this.token('STRNUM', (str = str[0]).replace(MULTILINER, '\\\n')); | ||
this.strnum(unlines(str = str[0])); | ||
return this.countLines(str).length; | ||
@@ -274,5 +290,5 @@ }; | ||
if (0 < str.indexOf('#{', 1)) { | ||
this.interpolateString(str.slice(1, -1), ''); | ||
this.interpolate(str.slice(1, -1), unlines); | ||
} else { | ||
this.token('STRNUM', str.replace(MULTILINER, '')); | ||
this.strnum(unlines(str)); | ||
} | ||
@@ -282,3 +298,3 @@ return this.countLines(str).length; | ||
exports.heredocToken = function(code, q){ | ||
var end, txt, doc, lnl, tabs, dent, m, len; | ||
var end, txt, doc, lnl, tabs, dent, that, len; | ||
if (!(code.slice(1, 3) === q + q && ~(end = code.indexOf(q + q + q, 3)))) { | ||
@@ -292,9 +308,9 @@ return 0; | ||
dent = 0 / 0; | ||
while (m = tabs.exec(doc)) { | ||
if (!(dent <= (len = m[0].length - 1))) { | ||
while (that = tabs.exec(doc)) { | ||
if (!(dent <= (len = that[0].length - 1))) { | ||
dent = len; | ||
} | ||
} | ||
doc = untabify(doc, dent); | ||
if (doc.charAt(0) === '\n') { | ||
doc = detab(doc, dent); | ||
if ('\n' === doc.charAt(0)) { | ||
doc = doc.slice(1); | ||
@@ -305,5 +321,5 @@ ++this.line; | ||
if (q === '"' && ~doc.indexOf('#{')) { | ||
this.interpolateString(doc, '\\n'); | ||
this.interpolate(doc, enlines); | ||
} else { | ||
this.token('STRNUM', string(doc, q, '\\n')); | ||
this.strnum(enlines(string(doc, q))); | ||
this.countLines(doc); | ||
@@ -317,7 +333,13 @@ } | ||
exports.commentToken = function(it){ | ||
var end, text; | ||
text = it.slice(3, ~(end = it.indexOf('###', 3)) ? end : 9e9); | ||
this.token('COMMENT', untabify(text, this.indent)); | ||
this.token('TERMINATOR', '\n'); | ||
return this.countLines(text).length + 6; | ||
var end, text, _ref; | ||
text = ~(end = it.indexOf('*/', 2)) | ||
? it.slice(0, end + 2) | ||
: it + '*/'; | ||
if ((_ref = this.last[0]) === 'TERMINATOR' || _ref === 'INDENT' || _ref === 'THEN') { | ||
this.token('COMMENT', detab(text, this.indent)); | ||
this.token('TERMINATOR', '\n'); | ||
} else { | ||
this.last.spaced = true; | ||
} | ||
return this.countLines(text).length; | ||
}; | ||
@@ -329,15 +351,20 @@ exports.jsToken = function(it){ | ||
} | ||
(js = new String(js[0].slice(1, -1))).js = true; | ||
return this.countLines(this.token('LITERAL', js)).length + 2; | ||
this.token('LITERAL', new String(detab((js = js[0]).slice(1, -1), this.indent))); | ||
this.last[1].js = true; | ||
return this.countLines(js).length; | ||
}; | ||
exports.regexToken = function(it){ | ||
var prev, regex, _ref; | ||
if (((_ref = (prev = this.last)[0]) === 'LITERAL' || _ref === 'CREMENT') || this.callable() || !(regex = REGEX.exec(it))) { | ||
return 0; | ||
var re; | ||
if (able(this.tokens, null)) { | ||
if (!(this.last.spaced && (re = REGEX.exec(it)))) { | ||
return 0; | ||
} | ||
} else if (!(re = REGEX.exec(it))) { | ||
this.carp('unterminated regex'); | ||
} | ||
this.token('LITERAL', (regex = regex[0]) === '//' ? '/(?:)/' : regex); | ||
return this.countLines(regex).length; | ||
this.token('LITERAL', (re = re[0]) === '//' ? '/(?:)/' : re); | ||
return re.length; | ||
}; | ||
exports.heregexToken = function(it){ | ||
var match, heregex, body, flags, tokens, i, token, val, bs, _ref, _len; | ||
var match, heregex, body, flags, dynaflag, tokens, interp, i, token, val, bs, _len; | ||
if (!(match = HEREGEX.exec(it))) { | ||
@@ -347,2 +374,5 @@ this.carp('unterminated heregex'); | ||
heregex = match[0], body = match[1], flags = match[2]; | ||
if (dynaflag = flags === '?') { | ||
flags = ''; | ||
} | ||
if (0 > body.indexOf('#{')) { | ||
@@ -354,6 +384,10 @@ body = body.replace(HEREGEX_OMIT, '').replace(/\//g, '\\/'); | ||
this.token('IDENTIFIER', 'RegExp'); | ||
this.token('CALL(', '('); | ||
this.token('CALL(', ''); | ||
tokens = this.tokens; | ||
for (i = 0, _len = (_ref = this.interpolateString(body)).length; i < _len; ++i) { | ||
token = _ref[i]; | ||
interp = this.interpolate(body); | ||
if (dynaflag && interp[interp.length - 1][0] === 'TOKENS') { | ||
flags = interp.pop()[1]; | ||
} | ||
for (i = 0, _len = interp.length; i < _len; ++i) { | ||
token = interp[i]; | ||
if (token[0] === 'TOKENS') { | ||
@@ -366,4 +400,3 @@ tokens.push.apply(tokens, token[1]); | ||
} | ||
val = val.replace(bs || (bs = /\\/g), '\\\\'); | ||
tokens.push(['STRNUM', string(val, '\'', '\\n'), token[2]]); | ||
tokens.push((token[0] = 'STRNUM', token[1] = string(val.replace(bs || (bs = /\\/g), '\\\\'), '\''), token)); | ||
} | ||
@@ -375,24 +408,44 @@ tokens.push(['+-', '+', tokens[tokens.length - 1][2]]); | ||
this.token(',', ','); | ||
this.token('STRNUM', "'" + flags + "'"); | ||
if (typeof flags === 'string') { | ||
this.token('STRNUM', "'" + flags + "'"); | ||
} else { | ||
tokens.push.apply(tokens, flags); | ||
} | ||
} | ||
this.token(')CALL', ')'); | ||
this.token(')CALL', ''); | ||
return heregex.length; | ||
}; | ||
exports.backslashToken = function(it){ | ||
var word; | ||
if (!(word = WORD.exec(it))) { | ||
if ('\n' === it.charAt(1)) { | ||
++this.line; | ||
} | ||
return 2; | ||
} | ||
word = word[0].slice(1); | ||
this.strnum('\\' === word ? "'\\\\'" : string(word, '\'')); | ||
return word.length + 1; | ||
}; | ||
exports.wordsToken = function(it){ | ||
var end, line, re, that, word, _i, _ref, _len, _j, _len2; | ||
var end, tokens, line, row, w, that, word, _i, _ref, _len, _j, _len2, _ref2; | ||
if (!~(end = it.indexOf(']>', 2))) { | ||
this.carp('unterminated words'); | ||
} | ||
if (this.able()) { | ||
this.token('DOT', ''); | ||
} | ||
this.token('[', '['); | ||
tokens = this.tokens, line = this.line; | ||
for (_i = 0, _len = (_ref = it.slice(2, end).split('\n')).length; _i < _len; ++_i) { | ||
line = _ref[_i]; | ||
if (that = line.match(re || (re = /\S+/g))) { | ||
row = _ref[_i]; | ||
if (that = row.match(w || (w = /\S+/g))) { | ||
for (_j = 0, _len2 = that.length; _j < _len2; ++_j) { | ||
word = that[_j]; | ||
this.tokens.push(['STRNUM', string(word, '\''), this.line]); | ||
tokens.push((_ref2 = ['STRNUM', string(word, '\''), line], _ref2.spaced = true, _ref2)); | ||
} | ||
} | ||
++this.line; | ||
++line; | ||
} | ||
--this.line; | ||
this.line = line - 1; | ||
if (!word) { | ||
@@ -405,14 +458,16 @@ this.token('STRNUM', "''"); | ||
exports.lineToken = function(it){ | ||
var indent, last, size, noNewline, _ref; | ||
this.countLines(indent = MULTIDENT.exec(it)[0]); | ||
var input, indent, last, noNewline, size, that, _ref; | ||
_ref = MULTIDENT.exec(it), input = _ref[0], indent = _ref[1]; | ||
this.countLines(input); | ||
this.seenFrom = this.seenTo = false; | ||
last = this.last; | ||
last.eol = last.spaced = true; | ||
this.seenFrom = this.seenRange = false; | ||
size = indent.length - 1 - indent.lastIndexOf('\n'); | ||
noNewline = LINE_CONTINUER.test(it) || ((_ref = last[0]) === '+-' || _ref === 'DOT' || _ref === 'ASSIGN' || _ref === 'LOGIC' || _ref === 'MATH' || _ref === 'COMPARE' || _ref === 'RELATION' || _ref === 'SHIFT' || _ref === 'IMPORT'); | ||
noNewline = LINE_CONTINUER.test(it) || ((_ref = last[0]) === '+-' || _ref === 'DOT' || _ref === 'ASSIGN' || _ref === 'LOGIC' || _ref === 'MATH' || _ref === 'COMPARE' || _ref === 'RELATION' || _ref === 'IMPORT' || _ref === 'SHIFT' || _ref === 'BITWISE'); | ||
size = indent.length; | ||
if (that = size && (this.emender || (this.emender = RegExp('[^' + indent.charAt(0) + ']'))).exec(indent)) { | ||
this.carp("contaminated indent " + escape(that)); | ||
} | ||
if (size - this.indebt === this.indent) { | ||
if (!noNewline) { | ||
this.newline(); | ||
} | ||
return indent.length; | ||
noNewline || this.newline(); | ||
return input.length; | ||
} | ||
@@ -422,3 +477,3 @@ if (size > this.indent) { | ||
this.indebt = size - this.indent; | ||
return indent.length; | ||
return input.length; | ||
} | ||
@@ -432,3 +487,3 @@ this.indents.push(this.token('INDENT', size - this.indent + this.dedebt)); | ||
this.indent = size; | ||
return indent.length; | ||
return input.length; | ||
}; | ||
@@ -440,3 +495,3 @@ exports.spaceToken = function(it){ | ||
exports.literalToken = function(it){ | ||
var val, tag, word, _ref; | ||
var val, tag, tokens, i, next, _ref; | ||
if (!(val = SYMBOL.exec(it))) { | ||
@@ -446,30 +501,5 @@ return 0; | ||
switch (tag = val = val[0]) { | ||
case '->': | ||
case '=>': | ||
this.tagParameters(); | ||
tag = 'FUNC_ARROW'; | ||
break; | ||
case '=': | ||
case ':=': | ||
case '+=': | ||
case '-=': | ||
case '*=': | ||
case '/=': | ||
case '%=': | ||
case '&=': | ||
case '^=': | ||
case '|=': | ||
case '<<=': | ||
case '>>=': | ||
case '>>>=': | ||
tag = 'ASSIGN'; | ||
if (this.last[0] === 'LOGIC') { | ||
this.tokens.pop(); | ||
(val = new String(val)).logic = this.last[1]; | ||
} | ||
break; | ||
case '.': | ||
case '?.': | ||
case '&.': | ||
case '.=': | ||
case '~.': | ||
tag = 'DOT'; | ||
@@ -481,11 +511,7 @@ break; | ||
break; | ||
case '!': | ||
case '~': | ||
tag = 'UNARY'; | ||
break; | ||
case '===': | ||
case '!==': | ||
case '<=': | ||
case '<': | ||
case '>': | ||
case '<=': | ||
case '>=': | ||
@@ -498,5 +524,2 @@ case '==': | ||
case '||': | ||
case '&': | ||
case '|': | ||
case '^': | ||
tag = 'LOGIC'; | ||
@@ -526,4 +549,6 @@ break; | ||
break; | ||
case '@': | ||
tag = 'THIS'; | ||
case '&': | ||
case '|': | ||
case '^': | ||
tag = 'BITWISE'; | ||
break; | ||
@@ -536,32 +561,92 @@ case ';': | ||
break; | ||
case '()': | ||
this.token('CALL(', '('); | ||
this.token(')', ')'); | ||
return val.length; | ||
case '=': | ||
case ':=': | ||
case '+=': | ||
case '-=': | ||
case '*=': | ||
case '/=': | ||
case '%=': | ||
case '&=': | ||
case '^=': | ||
case '|=': | ||
case '<<=': | ||
case '>>=': | ||
case '>>>=': | ||
tag = 'ASSIGN'; | ||
switch (this.last[0]) { | ||
case 'LOGIC': | ||
(val = new String(val)).logic = this.tokens.pop()[1]; | ||
break; | ||
case 'DOT': | ||
if (this.last[1] === '.') { | ||
this.last[1] += val; | ||
return val.length; | ||
} | ||
} | ||
break; | ||
case '*': | ||
tag = (_ref = this.last[0]) === '[' || _ref === '(' || _ref === 'DOT' || _ref === ',' || _ref === ';' ? 'STRNUM' : 'MATH'; | ||
break; | ||
case '::': | ||
this.token('DOT', '.'); | ||
this.token('IDENTIFIER', (_ref = new String('prototype'), _ref.colon2 = true, _ref)); | ||
case '!': | ||
if (!this.last.spaced && this.last[1] === 'typeof') { | ||
this.last[1] = 'classof'; | ||
return val.length; | ||
} | ||
/* fallthrough */ | ||
case '\\\n': | ||
return val.length; | ||
case '~': | ||
tag = 'UNARY'; | ||
break; | ||
case '->': | ||
case '~>': | ||
this.tagParameters(); | ||
tag = 'FUNC_ARROW'; | ||
break; | ||
case '<-': | ||
case '<~': | ||
this.tagParameters(); | ||
tag = 'BACKCALL'; | ||
if (this.last[0] === ')PARAM') { | ||
break; | ||
} | ||
tokens = this.tokens; | ||
i = tokens.length; | ||
while ((_ref = tokens[--i][0]) !== 'TERMINATOR' && _ref !== 'INDENT' && _ref !== 'THEN') {} | ||
tokens.splice(i + 1, 0, ['PARAM(', '', tokens[i][2]]); | ||
this.token(')PARAM', ''); | ||
break; | ||
default: | ||
switch (val.charAt(0)) { | ||
switch (val) { | ||
case '@': | ||
this.token('IDENTIFIER', 'arguments'); | ||
if ('@' !== val.charAt(1)) { | ||
this.token('DOT', '.'); | ||
this.token('STRNUM', val.slice(1)); | ||
} | ||
this.token('LITERAL', 'this'); | ||
this.last.callable = true; | ||
break; | ||
case '@@': | ||
this.token('LITERAL', 'arguments'); | ||
break; | ||
case '::': | ||
this.token('DOT', ''); | ||
this.token('IDENTIFIER', 'prototype'); | ||
break; | ||
default: | ||
next = true; | ||
} | ||
if (!next) { | ||
return val.length; | ||
case '\\': | ||
word = val.slice(1); | ||
this.token('STRNUM', word === '\\' ? "'\\\\'" : string(word, '\'')); | ||
return val.length; | ||
} | ||
switch (val.charAt(0)) { | ||
case '(': | ||
if (this.callable()) { | ||
if (val.length > 1) { | ||
this.token('CALL(', '('); | ||
this.token(')CALL', ')'); | ||
return val.length; | ||
} | ||
if (this.able(true)) { | ||
tag = 'CALL('; | ||
} | ||
break; | ||
case '{': | ||
this.able() && this.token('CLONE', ''); | ||
break; | ||
case '[': | ||
this.able() && this.token('DOT', ''); | ||
} | ||
@@ -595,4 +680,4 @@ } | ||
exports.tagParameters = function(){ | ||
var tokens, level, i, tok; | ||
if (this.last[0] !== ')') { | ||
var tokens, level, i, tok, that; | ||
if (!(this.last[0] === ')' && this.last[1])) { | ||
return; | ||
@@ -602,6 +687,7 @@ } | ||
level = 1; | ||
tokens[i = tokens.length - 1][0] = ')PARAM'; | ||
i = tokens.length - 1; | ||
while (tok = tokens[--i]) { | ||
switch (tok[0]) { | ||
switch (that = tok[0]) { | ||
case ')': | ||
case ')CALL': | ||
++level; | ||
@@ -611,5 +697,10 @@ break; | ||
case 'CALL(': | ||
if (!--level) { | ||
return tok[0] = 'PARAM('; | ||
if (--level) { | ||
break; | ||
} | ||
if (that === '(') { | ||
tok[0] = 'PARAM('; | ||
this.last[0] = ')PARAM'; | ||
} | ||
return; | ||
} | ||
@@ -630,7 +721,6 @@ } | ||
stack.pop(); | ||
if (!stack.length) { | ||
if (!(end = stack[stack.length - 1])) { | ||
return str.slice(0, i + 1); | ||
} | ||
end = stack[stack.length - 1]; | ||
continue; | ||
break; | ||
case '"': | ||
@@ -652,6 +742,6 @@ if ('{' === chr && '#' === str.charAt(i - 1)) { | ||
} | ||
return this.carp('missing ' + stack.pop()); | ||
return this.carp("missing " + stack.pop() + " in a string"); | ||
}; | ||
exports.interpolateString = function(str, newline){ | ||
var line, ts, pi, i, that, s, code, nested, tokens, t, _ref, _len; | ||
exports.interpolate = function(str, nlines){ | ||
var line, ts, pi, i, that, s, code, nested, len, tokens, dot, t, _ref, _len; | ||
line = this.line; | ||
@@ -666,6 +756,6 @@ ts = []; | ||
} | ||
if (!(that === '#' && str.charAt(i + 1) === '{')) { | ||
if (!(that === '#' && '{' === str.charAt(i + 1))) { | ||
continue; | ||
} | ||
if (pi < i) { | ||
if (pi < i || nested && s >= '') { | ||
ts.push(['S', s = str.slice(pi, i), this.line]); | ||
@@ -687,7 +777,9 @@ this.countLines(s); | ||
} | ||
if (nested.length > 1) { | ||
nested.unshift(['(', '(', nested[0][2]]); | ||
nested.push([')', ')', nested[nested.length - 1][2]]); | ||
if (len = nested.length) { | ||
if (len > 1) { | ||
nested.unshift(['(', '(', nested[0][2]]); | ||
nested.push([')', ')', nested[len][2]]); | ||
} | ||
ts.push(['TOKENS', nested]); | ||
} | ||
ts.push(['TOKENS', nested]); | ||
this.countLines(code); | ||
@@ -699,12 +791,12 @@ } | ||
} | ||
if (((_ref = ts[0]) != null ? _ref[0] : void 8) !== 'S') { | ||
if (s == null) { | ||
ts.unshift(['S', '', line]); | ||
} | ||
if (newline == null) { | ||
if (nlines == null) { | ||
return ts; | ||
} | ||
tokens = this.tokens; | ||
if (this.last[1] === '@' && !this.last.spaced) { | ||
tokens.push(['DOT', '.', line]); | ||
} | ||
dot = this.able() | ||
? tokens.push(['DOT', '', line]) | ||
: this.last[0] === 'DOT'; | ||
tokens.push(['(', '(', line]); | ||
@@ -719,7 +811,9 @@ for (i = 0, _len = ts.length; i < _len; ++i) { | ||
} else { | ||
tokens.push(['STRNUM', string(t[1], '"', newline), t[2]]); | ||
tokens.push(['STRNUM', nlines(string(t[1], '"')), t[2]]); | ||
} | ||
} | ||
this.token(')', ')'); | ||
return ts; | ||
this.token(')', ''); | ||
if (dot) { | ||
this.last.callable = true; | ||
} | ||
}; | ||
@@ -730,2 +824,12 @@ exports.token = function(tag, value){ | ||
}; | ||
exports.strnum = function(it){ | ||
var dot; | ||
dot = this.able() | ||
? !this.token('DOT', '') | ||
: this.last[0] === 'DOT'; | ||
this.token('STRNUM', it); | ||
if (dot) { | ||
this.last.callable = true; | ||
} | ||
}; | ||
exports.countLines = function(str){ | ||
@@ -739,24 +843,9 @@ var pos; | ||
}; | ||
exports.callable = function(){ | ||
var _ref, _ref2; | ||
if (this.last.spaced) { | ||
return false; | ||
} | ||
switch (this.last[0]) { | ||
case 'IDENTIFIER': | ||
case 'THISPROP': | ||
case 'THIS': | ||
case 'SUPER': | ||
case ']': | ||
case ')': | ||
case '?': | ||
return true; | ||
case 'STRNUM': | ||
return ((_ref = (_ref2 = this.tokens)[_ref2.length - 2]) != null ? _ref[0] : void 8) === 'DOT'; | ||
} | ||
exports.able = function(call){ | ||
return !this.last.spaced && able(this.tokens, null, call); | ||
}; | ||
exports.carp = function(it){ | ||
throw SyntaxError("" + it + " on line " + (this.line + 1)); | ||
throw SyntaxError(it + " on line " + (this.line + 1)); | ||
}; | ||
string = function(body, quote, newline){ | ||
string = function(body, quote){ | ||
if (!body) { | ||
@@ -772,10 +861,7 @@ return quote + quote; | ||
}).replace(RegExp('' + quote, 'g'), '\\$&'); | ||
if (newline != null) { | ||
body = body.replace(MULTILINER, newline); | ||
} | ||
return quote + body + quote; | ||
}; | ||
untabify = function(str, num){ | ||
if (num) { | ||
return str.replace(RegExp('\\n[^\\n\\S]{' + num + '}', 'g'), '\n'); | ||
detab = function(str, len){ | ||
if (len) { | ||
return str.replace(RegExp('\\n[^\\n\\S]{' + len + '}', 'g'), '\n'); | ||
} else { | ||
@@ -785,4 +871,9 @@ return str; | ||
}; | ||
unlines = function(it){ | ||
return it.replace(/\n[^\n\S]*/g, ''); | ||
}; | ||
enlines = function(it){ | ||
return it.replace(/\n/g, '\\n'); | ||
}; | ||
JS_KEYWORDS = ['true', 'false', 'null', 'this', 'void', 'super', 'return', 'throw', 'break', 'continue', 'if', 'else', 'for', 'while', 'switch', 'case', 'default', 'try', 'catch', 'finally', 'class', 'extends', 'new', 'do', 'delete', 'typeof', 'in', 'instanceof', 'import', 'function', 'debugger']; | ||
COCO_KEYWORDS = JS_KEYWORDS.concat(['then', 'of', 'unless', 'until']); | ||
COCO_ALIASES = { | ||
@@ -794,15 +885,14 @@ not: ['UNARY', '!'], | ||
}; | ||
RESERVED = ['var', 'with', 'const', 'let', 'enum', 'export', 'native']; | ||
FORBIDDEN = JS_KEYWORDS.concat(RESERVED); | ||
IDENTIFIER = /^(@?[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?![:=]))?/; | ||
NUMBER = /^(?:0x[\da-f]+|([1-9]\d?)r([\da-z]+)|((?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)[a-z]*)/i; | ||
SYMBOL = /^(?:[-+*\/%&|^:.<>]=|\\\S[^\s,;)}\]]*|([-+&|:])\1|[-=]>|\(\)|[!=]==?|\.{3}|[?&]\.|\?\(|<<<<?|<<=?|>>>?=?|@(?:@|\d+)|\\\n|\S)/; | ||
SPACE = /^(?=.)[^\n\S]*(?:#(?!##[^#]).*)?/; | ||
MULTIDENT = /^(?:\s*#(?!##[^#]).*)*(?:\n[^\n\S]*)+/; | ||
RESERVED = ['var', 'with', 'const', 'enum', 'export', 'implements', 'interface', 'let', 'package', 'private', 'protected', 'public', 'static', 'yield']; | ||
IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?![:=]))?/; | ||
NUMBER = /^(?:0x[\da-f]+|([1-9]\d?)r([\da-z]+)|((?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)[a-z_]*)/i; | ||
SYMBOL = /^(?:[-+*\/%&|^:<>]=|([+&|:])\1|-[->]|\([^\n\S]*\)|[!=]==?|\.{3}|\?[.(]|~[.>]|<(?:<(?:=|<<?)?|[-~])|>>>?=?|@@|\S)/; | ||
SPACE = /^(?=.)[^\n\S]*(?:#.*)?/; | ||
MULTIDENT = /^(?:\s*#.*)*(?:\n([^\n\S]*))+/; | ||
SIMPLESTR = /^'[^\\']*(?:\\.[^\\']*)*'/; | ||
JSTOKEN = /^`[^\\`]*(?:\\.[^\\`]*)*`/; | ||
REGEX = /^\/(?!\s)[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/[imgy]{0,4}(?!\w)/; | ||
HEREGEX = /^\/{3}([\s\S]+?)\/{3}([imgy]{0,4})(?!\w)/; | ||
WORD = /^\\\S[^\s,;)}\]]*/; | ||
REGEX = /^\/(?!\s)[^[\/\n\\]*(?:(?:\\.|\[[^\]\n\\]*(?:\\.[^\]\n\\]*)*\])[^[\/\n\\]*)*\/[imgy]{0,4}(?!\d)/; | ||
HEREGEX = /^\/{3}([\s\S]*?)\/{3}(\?|[imgy]{0,4})/; | ||
HEREGEX_OMIT = /\s+(?:#.*)?/g; | ||
MULTILINER = /\n/g; | ||
LINE_CONTINUER = /^\s*(?:,|[?&]?\.(?!\.)|::)/; | ||
LINE_CONTINUER = /^\s*(?:,|[?~]?\.(?!\.)|::)/; |
@@ -0,6 +1,7 @@ | ||
var __toString = {}.toString; | ||
module.exports = function(flags, args, options){ | ||
var MULTI, name, desc, arg, abbr, FLAG, i, literals, flag, value, _len, _i, _len2, _name; | ||
var MULTI, name, desc, arg, abbr, FLAG, unknowns, i, literals, flag, value, _len, _i, _len2, _name; | ||
args || (args = process.argv.slice(2)); | ||
options || (options = {}); | ||
if ('[object Array]' !== {}.toString.call(flags)) { | ||
if (__toString.call(flags).slice(8, -1) !== 'Array') { | ||
MULTI = /[*+]/; | ||
@@ -12,3 +13,2 @@ flags = (function(){ | ||
_results.push({ | ||
long: '--' + name, | ||
name: name, | ||
@@ -18,4 +18,5 @@ desc: desc, | ||
abbr: abbr, | ||
long: '--' + name, | ||
short: abbr != 0 && ("-" + (abbr || name)).slice(0, 2), | ||
multi: arg && MULTI.test(arg) | ||
multi: !!arg && MULTI.test(arg) | ||
}); | ||
@@ -36,2 +37,3 @@ } | ||
FLAG = /^-[-\w]+$/; | ||
unknowns = []; | ||
ARGS: | ||
@@ -58,11 +60,11 @@ for (i = 0, _len = args.length; i < _len; ++i) { | ||
if (FLAG.test(arg)) { | ||
console.error('unrecognized option: %s', arg); | ||
process.exit(1); | ||
unknowns.push(arg); | ||
} else { | ||
break; | ||
} | ||
break; | ||
} | ||
return options.$flags = flags, options.$args = args.slice(i), options.$literals = literals || [], options.toString = help, options; | ||
return options.$flags = flags, options.$args = args.slice(i), options.$literals = literals || [], options.$unknowns = unknowns, options.toString = help, options; | ||
}; | ||
function help(){ | ||
var longs, width, pad, lines; | ||
var longs, width, pad; | ||
longs = this.$flags.map(function(it){ | ||
@@ -76,9 +78,8 @@ var that; | ||
pad = Array(width >> 1).join(' '); | ||
lines = this.$flags.map(function(flag, i){ | ||
var sf, lf; | ||
sf = (flag.short && (flag.short += ',')) || ' '; | ||
return this.$flags.map(function(flag, i){ | ||
var that, sf, lf; | ||
sf = (that = flag.short) ? that + ',' : ' '; | ||
lf = (longs[i] + pad).slice(0, width); | ||
return " " + sf + " " + lf + " " + flag.desc; | ||
}); | ||
return 'Available options:\n' + lines.join('\n'); | ||
}).join('\n'); | ||
} |
exports.parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"Assignable":3,"SimpleAssignable":4,"Array":5,"Object":6,"Value":7,"Primitive":8,"Parenthetical":9,"THIS":10,"CALL(":11,"ArgList":12,"OptComma":13,")CALL":14,"...":15,"STRNUM":16,"LITERAL":17,"IDENTIFIER":18,"ThisProperty":19,"DOT":20,"[":21,"]":22,"CLONE":23,"SUPER":24,"Expression":25,"ASSIGN":26,"+-":27,"MATH":28,"SHIFT":29,"COMPARE":30,"LOGIC":31,"IMPORT":32,"RELATION":33,"UNARY":34,"?":35,"CREMENT":36,"Fun":37,"FUNCTION":38,"IfBlock":39,"POST_IF":40,"LoopHead":41,"Block":42,"RETURN":43,"STATEMENT":44,"THROW":45,"SWITCH":46,"Cases":47,"DEFAULT":48,"TRY":49,"CATCH":50,"FINALLY":51,"CLASS":52,"OptExtends":53,"EXTENDS":54,"Line":55,"COMMENT":56,"Body":57,"TERMINATOR":58,",":59,"Arg":60,"INDENT":61,"DEDENT":62,"ArgSeq":63,"THISPROP":64,"(":65,")":66,"PARAM(":67,")PARAM":68,"FUNC_ARROW":69,"Key":70,"Property":71,":":72,"Properties":73,"KeySeq":74,"{":75,"}":76,"IF":77,"ELSE":78,"FOR":79,"FOROF":80,"BY":81,"FORIN":82,"FROM":83,"TO":84,"WHILE":85,"EVER":86,"CASE":87,"Root":88,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",10:"THIS",11:"CALL(",14:")CALL",15:"...",16:"STRNUM",17:"LITERAL",18:"IDENTIFIER",20:"DOT",21:"[",22:"]",23:"CLONE",24:"SUPER",26:"ASSIGN",27:"+-",28:"MATH",29:"SHIFT",30:"COMPARE",31:"LOGIC",32:"IMPORT",33:"RELATION",34:"UNARY",35:"?",36:"CREMENT",38:"FUNCTION",40:"POST_IF",43:"RETURN",44:"STATEMENT",45:"THROW",46:"SWITCH",48:"DEFAULT",49:"TRY",50:"CATCH",51:"FINALLY",52:"CLASS",54:"EXTENDS",56:"COMMENT",58:"TERMINATOR",59:",",61:"INDENT",62:"DEDENT",64:"THISPROP",65:"(",66:")",67:"PARAM(",68:")PARAM",69:"FUNC_ARROW",72:":",75:"{",76:"}",77:"IF",78:"ELSE",79:"FOR",80:"FOROF",81:"BY",82:"FORIN",83:"FROM",84:"TO",85:"WHILE",86:"EVER",87:"CASE"}, | ||
productions_: [0,[3,1],[3,1],[3,1],[7,1],[7,1],[7,1],[7,1],[7,5],[7,4],[8,1],[8,1],[4,1],[4,1],[4,3],[4,3],[4,3],[4,6],[4,3],[4,1],[25,1],[25,3],[25,3],[25,3],[25,3],[25,3],[25,3],[25,3],[25,3],[25,2],[25,2],[25,2],[25,2],[25,2],[25,1],[25,2],[25,3],[25,1],[25,3],[25,2],[25,2],[25,2],[25,1],[25,1],[25,2],[25,3],[25,5],[25,2],[25,4],[25,2],[25,4],[25,6],[25,4],[25,2],[25,3],[25,3],[25,4],[25,3],[55,1],[55,1],[55,1],[57,1],[57,3],[57,2],[13,0],[13,1],[60,1],[60,2],[12,0],[12,1],[12,3],[12,4],[12,6],[12,1],[12,3],[12,4],[63,2],[63,2],[19,1],[9,3],[9,5],[42,3],[42,2],[37,6],[37,2],[5,4],[70,1],[70,1],[70,1],[70,1],[71,3],[71,5],[71,1],[71,2],[71,2],[71,3],[71,1],[73,0],[73,1],[73,3],[73,4],[73,6],[73,1],[73,3],[73,4],[74,2],[74,2],[6,4],[39,3],[39,5],[39,3],[41,4],[41,6],[41,4],[41,6],[41,4],[41,6],[41,8],[41,2],[41,2],[47,3],[47,4],[53,0],[53,2],[88,1],[88,2],[88,0]], | ||
symbols_: {"error":2,"Assignable":3,"SimpleAssignable":4,"[":5,"ArgList":6,"OptComma":7,"]":8,"{":9,"Properties":10,"}":11,"Value":12,"STRNUM":13,"LITERAL":14,"Parenthetical":15,"CALL(":16,")CALL":17,"IDENTIFIER":18,"DOT":19,"CLONE":20,"SUPER":21,"Expression":22,"ASSIGN":23,"CREMENT":24,"UNARY":25,"+-":26,"MATH":27,"SHIFT":28,"COMPARE":29,"BITWISE":30,"LOGIC":31,"RELATION":32,"IMPORT":33,"?":34,"Function":35,"FUNCTION":36,"IfBlock":37,"ELSE":38,"Block":39,"POST_IF":40,"LoopHead":41,"RETURN":42,"THROW":43,"STATEMENT":44,"SWITCH":45,"Cases":46,"DEFAULT":47,"TRY":48,"CATCH":49,"FINALLY":50,"CLASS":51,"OptExtends":52,"EXTENDS":53,"Line":54,"PARAM(":55,")PARAM":56,"BACKCALL":57,"COMMENT":58,"...":59,"Body":60,"TERMINATOR":61,",":62,"Arg":63,"INDENT":64,"DEDENT":65,"(":66,")":67,"FUNC_ARROW":68,"KeyBase":69,"Key":70,"KeyValue":71,"Property":72,":":73,"IF":74,"FOR":75,"FOROF":76,"BY":77,"FORIN":78,"FROM":79,"TO":80,"WHILE":81,"EVER":82,"CASE":83,"Root":84,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",5:"[",8:"]",9:"{",11:"}",13:"STRNUM",14:"LITERAL",16:"CALL(",17:")CALL",18:"IDENTIFIER",19:"DOT",20:"CLONE",21:"SUPER",23:"ASSIGN",24:"CREMENT",25:"UNARY",26:"+-",27:"MATH",28:"SHIFT",29:"COMPARE",30:"BITWISE",31:"LOGIC",32:"RELATION",33:"IMPORT",34:"?",36:"FUNCTION",38:"ELSE",40:"POST_IF",42:"RETURN",43:"THROW",44:"STATEMENT",45:"SWITCH",47:"DEFAULT",48:"TRY",49:"CATCH",50:"FINALLY",51:"CLASS",53:"EXTENDS",55:"PARAM(",56:")PARAM",57:"BACKCALL",58:"COMMENT",59:"...",61:"TERMINATOR",62:",",64:"INDENT",65:"DEDENT",66:"(",67:")",68:"FUNC_ARROW",73:":",74:"IF",75:"FOR",76:"FOROF",77:"BY",78:"FORIN",79:"FROM",80:"TO",81:"WHILE",82:"EVER",83:"CASE"}, | ||
productions_: [0,[3,1],[3,4],[3,4],[12,1],[12,1],[12,1],[12,1],[12,5],[4,1],[4,3],[4,3],[4,3],[4,6],[4,6],[4,1],[22,1],[22,3],[22,2],[22,2],[22,2],[22,2],[22,3],[22,3],[22,3],[22,3],[22,3],[22,3],[22,3],[22,3],[22,2],[22,1],[22,2],[22,1],[22,3],[22,3],[22,2],[22,2],[22,2],[22,2],[22,1],[22,1],[22,3],[22,5],[22,2],[22,4],[22,2],[22,4],[22,6],[22,4],[22,2],[22,3],[22,3],[22,4],[22,3],[54,1],[54,6],[54,1],[54,1],[60,1],[60,3],[60,2],[60,2],[7,0],[7,1],[63,1],[63,2],[63,1],[6,0],[6,1],[6,3],[6,4],[6,6],[15,3],[15,5],[39,3],[39,2],[35,6],[35,2],[69,1],[69,1],[70,1],[70,1],[71,1],[71,3],[71,3],[72,3],[72,3],[72,2],[72,1],[72,3],[72,2],[72,1],[10,0],[10,1],[10,3],[10,4],[10,6],[37,3],[37,5],[41,4],[41,6],[41,4],[41,6],[41,4],[41,6],[41,8],[41,2],[41,2],[46,3],[46,4],[52,0],[52,2],[84,1],[84,2],[84,3],[84,0]], | ||
performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$) { | ||
@@ -10,43 +10,43 @@ | ||
switch (yystate) { | ||
case 1:this.$ = $$[$0]; | ||
case 2:this.$ = yy.L(yylineno, yy.Arr($$[$0-2])); | ||
break; | ||
case 2:this.$ = $$[$0]; | ||
case 3:this.$ = yy.L(yylineno, yy.Obj($$[$0-2])); | ||
break; | ||
case 3:this.$ = $$[$0]; | ||
break; | ||
case 4:this.$ = yy.Value($$[$0]); | ||
break; | ||
case 5:this.$ = yy.Value($$[$0]); | ||
case 5:this.$ = yy.Value(yy.L(yylineno, yy.Literal($$[$0]))); | ||
break; | ||
case 6:this.$ = yy.Value($$[$0]); | ||
case 6:this.$ = yy.Value(yy.L(yylineno, yy.Literal($$[$0]))); | ||
break; | ||
case 7:this.$ = yy.Value(yy.Literal('this', true)); | ||
case 7:this.$ = yy.Value($$[$0]); | ||
break; | ||
case 8:this.$ = yy.Value(yy.Call($$[$0-4], $$[$0-2], $$[$0-3])); | ||
case 8:this.$ = yy.Value(yy.L(yylineno, yy.Call($$[$0-4], $$[$0-2], $$[$0-3]))); | ||
break; | ||
case 9:this.$ = yy.Value(yy.Call($$[$0-3], null, $$[$0-2])); | ||
case 9:this.$ = yy.L(yylineno, yy.Var($$[$0])); | ||
break; | ||
case 10:this.$ = yy.Literal($$[$0]); | ||
case 10:this.$ = $$[$0-2].add(yy.Index(yy.L(yylineno, yy.Key($$[$0])), $$[$0-1])); | ||
break; | ||
case 11:this.$ = yy.Literal($$[$0], true); | ||
case 11:this.$ = $$[$0-2].add(yy.Index(yy.L(yylineno, yy.Literal($$[$0])), $$[$0-1])); | ||
break; | ||
case 12:this.$ = yy.Literal($$[$0]); | ||
case 12:this.$ = $$[$0-2].add(yy.Index($$[$0].it, $$[$0-1])); | ||
break; | ||
case 13:this.$ = $$[$0]; | ||
case 13:this.$ = $$[$0-5].add(yy.L(yylineno, yy.Index($$[$0-2], $$[$0-4]))); | ||
break; | ||
case 14:this.$ = $$[$0-2].add(yy.Index(yy.Key($$[$0]), $$[$0-1])); | ||
case 14:this.$ = new yy.Clone($$[$0-5].unwrap(), $$[$0-2]); | ||
break; | ||
case 15:this.$ = $$[$0-2].add(yy.Index(yy.Literal($$[$0]), $$[$0-1])); | ||
case 15:this.$ = yy.L(yylineno, new yy.Super); | ||
break; | ||
case 16:this.$ = $$[$0-2].add(yy.Index($$[$0].it, $$[$0-1])); | ||
case 16:this.$ = $$[$0].unwrap(); | ||
break; | ||
case 17:this.$ = $$[$0-5].add(yy.Index($$[$0-2], $$[$0-4])); | ||
case 17:this.$ = yy.Assign($$[$0-2], $$[$0], $$[$0-1]); | ||
break; | ||
case 18:this.$ = new yy.Clone($$[$0-2].unwrap(), $$[$0]); | ||
case 18:this.$ = yy.Op($$[$0-1], $$[$0]); | ||
break; | ||
case 19:this.$ = new yy.Super; | ||
case 19:this.$ = yy.Op($$[$0], $$[$0-1], null, true); | ||
break; | ||
case 20:this.$ = $$[$0].unwrap(); | ||
case 20:this.$ = ($$[$0-1] === '!' | ||
? $$[$0].invert() | ||
: yy.Op($$[$0-1], $$[$0])); | ||
break; | ||
case 21:this.$ = yy.Assign($$[$0-2], $$[$0], $$[$0-1]); | ||
case 21:this.$ = yy.Op($$[$0-1], $$[$0]); | ||
break; | ||
@@ -63,89 +63,74 @@ case 22:this.$ = yy.Op($$[$0-1], $$[$0-2], $$[$0]); | ||
break; | ||
case 27:this.$ = yy.Import($$[$0-2], $$[$0], $$[$0-1] === '<<<<'); | ||
case 27:this.$ = yy.Op($$[$0-1], $$[$0-2], $$[$0]); | ||
break; | ||
case 28:this.$ = $$[$0-1].charAt(0) === '!' | ||
case 28:this.$ = ('!' === $$[$0-1].charAt(0) | ||
? yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert() | ||
: yy.Op($$[$0-1], $$[$0-2], $$[$0]); | ||
: yy.Op($$[$0-1], $$[$0-2], $$[$0])); | ||
break; | ||
case 29:this.$ = yy.Op($$[$0-1], $$[$0]); | ||
case 29:this.$ = yy.Import($$[$0-2], $$[$0], $$[$0-1] === '<<<<'); | ||
break; | ||
case 30:this.$ = yy.Op($$[$0-1], $$[$0]); | ||
case 30:this.$ = yy.Existence($$[$0-1]); | ||
break; | ||
case 31:this.$ = yy.Existence($$[$0-1]); | ||
case 32:this.$ = $$[$0].named($$[$0-1]); | ||
break; | ||
case 32:this.$ = yy.Op($$[$0-1], $$[$0]); | ||
case 34:this.$ = $$[$0-2].addElse($$[$0]); | ||
break; | ||
case 33:this.$ = yy.Op($$[$0], $$[$0-1], null, true); | ||
break; | ||
case 34:this.$ = $$[$0]; | ||
break; | ||
case 35:this.$ = yy.mix($$[$0], { | ||
statement: true | ||
}); | ||
break; | ||
case 36:this.$ = yy.mix($$[$0], { | ||
statement: true, | ||
case 35:this.$ = yy.L(yylineno, yy.If($$[$0], $$[$0-2], { | ||
name: $$[$0-1] | ||
}); | ||
})); | ||
break; | ||
case 37:this.$ = $$[$0]; | ||
case 36:this.$ = $$[$0-1].addBody($$[$0]); | ||
break; | ||
case 38:this.$ = yy.If($$[$0], $$[$0-2], { | ||
name: $$[$0-1] | ||
}); | ||
case 37:this.$ = $$[$0].addBody(yy.Block($$[$0-1])); | ||
break; | ||
case 39:this.$ = $$[$0-1].addBody($$[$0]); | ||
case 38:this.$ = yy.Return($$[$0]); | ||
break; | ||
case 40:this.$ = $$[$0].addBody(yy.Lines($$[$0-1])); | ||
case 39:this.$ = new yy.Throw($$[$0]); | ||
break; | ||
case 41:this.$ = yy.Return($$[$0]); | ||
case 40:this.$ = yy.L(yylineno, new yy.Statement($$[$0])); | ||
break; | ||
case 42:this.$ = yy.Return(); | ||
case 41:this.$ = yy.L(yylineno, yy.Return()); | ||
break; | ||
case 43:this.$ = new yy.Statement($$[$0]); | ||
case 42:this.$ = new yy.Switch($$[$0-1], $$[$0]); | ||
break; | ||
case 44:this.$ = new yy.Throw($$[$0]); | ||
case 43:this.$ = new yy.Switch($$[$0-3], $$[$0-2], $$[$0]); | ||
break; | ||
case 45:this.$ = new yy.Switch($$[$0-1], $$[$0]); | ||
case 44:this.$ = new yy.Switch(null, $$[$0]); | ||
break; | ||
case 46:this.$ = new yy.Switch($$[$0-3], $$[$0-2], $$[$0]); | ||
case 45:this.$ = new yy.Switch(null, $$[$0-2], $$[$0]); | ||
break; | ||
case 47:this.$ = new yy.Switch(null, $$[$0]); | ||
case 46:this.$ = new yy.Try($$[$0]); | ||
break; | ||
case 48:this.$ = new yy.Switch(null, $$[$0-2], $$[$0]); | ||
case 47:this.$ = new yy.Try($$[$0-2], $$[$0-1], $$[$0]); | ||
break; | ||
case 49:this.$ = new yy.Try($$[$0]); | ||
case 48:this.$ = new yy.Try($$[$0-4], $$[$0-3], $$[$0-2], $$[$0]); | ||
break; | ||
case 50:this.$ = new yy.Try($$[$0-2], $$[$0-1], $$[$0]); | ||
case 49:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]); | ||
break; | ||
case 51:this.$ = new yy.Try($$[$0-4], $$[$0-3], $$[$0-2], $$[$0]); | ||
case 50:this.$ = new yy.Class(null, $$[$0]); | ||
break; | ||
case 52:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]); | ||
case 51:this.$ = new yy.Class(null, $$[$0-1], $$[$0]); | ||
break; | ||
case 53:this.$ = new yy.Class(null, $$[$0]); | ||
case 52:this.$ = new yy.Class($$[$0-1], $$[$0]); | ||
break; | ||
case 54:this.$ = new yy.Class(null, $$[$0-1], $$[$0]); | ||
case 53:this.$ = new yy.Class($$[$0-2], $$[$0-1], $$[$0]); | ||
break; | ||
case 55:this.$ = new yy.Class($$[$0-1], $$[$0]); | ||
case 54:this.$ = yy.Util.Extends($$[$0-2].unwrap(), $$[$0]); | ||
break; | ||
case 56:this.$ = new yy.Class($$[$0-2], $$[$0-1], $$[$0]); | ||
case 56:this.$ = yy.Call.back($$[$0-4], $$[$0-1], $$[$0]); | ||
break; | ||
case 57:this.$ = yy.Util.Extends($$[$0-2], $$[$0]); | ||
case 57:this.$ = yy.L(yylineno, yy.JS($$[$0], true, true)); | ||
break; | ||
case 58:this.$ = $$[$0]; | ||
case 58:this.$ = yy.L(yylineno, new yy.Throw(yy.JS("Error('unimplemented')"))); | ||
break; | ||
case 59:this.$ = yy.Comment($$[$0]); | ||
case 59:this.$ = yy.Block($$[$0]); | ||
break; | ||
case 60:this.$ = new yy.Throw(yy.Literal("Error('stub code executed')")); | ||
case 60:this.$ = $$[$0-2].add($$[$0]); | ||
break; | ||
case 61:this.$ = yy.Lines($$[$0]); | ||
case 61:this.$ = $$[$0-1].add($$[$0]); | ||
break; | ||
case 62:this.$ = $$[$0-2].add($$[$0]); | ||
case 66:this.$ = yy.L(yylineno, yy.Splat($$[$0])); | ||
break; | ||
case 63:this.$ = $$[$0-1]; | ||
case 67:this.$ = yy.L(yylineno, yy.Splat(yy.Arr())); | ||
break; | ||
case 66:this.$ = $$[$0]; | ||
break; | ||
case 67:this.$ = yy.Splat($$[$0]); | ||
break; | ||
case 68:this.$ = []; | ||
@@ -161,83 +146,53 @@ break; | ||
break; | ||
case 73:this.$ = $$[$0]; | ||
case 73:this.$ = yy.L(yylineno, yy.Parens($$[$0-1].unwrap())); | ||
break; | ||
case 74:this.$ = $$[$0-2].concat($$[$0]); | ||
case 74:this.$ = yy.L(yylineno, yy.Parens($$[$0-2].unwrap())); | ||
break; | ||
case 75:this.$ = $$[$0-3].concat($$[$0]); | ||
case 75:this.$ = $$[$0-1]; | ||
break; | ||
case 76:this.$ = [$$[$0-1], $$[$0]]; | ||
case 76:this.$ = yy.Block(); | ||
break; | ||
case 77:this.$ = $$[$0-1].concat($$[$0]); | ||
case 77:this.$ = yy.L(yylineno, yy.Fun($$[$0-4], $$[$0], $$[$0-1])); | ||
break; | ||
case 78:this.$ = yy.Value(yy.Literal('this'), [yy.Index(yy.Key($$[$0]))], true); | ||
case 78:this.$ = yy.L(yylineno, yy.Fun([], $$[$0], $$[$0-1])); | ||
break; | ||
case 79:this.$ = yy.Parens($$[$0-1].unwrap()); | ||
case 79:this.$ = yy.L(yylineno, yy.Key($$[$0])); | ||
break; | ||
case 80:this.$ = yy.Parens($$[$0-2].unwrap()); | ||
case 80:this.$ = yy.L(yylineno, yy.Literal($$[$0])); | ||
break; | ||
case 81:this.$ = $$[$0-1]; | ||
case 84:this.$ = yy.Assign($$[$0], yy.Value(yy.Literal($$[$0-2]), [yy.Index($$[$0], $$[$0-1])]), ':'); | ||
break; | ||
case 82:this.$ = yy.Lines(); | ||
case 85:this.$ = yy.Assign($$[$0], yy.Value($$[$0-2], [yy.Index($$[$0], $$[$0-1])]), ':'); | ||
break; | ||
case 83:this.$ = yy.Fun($$[$0-4], $$[$0], $$[$0-1]); | ||
case 86:this.$ = yy.Assign($$[$0-2], $$[$0], ':'); | ||
break; | ||
case 84:this.$ = yy.Fun([], $$[$0], $$[$0-1]); | ||
case 87:this.$ = yy.Assign($$[$0-2], $$[$0].unwrap().asArr(), ':'); | ||
break; | ||
case 85:this.$ = yy.Arr($$[$0-2]); | ||
case 88:this.$ = yy.Assign($$[$0].asKey(), yy.Literal($$[$0-1] === '+'), ':'); | ||
break; | ||
case 86:this.$ = yy.Literal($$[$0]); | ||
case 90:this.$ = yy.Op($$[$0-1], $$[$0-2], $$[$0]); | ||
break; | ||
case 87:this.$ = yy.Literal($$[$0]); | ||
case 91:this.$ = yy.Splat($$[$0]); | ||
break; | ||
case 88:this.$ = $$[$0]; | ||
case 92:this.$ = yy.L(yylineno, yy.JS($$[$0], true, true)); | ||
break; | ||
case 89:this.$ = $$[$0]; | ||
case 93:this.$ = []; | ||
break; | ||
case 90:this.$ = yy.Assign($$[$0-2].asKey(), $$[$0], ':'); | ||
case 94:this.$ = [$$[$0]]; | ||
break; | ||
case 91:this.$ = yy.Assign($$[$0-4].asKey(), $$[$0-1], ':'); | ||
case 95:this.$ = $$[$0-2].concat($$[$0]); | ||
break; | ||
case 92:this.$ = $$[$0]; | ||
case 96:this.$ = $$[$0-3].concat($$[$0]); | ||
break; | ||
case 93:this.$ = yy.Splat($$[$0]); | ||
case 97:this.$ = $$[$0-5].concat($$[$0-2]); | ||
break; | ||
case 94:this.$ = yy.Assign($$[$0].asKey(), yy.Literal($$[$0-1] === '+'), ':'); | ||
break; | ||
case 95:this.$ = yy.Op($$[$0-1], $$[$0-2], $$[$0]); | ||
break; | ||
case 96:this.$ = yy.Comment($$[$0]); | ||
break; | ||
case 97:this.$ = []; | ||
break; | ||
case 98:this.$ = [$$[$0]]; | ||
break; | ||
case 99:this.$ = $$[$0-2].concat($$[$0]); | ||
break; | ||
case 100:this.$ = $$[$0-3].concat($$[$0]); | ||
break; | ||
case 101:this.$ = $$[$0-5].concat($$[$0-2]); | ||
break; | ||
case 102:this.$ = $$[$0]; | ||
break; | ||
case 103:this.$ = $$[$0-2].concat($$[$0]); | ||
break; | ||
case 104:this.$ = $$[$0-3].concat($$[$0]); | ||
break; | ||
case 105:this.$ = [yy.Literal($$[$0-1]), yy.Literal($$[$0])]; | ||
break; | ||
case 106:this.$ = $$[$0-1].concat(yy.Literal($$[$0])); | ||
break; | ||
case 107:this.$ = yy.Obj($$[$0-2]); | ||
break; | ||
case 108:this.$ = yy.If($$[$0-1], $$[$0], { | ||
case 98:this.$ = yy.If($$[$0-1], $$[$0], { | ||
name: $$[$0-2] | ||
}); | ||
break; | ||
case 109:this.$ = $$[$0-4].addElse(yy.If($$[$0-1], $$[$0], { | ||
case 99:this.$ = $$[$0-4].addElse(yy.If($$[$0-1], $$[$0], { | ||
name: $$[$0-2] | ||
})); | ||
break; | ||
case 110:this.$ = $$[$0-2].addElse($$[$0]); | ||
break; | ||
case 111:this.$ = yy.mix(new yy.For, { | ||
case 100:this.$ = new yy.For({ | ||
name: $$[$0-2], | ||
@@ -248,3 +203,3 @@ index: $$[$0-1], | ||
break; | ||
case 112:this.$ = yy.mix(new yy.For, { | ||
case 101:this.$ = new yy.For({ | ||
name: $$[$0-4], | ||
@@ -256,3 +211,3 @@ index: $$[$0-3], | ||
break; | ||
case 113:this.$ = yy.mix(new yy.For, { | ||
case 102:this.$ = new yy.For({ | ||
object: true, | ||
@@ -264,3 +219,3 @@ own: !$$[$0-3], | ||
break; | ||
case 114:this.$ = yy.mix(new yy.For, { | ||
case 103:this.$ = new yy.For({ | ||
object: true, | ||
@@ -273,3 +228,3 @@ own: !$$[$0-5], | ||
break; | ||
case 115:this.$ = yy.mix(new yy.For, { | ||
case 104:this.$ = new yy.For({ | ||
index: $$[$0-2], | ||
@@ -281,3 +236,3 @@ from: yy.Literal(0), | ||
break; | ||
case 116:this.$ = yy.mix(new yy.For, { | ||
case 105:this.$ = new yy.For({ | ||
index: $$[$0-4], | ||
@@ -289,3 +244,3 @@ from: $$[$0-2], | ||
break; | ||
case 117:this.$ = yy.mix(new yy.For, { | ||
case 106:this.$ = new yy.For({ | ||
index: $$[$0-6], | ||
@@ -298,24 +253,26 @@ from: $$[$0-4], | ||
break; | ||
case 118:this.$ = new yy.While($$[$0], $$[$0-1]); | ||
case 107:this.$ = new yy.While($$[$0], $$[$0-1]); | ||
break; | ||
case 119:this.$ = new yy.While; | ||
case 108:this.$ = yy.L(yylineno, new yy.While); | ||
break; | ||
case 120:this.$ = [new yy.Case($$[$0-1], $$[$0])]; | ||
case 109:this.$ = [new yy.Case($$[$0-1], $$[$0])]; | ||
break; | ||
case 121:this.$ = $$[$0-3].concat(new yy.Case($$[$0-1], $$[$0])); | ||
case 110:this.$ = $$[$0-3].concat(new yy.Case($$[$0-1], $$[$0])); | ||
break; | ||
case 122:this.$ = null; | ||
case 111:this.$ = null; | ||
break; | ||
case 123:this.$ = $$[$0]; | ||
case 112:this.$ = $$[$0]; | ||
break; | ||
case 124:return $$[$0]; | ||
case 113:return this.$ | ||
break; | ||
case 125:return $$[$0-1]; | ||
case 114:return this.$ | ||
break; | ||
case 126:return yy.Lines(); | ||
case 115:return $$[$0-2].add($$[$0]) | ||
break; | ||
case 116:return yy.Block() | ||
break; | ||
} | ||
}, | ||
table: [{1:[2,126],3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],15:[1,8],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:6,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,42:3,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],55:4,56:[1,7],57:2,61:[1,5],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37],88:1},{1:[3]},{1:[2,124],58:[1,44]},{58:[1,45]},{1:[2,61],58:[2,61],62:[2,61],66:[2,61]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],15:[1,8],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:6,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],55:4,56:[1,7],57:46,62:[1,47],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,58],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,58:[2,58],62:[2,58],66:[2,58],79:[1,36],85:[1,37]},{1:[2,59],58:[2,59],62:[2,59],66:[2,59]},{1:[2,60],58:[2,60],62:[2,60],66:[2,60]},{1:[2,20],11:[1,58],14:[2,20],20:[1,59],22:[2,20],23:[1,60],27:[2,20],28:[2,20],29:[2,20],30:[2,20],31:[2,20],32:[2,20],33:[2,20],35:[2,20],40:[2,20],58:[2,20],59:[2,20],61:[2,20],62:[2,20],66:[2,20],68:[2,20],76:[2,20],79:[2,20],81:[2,20],84:[2,20],85:[2,20],87:[2,20]},{1:[2,4],11:[2,4],14:[2,4],20:[2,4],22:[2,4],23:[2,4],26:[1,61],27:[2,4],28:[2,4],29:[2,4],30:[2,4],31:[2,4],32:[2,4],33:[2,4],35:[2,4],40:[2,4],58:[2,4],59:[2,4],61:[2,4],62:[2,4],66:[2,4],68:[2,4],76:[2,4],79:[2,4],81:[2,4],84:[2,4],85:[2,4],87:[2,4]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:62,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:63,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:66,4:64,5:28,6:29,7:65,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],64:[1,43],65:[1,40],75:[1,42]},{1:[2,1],11:[2,1],14:[2,1],20:[2,1],22:[2,1],23:[2,1],26:[2,1],27:[2,1],28:[2,1],29:[2,1],30:[2,1],31:[2,1],32:[2,1],33:[2,1],35:[2,1],36:[1,67],40:[2,1],54:[1,68],58:[2,1],59:[2,1],61:[2,1],62:[2,1],66:[2,1],68:[2,1],76:[2,1],79:[2,1],81:[2,1],84:[2,1],85:[2,1],87:[2,1]},{1:[2,34],14:[2,34],22:[2,34],27:[2,34],28:[2,34],29:[2,34],30:[2,34],31:[2,34],32:[2,34],33:[2,34],35:[2,34],40:[2,34],58:[2,34],59:[2,34],61:[2,34],62:[2,34],66:[2,34],68:[2,34],76:[2,34],79:[2,34],81:[2,34],84:[2,34],85:[2,34],87:[2,34]},{18:[1,70],37:69,67:[1,33],69:[1,34]},{1:[2,37],14:[2,37],22:[2,37],27:[2,37],28:[2,37],29:[2,37],30:[2,37],31:[2,37],32:[2,37],33:[2,37],35:[2,37],40:[2,37],58:[2,37],59:[2,37],61:[2,37],62:[2,37],66:[2,37],68:[2,37],76:[2,37],78:[1,71],79:[2,37],81:[2,37],84:[2,37],85:[2,37],87:[2,37]},{42:72,61:[1,5]},{1:[2,42],3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],14:[2,42],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],22:[2,42],24:[1,32],25:73,27:[1,12],28:[2,42],29:[2,42],30:[2,42],31:[2,42],32:[2,42],33:[2,42],34:[1,11],35:[2,42],36:[1,13],37:15,38:[1,16],39:17,40:[2,42],41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],58:[2,42],59:[2,42],61:[2,42],62:[2,42],64:[1,43],65:[1,40],66:[2,42],67:[1,33],68:[2,42],69:[1,34],75:[1,42],76:[2,42],77:[1,35],79:[2,42],81:[2,42],84:[2,42],85:[2,42],87:[2,42]},{1:[2,43],14:[2,43],22:[2,43],27:[2,43],28:[2,43],29:[2,43],30:[2,43],31:[2,43],32:[2,43],33:[2,43],35:[2,43],40:[2,43],58:[2,43],59:[2,43],61:[2,43],62:[2,43],66:[2,43],68:[2,43],76:[2,43],79:[2,43],81:[2,43],84:[2,43],85:[2,43],87:[2,43]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:74,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:75,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],47:76,49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37],87:[1,77]},{42:78,61:[1,5]},{1:[2,122],3:66,4:80,5:28,6:29,7:65,8:25,9:26,10:[1,27],14:[2,122],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],22:[2,122],24:[1,32],27:[2,122],28:[2,122],29:[2,122],30:[2,122],31:[2,122],32:[2,122],33:[2,122],35:[2,122],40:[2,122],53:79,54:[1,81],58:[2,122],59:[2,122],61:[2,122],62:[2,122],64:[1,43],65:[1,40],66:[2,122],68:[2,122],75:[1,42],76:[2,122],79:[2,122],81:[2,122],84:[2,122],85:[2,122],87:[2,122]},{1:[2,5],11:[2,5],14:[2,5],20:[2,5],22:[2,5],23:[2,5],27:[2,5],28:[2,5],29:[2,5],30:[2,5],31:[2,5],32:[2,5],33:[2,5],35:[2,5],40:[2,5],58:[2,5],59:[2,5],61:[2,5],62:[2,5],66:[2,5],68:[2,5],76:[2,5],79:[2,5],81:[2,5],84:[2,5],85:[2,5],87:[2,5]},{1:[2,6],11:[2,6],14:[2,6],20:[2,6],22:[2,6],23:[2,6],27:[2,6],28:[2,6],29:[2,6],30:[2,6],31:[2,6],32:[2,6],33:[2,6],35:[2,6],40:[2,6],58:[2,6],59:[2,6],61:[2,6],62:[2,6],66:[2,6],68:[2,6],76:[2,6],79:[2,6],81:[2,6],84:[2,6],85:[2,6],87:[2,6]},{1:[2,7],11:[2,7],14:[2,7],20:[2,7],22:[2,7],23:[2,7],27:[2,7],28:[2,7],29:[2,7],30:[2,7],31:[2,7],32:[2,7],33:[2,7],35:[2,7],40:[2,7],58:[2,7],59:[2,7],61:[2,7],62:[2,7],66:[2,7],68:[2,7],76:[2,7],79:[2,7],81:[2,7],84:[2,7],85:[2,7],87:[2,7]},{1:[2,2],11:[2,2],14:[2,2],20:[2,2],22:[2,2],23:[2,2],26:[2,2],27:[2,2],28:[2,2],29:[2,2],30:[2,2],31:[2,2],32:[2,2],33:[2,2],35:[2,2],40:[2,2],58:[2,2],59:[2,2],61:[2,2],62:[2,2],66:[2,2],68:[2,2],76:[2,2],79:[2,2],80:[2,2],81:[2,2],82:[2,2],84:[2,2],85:[2,2],87:[2,2]},{1:[2,3],11:[2,3],14:[2,3],20:[2,3],22:[2,3],23:[2,3],26:[2,3],27:[2,3],28:[2,3],29:[2,3],30:[2,3],31:[2,3],32:[2,3],33:[2,3],35:[2,3],40:[2,3],58:[2,3],59:[2,3],61:[2,3],62:[2,3],66:[2,3],68:[2,3],76:[2,3],79:[2,3],80:[2,3],81:[2,3],82:[2,3],84:[2,3],85:[2,3],87:[2,3]},{1:[2,12],11:[2,12],14:[2,12],20:[2,12],22:[2,12],23:[2,12],26:[2,12],27:[2,12],28:[2,12],29:[2,12],30:[2,12],31:[2,12],32:[2,12],33:[2,12],35:[2,12],36:[2,12],40:[2,12],54:[2,12],58:[2,12],59:[2,12],61:[2,12],62:[2,12],66:[2,12],68:[2,12],76:[2,12],79:[2,12],81:[2,12],82:[2,12],84:[2,12],85:[2,12],87:[2,12]},{1:[2,13],11:[2,13],14:[2,13],20:[2,13],22:[2,13],23:[2,13],26:[2,13],27:[2,13],28:[2,13],29:[2,13],30:[2,13],31:[2,13],32:[2,13],33:[2,13],35:[2,13],36:[2,13],40:[2,13],54:[2,13],58:[2,13],59:[2,13],61:[2,13],62:[2,13],66:[2,13],68:[2,13],76:[2,13],79:[2,13],80:[2,13],81:[2,13],82:[2,13],84:[2,13],85:[2,13],87:[2,13]},{1:[2,19],11:[2,19],14:[2,19],20:[2,19],22:[2,19],23:[2,19],26:[2,19],27:[2,19],28:[2,19],29:[2,19],30:[2,19],31:[2,19],32:[2,19],33:[2,19],35:[2,19],36:[2,19],40:[2,19],54:[2,19],58:[2,19],59:[2,19],61:[2,19],62:[2,19],66:[2,19],68:[2,19],76:[2,19],79:[2,19],80:[2,19],81:[2,19],82:[2,19],84:[2,19],85:[2,19],87:[2,19]},{3:10,4:14,5:28,6:29,7:9,8:87,9:26,10:[1,27],12:82,15:[1,86],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:85,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],58:[2,68],59:[2,68],60:83,61:[2,68],63:84,64:[1,43],65:[1,40],67:[1,33],68:[2,68],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{42:88,61:[1,5]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:89,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:90,4:93,5:28,6:29,7:65,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,91],19:31,21:[1,41],24:[1,32],64:[1,43],65:[1,40],75:[1,42],86:[1,92]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:94,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,10],11:[2,10],14:[2,10],16:[2,10],17:[2,10],20:[2,10],22:[2,10],23:[2,10],27:[2,10],28:[2,10],29:[2,10],30:[2,10],31:[2,10],32:[2,10],33:[2,10],35:[2,10],40:[2,10],58:[2,10],59:[2,10],61:[2,10],62:[2,10],66:[2,10],68:[2,10],76:[2,10],79:[2,10],81:[2,10],84:[2,10],85:[2,10],87:[2,10]},{1:[2,11],11:[2,11],14:[2,11],16:[2,11],17:[2,11],20:[2,11],22:[2,11],23:[2,11],27:[2,11],28:[2,11],29:[2,11],30:[2,11],31:[2,11],32:[2,11],33:[2,11],35:[2,11],40:[2,11],58:[2,11],59:[2,11],61:[2,11],62:[2,11],66:[2,11],68:[2,11],76:[2,11],79:[2,11],81:[2,11],84:[2,11],85:[2,11],87:[2,11]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],15:[1,8],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:6,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],55:4,56:[1,7],57:95,61:[1,96],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:87,9:26,10:[1,27],12:97,15:[1,86],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],22:[2,68],24:[1,32],25:85,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],58:[2,68],59:[2,68],60:83,61:[2,68],63:84,64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{9:107,15:[1,102],16:[1,105],18:[1,106],19:108,27:[1,103],56:[1,104],58:[2,97],59:[2,97],61:[2,97],64:[1,43],65:[1,40],70:101,71:99,73:98,74:100,76:[2,97]},{1:[2,78],11:[2,78],14:[2,78],20:[2,78],22:[2,78],23:[2,78],26:[2,78],27:[2,78],28:[2,78],29:[2,78],30:[2,78],31:[2,78],32:[2,78],33:[2,78],35:[2,78],36:[2,78],40:[2,78],54:[2,78],58:[2,78],59:[2,78],61:[2,78],62:[2,78],66:[2,78],68:[2,78],72:[2,78],76:[2,78],79:[2,78],80:[2,78],81:[2,78],82:[2,78],84:[2,78],85:[2,78],87:[2,78]},{1:[2,63],3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],15:[1,8],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:6,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],55:109,56:[1,7],58:[2,63],62:[2,63],64:[1,43],65:[1,40],66:[2,63],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,125]},{58:[1,44],62:[1,110]},{1:[2,82],14:[2,82],22:[2,82],27:[2,82],28:[2,82],29:[2,82],30:[2,82],31:[2,82],32:[2,82],33:[2,82],35:[2,82],40:[2,82],48:[2,82],50:[2,82],51:[2,82],58:[2,82],59:[2,82],61:[2,82],62:[2,82],66:[2,82],68:[2,82],76:[2,82],78:[2,82],79:[2,82],81:[2,82],84:[2,82],85:[2,82],87:[2,82]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:111,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:112,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:113,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:114,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:115,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:116,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:117,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,31],14:[2,31],22:[2,31],27:[2,31],28:[2,31],29:[2,31],30:[2,31],31:[2,31],32:[2,31],33:[2,31],35:[2,31],40:[2,31],58:[2,31],59:[2,31],61:[2,31],62:[2,31],66:[2,31],68:[2,31],76:[2,31],79:[2,31],81:[2,31],84:[2,31],85:[2,31],87:[2,31]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:118,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,40],14:[2,40],22:[2,40],27:[2,40],28:[2,40],29:[2,40],30:[2,40],31:[2,40],32:[2,40],33:[2,40],35:[2,40],40:[2,40],58:[2,40],59:[2,40],61:[2,40],62:[2,40],66:[2,40],68:[2,40],76:[2,40],79:[2,40],81:[2,40],84:[2,40],85:[2,40],87:[2,40]},{3:10,4:14,5:28,6:29,7:9,8:87,9:26,10:[1,27],12:119,14:[2,68],15:[1,120],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:85,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],58:[2,68],59:[2,68],60:83,61:[2,68],63:84,64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{9:123,16:[1,122],18:[1,121],21:[1,124],65:[1,40]},{6:125,75:[1,42]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:126,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,29],14:[2,29],22:[2,29],27:[2,29],28:[2,29],29:[2,29],30:[2,29],31:[2,29],32:[2,29],33:[2,29],35:[1,55],40:[2,29],41:57,58:[2,29],59:[2,29],61:[2,29],62:[2,29],66:[2,29],68:[2,29],76:[2,29],79:[2,29],81:[2,29],84:[2,29],85:[2,29],87:[2,29]},{1:[2,30],14:[2,30],22:[2,30],27:[2,30],28:[2,30],29:[2,30],30:[2,30],31:[2,30],32:[2,30],33:[2,30],35:[1,55],40:[2,30],41:57,58:[2,30],59:[2,30],61:[2,30],62:[2,30],66:[2,30],68:[2,30],76:[2,30],79:[2,30],81:[2,30],84:[2,30],85:[2,30],87:[2,30]},{1:[2,32],11:[2,1],14:[2,32],20:[2,1],22:[2,32],23:[2,1],27:[2,32],28:[2,32],29:[2,32],30:[2,32],31:[2,32],32:[2,32],33:[2,32],35:[2,32],40:[2,32],58:[2,32],59:[2,32],61:[2,32],62:[2,32],66:[2,32],68:[2,32],76:[2,32],79:[2,32],81:[2,32],84:[2,32],85:[2,32],87:[2,32]},{11:[1,58],20:[1,59],23:[1,60]},{11:[2,4],20:[2,4],23:[2,4]},{1:[2,33],14:[2,33],22:[2,33],27:[2,33],28:[2,33],29:[2,33],30:[2,33],31:[2,33],32:[2,33],33:[2,33],35:[2,33],40:[2,33],58:[2,33],59:[2,33],61:[2,33],62:[2,33],66:[2,33],68:[2,33],76:[2,33],79:[2,33],81:[2,33],84:[2,33],85:[2,33],87:[2,33]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:127,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,35],14:[2,35],22:[2,35],27:[2,35],28:[2,35],29:[2,35],30:[2,35],31:[2,35],32:[2,35],33:[2,35],35:[2,35],40:[2,35],58:[2,35],59:[2,35],61:[2,35],62:[2,35],66:[2,35],68:[2,35],76:[2,35],79:[2,35],81:[2,35],84:[2,35],85:[2,35],87:[2,35]},{37:128,67:[1,33],69:[1,34]},{42:130,61:[1,5],77:[1,129]},{1:[2,39],14:[2,39],22:[2,39],27:[2,39],28:[2,39],29:[2,39],30:[2,39],31:[2,39],32:[2,39],33:[2,39],35:[2,39],40:[2,39],58:[2,39],59:[2,39],61:[2,39],62:[2,39],66:[2,39],68:[2,39],76:[2,39],79:[2,39],81:[2,39],84:[2,39],85:[2,39],87:[2,39]},{1:[2,41],14:[2,41],22:[2,41],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,41],41:57,58:[2,41],59:[2,41],61:[2,41],62:[2,41],66:[2,41],68:[2,41],76:[2,41],79:[2,41],81:[2,41],84:[2,41],85:[2,41],87:[2,41]},{1:[2,44],14:[2,44],22:[2,44],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,44],41:57,58:[2,44],59:[2,44],61:[2,44],62:[2,44],66:[2,44],68:[2,44],76:[2,44],79:[2,44],81:[2,44],84:[2,44],85:[2,44],87:[2,44]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,47:131,79:[1,36],85:[1,37],87:[1,77]},{1:[2,47],14:[2,47],22:[2,47],27:[2,47],28:[2,47],29:[2,47],30:[2,47],31:[2,47],32:[2,47],33:[2,47],35:[2,47],40:[2,47],48:[1,132],58:[2,47],59:[2,47],61:[2,47],62:[2,47],66:[2,47],68:[2,47],76:[2,47],79:[2,47],81:[2,47],84:[2,47],85:[2,47],87:[1,133]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:134,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,49],14:[2,49],22:[2,49],27:[2,49],28:[2,49],29:[2,49],30:[2,49],31:[2,49],32:[2,49],33:[2,49],35:[2,49],40:[2,49],50:[1,135],51:[1,136],58:[2,49],59:[2,49],61:[2,49],62:[2,49],66:[2,49],68:[2,49],76:[2,49],79:[2,49],81:[2,49],84:[2,49],85:[2,49],87:[2,49]},{1:[2,53],14:[2,53],22:[2,53],27:[2,53],28:[2,53],29:[2,53],30:[2,53],31:[2,53],32:[2,53],33:[2,53],35:[2,53],40:[2,53],42:137,58:[2,53],59:[2,53],61:[1,5],62:[2,53],66:[2,53],68:[2,53],76:[2,53],79:[2,53],81:[2,53],84:[2,53],85:[2,53],87:[2,53]},{1:[2,122],11:[2,1],14:[2,122],20:[2,1],22:[2,122],23:[2,1],27:[2,122],28:[2,122],29:[2,122],30:[2,122],31:[2,122],32:[2,122],33:[2,122],35:[2,122],40:[2,122],53:138,54:[1,81],58:[2,122],59:[2,122],61:[2,122],62:[2,122],66:[2,122],68:[2,122],76:[2,122],79:[2,122],81:[2,122],84:[2,122],85:[2,122],87:[2,122]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:139,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{13:140,58:[2,64],59:[1,141],61:[2,64],68:[2,64]},{14:[2,69],22:[2,69],58:[2,69],59:[2,69],61:[2,69],62:[2,69],68:[2,69]},{8:142,14:[2,73],16:[1,38],17:[1,39],22:[2,73],58:[2,73],59:[2,73],61:[2,73],62:[2,73],68:[2,73]},{14:[2,66],22:[2,66],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,58:[2,66],59:[2,66],61:[2,66],62:[2,66],68:[2,66],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:143,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{8:144,11:[2,5],14:[2,5],16:[1,38],17:[1,39],20:[2,5],22:[2,5],23:[2,5],27:[2,5],28:[2,5],29:[2,5],30:[2,5],31:[2,5],32:[2,5],33:[2,5],35:[2,5],40:[2,5],58:[2,5],59:[2,5],61:[2,5],62:[2,5],68:[2,5],79:[2,5],85:[2,5]},{1:[2,84],14:[2,84],22:[2,84],27:[2,84],28:[2,84],29:[2,84],30:[2,84],31:[2,84],32:[2,84],33:[2,84],35:[2,84],40:[2,84],58:[2,84],59:[2,84],61:[2,84],62:[2,84],66:[2,84],68:[2,84],76:[2,84],79:[2,84],81:[2,84],84:[2,84],85:[2,84],87:[2,84]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,42:145,61:[1,5],79:[1,36],85:[1,37]},{11:[2,4],20:[2,4],23:[2,4],80:[1,146]},{11:[2,12],20:[2,12],23:[2,12],59:[1,148],80:[2,12],82:[1,147],83:[1,149]},{1:[2,119],14:[2,119],22:[2,119],27:[2,119],28:[2,119],29:[2,119],30:[2,119],31:[2,119],32:[2,119],33:[2,119],35:[2,119],40:[2,119],58:[2,119],59:[2,119],61:[2,119],62:[2,119],66:[2,119],68:[2,119],76:[2,119],79:[2,119],81:[2,119],84:[2,119],85:[2,119],87:[2,119]},{11:[2,1],20:[2,1],23:[2,1],80:[2,1],82:[2,1]},{1:[2,118],14:[2,118],22:[2,118],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,118],41:57,58:[2,118],59:[2,118],61:[2,118],62:[2,118],66:[2,118],68:[2,118],76:[2,118],79:[2,118],81:[2,118],84:[2,118],85:[2,118],87:[2,118]},{58:[1,44],66:[1,150]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],15:[1,8],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:6,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],55:4,56:[1,7],57:151,64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{13:152,22:[2,64],58:[2,64],59:[1,141],61:[2,64]},{13:153,58:[2,64],59:[1,154],61:[2,64],76:[2,64]},{58:[2,98],59:[2,98],61:[2,98],62:[2,98],76:[2,98]},{16:[1,155],58:[2,102],59:[2,102],61:[2,102],62:[2,102],76:[2,102]},{31:[1,157],58:[2,92],59:[2,92],61:[2,92],62:[2,92],72:[1,156],76:[2,92]},{9:107,16:[1,159],18:[1,106],19:108,64:[1,43],65:[1,40],70:158},{9:107,16:[1,159],18:[1,106],19:108,64:[1,43],65:[1,40],70:160},{58:[2,96],59:[2,96],61:[2,96],62:[2,96],76:[2,96]},{16:[1,161],31:[2,87],58:[2,87],59:[2,87],61:[2,87],62:[2,87],72:[2,87],76:[2,87]},{31:[2,86],58:[2,86],59:[2,86],61:[2,86],62:[2,86],72:[2,86],76:[2,86]},{31:[2,88],58:[2,88],59:[2,88],61:[2,88],62:[2,88],72:[2,88],76:[2,88]},{31:[2,89],58:[2,89],59:[2,89],61:[2,89],62:[2,89],72:[2,89],76:[2,89]},{1:[2,62],58:[2,62],62:[2,62],66:[2,62]},{1:[2,81],14:[2,81],22:[2,81],27:[2,81],28:[2,81],29:[2,81],30:[2,81],31:[2,81],32:[2,81],33:[2,81],35:[2,81],40:[2,81],48:[2,81],50:[2,81],51:[2,81],58:[2,81],59:[2,81],61:[2,81],62:[2,81],66:[2,81],68:[2,81],76:[2,81],78:[2,81],79:[2,81],81:[2,81],84:[2,81],85:[2,81],87:[2,81]},{1:[2,22],14:[2,22],22:[2,22],27:[2,22],28:[1,49],29:[2,22],30:[2,22],31:[2,22],32:[2,22],33:[2,22],35:[1,55],40:[2,22],41:57,58:[2,22],59:[2,22],61:[2,22],62:[2,22],66:[2,22],68:[2,22],76:[2,22],79:[2,22],81:[2,22],84:[2,22],85:[2,22],87:[2,22]},{1:[2,23],14:[2,23],22:[2,23],27:[2,23],28:[2,23],29:[2,23],30:[2,23],31:[2,23],32:[2,23],33:[2,23],35:[1,55],40:[2,23],41:57,58:[2,23],59:[2,23],61:[2,23],62:[2,23],66:[2,23],68:[2,23],76:[2,23],79:[2,23],81:[2,23],84:[2,23],85:[2,23],87:[2,23]},{1:[2,24],14:[2,24],22:[2,24],27:[1,48],28:[1,49],29:[2,24],30:[2,24],31:[2,24],32:[2,24],33:[2,24],35:[1,55],40:[2,24],41:57,58:[2,24],59:[2,24],61:[2,24],62:[2,24],66:[2,24],68:[2,24],76:[2,24],79:[2,24],81:[2,24],84:[2,24],85:[2,24],87:[2,24]},{1:[2,25],14:[2,25],22:[2,25],27:[1,48],28:[1,49],29:[1,50],30:[2,25],31:[2,25],32:[1,53],33:[1,54],35:[1,55],40:[2,25],41:57,58:[2,25],59:[2,25],61:[2,25],62:[2,25],66:[2,25],68:[2,25],76:[2,25],79:[2,25],81:[2,25],84:[2,25],85:[2,25],87:[2,25]},{1:[2,26],14:[2,26],22:[2,26],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[2,26],32:[1,53],33:[1,54],35:[1,55],40:[2,26],41:57,58:[2,26],59:[2,26],61:[2,26],62:[2,26],66:[2,26],68:[2,26],76:[2,26],79:[2,26],81:[2,26],84:[2,26],85:[2,26],87:[2,26]},{1:[2,27],14:[2,27],22:[2,27],27:[1,48],28:[1,49],29:[2,27],30:[2,27],31:[2,27],32:[2,27],33:[2,27],35:[1,55],40:[2,27],41:57,58:[2,27],59:[2,27],61:[2,27],62:[2,27],66:[2,27],68:[2,27],76:[2,27],79:[2,27],81:[2,27],84:[2,27],85:[2,27],87:[2,27]},{1:[2,28],14:[2,28],22:[2,28],27:[1,48],28:[1,49],29:[1,50],30:[2,28],31:[2,28],32:[1,53],33:[2,28],35:[1,55],40:[2,28],41:57,58:[2,28],59:[2,28],61:[2,28],62:[2,28],66:[2,28],68:[2,28],76:[2,28],79:[2,28],81:[2,28],84:[2,28],85:[2,28],87:[2,28]},{1:[2,38],14:[2,38],22:[2,38],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,38],41:57,58:[2,38],59:[2,38],61:[2,38],62:[2,38],66:[2,38],68:[2,38],76:[2,38],79:[2,38],81:[2,38],84:[2,38],85:[2,38],87:[2,38]},{13:162,14:[2,64],58:[2,64],59:[1,141],61:[2,64]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],14:[1,163],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:143,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,14],11:[2,14],14:[2,14],20:[2,14],22:[2,14],23:[2,14],26:[2,14],27:[2,14],28:[2,14],29:[2,14],30:[2,14],31:[2,14],32:[2,14],33:[2,14],35:[2,14],36:[2,14],40:[2,14],54:[2,14],58:[2,14],59:[2,14],61:[2,14],62:[2,14],66:[2,14],68:[2,14],76:[2,14],79:[2,14],80:[2,14],81:[2,14],82:[2,14],84:[2,14],85:[2,14],87:[2,14]},{1:[2,15],11:[2,15],14:[2,15],20:[2,15],22:[2,15],23:[2,15],26:[2,15],27:[2,15],28:[2,15],29:[2,15],30:[2,15],31:[2,15],32:[2,15],33:[2,15],35:[2,15],36:[2,15],40:[2,15],54:[2,15],58:[2,15],59:[2,15],61:[2,15],62:[2,15],66:[2,15],68:[2,15],76:[2,15],79:[2,15],80:[2,15],81:[2,15],82:[2,15],84:[2,15],85:[2,15],87:[2,15]},{1:[2,16],11:[2,16],14:[2,16],20:[2,16],22:[2,16],23:[2,16],26:[2,16],27:[2,16],28:[2,16],29:[2,16],30:[2,16],31:[2,16],32:[2,16],33:[2,16],35:[2,16],36:[2,16],40:[2,16],54:[2,16],58:[2,16],59:[2,16],61:[2,16],62:[2,16],66:[2,16],68:[2,16],76:[2,16],79:[2,16],80:[2,16],81:[2,16],82:[2,16],84:[2,16],85:[2,16],87:[2,16]},{3:10,4:14,5:28,6:29,7:9,8:87,9:26,10:[1,27],12:164,15:[1,86],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],22:[2,68],24:[1,32],25:85,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],58:[2,68],59:[2,68],60:83,61:[2,68],63:84,64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,18],11:[2,18],14:[2,18],20:[2,18],22:[2,18],23:[2,18],26:[2,18],27:[2,18],28:[2,18],29:[2,18],30:[2,18],31:[2,18],32:[2,18],33:[2,18],35:[2,18],36:[2,18],40:[2,18],54:[2,18],58:[2,18],59:[2,18],61:[2,18],62:[2,18],66:[2,18],68:[2,18],76:[2,18],79:[2,18],80:[2,18],81:[2,18],82:[2,18],84:[2,18],85:[2,18],87:[2,18]},{1:[2,21],14:[2,21],22:[2,21],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,21],41:57,58:[2,21],59:[2,21],61:[2,21],62:[2,21],66:[2,21],68:[2,21],76:[2,21],79:[2,21],81:[2,21],84:[2,21],85:[2,21],87:[2,21]},{1:[2,57],14:[2,57],22:[2,57],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,57],41:57,58:[2,57],59:[2,57],61:[2,57],62:[2,57],66:[2,57],68:[2,57],76:[2,57],79:[2,57],81:[2,57],84:[2,57],85:[2,57],87:[2,57]},{1:[2,36],14:[2,36],22:[2,36],27:[2,36],28:[2,36],29:[2,36],30:[2,36],31:[2,36],32:[2,36],33:[2,36],35:[2,36],40:[2,36],58:[2,36],59:[2,36],61:[2,36],62:[2,36],66:[2,36],68:[2,36],76:[2,36],79:[2,36],81:[2,36],84:[2,36],85:[2,36],87:[2,36]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:165,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,110],14:[2,110],22:[2,110],27:[2,110],28:[2,110],29:[2,110],30:[2,110],31:[2,110],32:[2,110],33:[2,110],35:[2,110],40:[2,110],58:[2,110],59:[2,110],61:[2,110],62:[2,110],66:[2,110],68:[2,110],76:[2,110],78:[2,110],79:[2,110],81:[2,110],84:[2,110],85:[2,110],87:[2,110]},{1:[2,45],14:[2,45],22:[2,45],27:[2,45],28:[2,45],29:[2,45],30:[2,45],31:[2,45],32:[2,45],33:[2,45],35:[2,45],40:[2,45],48:[1,166],58:[2,45],59:[2,45],61:[2,45],62:[2,45],66:[2,45],68:[2,45],76:[2,45],79:[2,45],81:[2,45],84:[2,45],85:[2,45],87:[1,133]},{42:167,61:[1,5]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:168,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,42:169,61:[1,5],79:[1,36],85:[1,37]},{42:170,61:[1,5]},{42:171,61:[1,5]},{1:[2,54],14:[2,54],22:[2,54],27:[2,54],28:[2,54],29:[2,54],30:[2,54],31:[2,54],32:[2,54],33:[2,54],35:[2,54],40:[2,54],58:[2,54],59:[2,54],61:[2,54],62:[2,54],66:[2,54],68:[2,54],76:[2,54],79:[2,54],81:[2,54],84:[2,54],85:[2,54],87:[2,54]},{1:[2,55],14:[2,55],22:[2,55],27:[2,55],28:[2,55],29:[2,55],30:[2,55],31:[2,55],32:[2,55],33:[2,55],35:[2,55],40:[2,55],42:172,58:[2,55],59:[2,55],61:[1,5],62:[2,55],66:[2,55],68:[2,55],76:[2,55],79:[2,55],81:[2,55],84:[2,55],85:[2,55],87:[2,55]},{1:[2,123],14:[2,123],22:[2,123],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,123],41:57,58:[2,123],59:[2,123],61:[2,123],62:[2,123],66:[2,123],68:[2,123],76:[2,123],79:[2,123],81:[2,123],84:[2,123],85:[2,123],87:[2,123]},{58:[1,174],61:[1,175],68:[1,173]},{3:10,4:14,5:28,6:29,7:9,8:87,9:26,10:[1,27],14:[2,65],15:[1,86],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],22:[2,65],24:[1,32],25:85,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],58:[2,65],60:176,61:[2,65],62:[2,65],63:177,64:[1,43],65:[1,40],67:[1,33],68:[2,65],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{14:[2,77],16:[2,77],17:[2,77],22:[2,77],58:[2,77],59:[2,77],61:[2,77],62:[2,77],68:[2,77]},{14:[2,67],22:[2,67],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,58:[2,67],59:[2,67],61:[2,67],62:[2,67],68:[2,67],79:[1,36],85:[1,37]},{14:[2,76],16:[2,76],17:[2,76],22:[2,76],58:[2,76],59:[2,76],61:[2,76],62:[2,76],68:[2,76]},{1:[2,108],14:[2,108],22:[2,108],27:[2,108],28:[2,108],29:[2,108],30:[2,108],31:[2,108],32:[2,108],33:[2,108],35:[2,108],40:[2,108],58:[2,108],59:[2,108],61:[2,108],62:[2,108],66:[2,108],68:[2,108],76:[2,108],78:[2,108],79:[2,108],81:[2,108],84:[2,108],85:[2,108],87:[2,108]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:178,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:179,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:180,4:93,5:28,6:29,7:65,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],64:[1,43],65:[1,40],75:[1,42]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:181,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,79],11:[2,79],14:[2,79],20:[2,79],22:[2,79],23:[2,79],26:[2,79],27:[2,79],28:[2,79],29:[2,79],30:[2,79],31:[2,79],32:[2,79],33:[2,79],35:[2,79],36:[2,79],40:[2,79],54:[2,79],58:[2,79],59:[2,79],61:[2,79],62:[2,79],66:[2,79],68:[2,79],72:[2,79],76:[2,79],79:[2,79],80:[2,79],81:[2,79],82:[2,79],84:[2,79],85:[2,79],87:[2,79]},{58:[1,44],62:[1,182]},{22:[1,183],58:[1,174],61:[1,175]},{58:[1,185],61:[1,186],76:[1,184]},{9:107,15:[1,102],16:[1,105],18:[1,106],19:108,27:[1,103],56:[1,104],58:[2,65],61:[2,65],62:[2,65],64:[1,43],65:[1,40],70:101,71:187,74:188,76:[2,65]},{16:[2,106],58:[2,106],59:[2,106],61:[2,106],62:[2,106],76:[2,106]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:189,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],61:[1,190],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:191,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{58:[2,93],59:[2,93],61:[2,93],62:[2,93],76:[2,93]},{58:[2,87],59:[2,87],61:[2,87],62:[2,87],76:[2,87]},{58:[2,94],59:[2,94],61:[2,94],62:[2,94],76:[2,94]},{16:[2,105],58:[2,105],59:[2,105],61:[2,105],62:[2,105],76:[2,105]},{14:[1,192],58:[1,174],61:[1,175]},{1:[2,9],11:[2,9],14:[2,9],20:[2,9],22:[2,9],23:[2,9],27:[2,9],28:[2,9],29:[2,9],30:[2,9],31:[2,9],32:[2,9],33:[2,9],35:[2,9],40:[2,9],58:[2,9],59:[2,9],61:[2,9],62:[2,9],66:[2,9],68:[2,9],76:[2,9],79:[2,9],81:[2,9],84:[2,9],85:[2,9],87:[2,9]},{13:193,22:[2,64],58:[2,64],59:[1,141],61:[2,64]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,42:194,61:[1,5],79:[1,36],85:[1,37]},{42:195,61:[1,5]},{1:[2,48],14:[2,48],22:[2,48],27:[2,48],28:[2,48],29:[2,48],30:[2,48],31:[2,48],32:[2,48],33:[2,48],35:[2,48],40:[2,48],58:[2,48],59:[2,48],61:[2,48],62:[2,48],66:[2,48],68:[2,48],76:[2,48],79:[2,48],81:[2,48],84:[2,48],85:[2,48],87:[2,48]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,42:196,61:[1,5],79:[1,36],85:[1,37]},{1:[2,120],14:[2,120],22:[2,120],27:[2,120],28:[2,120],29:[2,120],30:[2,120],31:[2,120],32:[2,120],33:[2,120],35:[2,120],40:[2,120],48:[2,120],58:[2,120],59:[2,120],61:[2,120],62:[2,120],66:[2,120],68:[2,120],76:[2,120],79:[2,120],81:[2,120],84:[2,120],85:[2,120],87:[2,120]},{1:[2,50],14:[2,50],22:[2,50],27:[2,50],28:[2,50],29:[2,50],30:[2,50],31:[2,50],32:[2,50],33:[2,50],35:[2,50],40:[2,50],51:[1,197],58:[2,50],59:[2,50],61:[2,50],62:[2,50],66:[2,50],68:[2,50],76:[2,50],79:[2,50],81:[2,50],84:[2,50],85:[2,50],87:[2,50]},{1:[2,52],14:[2,52],22:[2,52],27:[2,52],28:[2,52],29:[2,52],30:[2,52],31:[2,52],32:[2,52],33:[2,52],35:[2,52],40:[2,52],58:[2,52],59:[2,52],61:[2,52],62:[2,52],66:[2,52],68:[2,52],76:[2,52],79:[2,52],81:[2,52],84:[2,52],85:[2,52],87:[2,52]},{1:[2,56],14:[2,56],22:[2,56],27:[2,56],28:[2,56],29:[2,56],30:[2,56],31:[2,56],32:[2,56],33:[2,56],35:[2,56],40:[2,56],58:[2,56],59:[2,56],61:[2,56],62:[2,56],66:[2,56],68:[2,56],76:[2,56],79:[2,56],81:[2,56],84:[2,56],85:[2,56],87:[2,56]},{69:[1,198]},{3:10,4:14,5:28,6:29,7:9,8:87,9:26,10:[1,27],15:[1,86],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:85,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],60:199,63:200,64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:87,9:26,10:[1,27],12:201,15:[1,86],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:85,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],58:[2,68],59:[2,68],60:83,61:[2,68],62:[2,68],63:84,64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{14:[2,70],22:[2,70],58:[2,70],59:[2,70],61:[2,70],62:[2,70],68:[2,70]},{8:142,14:[2,74],16:[1,38],17:[1,39],22:[2,74],58:[2,74],59:[2,74],61:[2,74],62:[2,74],68:[2,74]},{1:[2,111],14:[2,111],22:[2,111],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,111],41:57,58:[2,111],59:[2,111],61:[2,111],62:[2,111],66:[2,111],68:[2,111],76:[2,111],79:[2,111],81:[1,202],84:[2,111],85:[2,111],87:[2,111]},{1:[2,113],14:[2,113],22:[2,113],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,113],41:57,58:[2,113],59:[2,113],61:[2,113],62:[2,113],66:[2,113],68:[2,113],76:[2,113],79:[2,113],81:[2,113],84:[2,113],85:[2,113],87:[2,113]},{11:[2,4],20:[2,4],23:[2,4],82:[1,203]},{1:[2,115],14:[2,115],22:[2,115],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,115],41:57,58:[2,115],59:[2,115],61:[2,115],62:[2,115],66:[2,115],68:[2,115],76:[2,115],79:[2,115],81:[2,115],84:[1,204],85:[2,115],87:[2,115]},{66:[1,205]},{1:[2,85],11:[2,85],14:[2,85],20:[2,85],22:[2,85],23:[2,85],26:[2,85],27:[2,85],28:[2,85],29:[2,85],30:[2,85],31:[2,85],32:[2,85],33:[2,85],35:[2,85],40:[2,85],58:[2,85],59:[2,85],61:[2,85],62:[2,85],66:[2,85],68:[2,85],76:[2,85],79:[2,85],80:[2,85],81:[2,85],82:[2,85],84:[2,85],85:[2,85],87:[2,85]},{1:[2,107],11:[2,107],14:[2,107],20:[2,107],22:[2,107],23:[2,107],26:[2,107],27:[2,107],28:[2,107],29:[2,107],30:[2,107],31:[2,107],32:[2,107],33:[2,107],35:[2,107],36:[2,107],40:[2,107],54:[2,107],58:[2,107],59:[2,107],61:[2,107],62:[2,107],66:[2,107],68:[2,107],76:[2,107],79:[2,107],80:[2,107],81:[2,107],82:[2,107],84:[2,107],85:[2,107],87:[2,107]},{9:107,15:[1,102],16:[1,105],18:[1,106],19:108,27:[1,103],56:[1,104],64:[1,43],65:[1,40],70:101,71:206,74:207},{9:107,15:[1,102],16:[1,105],18:[1,106],19:108,27:[1,103],56:[1,104],58:[2,97],59:[2,97],61:[2,97],62:[2,97],64:[1,43],65:[1,40],70:101,71:99,73:208,74:100},{58:[2,99],59:[2,99],61:[2,99],62:[2,99],76:[2,99]},{16:[1,155],58:[2,103],59:[2,103],61:[2,103],62:[2,103],76:[2,103]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,58:[2,90],59:[2,90],61:[2,90],62:[2,90],76:[2,90],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:209,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,58:[2,95],59:[2,95],61:[2,95],62:[2,95],76:[2,95],79:[1,36],85:[1,37]},{1:[2,8],11:[2,8],14:[2,8],20:[2,8],22:[2,8],23:[2,8],27:[2,8],28:[2,8],29:[2,8],30:[2,8],31:[2,8],32:[2,8],33:[2,8],35:[2,8],40:[2,8],58:[2,8],59:[2,8],61:[2,8],62:[2,8],66:[2,8],68:[2,8],76:[2,8],79:[2,8],81:[2,8],84:[2,8],85:[2,8],87:[2,8]},{22:[1,210],58:[1,174],61:[1,175]},{1:[2,109],14:[2,109],22:[2,109],27:[2,109],28:[2,109],29:[2,109],30:[2,109],31:[2,109],32:[2,109],33:[2,109],35:[2,109],40:[2,109],58:[2,109],59:[2,109],61:[2,109],62:[2,109],66:[2,109],68:[2,109],76:[2,109],78:[2,109],79:[2,109],81:[2,109],84:[2,109],85:[2,109],87:[2,109]},{1:[2,46],14:[2,46],22:[2,46],27:[2,46],28:[2,46],29:[2,46],30:[2,46],31:[2,46],32:[2,46],33:[2,46],35:[2,46],40:[2,46],58:[2,46],59:[2,46],61:[2,46],62:[2,46],66:[2,46],68:[2,46],76:[2,46],79:[2,46],81:[2,46],84:[2,46],85:[2,46],87:[2,46]},{1:[2,121],14:[2,121],22:[2,121],27:[2,121],28:[2,121],29:[2,121],30:[2,121],31:[2,121],32:[2,121],33:[2,121],35:[2,121],40:[2,121],48:[2,121],58:[2,121],59:[2,121],61:[2,121],62:[2,121],66:[2,121],68:[2,121],76:[2,121],79:[2,121],81:[2,121],84:[2,121],85:[2,121],87:[2,121]},{42:211,61:[1,5]},{42:212,61:[1,5]},{14:[2,71],22:[2,71],58:[2,71],59:[2,71],61:[2,71],62:[2,71],68:[2,71]},{8:142,14:[2,75],16:[1,38],17:[1,39],22:[2,75],58:[2,75],59:[2,75],61:[2,75],62:[2,75],68:[2,75]},{13:213,58:[2,64],59:[1,141],61:[2,64],62:[2,64]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:214,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:215,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:216,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{1:[2,80],11:[2,80],14:[2,80],20:[2,80],22:[2,80],23:[2,80],26:[2,80],27:[2,80],28:[2,80],29:[2,80],30:[2,80],31:[2,80],32:[2,80],33:[2,80],35:[2,80],36:[2,80],40:[2,80],54:[2,80],58:[2,80],59:[2,80],61:[2,80],62:[2,80],66:[2,80],68:[2,80],72:[2,80],76:[2,80],79:[2,80],80:[2,80],81:[2,80],82:[2,80],84:[2,80],85:[2,80],87:[2,80]},{58:[2,100],59:[2,100],61:[2,100],62:[2,100],76:[2,100]},{16:[1,155],58:[2,104],59:[2,104],61:[2,104],62:[2,104],76:[2,104]},{13:217,58:[2,64],59:[1,154],61:[2,64],62:[2,64]},{27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[1,56],41:57,62:[1,218],79:[1,36],85:[1,37]},{1:[2,17],11:[2,17],14:[2,17],20:[2,17],22:[2,17],23:[2,17],26:[2,17],27:[2,17],28:[2,17],29:[2,17],30:[2,17],31:[2,17],32:[2,17],33:[2,17],35:[2,17],36:[2,17],40:[2,17],54:[2,17],58:[2,17],59:[2,17],61:[2,17],62:[2,17],66:[2,17],68:[2,17],76:[2,17],79:[2,17],80:[2,17],81:[2,17],82:[2,17],84:[2,17],85:[2,17],87:[2,17]},{1:[2,51],14:[2,51],22:[2,51],27:[2,51],28:[2,51],29:[2,51],30:[2,51],31:[2,51],32:[2,51],33:[2,51],35:[2,51],40:[2,51],58:[2,51],59:[2,51],61:[2,51],62:[2,51],66:[2,51],68:[2,51],76:[2,51],79:[2,51],81:[2,51],84:[2,51],85:[2,51],87:[2,51]},{1:[2,83],14:[2,83],22:[2,83],27:[2,83],28:[2,83],29:[2,83],30:[2,83],31:[2,83],32:[2,83],33:[2,83],35:[2,83],40:[2,83],58:[2,83],59:[2,83],61:[2,83],62:[2,83],66:[2,83],68:[2,83],76:[2,83],79:[2,83],81:[2,83],84:[2,83],85:[2,83],87:[2,83]},{58:[1,174],61:[1,175],62:[1,219]},{1:[2,112],14:[2,112],22:[2,112],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,112],41:57,58:[2,112],59:[2,112],61:[2,112],62:[2,112],66:[2,112],68:[2,112],76:[2,112],79:[2,112],81:[2,112],84:[2,112],85:[2,112],87:[2,112]},{1:[2,114],14:[2,114],22:[2,114],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,114],41:57,58:[2,114],59:[2,114],61:[2,114],62:[2,114],66:[2,114],68:[2,114],76:[2,114],79:[2,114],81:[2,114],84:[2,114],85:[2,114],87:[2,114]},{1:[2,116],14:[2,116],22:[2,116],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,116],41:57,58:[2,116],59:[2,116],61:[2,116],62:[2,116],66:[2,116],68:[2,116],76:[2,116],79:[2,116],81:[1,220],84:[2,116],85:[2,116],87:[2,116]},{58:[1,185],61:[1,186],62:[1,221]},{58:[2,91],59:[2,91],61:[2,91],62:[2,91],76:[2,91]},{14:[2,72],22:[2,72],58:[2,72],59:[2,72],61:[2,72],62:[2,72],68:[2,72]},{3:10,4:14,5:28,6:29,7:9,8:25,9:26,10:[1,27],16:[1,38],17:[1,39],18:[1,30],19:31,21:[1,41],24:[1,32],25:222,27:[1,12],34:[1,11],36:[1,13],37:15,38:[1,16],39:17,41:18,43:[1,19],44:[1,20],45:[1,21],46:[1,22],49:[1,23],52:[1,24],64:[1,43],65:[1,40],67:[1,33],69:[1,34],75:[1,42],77:[1,35],79:[1,36],85:[1,37]},{58:[2,101],59:[2,101],61:[2,101],62:[2,101],76:[2,101]},{1:[2,117],14:[2,117],22:[2,117],27:[1,48],28:[1,49],29:[1,50],30:[1,51],31:[1,52],32:[1,53],33:[1,54],35:[1,55],40:[2,117],41:57,58:[2,117],59:[2,117],61:[2,117],62:[2,117],66:[2,117],68:[2,117],76:[2,117],79:[2,117],81:[2,117],84:[2,117],85:[2,117],87:[2,117]}], | ||
defaultActions: {45:[2,125]}, | ||
table: [{1:[2,116],3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:6,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,39:3,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],54:4,55:[1,7],58:[1,8],59:[1,9],60:2,64:[1,5],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36],84:1},{1:[3]},{1:[2,113],39:39,61:[1,38],64:[1,5]},{61:[1,40]},{1:[2,59],61:[2,59],64:[2,59],65:[2,59],67:[2,59]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:6,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],54:4,55:[1,7],58:[1,8],59:[1,9],60:41,65:[1,42],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,55],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,61:[2,55],64:[2,55],65:[2,55],67:[2,55],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],6:54,9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],56:[2,68],59:[1,57],61:[2,68],62:[2,68],63:55,64:[2,68],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,57],61:[2,57],64:[2,57],65:[2,57],67:[2,57]},{1:[2,58],61:[2,58],64:[2,58],65:[2,58],67:[2,58]},{1:[2,16],8:[2,16],11:[2,16],16:[1,60],17:[2,16],19:[1,61],20:[1,62],26:[2,16],27:[2,16],28:[2,16],29:[2,16],30:[2,16],31:[2,16],32:[2,16],33:[2,16],34:[2,16],40:[2,16],53:[1,59],56:[2,16],61:[2,16],62:[2,16],64:[2,16],65:[2,16],67:[2,16],75:[2,16],77:[2,16],80:[2,16],81:[2,16],83:[2,16]},{1:[2,4],8:[2,4],11:[2,4],16:[2,4],17:[2,4],19:[2,4],20:[2,4],23:[1,63],26:[2,4],27:[2,4],28:[2,4],29:[2,4],30:[2,4],31:[2,4],32:[2,4],33:[2,4],34:[2,4],40:[2,4],53:[2,4],56:[2,4],61:[2,4],62:[2,4],64:[2,4],65:[2,4],67:[2,4],75:[2,4],77:[2,4],80:[2,4],81:[2,4],83:[2,4]},{3:66,4:64,5:[1,29],9:[1,30],12:65,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],66:[1,37]},{1:[2,1],8:[2,1],11:[2,1],16:[2,1],17:[2,1],19:[2,1],20:[2,1],23:[2,1],24:[1,67],26:[2,1],27:[2,1],28:[2,1],29:[2,1],30:[2,1],31:[2,1],32:[2,1],33:[2,1],34:[2,1],40:[2,1],53:[2,1],56:[2,1],61:[2,1],62:[2,1],64:[2,1],65:[2,1],67:[2,1],75:[2,1],77:[2,1],80:[2,1],81:[2,1],83:[2,1]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:68,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:69,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,31],8:[2,31],11:[2,31],17:[2,31],26:[2,31],27:[2,31],28:[2,31],29:[2,31],30:[2,31],31:[2,31],32:[2,31],33:[2,31],34:[2,31],40:[2,31],56:[2,31],61:[2,31],62:[2,31],64:[2,31],65:[2,31],67:[2,31],75:[2,31],77:[2,31],80:[2,31],81:[2,31],83:[2,31]},{35:70,55:[1,58],68:[1,33]},{1:[2,33],8:[2,33],11:[2,33],17:[2,33],26:[2,33],27:[2,33],28:[2,33],29:[2,33],30:[2,33],31:[2,33],32:[2,33],33:[2,33],34:[2,33],38:[1,71],40:[2,33],56:[2,33],61:[2,33],62:[2,33],64:[2,33],65:[2,33],67:[2,33],75:[2,33],77:[2,33],80:[2,33],81:[2,33],83:[2,33]},{39:72,64:[1,5]},{1:[2,41],3:11,4:13,5:[1,29],8:[2,41],9:[1,30],11:[2,41],12:10,13:[1,26],14:[1,27],15:28,17:[2,41],18:[1,31],21:[1,32],22:73,24:[1,12],25:[1,14],26:[1,15],27:[2,41],28:[2,41],29:[2,41],30:[2,41],31:[2,41],32:[2,41],33:[2,41],34:[2,41],35:16,36:[1,17],37:18,40:[2,41],41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],56:[2,41],61:[2,41],62:[2,41],64:[2,41],65:[2,41],66:[1,37],67:[2,41],68:[1,33],74:[1,34],75:[2,41],77:[2,41],80:[2,41],81:[2,41],83:[2,41]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:74,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,40],8:[2,40],11:[2,40],17:[2,40],26:[2,40],27:[2,40],28:[2,40],29:[2,40],30:[2,40],31:[2,40],32:[2,40],33:[2,40],34:[2,40],40:[2,40],56:[2,40],61:[2,40],62:[2,40],64:[2,40],65:[2,40],67:[2,40],75:[2,40],77:[2,40],80:[2,40],81:[2,40],83:[2,40]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:75,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],46:76,48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36],83:[1,77]},{39:78,64:[1,5]},{1:[2,111],3:66,4:80,5:[1,29],8:[2,111],9:[1,30],11:[2,111],12:65,13:[1,26],14:[1,27],15:28,17:[2,111],18:[1,31],21:[1,32],26:[2,111],27:[2,111],28:[2,111],29:[2,111],30:[2,111],31:[2,111],32:[2,111],33:[2,111],34:[2,111],40:[2,111],52:79,53:[1,81],56:[2,111],61:[2,111],62:[2,111],64:[2,111],65:[2,111],66:[1,37],67:[2,111],75:[2,111],77:[2,111],80:[2,111],81:[2,111],83:[2,111]},{1:[2,5],8:[2,5],11:[2,5],16:[2,5],17:[2,5],19:[2,5],20:[2,5],26:[2,5],27:[2,5],28:[2,5],29:[2,5],30:[2,5],31:[2,5],32:[2,5],33:[2,5],34:[2,5],40:[2,5],53:[2,5],56:[2,5],61:[2,5],62:[2,5],64:[2,5],65:[2,5],67:[2,5],75:[2,5],77:[2,5],80:[2,5],81:[2,5],83:[2,5]},{1:[2,6],8:[2,6],11:[2,6],16:[2,6],17:[2,6],19:[2,6],20:[2,6],26:[2,6],27:[2,6],28:[2,6],29:[2,6],30:[2,6],31:[2,6],32:[2,6],33:[2,6],34:[2,6],40:[2,6],53:[2,6],56:[2,6],61:[2,6],62:[2,6],64:[2,6],65:[2,6],67:[2,6],75:[2,6],77:[2,6],80:[2,6],81:[2,6],83:[2,6]},{1:[2,7],8:[2,7],11:[2,7],16:[2,7],17:[2,7],19:[2,7],20:[2,7],26:[2,7],27:[2,7],28:[2,7],29:[2,7],30:[2,7],31:[2,7],32:[2,7],33:[2,7],34:[2,7],40:[2,7],53:[2,7],56:[2,7],61:[2,7],62:[2,7],64:[2,7],65:[2,7],67:[2,7],75:[2,7],77:[2,7],80:[2,7],81:[2,7],83:[2,7]},{3:11,4:13,5:[1,29],6:82,8:[2,68],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],59:[1,57],61:[2,68],62:[2,68],63:55,64:[2,68],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{10:83,11:[2,93],13:[1,94],14:[1,92],15:91,18:[1,93],26:[1,86],58:[1,89],59:[1,88],61:[2,93],62:[2,93],64:[2,93],66:[1,37],69:90,70:85,71:87,72:84},{1:[2,9],8:[2,9],11:[2,9],16:[2,9],17:[2,9],19:[2,9],20:[2,9],23:[2,9],24:[2,9],26:[2,9],27:[2,9],28:[2,9],29:[2,9],30:[2,9],31:[2,9],32:[2,9],33:[2,9],34:[2,9],40:[2,9],53:[2,9],56:[2,9],61:[2,9],62:[2,9],64:[2,9],65:[2,9],67:[2,9],75:[2,9],77:[2,9],78:[2,9],80:[2,9],81:[2,9],83:[2,9]},{1:[2,15],8:[2,15],11:[2,15],16:[2,15],17:[2,15],19:[2,15],20:[2,15],23:[2,15],24:[2,15],26:[2,15],27:[2,15],28:[2,15],29:[2,15],30:[2,15],31:[2,15],32:[2,15],33:[2,15],34:[2,15],40:[2,15],53:[2,15],56:[2,15],61:[2,15],62:[2,15],64:[2,15],65:[2,15],67:[2,15],75:[2,15],76:[2,15],77:[2,15],78:[2,15],80:[2,15],81:[2,15],83:[2,15]},{39:95,64:[1,5]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:96,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:97,4:100,5:[1,29],9:[1,30],12:65,13:[1,26],14:[1,27],15:28,18:[1,98],21:[1,32],66:[1,37],82:[1,99]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:101,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:6,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],54:4,55:[1,7],58:[1,8],59:[1,9],60:102,64:[1,103],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,62],3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:6,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],54:104,55:[1,7],58:[1,8],59:[1,9],61:[2,62],64:[2,62],65:[2,62],66:[1,37],67:[2,62],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,61],61:[2,61],64:[2,61],65:[2,61],67:[2,61]},{1:[2,114],3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:6,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],54:4,55:[1,7],58:[1,8],59:[1,9],60:105,66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{39:39,61:[1,38],64:[1,5],65:[1,106]},{1:[2,76],8:[2,76],11:[2,76],17:[2,76],26:[2,76],27:[2,76],28:[2,76],29:[2,76],30:[2,76],31:[2,76],32:[2,76],33:[2,76],34:[2,76],38:[2,76],40:[2,76],47:[2,76],49:[2,76],50:[2,76],56:[2,76],61:[2,76],62:[2,76],64:[2,76],65:[2,76],67:[2,76],75:[2,76],77:[2,76],80:[2,76],81:[2,76],83:[2,76]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:107,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:108,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:109,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:110,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:111,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:112,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:113,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:114,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,30],8:[2,30],11:[2,30],17:[2,30],26:[2,30],27:[2,30],28:[2,30],29:[2,30],30:[2,30],31:[2,30],32:[2,30],33:[2,30],34:[2,30],40:[2,30],56:[2,30],61:[2,30],62:[2,30],64:[2,30],65:[2,30],67:[2,30],75:[2,30],77:[2,30],80:[2,30],81:[2,30],83:[2,30]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:115,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,37],8:[2,37],11:[2,37],17:[2,37],26:[2,37],27:[2,37],28:[2,37],29:[2,37],30:[2,37],31:[2,37],32:[2,37],33:[2,37],34:[2,37],40:[2,37],56:[2,37],61:[2,37],62:[2,37],64:[2,37],65:[2,37],67:[2,37],75:[2,37],77:[2,37],80:[2,37],81:[2,37],83:[2,37]},{7:116,56:[2,63],61:[2,63],62:[1,117],64:[2,63]},{8:[2,69],17:[2,69],56:[2,69],61:[2,69],62:[2,69],64:[2,69],65:[2,69]},{8:[2,65],17:[2,65],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,56:[2,65],61:[2,65],62:[2,65],64:[2,65],65:[2,65],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],8:[2,67],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,17:[2,67],18:[1,31],21:[1,32],22:118,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],56:[2,67],61:[2,67],62:[2,67],64:[2,67],65:[2,67],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],6:119,9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],56:[2,68],59:[1,57],61:[2,68],62:[2,68],63:55,64:[2,68],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:120,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],6:121,9:[1,30],12:10,13:[1,26],14:[1,27],15:28,17:[2,68],18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],59:[1,57],61:[2,68],62:[2,68],63:55,64:[2,68],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{5:[1,125],13:[1,123],15:124,18:[1,122],66:[1,37]},{9:[1,126]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:127,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,18],8:[2,18],11:[2,18],16:[2,1],17:[2,18],19:[2,1],20:[2,1],26:[2,18],27:[2,18],28:[2,18],29:[2,18],30:[2,18],31:[2,18],32:[2,18],33:[2,18],34:[2,18],40:[2,18],56:[2,18],61:[2,18],62:[2,18],64:[2,18],65:[2,18],67:[2,18],75:[2,18],77:[2,18],80:[2,18],81:[2,18],83:[2,18]},{16:[1,60],19:[1,61],20:[1,62]},{16:[2,4],19:[2,4],20:[2,4]},{1:[2,19],8:[2,19],11:[2,19],17:[2,19],26:[2,19],27:[2,19],28:[2,19],29:[2,19],30:[2,19],31:[2,19],32:[2,19],33:[2,19],34:[2,19],40:[2,19],56:[2,19],61:[2,19],62:[2,19],64:[2,19],65:[2,19],67:[2,19],75:[2,19],77:[2,19],80:[2,19],81:[2,19],83:[2,19]},{1:[2,20],8:[2,20],11:[2,20],17:[2,20],26:[2,20],27:[2,20],28:[2,20],29:[2,20],30:[2,20],31:[2,20],32:[2,20],33:[2,20],34:[1,51],40:[2,20],41:53,56:[2,20],61:[2,20],62:[2,20],64:[2,20],65:[2,20],67:[2,20],75:[2,20],77:[2,20],80:[2,20],81:[2,20],83:[2,20]},{1:[2,21],8:[2,21],11:[2,21],17:[2,21],26:[2,21],27:[2,21],28:[2,21],29:[2,21],30:[2,21],31:[2,21],32:[2,21],33:[2,21],34:[1,51],40:[2,21],41:53,56:[2,21],61:[2,21],62:[2,21],64:[2,21],65:[2,21],67:[2,21],75:[2,21],77:[2,21],80:[2,21],81:[2,21],83:[2,21]},{1:[2,32],8:[2,32],11:[2,32],17:[2,32],26:[2,32],27:[2,32],28:[2,32],29:[2,32],30:[2,32],31:[2,32],32:[2,32],33:[2,32],34:[2,32],40:[2,32],56:[2,32],61:[2,32],62:[2,32],64:[2,32],65:[2,32],67:[2,32],75:[2,32],77:[2,32],80:[2,32],81:[2,32],83:[2,32]},{39:128,64:[1,5],74:[1,129]},{1:[2,36],8:[2,36],11:[2,36],17:[2,36],26:[2,36],27:[2,36],28:[2,36],29:[2,36],30:[2,36],31:[2,36],32:[2,36],33:[2,36],34:[2,36],40:[2,36],56:[2,36],61:[2,36],62:[2,36],64:[2,36],65:[2,36],67:[2,36],75:[2,36],77:[2,36],80:[2,36],81:[2,36],83:[2,36]},{1:[2,38],8:[2,38],11:[2,38],17:[2,38],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,38],41:53,56:[2,38],61:[2,38],62:[2,38],64:[2,38],65:[2,38],67:[2,38],75:[2,38],77:[2,38],80:[2,38],81:[2,38],83:[2,38]},{1:[2,39],8:[2,39],11:[2,39],17:[2,39],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,39],41:53,56:[2,39],61:[2,39],62:[2,39],64:[2,39],65:[2,39],67:[2,39],75:[2,39],77:[2,39],80:[2,39],81:[2,39],83:[2,39]},{26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,46:130,75:[1,35],81:[1,36],83:[1,77]},{1:[2,44],8:[2,44],11:[2,44],17:[2,44],26:[2,44],27:[2,44],28:[2,44],29:[2,44],30:[2,44],31:[2,44],32:[2,44],33:[2,44],34:[2,44],40:[2,44],47:[1,131],56:[2,44],61:[2,44],62:[2,44],64:[2,44],65:[2,44],67:[2,44],75:[2,44],77:[2,44],80:[2,44],81:[2,44],83:[1,132]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:133,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,46],8:[2,46],11:[2,46],17:[2,46],26:[2,46],27:[2,46],28:[2,46],29:[2,46],30:[2,46],31:[2,46],32:[2,46],33:[2,46],34:[2,46],40:[2,46],49:[1,134],50:[1,135],56:[2,46],61:[2,46],62:[2,46],64:[2,46],65:[2,46],67:[2,46],75:[2,46],77:[2,46],80:[2,46],81:[2,46],83:[2,46]},{1:[2,50],8:[2,50],11:[2,50],17:[2,50],26:[2,50],27:[2,50],28:[2,50],29:[2,50],30:[2,50],31:[2,50],32:[2,50],33:[2,50],34:[2,50],39:136,40:[2,50],56:[2,50],61:[2,50],62:[2,50],64:[1,5],65:[2,50],67:[2,50],75:[2,50],77:[2,50],80:[2,50],81:[2,50],83:[2,50]},{1:[2,111],8:[2,111],11:[2,111],16:[2,1],17:[2,111],19:[2,1],20:[2,1],26:[2,111],27:[2,111],28:[2,111],29:[2,111],30:[2,111],31:[2,111],32:[2,111],33:[2,111],34:[2,111],40:[2,111],52:137,53:[1,81],56:[2,111],61:[2,111],62:[2,111],64:[2,111],65:[2,111],67:[2,111],75:[2,111],77:[2,111],80:[2,111],81:[2,111],83:[2,111]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:138,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{7:139,8:[2,63],61:[2,63],62:[1,117],64:[2,63]},{7:140,11:[2,63],61:[2,63],62:[1,141],64:[2,63]},{11:[2,94],61:[2,94],62:[2,94],64:[2,94],65:[2,94]},{11:[2,83],19:[1,143],31:[2,83],61:[2,83],62:[2,83],64:[2,83],65:[2,83],73:[1,142]},{13:[1,94],15:91,18:[1,93],66:[1,37],69:90,70:144},{11:[2,89],31:[1,145],61:[2,89],62:[2,89],64:[2,89],65:[2,89]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:146,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{11:[2,92],61:[2,92],62:[2,92],64:[2,92],65:[2,92]},{11:[2,81],19:[2,81],31:[2,81],61:[2,81],62:[2,81],64:[2,81],65:[2,81],73:[2,81]},{11:[2,82],19:[2,82],31:[2,82],61:[2,82],62:[2,82],64:[2,82],65:[2,82],73:[2,82]},{19:[1,147]},{11:[2,79],19:[2,79],31:[2,79],61:[2,79],62:[2,79],64:[2,79],65:[2,79],73:[2,79]},{11:[2,80],19:[2,80],31:[2,80],61:[2,80],62:[2,80],64:[2,80],65:[2,80],73:[2,80]},{1:[2,78],8:[2,78],11:[2,78],17:[2,78],26:[2,78],27:[2,78],28:[2,78],29:[2,78],30:[2,78],31:[2,78],32:[2,78],33:[2,78],34:[2,78],40:[2,78],56:[2,78],61:[2,78],62:[2,78],64:[2,78],65:[2,78],67:[2,78],75:[2,78],77:[2,78],80:[2,78],81:[2,78],83:[2,78]},{26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],39:148,40:[1,52],41:53,64:[1,5],75:[1,35],81:[1,36]},{16:[2,4],19:[2,4],20:[2,4],76:[1,149]},{16:[2,9],19:[2,9],20:[2,9],62:[1,151],76:[2,9],78:[1,150],79:[1,152]},{1:[2,108],8:[2,108],11:[2,108],17:[2,108],26:[2,108],27:[2,108],28:[2,108],29:[2,108],30:[2,108],31:[2,108],32:[2,108],33:[2,108],34:[2,108],40:[2,108],56:[2,108],61:[2,108],62:[2,108],64:[2,108],65:[2,108],67:[2,108],75:[2,108],77:[2,108],80:[2,108],81:[2,108],83:[2,108]},{16:[2,1],19:[2,1],20:[2,1],76:[2,1],78:[2,1]},{1:[2,107],8:[2,107],11:[2,107],17:[2,107],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,107],41:53,56:[2,107],61:[2,107],62:[2,107],64:[2,107],65:[2,107],67:[2,107],75:[2,107],77:[2,107],80:[2,107],81:[2,107],83:[2,107]},{39:39,61:[1,38],64:[1,5],67:[1,153]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:6,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],54:4,55:[1,7],58:[1,8],59:[1,9],60:154,66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,60],61:[2,60],64:[2,60],65:[2,60],67:[2,60]},{1:[2,115],39:39,61:[1,38],64:[1,5]},{1:[2,75],8:[2,75],11:[2,75],17:[2,75],26:[2,75],27:[2,75],28:[2,75],29:[2,75],30:[2,75],31:[2,75],32:[2,75],33:[2,75],34:[2,75],38:[2,75],40:[2,75],47:[2,75],49:[2,75],50:[2,75],56:[2,75],61:[2,75],62:[2,75],64:[2,75],65:[2,75],67:[2,75],75:[2,75],77:[2,75],80:[2,75],81:[2,75],83:[2,75]},{1:[2,22],8:[2,22],11:[2,22],17:[2,22],26:[2,22],27:[1,44],28:[2,22],29:[2,22],30:[2,22],31:[2,22],32:[2,22],33:[2,22],34:[1,51],40:[2,22],41:53,56:[2,22],61:[2,22],62:[2,22],64:[2,22],65:[2,22],67:[2,22],75:[2,22],77:[2,22],80:[2,22],81:[2,22],83:[2,22]},{1:[2,23],8:[2,23],11:[2,23],17:[2,23],26:[2,23],27:[2,23],28:[2,23],29:[2,23],30:[2,23],31:[2,23],32:[2,23],33:[2,23],34:[1,51],40:[2,23],41:53,56:[2,23],61:[2,23],62:[2,23],64:[2,23],65:[2,23],67:[2,23],75:[2,23],77:[2,23],80:[2,23],81:[2,23],83:[2,23]},{1:[2,24],8:[2,24],11:[2,24],17:[2,24],26:[1,43],27:[1,44],28:[2,24],29:[2,24],30:[2,24],31:[2,24],32:[2,24],33:[2,24],34:[1,51],40:[2,24],41:53,56:[2,24],61:[2,24],62:[2,24],64:[2,24],65:[2,24],67:[2,24],75:[2,24],77:[2,24],80:[2,24],81:[2,24],83:[2,24]},{1:[2,25],8:[2,25],11:[2,25],17:[2,25],26:[1,43],27:[1,44],28:[1,45],29:[2,25],30:[2,25],31:[2,25],32:[1,49],33:[1,50],34:[1,51],40:[2,25],41:53,56:[2,25],61:[2,25],62:[2,25],64:[2,25],65:[2,25],67:[2,25],75:[2,25],77:[2,25],80:[2,25],81:[2,25],83:[2,25]},{1:[2,26],8:[2,26],11:[2,26],17:[2,26],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[2,26],31:[2,26],32:[1,49],33:[1,50],34:[1,51],40:[2,26],41:53,56:[2,26],61:[2,26],62:[2,26],64:[2,26],65:[2,26],67:[2,26],75:[2,26],77:[2,26],80:[2,26],81:[2,26],83:[2,26]},{1:[2,27],8:[2,27],11:[2,27],17:[2,27],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[2,27],32:[1,49],33:[1,50],34:[1,51],40:[2,27],41:53,56:[2,27],61:[2,27],62:[2,27],64:[2,27],65:[2,27],67:[2,27],75:[2,27],77:[2,27],80:[2,27],81:[2,27],83:[2,27]},{1:[2,28],8:[2,28],11:[2,28],17:[2,28],26:[1,43],27:[1,44],28:[1,45],29:[2,28],30:[2,28],31:[2,28],32:[2,28],33:[1,50],34:[1,51],40:[2,28],41:53,56:[2,28],61:[2,28],62:[2,28],64:[2,28],65:[2,28],67:[2,28],75:[2,28],77:[2,28],80:[2,28],81:[2,28],83:[2,28]},{1:[2,29],8:[2,29],11:[2,29],17:[2,29],26:[1,43],27:[1,44],28:[2,29],29:[2,29],30:[2,29],31:[2,29],32:[2,29],33:[2,29],34:[1,51],40:[2,29],41:53,56:[2,29],61:[2,29],62:[2,29],64:[2,29],65:[2,29],67:[2,29],75:[2,29],77:[2,29],80:[2,29],81:[2,29],83:[2,29]},{1:[2,35],8:[2,35],11:[2,35],17:[2,35],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,35],41:53,56:[2,35],61:[2,35],62:[2,35],64:[2,35],65:[2,35],67:[2,35],75:[2,35],77:[2,35],80:[2,35],81:[2,35],83:[2,35]},{56:[1,155],61:[1,156],64:[1,157]},{3:11,4:13,5:[1,29],8:[2,64],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,17:[2,64],18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],56:[2,64],59:[1,57],61:[2,64],63:158,64:[2,64],65:[2,64],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{8:[2,66],17:[2,66],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,56:[2,66],61:[2,66],62:[2,66],64:[2,66],65:[2,66],75:[1,35],81:[1,36]},{7:159,56:[2,63],61:[2,63],62:[1,117],64:[2,63]},{1:[2,54],8:[2,54],11:[2,54],17:[2,54],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,54],41:53,56:[2,54],61:[2,54],62:[2,54],64:[2,54],65:[2,54],67:[2,54],75:[2,54],77:[2,54],80:[2,54],81:[2,54],83:[2,54]},{7:160,17:[2,63],61:[2,63],62:[1,117],64:[2,63]},{1:[2,10],8:[2,10],11:[2,10],16:[2,10],17:[2,10],19:[2,10],20:[2,10],23:[2,10],24:[2,10],26:[2,10],27:[2,10],28:[2,10],29:[2,10],30:[2,10],31:[2,10],32:[2,10],33:[2,10],34:[2,10],40:[2,10],53:[2,10],56:[2,10],61:[2,10],62:[2,10],64:[2,10],65:[2,10],67:[2,10],75:[2,10],76:[2,10],77:[2,10],78:[2,10],80:[2,10],81:[2,10],83:[2,10]},{1:[2,11],8:[2,11],11:[2,11],16:[2,11],17:[2,11],19:[2,11],20:[2,11],23:[2,11],24:[2,11],26:[2,11],27:[2,11],28:[2,11],29:[2,11],30:[2,11],31:[2,11],32:[2,11],33:[2,11],34:[2,11],40:[2,11],53:[2,11],56:[2,11],61:[2,11],62:[2,11],64:[2,11],65:[2,11],67:[2,11],75:[2,11],76:[2,11],77:[2,11],78:[2,11],80:[2,11],81:[2,11],83:[2,11]},{1:[2,12],8:[2,12],11:[2,12],16:[2,12],17:[2,12],19:[2,12],20:[2,12],23:[2,12],24:[2,12],26:[2,12],27:[2,12],28:[2,12],29:[2,12],30:[2,12],31:[2,12],32:[2,12],33:[2,12],34:[2,12],40:[2,12],53:[2,12],56:[2,12],61:[2,12],62:[2,12],64:[2,12],65:[2,12],67:[2,12],75:[2,12],76:[2,12],77:[2,12],78:[2,12],80:[2,12],81:[2,12],83:[2,12]},{3:11,4:13,5:[1,29],6:161,8:[2,68],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],59:[1,57],61:[2,68],62:[2,68],63:55,64:[2,68],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{10:162,11:[2,93],13:[1,94],14:[1,92],15:91,18:[1,93],26:[1,86],58:[1,89],59:[1,88],61:[2,93],62:[2,93],64:[2,93],66:[1,37],69:90,70:85,71:87,72:84},{1:[2,17],8:[2,17],11:[2,17],17:[2,17],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,17],41:53,56:[2,17],61:[2,17],62:[2,17],64:[2,17],65:[2,17],67:[2,17],75:[2,17],77:[2,17],80:[2,17],81:[2,17],83:[2,17]},{1:[2,34],8:[2,34],11:[2,34],17:[2,34],26:[2,34],27:[2,34],28:[2,34],29:[2,34],30:[2,34],31:[2,34],32:[2,34],33:[2,34],34:[2,34],40:[2,34],56:[2,34],61:[2,34],62:[2,34],64:[2,34],65:[2,34],67:[2,34],75:[2,34],77:[2,34],80:[2,34],81:[2,34],83:[2,34]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:163,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,42],8:[2,42],11:[2,42],17:[2,42],26:[2,42],27:[2,42],28:[2,42],29:[2,42],30:[2,42],31:[2,42],32:[2,42],33:[2,42],34:[2,42],40:[2,42],47:[1,164],56:[2,42],61:[2,42],62:[2,42],64:[2,42],65:[2,42],67:[2,42],75:[2,42],77:[2,42],80:[2,42],81:[2,42],83:[1,132]},{39:165,64:[1,5]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:166,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],39:167,40:[1,52],41:53,64:[1,5],75:[1,35],81:[1,36]},{39:168,64:[1,5]},{39:169,64:[1,5]},{1:[2,51],8:[2,51],11:[2,51],17:[2,51],26:[2,51],27:[2,51],28:[2,51],29:[2,51],30:[2,51],31:[2,51],32:[2,51],33:[2,51],34:[2,51],40:[2,51],56:[2,51],61:[2,51],62:[2,51],64:[2,51],65:[2,51],67:[2,51],75:[2,51],77:[2,51],80:[2,51],81:[2,51],83:[2,51]},{1:[2,52],8:[2,52],11:[2,52],17:[2,52],26:[2,52],27:[2,52],28:[2,52],29:[2,52],30:[2,52],31:[2,52],32:[2,52],33:[2,52],34:[2,52],39:170,40:[2,52],56:[2,52],61:[2,52],62:[2,52],64:[1,5],65:[2,52],67:[2,52],75:[2,52],77:[2,52],80:[2,52],81:[2,52],83:[2,52]},{1:[2,112],8:[2,112],11:[2,112],17:[2,112],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,112],41:53,56:[2,112],61:[2,112],62:[2,112],64:[2,112],65:[2,112],67:[2,112],75:[2,112],77:[2,112],80:[2,112],81:[2,112],83:[2,112]},{8:[1,171],61:[1,156],64:[1,157]},{11:[1,172],61:[1,173],64:[1,174]},{11:[2,64],13:[1,94],14:[1,92],15:91,18:[1,93],26:[1,86],58:[1,89],59:[1,88],61:[2,64],64:[2,64],65:[2,64],66:[1,37],69:90,70:85,71:87,72:175},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:176,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,39:177,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],64:[1,5],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{13:[1,94],18:[1,93],69:178},{11:[2,88],61:[2,88],62:[2,88],64:[2,88],65:[2,88]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:179,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{11:[2,91],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,61:[2,91],62:[2,91],64:[2,91],65:[2,91],75:[1,35],81:[1,36]},{13:[1,94],18:[1,93],69:180},{1:[2,98],8:[2,98],11:[2,98],17:[2,98],26:[2,98],27:[2,98],28:[2,98],29:[2,98],30:[2,98],31:[2,98],32:[2,98],33:[2,98],34:[2,98],38:[2,98],40:[2,98],56:[2,98],61:[2,98],62:[2,98],64:[2,98],65:[2,98],67:[2,98],75:[2,98],77:[2,98],80:[2,98],81:[2,98],83:[2,98]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:181,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:182,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:183,4:100,5:[1,29],9:[1,30],12:65,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],66:[1,37]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:184,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,73],8:[2,73],11:[2,73],16:[2,73],17:[2,73],19:[2,73],20:[2,73],23:[2,73],24:[2,73],26:[2,73],27:[2,73],28:[2,73],29:[2,73],30:[2,73],31:[2,73],32:[2,73],33:[2,73],34:[2,73],40:[2,73],53:[2,73],56:[2,73],61:[2,73],62:[2,73],64:[2,73],65:[2,73],67:[2,73],73:[2,73],75:[2,73],76:[2,73],77:[2,73],78:[2,73],80:[2,73],81:[2,73],83:[2,73]},{39:39,61:[1,38],64:[1,5],65:[1,185]},{57:[1,186],68:[1,187]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],59:[1,57],63:188,66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],6:189,9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:56,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],59:[1,57],61:[2,68],62:[2,68],63:55,64:[2,68],65:[2,68],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{8:[2,70],17:[2,70],56:[2,70],61:[2,70],62:[2,70],64:[2,70],65:[2,70]},{56:[1,190],61:[1,156],64:[1,157]},{17:[1,191],61:[1,156],64:[1,157]},{7:192,8:[2,63],61:[2,63],62:[1,117],64:[2,63]},{7:193,11:[2,63],61:[2,63],62:[1,141],64:[2,63]},{26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],39:194,40:[1,52],41:53,64:[1,5],75:[1,35],81:[1,36]},{39:195,64:[1,5]},{1:[2,45],8:[2,45],11:[2,45],17:[2,45],26:[2,45],27:[2,45],28:[2,45],29:[2,45],30:[2,45],31:[2,45],32:[2,45],33:[2,45],34:[2,45],40:[2,45],56:[2,45],61:[2,45],62:[2,45],64:[2,45],65:[2,45],67:[2,45],75:[2,45],77:[2,45],80:[2,45],81:[2,45],83:[2,45]},{26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],39:196,40:[1,52],41:53,64:[1,5],75:[1,35],81:[1,36]},{1:[2,109],8:[2,109],11:[2,109],17:[2,109],26:[2,109],27:[2,109],28:[2,109],29:[2,109],30:[2,109],31:[2,109],32:[2,109],33:[2,109],34:[2,109],40:[2,109],47:[2,109],56:[2,109],61:[2,109],62:[2,109],64:[2,109],65:[2,109],67:[2,109],75:[2,109],77:[2,109],80:[2,109],81:[2,109],83:[2,109]},{1:[2,47],8:[2,47],11:[2,47],17:[2,47],26:[2,47],27:[2,47],28:[2,47],29:[2,47],30:[2,47],31:[2,47],32:[2,47],33:[2,47],34:[2,47],40:[2,47],50:[1,197],56:[2,47],61:[2,47],62:[2,47],64:[2,47],65:[2,47],67:[2,47],75:[2,47],77:[2,47],80:[2,47],81:[2,47],83:[2,47]},{1:[2,49],8:[2,49],11:[2,49],17:[2,49],26:[2,49],27:[2,49],28:[2,49],29:[2,49],30:[2,49],31:[2,49],32:[2,49],33:[2,49],34:[2,49],40:[2,49],56:[2,49],61:[2,49],62:[2,49],64:[2,49],65:[2,49],67:[2,49],75:[2,49],77:[2,49],80:[2,49],81:[2,49],83:[2,49]},{1:[2,53],8:[2,53],11:[2,53],17:[2,53],26:[2,53],27:[2,53],28:[2,53],29:[2,53],30:[2,53],31:[2,53],32:[2,53],33:[2,53],34:[2,53],40:[2,53],56:[2,53],61:[2,53],62:[2,53],64:[2,53],65:[2,53],67:[2,53],75:[2,53],77:[2,53],80:[2,53],81:[2,53],83:[2,53]},{1:[2,2],8:[2,2],11:[2,2],16:[2,2],17:[2,2],19:[2,2],20:[2,2],23:[2,2],26:[2,2],27:[2,2],28:[2,2],29:[2,2],30:[2,2],31:[2,2],32:[2,2],33:[2,2],34:[2,2],40:[2,2],53:[2,2],56:[2,2],61:[2,2],62:[2,2],64:[2,2],65:[2,2],67:[2,2],75:[2,2],76:[2,2],77:[2,2],78:[2,2],80:[2,2],81:[2,2],83:[2,2]},{1:[2,3],8:[2,3],11:[2,3],16:[2,3],17:[2,3],19:[2,3],20:[2,3],23:[2,3],26:[2,3],27:[2,3],28:[2,3],29:[2,3],30:[2,3],31:[2,3],32:[2,3],33:[2,3],34:[2,3],40:[2,3],53:[2,3],56:[2,3],61:[2,3],62:[2,3],64:[2,3],65:[2,3],67:[2,3],75:[2,3],76:[2,3],77:[2,3],78:[2,3],80:[2,3],81:[2,3],83:[2,3]},{13:[1,94],14:[1,92],15:91,18:[1,93],26:[1,86],58:[1,89],59:[1,88],66:[1,37],69:90,70:85,71:87,72:198},{10:199,13:[1,94],14:[1,92],15:91,18:[1,93],26:[1,86],58:[1,89],59:[1,88],61:[2,93],62:[2,93],64:[2,93],65:[2,93],66:[1,37],69:90,70:85,71:87,72:84},{11:[2,95],61:[2,95],62:[2,95],64:[2,95],65:[2,95]},{11:[2,86],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,61:[2,86],62:[2,86],64:[2,86],65:[2,86],75:[1,35],81:[1,36]},{11:[2,87],61:[2,87],62:[2,87],64:[2,87],65:[2,87]},{11:[2,85],31:[2,85],61:[2,85],62:[2,85],64:[2,85],65:[2,85]},{11:[2,90],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,61:[2,90],62:[2,90],64:[2,90],65:[2,90],75:[1,35],81:[1,36]},{11:[2,84],31:[2,84],61:[2,84],62:[2,84],64:[2,84],65:[2,84]},{1:[2,100],8:[2,100],11:[2,100],17:[2,100],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,100],41:53,56:[2,100],61:[2,100],62:[2,100],64:[2,100],65:[2,100],67:[2,100],75:[2,100],77:[1,200],80:[2,100],81:[2,100],83:[2,100]},{1:[2,102],8:[2,102],11:[2,102],17:[2,102],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,102],41:53,56:[2,102],61:[2,102],62:[2,102],64:[2,102],65:[2,102],67:[2,102],75:[2,102],77:[2,102],80:[2,102],81:[2,102],83:[2,102]},{16:[2,4],19:[2,4],20:[2,4],78:[1,201]},{1:[2,104],8:[2,104],11:[2,104],17:[2,104],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,104],41:53,56:[2,104],61:[2,104],62:[2,104],64:[2,104],65:[2,104],67:[2,104],75:[2,104],77:[2,104],80:[1,202],81:[2,104],83:[2,104]},{67:[1,203]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:204,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{39:205,64:[1,5]},{8:[2,71],17:[2,71],56:[2,71],61:[2,71],62:[2,71],64:[2,71],65:[2,71]},{7:206,61:[2,63],62:[1,117],64:[2,63],65:[2,63]},{68:[1,187]},{1:[2,8],8:[2,8],11:[2,8],16:[2,8],17:[2,8],19:[2,8],20:[2,8],26:[2,8],27:[2,8],28:[2,8],29:[2,8],30:[2,8],31:[2,8],32:[2,8],33:[2,8],34:[2,8],40:[2,8],53:[2,8],56:[2,8],61:[2,8],62:[2,8],64:[2,8],65:[2,8],67:[2,8],75:[2,8],77:[2,8],80:[2,8],81:[2,8],83:[2,8]},{8:[1,207],61:[1,156],64:[1,157]},{11:[1,208],61:[1,173],64:[1,174]},{1:[2,99],8:[2,99],11:[2,99],17:[2,99],26:[2,99],27:[2,99],28:[2,99],29:[2,99],30:[2,99],31:[2,99],32:[2,99],33:[2,99],34:[2,99],38:[2,99],40:[2,99],56:[2,99],61:[2,99],62:[2,99],64:[2,99],65:[2,99],67:[2,99],75:[2,99],77:[2,99],80:[2,99],81:[2,99],83:[2,99]},{1:[2,43],8:[2,43],11:[2,43],17:[2,43],26:[2,43],27:[2,43],28:[2,43],29:[2,43],30:[2,43],31:[2,43],32:[2,43],33:[2,43],34:[2,43],40:[2,43],56:[2,43],61:[2,43],62:[2,43],64:[2,43],65:[2,43],67:[2,43],75:[2,43],77:[2,43],80:[2,43],81:[2,43],83:[2,43]},{1:[2,110],8:[2,110],11:[2,110],17:[2,110],26:[2,110],27:[2,110],28:[2,110],29:[2,110],30:[2,110],31:[2,110],32:[2,110],33:[2,110],34:[2,110],40:[2,110],47:[2,110],56:[2,110],61:[2,110],62:[2,110],64:[2,110],65:[2,110],67:[2,110],75:[2,110],77:[2,110],80:[2,110],81:[2,110],83:[2,110]},{39:209,64:[1,5]},{11:[2,96],61:[2,96],62:[2,96],64:[2,96],65:[2,96]},{7:210,61:[2,63],62:[1,141],64:[2,63],65:[2,63]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:211,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:212,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:213,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,74],8:[2,74],11:[2,74],16:[2,74],17:[2,74],19:[2,74],20:[2,74],23:[2,74],24:[2,74],26:[2,74],27:[2,74],28:[2,74],29:[2,74],30:[2,74],31:[2,74],32:[2,74],33:[2,74],34:[2,74],40:[2,74],53:[2,74],56:[2,74],61:[2,74],62:[2,74],64:[2,74],65:[2,74],67:[2,74],73:[2,74],75:[2,74],76:[2,74],77:[2,74],78:[2,74],80:[2,74],81:[2,74],83:[2,74]},{1:[2,56],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[1,52],41:53,61:[2,56],64:[2,56],65:[2,56],67:[2,56],75:[1,35],81:[1,36]},{1:[2,77],8:[2,77],11:[2,77],17:[2,77],26:[2,77],27:[2,77],28:[2,77],29:[2,77],30:[2,77],31:[2,77],32:[2,77],33:[2,77],34:[2,77],40:[2,77],56:[2,77],61:[2,77],62:[2,77],64:[2,77],65:[2,77],67:[2,77],75:[2,77],77:[2,77],80:[2,77],81:[2,77],83:[2,77]},{61:[1,156],64:[1,157],65:[1,214]},{1:[2,13],8:[2,13],11:[2,13],16:[2,13],17:[2,13],19:[2,13],20:[2,13],23:[2,13],24:[2,13],26:[2,13],27:[2,13],28:[2,13],29:[2,13],30:[2,13],31:[2,13],32:[2,13],33:[2,13],34:[2,13],40:[2,13],53:[2,13],56:[2,13],61:[2,13],62:[2,13],64:[2,13],65:[2,13],67:[2,13],75:[2,13],76:[2,13],77:[2,13],78:[2,13],80:[2,13],81:[2,13],83:[2,13]},{1:[2,14],8:[2,14],11:[2,14],16:[2,14],17:[2,14],19:[2,14],20:[2,14],23:[2,14],24:[2,14],26:[2,14],27:[2,14],28:[2,14],29:[2,14],30:[2,14],31:[2,14],32:[2,14],33:[2,14],34:[2,14],40:[2,14],53:[2,14],56:[2,14],61:[2,14],62:[2,14],64:[2,14],65:[2,14],67:[2,14],75:[2,14],76:[2,14],77:[2,14],78:[2,14],80:[2,14],81:[2,14],83:[2,14]},{1:[2,48],8:[2,48],11:[2,48],17:[2,48],26:[2,48],27:[2,48],28:[2,48],29:[2,48],30:[2,48],31:[2,48],32:[2,48],33:[2,48],34:[2,48],40:[2,48],56:[2,48],61:[2,48],62:[2,48],64:[2,48],65:[2,48],67:[2,48],75:[2,48],77:[2,48],80:[2,48],81:[2,48],83:[2,48]},{61:[1,173],64:[1,174],65:[1,215]},{1:[2,101],8:[2,101],11:[2,101],17:[2,101],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,101],41:53,56:[2,101],61:[2,101],62:[2,101],64:[2,101],65:[2,101],67:[2,101],75:[2,101],77:[2,101],80:[2,101],81:[2,101],83:[2,101]},{1:[2,103],8:[2,103],11:[2,103],17:[2,103],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,103],41:53,56:[2,103],61:[2,103],62:[2,103],64:[2,103],65:[2,103],67:[2,103],75:[2,103],77:[2,103],80:[2,103],81:[2,103],83:[2,103]},{1:[2,105],8:[2,105],11:[2,105],17:[2,105],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,105],41:53,56:[2,105],61:[2,105],62:[2,105],64:[2,105],65:[2,105],67:[2,105],75:[2,105],77:[1,216],80:[2,105],81:[2,105],83:[2,105]},{8:[2,72],17:[2,72],56:[2,72],61:[2,72],62:[2,72],64:[2,72],65:[2,72]},{11:[2,97],61:[2,97],62:[2,97],64:[2,97],65:[2,97]},{3:11,4:13,5:[1,29],9:[1,30],12:10,13:[1,26],14:[1,27],15:28,18:[1,31],21:[1,32],22:217,24:[1,12],25:[1,14],26:[1,15],35:16,36:[1,17],37:18,41:19,42:[1,20],43:[1,21],44:[1,22],45:[1,23],48:[1,24],51:[1,25],55:[1,58],66:[1,37],68:[1,33],74:[1,34],75:[1,35],81:[1,36]},{1:[2,106],8:[2,106],11:[2,106],17:[2,106],26:[1,43],27:[1,44],28:[1,45],29:[1,46],30:[1,47],31:[1,48],32:[1,49],33:[1,50],34:[1,51],40:[2,106],41:53,56:[2,106],61:[2,106],62:[2,106],64:[2,106],65:[2,106],67:[2,106],75:[2,106],77:[2,106],80:[2,106],81:[2,106],83:[2,106]}], | ||
defaultActions: {}, | ||
parseError: function parseError(str, hash) { | ||
@@ -322,0 +279,0 @@ throw new Error(str); |
@@ -1,42 +0,27 @@ | ||
var BALANCED_PAIRS, INVERSES, EXPR_START, EXPR_END, left, rite, _i, _len, _ref, __indexOf = [].indexOf || function(x){ | ||
var BALANCED_PAIRS, INVERSES, EXPR_START, EXPR_END, left, rite, ARG, _i, _len, _ref, __indexOf = [].indexOf || function(x){ | ||
for (var i = this.length; i-- && this[i] !== x;); return i; | ||
}, __slice = [].slice; | ||
exports.rewrite = function(it){ | ||
return expandNumbers(rewriteClosingParens(ensureBalance(addImplicitParentheses(addImplicitBraces(tagPostfixConditionals(addImplicitIndentation(closeCalls(removeMidExpressionTerminators(removeLeadingTerminators(it)))))))))); | ||
}; | ||
function detectEnd(tokens, i, ok, go){ | ||
var levels, token, tag; | ||
levels = 0; | ||
while (token = tokens[i]) { | ||
if (!levels) { | ||
if (ok(token, i)) { | ||
return go(token, i); | ||
} | ||
} else if (0 > levels) { | ||
return go(token, i - 1); | ||
} | ||
tag = token[0]; | ||
if (__indexOf.call(EXPR_START, tag) >= 0) { | ||
++levels; | ||
} else if (__indexOf.call(EXPR_END, tag) >= 0) { | ||
--levels; | ||
} | ||
++i; | ||
} | ||
exports.rewrite = rewrite; | ||
exports.able = able; | ||
function rewrite(it){ | ||
removeTerminators(it); | ||
closeCalls(it); | ||
addImplicitIndentation(it); | ||
tagPostfixConditionals(it); | ||
addImplicitParentheses(it); | ||
addImplicitBraces(it); | ||
ensureBalance(it); | ||
rewriteClosingParens(it); | ||
expandLiterals(it); | ||
return it; | ||
} | ||
function removeLeadingTerminators(tokens){ | ||
var i, tag, _len; | ||
for (i = 0, _len = tokens.length; i < _len; ++i) { | ||
tag = tokens[i][0]; | ||
if (tag !== 'TERMINATOR') { | ||
function removeTerminators(tokens){ | ||
var i, that; | ||
i = -1; | ||
while (that = tokens[++i]) { | ||
if (that[0] !== 'TERMINATOR') { | ||
break; | ||
} | ||
} | ||
if (i) { | ||
tokens.splice(0, i); | ||
} | ||
return tokens; | ||
} | ||
function removeMidExpressionTerminators(tokens){ | ||
var i, that; | ||
i && tokens.splice(0, i); | ||
i = 1; | ||
@@ -52,3 +37,2 @@ while (that = tokens[++i]) { | ||
} | ||
return tokens; | ||
} | ||
@@ -70,26 +54,100 @@ function closeCalls(tokens){ | ||
} | ||
return tokens; | ||
} | ||
function addImplicitBraces(tokens){ | ||
var go, ok, stack, i, token, tag, start, paren, idx, _ref; | ||
go = function(token, i){ | ||
return tokens.splice(i, 0, ['}', '}', token[2]]); | ||
}; | ||
ok = function(token, i){ | ||
var tag, one, _ref; | ||
if (token[1] === ';' || 'DEDENT' === (tag = token[0])) { | ||
return true; | ||
function tagPostfixConditionals(tokens){ | ||
var i, token, _len; | ||
for (i = 0, _len = tokens.length; i < _len; ++i) { | ||
token = tokens[i]; | ||
if (token[0] === 'IF') { | ||
detectEnd(tokens, i + 1, ok, go); | ||
} | ||
if (tag !== ',' && tag !== 'TERMINATOR') { | ||
return false; | ||
} | ||
function ok(it){ | ||
var _ref; | ||
return (_ref = it[0]) === 'TERMINATOR' || _ref === 'INDENT'; | ||
} | ||
function go(it){ | ||
if (it[0] !== 'INDENT') { | ||
return token[0] = 'POST_IF'; | ||
} | ||
one = (_ref = tokens[i + 1]) != null ? _ref[0] : void 8; | ||
if (tag === ',') { | ||
return one !== 'IDENTIFIER' && one !== 'STRNUM' && one !== 'TERMINATOR' && one !== '('; | ||
} | ||
} | ||
function addImplicitIndentation(tokens){ | ||
var i, token, tag, next, pair, indent, dedent, idx, seenSwitch, _ref; | ||
i = -1; | ||
while (token = tokens[++i]) { | ||
tag = token[0]; | ||
if ('INDENT' === (next = (_ref = tokens[i + 1]) != null ? _ref[0] : void 8)) { | ||
switch (false) { | ||
case token[1] !== 'do': | ||
(pair = tokens[indexOfPair(tokens, i + 1)])[0] = ')'; | ||
_ref = tokens[i + 1]; | ||
_ref.pair = pair; | ||
_ref[0] = '('; | ||
_ref[1] = 'do'; | ||
break; | ||
default: | ||
continue; | ||
} | ||
tokens.splice(i, 1); | ||
continue; | ||
} | ||
if (next === 'THEN') { | ||
continue; | ||
} | ||
if (!((tag === 'THEN' || tag === 'FUNC_ARROW' || tag === 'DEFAULT' || tag === 'TRY' || tag === 'CATCH' || tag === 'FINALLY') || tag === 'ELSE' && next !== 'IF')) { | ||
continue; | ||
} | ||
indent = ['INDENT', 0, token[2]]; | ||
dedent = ['DEDENT', 0]; | ||
if (tag === 'THEN') { | ||
if (((_ref = tokens[i - 1]) != null ? _ref[0] : void 8) === 'TERMINATOR') { | ||
tokens.splice(--i, 1); | ||
} | ||
tokens[i] = indent; | ||
} else { | ||
return one !== 'COMMENT' && ':' !== ((_ref = tokens[one === '(' | ||
? 1 + indexOfPair(tokens, i + 1) | ||
: i + 2]) != null ? _ref[0] : void 8); | ||
tokens.splice(++i, 0, indent); | ||
} | ||
}; | ||
switch (false) { | ||
case ',' !== (next = tokens[i + 1][0]): | ||
--i; | ||
/* fallthrough */ | ||
case ',' !== ((_ref = tokens[i + 2]) != null ? _ref[0] : void 8): | ||
go(0, i += 2); | ||
++i; | ||
break; | ||
case !((next === '(' || next === '[' || next === '{') && ',' === ((_ref = tokens[idx = 1 + indexOfPair(tokens, i + 1)]) != null ? _ref[0] : void 8)): | ||
go(0, idx); | ||
++i; | ||
break; | ||
default: | ||
seenSwitch = false; | ||
detectEnd(tokens, i + 1, ok, go); | ||
} | ||
} | ||
function ok(token, i){ | ||
switch (token[0]) { | ||
case 'DEDENT': | ||
return true; | ||
case 'TERMINATOR': | ||
return token[1] !== ';'; | ||
case 'ELSE': | ||
return tag === 'THEN'; | ||
case 'CATCH': | ||
return tag === 'TRY'; | ||
case 'FINALLY': | ||
return tag === 'TRY' || tag === 'CATCH' || tag === 'THEN'; | ||
case 'SWITCH': | ||
return !(seenSwitch = true); | ||
case 'CASE': | ||
case 'DEFAULT': | ||
return !seenSwitch; | ||
} | ||
} | ||
function go(token, i){ | ||
dedent[2] = token[2]; | ||
return tokens.splice(tokens[i - 1][0] === ',' ? i - 1 : i, 0, dedent); | ||
} | ||
} | ||
function addImplicitBraces(tokens){ | ||
var stack, i, token, tag, start, paren, oneline, idx, _ref; | ||
stack = []; | ||
@@ -112,3 +170,4 @@ i = -1; | ||
paren = ((_ref = tokens[i - 1]) != null ? _ref[0] : void 8) === ')'; | ||
if (!(paren && ((_ref = tokens[start[1] - 1]) != null ? _ref[0] : void 8) === ':' || ((_ref = tokens[i - 2]) != null ? _ref[0] : void 8) === ':' || ((_ref = stack[stack.length - 1]) != null ? _ref[0] : void 8) !== '{')) { | ||
oneline = paren && ((_ref = tokens[start[1] - 1]) != null ? _ref[0] : void 8) === ':' || ((_ref = tokens[i - 2]) != null ? _ref[0] : void 8) === ':'; | ||
if (!(oneline || ((_ref = stack[stack.length - 1]) != null ? _ref[0] : void 8) !== '{')) { | ||
continue; | ||
@@ -126,29 +185,56 @@ } | ||
} | ||
return tokens; | ||
function ok(token, i){ | ||
var tag, t1, _ref; | ||
if (token[1] === ';' || 'DEDENT' === (tag = token[0])) { | ||
return true; | ||
} | ||
switch (tag) { | ||
case ',': | ||
break; | ||
case 'TERMINATOR': | ||
if (oneline) { | ||
return true; | ||
} | ||
break; | ||
default: | ||
return false; | ||
} | ||
t1 = (_ref = tokens[i + 1]) != null ? _ref[0] : void 8; | ||
return t1 !== (tag === ',' ? 'TERMINATOR' : 'COMMENT') && ':' !== ((_ref = tokens[t1 === '(' | ||
? 1 + indexOfPair(tokens, i + 1) | ||
: i + 2]) != null ? _ref[0] : void 8); | ||
} | ||
function go(token, i){ | ||
return tokens.splice(i, 0, ['}', '', token[2]]); | ||
} | ||
} | ||
function addImplicitParentheses(tokens){ | ||
var i, token, tag, prev, seenClass, seenSingle, soak, _ref; | ||
var i, brackets, token, tag, prev, seenSwitch, skipBlock, soak; | ||
i = 0; | ||
brackets = []; | ||
while (token = tokens[++i]) { | ||
tag = token[0]; | ||
if (!(prev = tokens[i - 1]).spaced) { | ||
switch (tag) { | ||
case '?': | ||
token.call = true; | ||
break; | ||
case '[': | ||
case '{': | ||
if (able(prev[0])) { | ||
tokens.splice(i++, 0, [tag === '[' ? 'DOT' : 'CLONE', '', prev[2]]); | ||
} | ||
prev = tokens[i - 1]; | ||
if ('[' === tag) { | ||
brackets.push(prev[0] === 'DOT'); | ||
} | ||
if (']' === prev[0]) { | ||
if (brackets.pop()) { | ||
token.index = true; | ||
} else { | ||
continue; | ||
} | ||
} | ||
if (!(prev.spaced && able(tokens, i, true))) { | ||
continue; | ||
} | ||
if (!(prev.call || able(prev[0], true))) { | ||
if (tag === '(' && token[1] === 'do') { | ||
token[0] = 'CALL('; | ||
token.pair[0] = ')CALL'; | ||
continue; | ||
} | ||
if (!(token.argument || (tag === '(' || tag === '[' || tag === '{' || tag === '...' || tag === 'IDENTIFIER' || tag === 'THISPROP' || tag === 'THIS' || tag === 'STRNUM' || tag === 'LITERAL' || tag === 'RANGE' || tag === 'UNARY' || tag === 'CREMENT' || tag === 'IF' || tag === 'TRY' || tag === 'CLASS' || tag === 'FUNCTION' || tag === 'SUPER') || tag === '+-' && !(token.spaced || token.eol) || (tag === 'PARAM(' || tag === 'FUNC_ARROW') && ((_ref = tokens[i - 2]) != null ? _ref[0] : void 8) !== 'FUNCTION')) { | ||
if (!(__indexOf.call(ARG, tag) >= 0 || tag === '+-' && !(token.spaced || token.eol))) { | ||
continue; | ||
} | ||
seenSingle = seenClass = false; | ||
skipBlock = seenSwitch = false; | ||
if (soak = prev[0] === '?') { | ||
@@ -160,39 +246,42 @@ tokens.splice(--i, 1); | ||
} | ||
function able(tag, call){ | ||
var _ref; | ||
return (tag === 'IDENTIFIER' || tag === 'THISPROP' || tag === 'SUPER' || tag === 'THIS' || tag === ')' || tag === ')CALL' || tag === ']') || (call | ||
? tag === 'STRNUM' && ((_ref = tokens[i - 2]) != null ? _ref[0] : void 8) === 'DOT' | ||
: tag === '}' || tag === 'STRNUM' || tag === 'LITERAL'); | ||
} | ||
function ok(token, i){ | ||
var tag, pre, eol, _ref; | ||
if (token.argument) { | ||
return false; | ||
} | ||
if (!seenSingle && token.fromThen || token.alias && ((_ref = token[1]) === '&&' || _ref === '||')) { | ||
var pre, _ref; | ||
if (token.alias && ((_ref = token[1]) === '&&' || _ref === '||')) { | ||
return true; | ||
} | ||
tag = token[0]; | ||
_ref = tokens[i - 1], pre = _ref[0], eol = _ref.eol; | ||
switch (tag) { | ||
pre = tokens[i - 1]; | ||
switch (token[0]) { | ||
case 'SWITCH': | ||
seenSwitch = true; | ||
/* fallthrough */ | ||
case 'IF': | ||
case 'CLASS': | ||
seenClass = true; | ||
skipBlock = true; | ||
break; | ||
case 'IF': | ||
case 'CATCH': | ||
seenSingle = true; | ||
} | ||
if (tag === 'DOT' && (eol || pre === 'DEDENT')) { | ||
return true; | ||
} | ||
if (token.generated || pre === ',') { | ||
return false; | ||
} | ||
if (tag === 'INDENT') { | ||
if (seenClass) { | ||
return seenClass = false; | ||
case 'CASE': | ||
if (seenSwitch) { | ||
skipBlock = true; | ||
} else { | ||
return true; | ||
} | ||
return pre !== '{' && pre !== '[' && pre !== ',' && pre !== 'FUNC_ARROW' && pre !== 'TRY' && pre !== 'CATCH' && pre !== 'FINALLY'; | ||
break; | ||
case 'DOT': | ||
if (pre.eol || pre[0] === 'DEDENT') { | ||
return true; | ||
} | ||
break; | ||
case 'INDENT': | ||
if (skipBlock) { | ||
return skipBlock = false; | ||
} | ||
return (_ref = pre[0]) !== '{' && _ref !== '[' && _ref !== ',' && _ref !== 'FUNC_ARROW' && _ref !== 'ELSE' && _ref !== 'TRY' && _ref !== 'CATCH' && _ref !== 'FINALLY' && _ref !== 'DEFAULT'; | ||
case 'TERMINATOR': | ||
case 'POST_IF': | ||
case 'FOR': | ||
case 'WHILE': | ||
case 'BY': | ||
case 'TO': | ||
return pre[0] !== ','; | ||
} | ||
return tag === 'POST_IF' || tag === 'FOR' || tag === 'WHILE' || tag === 'BY' || tag === 'TO' || tag === 'CASE' || tag === 'DEFAULT' || tag === 'TERMINATOR'; | ||
return false; | ||
} | ||
@@ -205,97 +294,3 @@ function go(token, i){ | ||
} | ||
return tokens; | ||
} | ||
function addImplicitIndentation(tokens){ | ||
var ok, go, i, token, tag, next, indent, dedent, idx, _ref; | ||
ok = function(token, i){ | ||
switch (token[0]) { | ||
case 'DEDENT': | ||
case 'CASE': | ||
case 'DEFAULT': | ||
case 'CATCH': | ||
case 'FINALLY': | ||
return true; | ||
case 'TERMINATOR': | ||
return token[1] !== ';'; | ||
case 'ELSE': | ||
return tag === 'IF' || tag === 'THEN'; | ||
} | ||
}; | ||
go = function(token, i){ | ||
return tokens.splice(tokens[i - 1][0] === ',' ? i - 1 : i, 0, dedent); | ||
}; | ||
i = -1; | ||
while (token = tokens[++i]) { | ||
tag = token[0]; | ||
if ('INDENT' === (next = (_ref = tokens[i + 1]) != null ? _ref[0] : void 8)) { | ||
switch (false) { | ||
case tag !== 'THEN': | ||
tokens[i + 1].fromThen = true; | ||
/* fallthrough */ | ||
case token[1] !== 'do': | ||
tokens[i + 1].argument = true; | ||
break; | ||
default: | ||
continue; | ||
} | ||
tokens.splice(i, 1); | ||
continue; | ||
} | ||
if (next === 'THEN') { | ||
continue; | ||
} | ||
if (!((tag === 'THEN' || tag === 'FUNC_ARROW' || tag === 'DEFAULT' || tag === 'TRY' || tag === 'CATCH' || tag === 'FINALLY') || tag === 'ELSE' && next !== 'IF')) { | ||
continue; | ||
} | ||
indent = ['INDENT', 2, token[2]]; | ||
dedent = ['DEDENT', 2, token[2]]; | ||
indent.generated = dedent.generated = true; | ||
if (tag === 'THEN') { | ||
if (((_ref = tokens[i - 1]) != null ? _ref[0] : void 8) === 'TERMINATOR') { | ||
tokens.splice(--i, 1); | ||
} | ||
tokens[i] = (indent.fromThen = true, indent); | ||
} else { | ||
tokens.splice(++i, 0, indent); | ||
} | ||
switch (false) { | ||
case ',' !== (next = tokens[i + 1][0]): | ||
--i; | ||
/* fallthrough */ | ||
case ',' !== ((_ref = tokens[i + 2]) != null ? _ref[0] : void 8): | ||
go(0, i += 2); | ||
++i; | ||
break; | ||
case !((next === '(' || next === '[' || next === '{') && ',' === ((_ref = tokens[idx = 1 + indexOfPair(tokens, i + 1)]) != null ? _ref[0] : void 8)): | ||
go(0, idx); | ||
++i; | ||
break; | ||
default: | ||
detectEnd(tokens, i + 1, ok, go); | ||
} | ||
} | ||
return tokens; | ||
} | ||
function tagPostfixConditionals(tokens){ | ||
var ok, go, i, token, _len; | ||
ok = function(_arg){ | ||
var tag; | ||
tag = _arg[0]; | ||
return tag === 'TERMINATOR' || tag === 'INDENT'; | ||
}; | ||
go = function(_arg){ | ||
var tag; | ||
tag = _arg[0]; | ||
if (tag !== 'INDENT') { | ||
return token[0] = 'POST_IF'; | ||
} | ||
}; | ||
for (i = 0, _len = tokens.length; i < _len; ++i) { | ||
token = tokens[i]; | ||
if (token[0] === 'IF') { | ||
detectEnd(tokens, i + 1, ok, go); | ||
} | ||
} | ||
return tokens; | ||
} | ||
function ensureBalance(tokens){ | ||
@@ -326,3 +321,2 @@ var levels, olines, token, tag, open, close, level, _i, _len, _j, _ref, _len2, _ref2; | ||
} | ||
return tokens; | ||
} | ||
@@ -359,17 +353,12 @@ function rewriteClosingParens(tokens){ | ||
} | ||
return tokens; | ||
} | ||
function expandNumbers(tokens){ | ||
var i, last, token, num, sign, ts, lno, to, n, _step; | ||
function expandLiterals(tokens){ | ||
var i, token, num, sig, ts, lno, to, n, _step, _ref; | ||
i = -1; | ||
last = tokens[0]; | ||
while (token = tokens[++i]) { | ||
switch (token[0]) { | ||
case 'STRNUM': | ||
num = '' + token[1]; | ||
if (~'+-'.indexOf(sign = num.charAt(0))) { | ||
tokens.splice(i++, 0, ['+-', sign, token[2]]); | ||
if (~'-+'.indexOf(sig = (num = '' + token[1]).charAt(0))) { | ||
token[1] = num.slice(1); | ||
} else if (last[1] === '@' && !last.spaced) { | ||
tokens.splice(i++, 0, ['DOT', '.', token[2]]); | ||
tokens.splice(i++, 0, ['+-', sig, token[2]]); | ||
} | ||
@@ -382,14 +371,68 @@ break; | ||
for (n = +token[1], _step = +token.by || 1; _step < 0 ? n >= to : n <= to; n += _step) { | ||
if (1024 < ts.push(['STRNUM', n, lno])) { | ||
if (2048 < ts.push(['STRNUM', n, lno], [',', ',', lno])) { | ||
carp('range limit exceeded', lno); | ||
} | ||
} | ||
ts.length || carp('empty range', lno); | ||
if (ts.length) { | ||
ts.pop(); | ||
} else { | ||
carp('empty range', lno); | ||
} | ||
tokens.splice.apply(tokens, [i, 1].concat(__slice.call(ts))); | ||
i += ts.length - 1; | ||
break; | ||
case ')': | ||
case ')CALL': | ||
if (!token[1]) { | ||
break; | ||
} | ||
break; | ||
case '}': | ||
if (token[1]) { | ||
break; | ||
} | ||
break; | ||
case ']': | ||
if (!token.index) { | ||
break; | ||
} | ||
break; | ||
case 'LITERAL': | ||
break; | ||
default: | ||
continue; | ||
} | ||
last = token; | ||
if (token.spaced && (_ref = tokens[i + 1][0], __indexOf.call(ARG, _ref) >= 0)) { | ||
tokens.splice(++i, 0, [',', ',', token[2]]); | ||
} | ||
} | ||
return tokens; | ||
} | ||
function detectEnd(tokens, i, ok, go){ | ||
var levels, token, tag; | ||
levels = 0; | ||
while (token = tokens[i]) { | ||
if (!levels) { | ||
if (ok(token, i)) { | ||
return go(token, i); | ||
} | ||
} else if (0 > levels) { | ||
return go(token, i - 1); | ||
} | ||
tag = token[0]; | ||
if (__indexOf.call(EXPR_START, tag) >= 0) { | ||
++levels; | ||
} else if (__indexOf.call(EXPR_END, tag) >= 0) { | ||
--levels; | ||
} | ||
++i; | ||
} | ||
} | ||
function able(tokens, i, call){ | ||
var token, tag; | ||
i == null && (i = tokens.length); | ||
tag = (token = tokens[i - 1])[0]; | ||
return (tag === 'IDENTIFIER' || tag === 'SUPER' || tag === ']') || (call | ||
? token.callable || tag === '?' || (tag === ')' || tag === ')CALL') && token[1] | ||
: tag === 'STRNUM' || tag === 'LITERAL' || tag === ')' || tag === ')CALL' || tag === '}'); | ||
} | ||
function indexOfPair(tokens, i){ | ||
@@ -423,2 +466,3 @@ var level, start, end, that; | ||
EXPR_END.push(INVERSES[left] = rite); | ||
} | ||
} | ||
ARG = ['(', '[', '{', '...', 'IDENTIFIER', 'STRNUM', 'LITERAL', 'RANGE', 'SUPER', 'PARAM(', 'FUNC_ARROW', 'FUNCTION', 'UNARY', 'CREMENT', 'IF', 'TRY', 'CLASS', 'SWITCH']; |
{"name" : "coco" | ||
,"description" : "Unfancy CoffeeScript" | ||
,"keywords" : ["language", "compiler", "coffeescript", "javascript"] | ||
,"author" : "satyr" | ||
,"version" : "0.2.2" | ||
,"author" : "satyr <murky.satyr@gmail.com> (http://satyr.github.com)" | ||
,"version" : "0.3.3" | ||
,"homepage" : "http://satyr.github.com/coco/" | ||
,"repository" : {"type": "git", "url": "git://github.com/satyr/coco.git"} | ||
,"licenses" : | ||
@@ -10,9 +12,9 @@ [{"type" : "MIT" | ||
}] | ||
,"engines" : {"node": ">=0.2.5"} | ||
,"engines" : {"node": ">=0.2.6"} | ||
,"directories" : {"lib" : "./lib" } | ||
,"main" : "./lib/coco" | ||
,"bin" : | ||
{"coco" : "./bin/coco" | ||
,"coke" : "./bin/coke" | ||
{"coco" : "./lib/command.js" | ||
,"coke" : "./lib/coke.js" | ||
} | ||
} |
# Coco | ||
is a [CoffeeScript](http://coffeescript.org) dialect that aims to be more radical and practical. | ||
## Why | ||
On its way to hide bad parts of JavaScript, CoffeeScript accumulated its own: | ||
horrible variable scope, confusing/pointless keywords, awkward ranges, | ||
long extension, and so on. | ||
Coco tries to amend them, entwining good parts of both. | ||
## Principles | ||
- Respect JavaScript/ECMAScript semantics, but supply ways to amend them. | ||
- Reserve less keywords. | ||
- Respect JavaScript/ECMAScript semantics. | ||
- Die for [DRY](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself). | ||
- Performance over readability. | ||
- Readability over compressability. | ||
- Perl over Ruby. | ||
- Reserve less keywords. | ||
- Write less punctuations. | ||
@@ -25,3 +32,2 @@ ## Differences | ||
## Help | ||
@@ -33,5 +39,76 @@ | ||
### 0.3.2 | ||
- Unrestricted ADI for identifiers beyond `@` and `::`. | ||
$ coco -bpe '/x/exec(s)input' | ||
/x/.exec(s).input; | ||
- Expanded property shorthands beyond `@foo`: | ||
$ coco -bpe '{a.b, (c.d)e}' | ||
({ | ||
b: a.b, | ||
e: c.d.e | ||
}); | ||
- Added `typeof!`, which inspects the internal _[[Class]]_ property: | ||
$ coco -e 'typeof! //' | ||
RegExp | ||
- Added shebang support. | ||
$ coco -pe '`#!node`; ...' | ||
#!node | ||
(function(){ | ||
throw Error('unimplemented'); | ||
}).call(this); | ||
- REPL results now evaluate more intuitively: | ||
coco> i for i from 3 | ||
[ 0, 1, 2 ] | ||
- Disallowed whitespace mixup for indentations. | ||
### 0.3.1 | ||
- `debugger` now works anywhere. | ||
- Revised heregex flag syntax: `///#{x}#{y}///?` -> `RegExp('' + x, y);` | ||
- Removed `Coco.eval`. | ||
- Made _extras/coco.js_ work as a mini-compiler on WSH. | ||
- Added _extras/mode-coco.js_, an editing mode for Ace. | ||
- Added `--json` option. | ||
### 0.3.0 | ||
#### Pure Additions | ||
- Added _backcall_, a sugar to flatten nested callbacks: | ||
$ coco -bpe 'a <- f; b' | ||
f(function(a){ | ||
return b; | ||
}); | ||
- `do` block can now work as a pair of normal parentheses. | ||
- Improved _ACI_ (automatic comma insertion): `f {} [] x` -> `f({}, [], x);` | ||
- Improved _ADI_ (automatic dot insertion): `@@0'!'` -> `arguments[0]['!'];` | ||
- Multi-line block on the RHS of object property now works as an implicit array: | ||
$ coco -bsp | ||
a: | ||
b | ||
c | ||
({ | ||
a: [b, c] | ||
}); | ||
- Heregexes now support dynamic flags: `/// x #{? y } ///` -> `RegExp('x', y);` | ||
- Enabled compound _accessigns_: `a.+=b` -> `a += a.b;` | ||
- `...` in array destructuring (same as `...[]`) now skips items rather than `slice`ing them. ([coffee#870](https://github.com/jashkenas/coffee-script/issues/870)) | ||
- Compilation errors now report line numbers. | ||
- `Coco` object now emits more events for use with `--require`. | ||
#### Incompatible Changes | ||
- <del>`=>`</del> -> <ins>`~>`</ins> | ||
- <del>`&.`</del> -> <ins>`~.`</ins> | ||
- Braceless objects no longer consume property shorthands. | ||
([coffee#618](https://github.com/jashkenas/coffee-script/issues/618)) | ||
- Indentations within non-here strings are now stripped. | ||
$ coco -bsp | ||
'123 | ||
456' | ||
'123456'; | ||
- [Fixed](https://github.com/jashkenas/coffee-script/issues/1050) | ||
block comment syntax to good ol' `/* */`. | ||
- `@0` is now `this[0]` rather than `arguments[0]`. | ||
### 0.2.2 | ||
- `is not` is the new `isnt`. | ||
- `@'++'` is now valid as a shorhand for `@['++']`. | ||
- `@'++'` is now valid as a shorthand for `@['++']`. | ||
- Commas between primitive values are now optional. | ||
@@ -42,3 +119,3 @@ $ coco -bpe '[null true 1 "2"]' | ||
- _extras/coco.js_ now works as a Gecko JS Module. | ||
- Grouped documentation suite into doc/ for portability. | ||
- Grouped documentation suite into _doc/_ for portability. | ||
- Rewrote _src/optparse.co_. | ||
@@ -45,0 +122,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
5495
198
6
5
208821
17