From 6da0a6e35cca109a4832c5eca366dd50ecaaa86a Mon Sep 17 00:00:00 2001
From: Serene H <keroserene+git@gmail.com>
Date: Fri, 7 Mar 2014 06:52:57 -0500
Subject: [PATCH] cmd-line flags and package.json for automatic npm packages

---
 examples/node/midi_particles.coffee           |   28 +-
 .../node/node_modules/node-osc/README.rst     |   75 -
 .../node_modules/node-osc/examples/client.js  |   15 -
 .../node_modules/node-osc/examples/server.js  |    8 -
 examples/node/node_modules/node-osc/index.js  |    1 -
 .../node/node_modules/node-osc/lesser.txt     |  504 ---
 .../node/node_modules/node-osc/lib/osc.js     |  315 --
 .../node-osc/node_modules/jspack/LICENSE      |   26 -
 .../node-osc/node_modules/jspack/README       |  126 -
 .../node-osc/node_modules/jspack/jspack.js    |  252 --
 .../node-osc/node_modules/jspack/package.json |   32 -
 .../node-osc/node_modules/osc-min/.npmignore  |    1 -
 .../node-osc/node_modules/osc-min/COPYING     |   14 -
 .../node-osc/node_modules/osc-min/Cakefile    |   21 -
 .../node-osc/node_modules/osc-min/TODO        |    1 -
 .../node_modules/osc-min/doc_html/docket.css  |  163 -
 .../node_modules/osc-min/doc_html/readme.html |  221 --
 .../osc-min/examples/osc-float-to-int.coffee  |   38 -
 .../osc-min/examples/osc-redirect.coffee      |   35 -
 .../examples/oscbundle_heartbeat.coffee       |   41 -
 .../osc-min/examples/oscheartbeat.coffee      |   30 -
 .../osc-min/examples/printosc.coffee          |   18 -
 .../node_modules/osc-min/lib/index.js         |  162 -
 .../node_modules/osc-min/lib/install.md       |   23 -
 .../osc-min/lib/osc-utilities.coffee          |  608 ----
 .../osc-min/node_modules/.bin/cake            |    1 -
 .../osc-min/node_modules/.bin/coffee          |    1 -
 .../osc-min/node_modules/binpack/.npmignore   |    4 -
 .../osc-min/node_modules/binpack/.travis.yml  |    7 -
 .../osc-min/node_modules/binpack/COPYING      |   14 -
 .../osc-min/node_modules/binpack/changes.md   |    6 -
 .../osc-min/node_modules/binpack/index.js     |   92 -
 .../osc-min/node_modules/binpack/package.json |   39 -
 .../osc-min/node_modules/binpack/readme.md    |   29 -
 .../binpack/tests/test-binpack.coffee         |   64 -
 .../node_modules/coffee-script/.npmignore     |   11 -
 .../osc-min/node_modules/coffee-script/CNAME  |    1 -
 .../node_modules/coffee-script/LICENSE        |   22 -
 .../osc-min/node_modules/coffee-script/README |   51 -
 .../node_modules/coffee-script/Rakefile       |   78 -
 .../node_modules/coffee-script/bin/cake       |    7 -
 .../node_modules/coffee-script/bin/coffee     |    7 -
 .../coffee-script/extras/jsl.conf             |   44 -
 .../lib/coffee-script/browser.js              |   91 -
 .../coffee-script/lib/coffee-script/cake.js   |  111 -
 .../lib/coffee-script/coffee-script.js        |  167 -
 .../lib/coffee-script/command.js              |  502 ---
 .../lib/coffee-script/grammar.js              |  603 ----
 .../lib/coffee-script/helpers.js              |   77 -
 .../coffee-script/lib/coffee-script/index.js  |   11 -
 .../coffee-script/lib/coffee-script/lexer.js  |  792 -----
 .../coffee-script/lib/coffee-script/nodes.js  | 2972 -----------------
 .../lib/coffee-script/optparse.js             |  140 -
 .../coffee-script/lib/coffee-script/parser.js |  592 ----
 .../coffee-script/lib/coffee-script/repl.js   |  235 --
 .../lib/coffee-script/rewriter.js             |  349 --
 .../coffee-script/lib/coffee-script/scope.js  |  145 -
 .../node_modules/coffee-script/package.json   |   51 -
 .../node_modules/osc-min/package.json         |   52 -
 .../node-osc/node_modules/osc-min/readme.md   |  198 --
 .../osc-min/test/test-osc-utilities.coffee    |  661 ----
 .../node/node_modules/node-osc/package.json   |   39 -
 .../node/node_modules/simplex-noise/.jshintrc |   26 -
 .../node_modules/simplex-noise/.npmignore     |    1 -
 .../node/node_modules/simplex-noise/Makefile  |   10 -
 .../node/node_modules/simplex-noise/README.md |   75 -
 .../node_modules/simplex-noise/package.json   |   27 -
 .../simplex-noise/simplex-noise.js            |  406 ---
 .../simplex-noise/simplex-noise.min.js        |    2 -
 .../node_modules/simplex-noise/test/buster.js |    8 -
 .../simplex-noise/test/simplex-noise-test.js  |  106 -
 examples/node/package.json                    |   11 +
 72 files changed, 27 insertions(+), 11669 deletions(-)
 delete mode 100644 examples/node/node_modules/node-osc/README.rst
 delete mode 100644 examples/node/node_modules/node-osc/examples/client.js
 delete mode 100644 examples/node/node_modules/node-osc/examples/server.js
 delete mode 100644 examples/node/node_modules/node-osc/index.js
 delete mode 100644 examples/node/node_modules/node-osc/lesser.txt
 delete mode 100644 examples/node/node_modules/node-osc/lib/osc.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/jspack/LICENSE
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/jspack/README
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/jspack/jspack.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/jspack/package.json
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/.npmignore
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/COPYING
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/Cakefile
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/TODO
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/docket.css
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/readme.html
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-float-to-int.coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-redirect.coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscbundle_heartbeat.coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscheartbeat.coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/examples/printosc.coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/lib/index.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/lib/install.md
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/lib/osc-utilities.coffee
 delete mode 120000 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/cake
 delete mode 120000 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.npmignore
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.travis.yml
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/COPYING
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/changes.md
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/index.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/package.json
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/readme.md
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/tests/test-binpack.coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/.npmignore
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/CNAME
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/LICENSE
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/README
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/Rakefile
 delete mode 100755 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/cake
 delete mode 100755 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/coffee
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/extras/jsl.conf
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/browser.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/cake.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/coffee-script.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/command.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/grammar.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/helpers.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/index.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/lexer.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/nodes.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/optparse.js
 delete mode 100755 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/parser.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/repl.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/rewriter.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/scope.js
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/package.json
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/package.json
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/readme.md
 delete mode 100644 examples/node/node_modules/node-osc/node_modules/osc-min/test/test-osc-utilities.coffee
 delete mode 100644 examples/node/node_modules/node-osc/package.json
 delete mode 100644 examples/node/node_modules/simplex-noise/.jshintrc
 delete mode 100644 examples/node/node_modules/simplex-noise/.npmignore
 delete mode 100644 examples/node/node_modules/simplex-noise/Makefile
 delete mode 100644 examples/node/node_modules/simplex-noise/README.md
 delete mode 100644 examples/node/node_modules/simplex-noise/package.json
 delete mode 100644 examples/node/node_modules/simplex-noise/simplex-noise.js
 delete mode 100644 examples/node/node_modules/simplex-noise/simplex-noise.min.js
 delete mode 100644 examples/node/node_modules/simplex-noise/test/buster.js
 delete mode 100644 examples/node/node_modules/simplex-noise/test/simplex-noise-test.js
 create mode 100644 examples/node/package.json

diff --git a/examples/node/midi_particles.coffee b/examples/node/midi_particles.coffee
index 010b8e2..d1023dd 100755
--- a/examples/node/midi_particles.coffee
+++ b/examples/node/midi_particles.coffee
@@ -2,8 +2,7 @@
 #
 # Particle system, playable with a MIDI keyboard!
 #
-# Dependencies:
-#    npm install midi coffee
+# Dependencies: run `npm install` in this directory.
 #
 # Assumes the default MIDI input port (0).
 # Specify a layout file on the command line, or use the default (grid32x16z)
@@ -13,18 +12,23 @@
 #    Left hand  -> Low frequency oscillators (wobble)
 #    Right hand -> Particles, shifting in color and pointiness
 #
-# 2014, Micah Elizabeth Scott & Keroserene
+# 2014, Micah Elizabeth Scott & ~keroserene
 #
+flags = require 'flags'
+flags.defineString 'layout', '../layouts/grid32x16z.json', 'LED board layout'
+flags.defineInteger 'midi', 0, 'MIDI input port'
+flags.parse()
 
-# Default MIDI input
+# Prepare MIDI input.
+# TODO: Intelligently find the right midi port instead of default to 0.
 midi = require 'midi'
 input = new midi.input
-input.openPort 1
+input.openPort flags.get('midi')
 input.ignoreTypes false, false, false
 
 # Default OPC output
 OPC = new require './opc'
-model = OPC.loadModel process.argv[2] || '../layouts/grid32x16z.json'
+model = OPC.loadModel flags.get('layout')
 client = new OPC 'localhost', 7890
 
 # Live particles
@@ -45,7 +49,7 @@ wobbleAmount = 24.0
 origin = [0, 0, 0]
 
 # Physics
-numPhysicsTimesteps = 20
+numPhysicsTimesteps = 1
 frameDelay = 5
 timestepSize = 0.010
 gain = 0.1
@@ -100,7 +104,7 @@ input.on 'message', (deltaTime, message) ->
             spinRate = (message[2] - 64) * 10.0 / 64
 
 
-draw = () ->
+draw = ->
 
     # Time delta calculations
     now = clock()
@@ -132,8 +136,8 @@ draw = () ->
         radius = 3.0 * (1 - p.life)
 
         # Positioned in polar coordinates
-        x = radius * Math.cos(theta)
-        y = radius * Math.sin(theta)
+        x = origin[0] + radius * Math.cos(theta)
+        y = origin[2] + radius * Math.sin(theta)
 
         # Hop around between almost-opposing colors, eventually going
         # around the rainbow. These ratios control what kinds of color
@@ -174,8 +178,8 @@ draw = () ->
             y += wobbleAmp * Math.sin lfoAngle
 
         # Update velocity; use the XZ plane
-        p.velocity[0] += (x + origin[0] - p.point[0]) * (gain / numPhysicsTimesteps)
-        p.velocity[2] += (y + origin[2] - p.point[2]) * (gain / numPhysicsTimesteps)
+        p.velocity[0] += (x - p.point[0]) * (gain / numPhysicsTimesteps)
+        p.velocity[2] += (y - p.point[2]) * (gain / numPhysicsTimesteps)
 
         # Fixed timestep physics
         for i in [1 .. numPhysicsTimesteps]
diff --git a/examples/node/node_modules/node-osc/README.rst b/examples/node/node_modules/node-osc/README.rst
deleted file mode 100644
index 93c8fa1..0000000
--- a/examples/node/node_modules/node-osc/README.rst
+++ /dev/null
@@ -1,75 +0,0 @@
---------
-node-osc
---------
-
-A very basic OSC client (so far) implementation based heavily on pyOSC_.
-
-
-Relies on current trunk of node.js for the dgram library.
-
-.. _pyOSC: https://trac.v2.nl/wiki/pyOSC
-
-Install using npm
-
-npm install node-osc
-
-Example
--------
-
-Sending OSC messages:
-
-::
-  
-  var osc = require('node-osc');
-  
-  var client = new osc.Client('127.0.0.1', 3333);
-  client.send('/oscAddress', 200);
-  
-Listening for OSC messages:
-
-::
-  
-  var osc = require('./lib/osc');
-  
-  var oscServer = new osc.Server(3333, '0.0.0.0');
-  oscServer.on("message", function (msg, rinfo) {
-  	console.log("TUIO message:");
-  	console.log(msg);
-  });
-  
-Example of received TUIO (based on OSC) messages:
-
-::
-
-  TUIO message:
-  [ [ '/tuio/2Dcur', 'alive', 3 ],
-    [ '/tuio/2Dcur',
-      'set',
-      3,
-      0.5218750238418579,
-      0.3895833194255829,
-      0,
-      0,
-      0 ],
-    [ '/tuio/2Dcur', 'fseq', 2842 ] ]
-  
-  TUIO message:
-  [ [ '/tuio/2Dcur', 'alive', 3 ],
-    [ '/tuio/2Dcur',
-      'set',
-      3,
-      0.5218750238418579,
-      0.3895833194255829,
-      0,
-      0,
-      0 ],
-    [ '/tuio/2Dcur', 'fseq', 2843 ] ]
-  
-  TUIO message:
-  [ [ '/tuio/2Dcur', 'alive' ],
-    [ '/tuio/2Dcur', 'fseq', 2844 ] ]
-
-Licensing
----------
-
-LGPL.  Please see the file lesser.txt for details.
diff --git a/examples/node/node_modules/node-osc/examples/client.js b/examples/node/node_modules/node-osc/examples/client.js
deleted file mode 100644
index cdbbb1c..0000000
--- a/examples/node/node_modules/node-osc/examples/client.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var osc = require('../lib/osc.js');
-
-var client = new osc.Client('127.0.0.1', 3333);
-client.send('/oscAddress', 1, 1, 2, 3, 5, 8);
-
-// or
-// var msg =  new osc.Message('/address')
-// msg.append("testing");
-// msg.append("testing");
-// msg.append(123);
-// client.send(msg)
-
-// or
-// var msg = new osc.Message('/address', 1, 2, 3);
-// client.send(msg);
diff --git a/examples/node/node_modules/node-osc/examples/server.js b/examples/node/node_modules/node-osc/examples/server.js
deleted file mode 100644
index 8b26878..0000000
--- a/examples/node/node_modules/node-osc/examples/server.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var osc = require('../lib/osc.js');
-var util = require('util');
-
-var oscServer = new osc.Server(3333, '0.0.0.0');
-oscServer.on("message", function (msg, rinfo) {
-    console.log("Message:");
-    console.log(msg);
-});
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/index.js b/examples/node/node_modules/node-osc/index.js
deleted file mode 100644
index 9b0c35d..0000000
--- a/examples/node/node_modules/node-osc/index.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./lib/osc.js')
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/lesser.txt b/examples/node/node_modules/node-osc/lesser.txt
deleted file mode 100644
index b1e3f5a..0000000
--- a/examples/node/node_modules/node-osc/lesser.txt
+++ /dev/null
@@ -1,504 +0,0 @@
-		  GNU LESSER GENERAL PUBLIC LICENSE
-		       Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-		  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-			    NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/examples/node/node_modules/node-osc/lib/osc.js b/examples/node/node_modules/node-osc/lib/osc.js
deleted file mode 100644
index 96cff7f..0000000
--- a/examples/node/node_modules/node-osc/lib/osc.js
+++ /dev/null
@@ -1,315 +0,0 @@
-var min = require('osc-min');
-var dgram = require('dgram');
-var util = require('util');
-var events = require('events');
-var jspack = require('jspack').jspack;
-
-////////////////////
-// OSC Message
-////////////////////
-
-
-function Message(address) {
-    this.oscType = "message";
-    this.address = address;
-    this.args = [];
-    
-    for (var i = 1; i < arguments.length; i++) {
-        this.append(arguments[i]);
-    }
-}
-
-Message.prototype = {
-    append: function (arg) {
-        switch (typeof arg) {
-        case 'object':
-            if (arg.type) {
-                this.args.push(arg);
-            } else {
-                throw new Error("don't know how to encode object " + arg)
-            }
-            break;
-        case 'number':
-            if (Math.floor(arg) == arg) {
-                var argOut = new Argument('integer', arg);
-                this.args.push(argOut);
-            } else {
-                var argOut = new Argument('float', arg);
-                this.args.push(argOut);
-            }
-            break;
-        case 'string':
-            var argOut = new Argument('string', arg);
-            this.args.push(argOut);
-            break;
-        default:
-            throw new Error("don't know how to encode " + arg);
-        }   
-    }
-}
-
-exports.Message = Message;
-
-function Argument(type, value){
-    this.type = type;
-    this.value = value;
-}
-
-////////////////////
-// OSC Client
-////////////////////
-
-var Client = function (host, port) {
-    this.host = host;
-    this.port = port;
-    this._sock = dgram.createSocket('udp4');
-}
-
-Client.prototype = {
-    send: function (message) {
-        switch (typeof message) {
-            case 'object':
-                var buf = min.toBuffer(message);
-                this._sock.send(buf, 0, buf.length, this.port, this.host);
-                break;
-            case 'string':
-                mes = new Message(arguments[0]);
-                for (var i = 1; i < arguments.length; i++) {
-                    mes.append(arguments[i]);
-                }
-                var buf = min.toBuffer(mes);
-                this._sock.send(buf, 0, buf.length, this.port, this.host);
-                break;
-            default:
-                throw new Error("That Message Just Doesn't Seem Right");
-        }
-    }                                                  
-}
-
-exports.Client = Client;
-
-////////////////////
-// OSC Message encoding and decoding functions
-////////////////////
-
-function ShortBuffer(type, buf, requiredLength)
-{
-    this.type = "ShortBuffer";
-    var message = "buffer [";
-    for (var i = 0; i < buf.length; i++) {
-        if (i) {
-            message += ", ";
-        }
-        message += buf.charCodeAt(i);
-    }
-    message += "] too short for " + type + ", " + requiredLength + " bytes required";
-    this.message = message;
-}
-
-function TString (value) { this.value = value; }
-TString.prototype = {
-    typetag: 's',
-    decode: function (data) {
-        var end = 0;
-        while (data[end] && end < data.length) {
-            end++;
-        }
-        if (end == data.length) {
-            throw Error("OSC string not null terminated");
-        }
-        this.value = data.toString('ascii', 0, end);
-        var nextData = parseInt(Math.ceil((end + 1) / 4.0) * 4);
-        return data.slice(nextData);
-    },
-    encode: function (buf, pos) {
-        var len = Math.ceil((this.value.length + 1) / 4.0) * 4;
-        return jspack.PackTo('>' + len + 's', buf, pos, [ this.value ]);
-    }
-}
-exports.TString = TString;
-
-function TInt (value) { this.value = value; }
-TInt.prototype = {
-    typetag: 'i',
-    decode: function (data) {
-        if (data.length < 4) {
-            throw new ShortBuffer('int', data, 4);
-        }
-
-        this.value = jspack.Unpack('>i', data.slice(0, 4))[0];
-        return data.slice(4);
-    },
-    encode: function (buf, pos) {
-        return jspack.PackTo('>i', buf, pos, [ this.value ]);
-    }
-}
-exports.TInt = TInt;
-
-function TTime (value) { this.value = value; }
-TTime.prototype = {
-    typetag: 't',
-    decode: function (data) {
-        if (data.length < 8) {
-            throw new ShortBuffer('time', data, 8);
-        }
-        var raw = jspack.Unpack('>LL', data.slice(0, 8));
-        var secs = raw[0];
-        var fracs = raw[1];
-        this.value = secs + fracs / 4294967296;
-        return data.slice(8);
-    },
-    encode: function (buf, pos) {
-        return jspack.PackTo('>LL', buf, pos, this.value);
-    }
-}
-exports.TTime = TTime;
-
-function TFloat (value) { this.value = value; }
-TFloat.prototype = {
-    typetag: 'f',
-    decode: function (data) {
-        if (data.length < 4) {
-            throw new ShortBuffer('float', data, 4);
-        }
-
-        this.value = jspack.Unpack('>f', data.slice(0, 4))[0];
-        return data.slice(4);
-    },
-    encode: function (buf, pos) {
-        return jspack.PackTo('>f', buf, pos, [ this.value ]);
-    }
-}
-exports.TFloat = TFloat;
-
-function TBlob (value) { this.value = value; }
-TBlob.prototype = {
-    typetag: 'b',
-    decode: function (data) {
-        var length = jspack.Unpack('>i', data.slice(0, 4))[0];
-        var nextData = parseInt(Math.ceil((length) / 4.0) * 4) + 4;
-        this.value = data.slice(4, length + 4);
-        return data.slice(nextData);
-    },
-    encode: function (buf, pos) {
-        var len = Math.ceil((this.value.length) / 4.0) * 4;
-        return jspack.PackTo('>i' + len + 's', buf, pos, [len, this.value]);
-    }
-}
-exports.TBlob = TBlob;
-
-function TDouble (value) { this.value = value; }
-TDouble.prototype = {
-    typetag: 'd',
-    decode: function (data) {
-        if (data.length < 8) {
-            throw new ShortBuffer('double', data, 8);
-        }
-        this.value = jspack.Unpack('>d', data.slice(0, 8))[0];
-        return data.slice(8);
-    },
-    encode: function (buf, pos) {
-        return jspack.PackTo('>d', buf, pos, [ this.value ]);
-    }
-}
-exports.TDouble = TDouble;
-
-// for each OSC type tag we use a specific constructor function to decode its respective data
-var tagToConstructor = { 'i': function () { return new TInt },
-                         'f': function () { return new TFloat },
-                         's': function () { return new TString },
-                         'b': function () { return new TBlob },
-                         'd': function () { return new TDouble } };
-
-function decode (data) {
-    // this stores the decoded data as an array
-    var message = [];
-
-    // we start getting the <address> and <rest> of OSC msg /<address>\0<rest>\0<typetags>\0<data>
-    var address = new TString;
-    data = address.decode(data);
-
-    // Checking if we received a bundle (typical for TUIO/OSC)
-    if (address.value == '#bundle') {
-        var time = new TTime;
-        data = time.decode(data);
-
-        message.push('#bundle');
-        message.push(time.value);
-
-        var length, part;
-        while(data.length > 0) {
-            length = new TInt;
-            data = length.decode(data);
-
-            part = data.slice(0, length.value);
-            //message = message.concat(decode(part));
-            message.push(decode(part));
-
-            data = data.slice(length.value, data.length);
-        }
-
-    } else if (data.length > 0) {
-        message.push(address.value);
-
-        // if we have rest, maybe we have some typetags... let see...
-
-        // now we advance on the old rest, getting <typetags>
-        var typetags = new TString;
-        data = typetags.decode(data);
-        typetags = typetags.value;
-        // so we start building our message list
-        if (typetags[0] != ',') {
-            throw "invalid type tag in incoming OSC message, must start with comma";
-        }
-        for (var i = 1; i < typetags.length; i++) {
-            var constructor = tagToConstructor[typetags[i]];
-            if (!constructor) {
-                throw "Unsupported OSC type tag " + typetags[i] + " in incoming message";
-            }
-            var argument = constructor();
-            data = argument.decode(data);
-            message.push(argument.value);
-        }
-    }
-
-    return message;
-};
-
-
-
-////////////////////
-// OSC Server
-////////////////////
-
-var Server = function(port, host) {
-    var _callbacks, server;
-    events.EventEmitter.call(this);
-    _callbacks = [];
-    this.port = port;
-    this.host = host;
-    this._sock = dgram.createSocket('udp4');
-    this._sock.bind(port);
-    server = this;
-    this._sock.on('message', function (msg, rinfo) {
-        try {
-            var decoded = decode(msg);
-            // [<address>, <typetags>, <values>*] 
-            if (decoded) {
-                server.emit('message', decoded, rinfo);
-                server.emit(decoded[0], decoded, rinfo);
-            }
-        }
-        catch (e) {
-            console.log("can't decode incoming message: " + e.message);
-        }
-    });
-    this.kill = function() {
-        this._sock.close();
-    };
-}
-
-util.inherits(Server, events.EventEmitter);
-
-exports.Server = Server;
-
-
diff --git a/examples/node/node_modules/node-osc/node_modules/jspack/LICENSE b/examples/node/node_modules/node-osc/node_modules/jspack/LICENSE
deleted file mode 100644
index d646dd7..0000000
--- a/examples/node/node_modules/node-osc/node_modules/jspack/LICENSE
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2008, Fair Oaks Labs, Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are
-permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, this list
-      of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice, this
-      list of conditions and the following disclaimer in the documentation and/or other
-      materials provided with the distribution.
-
-    * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors may be
-      used to endorse or promote products derived from this software without specific
-      prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/examples/node/node_modules/node-osc/node_modules/jspack/README b/examples/node/node_modules/node-osc/node_modules/jspack/README
deleted file mode 100644
index 2f9f94b..0000000
--- a/examples/node/node_modules/node-osc/node_modules/jspack/README
+++ /dev/null
@@ -1,126 +0,0 @@
-Disclaimer:  The jspack module and documentation are essentially ports of the
-Python struct module and documentation, with such changes as were necessary.
-If any Python people are miffed that I've ripped off their docs, let me know,
-and I'll gladly revise them.
-
-This module performs conversions between JavaScript values and C structs
-represented as octet arrays (i.e. JavaScript arrays of integral numbers
-between 0 and 255, inclusive).  It uses format strings (explained below) as
-compact descriptions of the layout of the C structs and the intended conversion
-to/from JavaScript values.  This can be used to handle binary data stored in
-files, or received from network connections or other sources.
-
-
-The module defines the following functions:
-
-  Unpack(fmt, a, p)
-    Return an array containing values unpacked from the octet array a,
-  beginning at position p, according to the supplied format string.  If there
-  are more octets in a than required by the format string, the excess is
-  ignored.  If there are fewer octets than required, Unpack() will return
-  undefined.  If no value is supplied for the p argument, zero is assumed.
-
-  PackTo(fmt, a, p, values)
-    Pack and store the values array into the supplied octet array a, beginning
-  at position p.  If there are more values supplied than are specified in the
-  format string, the excess is ignored.  If there are fewer values supplied,
-  PackTo() will return false.  If there is insufficient space in a to store
-  the packed values, PackTo() will return false.  On success, PackTo() returns
-  the a argument. If any value is of an inappropriate type, the results are
-  undefined.
-
-  Pack(fmt, values)
-    Return an octet array containing the packed values array.  If there are
-  more values supplied than are specified in the format string, the excess is
-  ignored.  If there are fewer values supplied, Pack() will return false.  If
-  any value is of an inappropriate type, the results are undefined.
-
-  CalcLength(fmt)
-    Return the number of octets required to store the given format string.
-
-
-Format characters have the following meanings; the conversion between C and
-JavaScript values should be obvious given their types:
-
-    Format | C Type         | JavaScript Type   | Size (octets) | Notes
-    -------------------------------------------------------------------
-       A   | char[]         | Array             |     Length     |  (1)
-       x   | pad byte       | N/A               |        1       |
-       c   | char           | string (length 1) |        1       |  (2)
-       b   | signed char    | number            |        1       |  (3)
-       B   | unsigned char  | number            |        1       |  (3)
-       h   | signed short   | number            |        2       |  (3)
-       H   | unsigned short | number            |        2       |  (3)
-       i   | signed long    | number            |        4       |  (3)
-       I   | unsigned long  | number            |        4       |  (3)
-       l   | signed long    | number            |        4       |  (3)
-       L   | unsigned long  | number            |        4       |  (3)
-       s   | char[]         | string            |     Length     |  (2)
-       f   | float          | number            |        4       |  (4)
-       d   | double         | number            |        8       |  (5)
-
-Notes:
-
-  (1) The "A" code simply returns a slice of the source octet array.  This is
-  primarily useful when a data structure contains bytes which are subject to
-  multiple intepretations (e.g. unions), and the data structure is being
-  decoded in multiple passes.
-
-  (2) The "c" and "s" codes handle strings with codepoints between 0 and 255,
-  inclusive.  The data are not bounds-checked, so strings containing  characters
-  with codepoints outside this range will encode to "octet" arrays that contain
-  values outside the range of an octet.  Furthermore, since these codes decode
-  octet arrays by assuming the octets represent UNICODE codepoints, they may
-  not "correctly" decode bytes in the range 128-255, since that range is subject
-  to multiple interpretations.  Caveat coder!
-
-  (3) The 8 "integer" codes clip their encoded values to the minima and maxmima
-  of their respective types:  If you invoke Struct.Pack('b', [-129]), for
-  instance, the result will be [128], which is the octet encoding of -128,
-  which is the minima of a signed char.  Similarly, Struct.Pack('h', [-32769])
-  returns [128, 0].  Fractions are truncated.
-
-  (4) Since JavaScript doesn't natively support 32-bit floats, whenever a float
-  is stored, the source JavaScript number must be rounded.  This module applies
-  correct rounding during this process.  Numbers with magnitude greater than or
-  equal to 2**128-2**103 round to either positive or negative Infinity. The
-  rounding algorithm assumes that JavsScript is using exactly 64 bits of
-  floating point precision; 128-bit floating point will result in subtle errors.
-
-  (5) This module assumes that JavaScript is using 64 bits of floating point
-  precision, so the "d" code performs no rounding.  128-bit floating point will
-  cause the "d" code to simply truncate significands to 52 bits.
-
-A format character may be preceded by an integral repeat count.  For example,
-the format string "4h" means exactly the same thing as "hhhh".
-
-Whitespace characters between formats are ignored; a count and its format must
-not be separated by whitespace, however.
-
-For the "A" format character, the count is interpreted as the size of the
-array, not a repeat count as for the other format characters; for example, "10A"
-means a single 10-octet array.  When packing, the Array is truncated or padded
-with 0 bytes as appropriate to make it conform to the specified length.  When
-unpacking, the resulting Array always has exactly the specified number of bytes.
-As a special case, "0A" means a single, empty Array.
-
-For the "s" format character, the count is interpreted as the size of the
-string, not a repeat count as for the other format characters; for example,
-"10s" means a single 10-byte string, while "10c" means 10 characters.  When
-packing, the string is truncated or padded with 0 bytes as appropriate to make
-it conform to the specified length.  When unpacking, the resulting string always
-has exactly the specified number of bytes.  As a special case, "0s" means a
-single, empty string (while "0c" means 0 characters).
-
-
-By default, C numbers are represented in network (or big-endian) byte order.
-Alternatively, the first character of the format string can be used to indicate
-byte order of the packed data, according to the following table:
-
-    Character | Byte Order
-    ----------------------------------
-        <     | little-endian
-        >     | big-endian
-        !     | network (= big-endian)
-
-If the first character is not one of these, "!" is assumed.
diff --git a/examples/node/node_modules/node-osc/node_modules/jspack/jspack.js b/examples/node/node_modules/node-osc/node_modules/jspack/jspack.js
deleted file mode 100644
index 2de17d9..0000000
--- a/examples/node/node_modules/node-osc/node_modules/jspack/jspack.js
+++ /dev/null
@@ -1,252 +0,0 @@
-/*!
- *  Copyright © 2008 Fair Oaks Labs, Inc.
- *  All rights reserved.
- */
-
-// Utility object:  Encode/Decode C-style binary primitives to/from octet arrays
-function JSPack()
-{
-	// Module-level (private) variables
-	var el,  bBE = false, m = this;
-
-
-	// Raw byte arrays
-	m._DeArray = function (a, p, l)
-	{
-		return [a.slice(p,p+l)];
-	};
-	m._EnArray = function (a, p, l, v)
-	{
-		for (var i = 0; i < l; a[p+i] = v[i]?v[i]:0, i++);
-	};
-
-	// ASCII characters
-	m._DeChar = function (a, p)
-	{
-		return String.fromCharCode(a[p]);
-	};
-	m._EnChar = function (a, p, v)
-	{
-		a[p] = v.charCodeAt(0);
-	};
-
-	// Little-endian (un)signed N-byte integers
-	m._DeInt = function (a, p)
-	{
-		var lsb = bBE?(el.len-1):0, nsb = bBE?-1:1, stop = lsb+nsb*el.len, rv, i, f;
-		for (rv = 0, i = lsb, f = 1; i != stop; rv+=(a[p+i]*f), i+=nsb, f*=256);
-		if (el.bSigned && (rv & Math.pow(2, el.len*8-1))) { rv -= Math.pow(2, el.len*8); }
-		return rv;
-	};
-	m._EnInt = function (a, p, v)
-	{
-		var lsb = bBE?(el.len-1):0, nsb = bBE?-1:1, stop = lsb+nsb*el.len, i;
-		v = (v<el.min)?el.min:(v>el.max)?el.max:v;
-		for (i = lsb; i != stop; a[p+i]=v&0xff, i+=nsb, v>>=8);
-	};
-
-	// ASCII character strings
-	m._DeString = function (a, p, l)
-	{
-		for (var rv = new Array(l), i = 0; i < l; rv[i] = String.fromCharCode(a[p+i]), i++);
-		return rv.join('');
-	};
-	m._EnString = function (a, p, l, v)
-	{
-		for (var t, i = 0; i < l; a[p+i] = (t=v.charCodeAt(i))?t:0, i++);
-	};
-
-	// Little-endian N-bit IEEE 754 floating point
-	m._De754 = function (a, p)
-	{
-		var s, e, m, i, d, nBits, mLen, eLen, eBias, eMax;
-		mLen = el.mLen, eLen = el.len*8-el.mLen-1, eMax = (1<<eLen)-1, eBias = eMax>>1;
-
-		i = bBE?0:(el.len-1); d = bBE?1:-1; s = a[p+i]; i+=d; nBits = -7;
-		for (e = s&((1<<(-nBits))-1), s>>=(-nBits), nBits += eLen; nBits > 0; e=e*256+a[p+i], i+=d, nBits-=8);
-		for (m = e&((1<<(-nBits))-1), e>>=(-nBits), nBits += mLen; nBits > 0; m=m*256+a[p+i], i+=d, nBits-=8);
-
-		switch (e)
-		{
-			case 0:
-				// Zero, or denormalized number
-				e = 1-eBias;
-				break;
-			case eMax:
-				// NaN, or +/-Infinity
-				return m?NaN:((s?-1:1)*Infinity);
-			default:
-				// Normalized number
-				m = m + Math.pow(2, mLen);
-				e = e - eBias;
-				break;
-		}
-		return (s?-1:1) * m * Math.pow(2, e-mLen);
-	};
-	m._En754 = function (a, p, v)
-	{
-		var s, e, m, i, d, c, mLen, eLen, eBias, eMax;
-		mLen = el.mLen, eLen = el.len*8-el.mLen-1, eMax = (1<<eLen)-1, eBias = eMax>>1;
-
-		s = v<0?1:0;
-		v = Math.abs(v);
-		if (isNaN(v) || (v == Infinity))
-		{
-			m = isNaN(v)?1:0;
-			e = eMax;
-		}
-		else
-		{
-			e = Math.floor(Math.log(v)/Math.LN2);			// Calculate log2 of the value
-			if (v*(c = Math.pow(2, -e)) < 1) { e--; c*=2; }		// Math.log() isn't 100% reliable
-
-			// Round by adding 1/2 the significand's LSD
-			if (e+eBias >= 1) { v += el.rt/c; }			// Normalized:  mLen significand digits
-			else { v += el.rt*Math.pow(2, 1-eBias); } 		// Denormalized:  <= mLen significand digits
-			if (v*c >= 2) { e++; c/=2; }				// Rounding can increment the exponent
-
-			if (e+eBias >= eMax)
-			{
-				// Overflow
-				m = 0;
-				e = eMax;
-			}
-			else if (e+eBias >= 1)
-			{
-				// Normalized - term order matters, as Math.pow(2, 52-e) and v*Math.pow(2, 52) can overflow
-				m = (v*c-1)*Math.pow(2, mLen);
-				e = e + eBias;
-			}
-			else
-			{
-				// Denormalized - also catches the '0' case, somewhat by chance
-				m = v*Math.pow(2, eBias-1)*Math.pow(2, mLen);
-				e = 0;
-			}
-		}
-
-		for (i = bBE?(el.len-1):0, d=bBE?-1:1; mLen >= 8; a[p+i]=m&0xff, i+=d, m/=256, mLen-=8);
-		for (e=(e<<mLen)|m, eLen+=mLen; eLen > 0; a[p+i]=e&0xff, i+=d, e/=256, eLen-=8);
-		a[p+i-d] |= s*128;
-	};
-
-
-	// Class data
-	m._sPattern	= '(\\d+)?([AxcbBhHsfdiIlL])';
-	m._lenLut	= {'A':1, 'x':1, 'c':1, 'b':1, 'B':1, 'h':2, 'H':2, 's':1, 'f':4, 'd':8, 'i':4, 'I':4, 'l':4, 'L':4};
-	m._elLut	= {	'A': {en:m._EnArray, de:m._DeArray},
-				's': {en:m._EnString, de:m._DeString},
-				'c': {en:m._EnChar, de:m._DeChar},
-				'b': {en:m._EnInt, de:m._DeInt, len:1, bSigned:true, min:-Math.pow(2, 7), max:Math.pow(2, 7)-1},
-				'B': {en:m._EnInt, de:m._DeInt, len:1, bSigned:false, min:0, max:Math.pow(2, 8)-1},
-				'h': {en:m._EnInt, de:m._DeInt, len:2, bSigned:true, min:-Math.pow(2, 15), max:Math.pow(2, 15)-1},
-				'H': {en:m._EnInt, de:m._DeInt, len:2, bSigned:false, min:0, max:Math.pow(2, 16)-1},
-				'i': {en:m._EnInt, de:m._DeInt, len:4, bSigned:true, min:-Math.pow(2, 31), max:Math.pow(2, 31)-1},
-				'I': {en:m._EnInt, de:m._DeInt, len:4, bSigned:false, min:0, max:Math.pow(2, 32)-1},
-				'l': {en:m._EnInt, de:m._DeInt, len:4, bSigned:true, min:-Math.pow(2, 31), max:Math.pow(2, 31)-1},
-				'L': {en:m._EnInt, de:m._DeInt, len:4, bSigned:false, min:0, max:Math.pow(2, 32)-1},
-				'f': {en:m._En754, de:m._De754, len:4, mLen:23, rt:Math.pow(2, -24)-Math.pow(2, -77)},
-				'd': {en:m._En754, de:m._De754, len:8, mLen:52, rt:0}};
-
-	// Unpack a series of n elements of size s from array a at offset p with fxn
-	m._UnpackSeries = function (n, s, a, p)
-	{
-		for (var fxn = el.de, rv = [], i = 0; i < n; rv.push(fxn(a, p+i*s)), i++);
-		return rv;
-	};
-
-	// Pack a series of n elements of size s from array v at offset i to array a at offset p with fxn
-	m._PackSeries = function (n, s, a, p, v, i)
-	{
-		for (var fxn = el.en, o = 0; o < n; fxn(a, p+o*s, v[i+o]), o++);
-	};
-
-	// Unpack the octet array a, beginning at offset p, according to the fmt string
-	m.Unpack = function (fmt, a, p)
-	{
-		// Set the private bBE flag based on the format string - assume big-endianness
-		bBE = (fmt.charAt(0) != '<');
-
-		p = p?p:0;
-		var re = new RegExp(this._sPattern, 'g'), m, n, s, rv = [];
-		while (m = re.exec(fmt))
-		{
-			n = ((m[1]==undefined)||(m[1]==''))?1:parseInt(m[1]);
-			s = this._lenLut[m[2]];
-			if ((p + n*s) > a.length)
-			{
-				return undefined;
-			}
-			switch (m[2])
-			{
-				case 'A': case 's':
-					rv.push(this._elLut[m[2]].de(a, p, n));
-					break;
-				case 'c': case 'b': case 'B': case 'h': case 'H':
-				case 'i': case 'I': case 'l': case 'L': case 'f': case 'd':
-					el = this._elLut[m[2]];
-					rv.push(this._UnpackSeries(n, s, a, p));
-					break;
-			}
-			p += n*s;
-		}
-		return Array.prototype.concat.apply([], rv);
-	};
-
-	// Pack the supplied values into the octet array a, beginning at offset p, according to the fmt string
-	m.PackTo = function (fmt, a, p, values)
-	{
-		// Set the private bBE flag based on the format string - assume big-endianness
-		bBE = (fmt.charAt(0) != '<');
-
-		var re = new RegExp(this._sPattern, 'g'), m, n, s, i = 0, j;
-		while (m = re.exec(fmt))
-		{
-			n = ((m[1]==undefined)||(m[1]==''))?1:parseInt(m[1]);
-			s = this._lenLut[m[2]];
-			if ((p + n*s) > a.length)
-			{
-				return false;
-			}
-			switch (m[2])
-			{
-				case 'A': case 's':
-					if ((i + 1) > values.length) { return false; }
-					this._elLut[m[2]].en(a, p, n, values[i]);
-					i += 1;
-					break;
-				case 'c': case 'b': case 'B': case 'h': case 'H':
-				case 'i': case 'I': case 'l': case 'L': case 'f': case 'd':
-					el = this._elLut[m[2]];
-					if ((i + n) > values.length) { return false; }
-					this._PackSeries(n, s, a, p, values, i);
-					i += n;
-					break;
-				case 'x':
-					for (j = 0; j < n; j++) { a[p+j] = 0; }
-					break;
-			}
-			p += n*s;
-		}
-		return a;
-	};
-
-	// Pack the supplied values into a new octet array, according to the fmt string
-	m.Pack = function (fmt, values)
-	{
-		return this.PackTo(fmt, new Array(this.CalcLength(fmt)), 0, values);
-	};
-
-	// Determine the number of bytes represented by the format string
-	m.CalcLength = function (fmt)
-	{
-		var re = new RegExp(this._sPattern, 'g'), m, sum = 0;
-		while (m = re.exec(fmt))
-		{
-			sum += (((m[1]==undefined)||(m[1]==''))?1:parseInt(m[1])) * this._lenLut[m[2]];
-		}
-		return sum;
-	};
-};
-
-exports.jspack = new JSPack();
diff --git a/examples/node/node_modules/node-osc/node_modules/jspack/package.json b/examples/node/node_modules/node-osc/node_modules/jspack/package.json
deleted file mode 100644
index 1e46db8..0000000
--- a/examples/node/node_modules/node-osc/node_modules/jspack/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "author": {
-    "name": "https://github.com/pgriess"
-  },
-  "name": "jspack",
-  "description": "JavaScript library to pack primitives to octet arrays, packaged for NodeJS.",
-  "version": "0.0.1",
-  "homepage": "http://github.com/birchroad/node-jspack",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/birchroad/node-jspack.git"
-  },
-  "main": "./jspack.js",
-  "maintainers": [
-    {
-      "name": "Peter Magnusson",
-      "email": "peter@birchroad.net",
-      "url": "http://github.com/birchroad/node-jspack"
-    }
-  ],
-  "readme": "Disclaimer:  The jspack module and documentation are essentially ports of the\nPython struct module and documentation, with such changes as were necessary.\nIf any Python people are miffed that I've ripped off their docs, let me know,\nand I'll gladly revise them.\n\nThis module performs conversions between JavaScript values and C structs\nrepresented as octet arrays (i.e. JavaScript arrays of integral numbers\nbetween 0 and 255, inclusive).  It uses format strings (explained below) as\ncompact descriptions of the layout of the C structs and the intended conversion\nto/from JavaScript values.  This can be used to handle binary data stored in\nfiles, or received from network connections or other sources.\n\n\nThe module defines the following functions:\n\n  Unpack(fmt, a, p)\n    Return an array containing values unpacked from the octet array a,\n  beginning at position p, according to the supplied format string.  If there\n  are more octets in a than required by the format string, the excess is\n  ignored.  If there are fewer octets than required, Unpack() will return\n  undefined.  If no value is supplied for the p argument, zero is assumed.\n\n  PackTo(fmt, a, p, values)\n    Pack and store the values array into the supplied octet array a, beginning\n  at position p.  If there are more values supplied than are specified in the\n  format string, the excess is ignored.  If there are fewer values supplied,\n  PackTo() will return false.  If there is insufficient space in a to store\n  the packed values, PackTo() will return false.  On success, PackTo() returns\n  the a argument. If any value is of an inappropriate type, the results are\n  undefined.\n\n  Pack(fmt, values)\n    Return an octet array containing the packed values array.  If there are\n  more values supplied than are specified in the format string, the excess is\n  ignored.  If there are fewer values supplied, Pack() will return false.  If\n  any value is of an inappropriate type, the results are undefined.\n\n  CalcLength(fmt)\n    Return the number of octets required to store the given format string.\n\n\nFormat characters have the following meanings; the conversion between C and\nJavaScript values should be obvious given their types:\n\n    Format | C Type         | JavaScript Type   | Size (octets) | Notes\n    -------------------------------------------------------------------\n       A   | char[]         | Array             |     Length     |  (1)\n       x   | pad byte       | N/A               |        1       |\n       c   | char           | string (length 1) |        1       |  (2)\n       b   | signed char    | number            |        1       |  (3)\n       B   | unsigned char  | number            |        1       |  (3)\n       h   | signed short   | number            |        2       |  (3)\n       H   | unsigned short | number            |        2       |  (3)\n       i   | signed long    | number            |        4       |  (3)\n       I   | unsigned long  | number            |        4       |  (3)\n       l   | signed long    | number            |        4       |  (3)\n       L   | unsigned long  | number            |        4       |  (3)\n       s   | char[]         | string            |     Length     |  (2)\n       f   | float          | number            |        4       |  (4)\n       d   | double         | number            |        8       |  (5)\n\nNotes:\n\n  (1) The \"A\" code simply returns a slice of the source octet array.  This is\n  primarily useful when a data structure contains bytes which are subject to\n  multiple intepretations (e.g. unions), and the data structure is being\n  decoded in multiple passes.\n\n  (2) The \"c\" and \"s\" codes handle strings with codepoints between 0 and 255,\n  inclusive.  The data are not bounds-checked, so strings containing  characters\n  with codepoints outside this range will encode to \"octet\" arrays that contain\n  values outside the range of an octet.  Furthermore, since these codes decode\n  octet arrays by assuming the octets represent UNICODE codepoints, they may\n  not \"correctly\" decode bytes in the range 128-255, since that range is subject\n  to multiple interpretations.  Caveat coder!\n\n  (3) The 8 \"integer\" codes clip their encoded values to the minima and maxmima\n  of their respective types:  If you invoke Struct.Pack('b', [-129]), for\n  instance, the result will be [128], which is the octet encoding of -128,\n  which is the minima of a signed char.  Similarly, Struct.Pack('h', [-32769])\n  returns [128, 0].  Fractions are truncated.\n\n  (4) Since JavaScript doesn't natively support 32-bit floats, whenever a float\n  is stored, the source JavaScript number must be rounded.  This module applies\n  correct rounding during this process.  Numbers with magnitude greater than or\n  equal to 2**128-2**103 round to either positive or negative Infinity. The\n  rounding algorithm assumes that JavsScript is using exactly 64 bits of\n  floating point precision; 128-bit floating point will result in subtle errors.\n\n  (5) This module assumes that JavaScript is using 64 bits of floating point\n  precision, so the \"d\" code performs no rounding.  128-bit floating point will\n  cause the \"d\" code to simply truncate significands to 52 bits.\n\nA format character may be preceded by an integral repeat count.  For example,\nthe format string \"4h\" means exactly the same thing as \"hhhh\".\n\nWhitespace characters between formats are ignored; a count and its format must\nnot be separated by whitespace, however.\n\nFor the \"A\" format character, the count is interpreted as the size of the\narray, not a repeat count as for the other format characters; for example, \"10A\"\nmeans a single 10-octet array.  When packing, the Array is truncated or padded\nwith 0 bytes as appropriate to make it conform to the specified length.  When\nunpacking, the resulting Array always has exactly the specified number of bytes.\nAs a special case, \"0A\" means a single, empty Array.\n\nFor the \"s\" format character, the count is interpreted as the size of the\nstring, not a repeat count as for the other format characters; for example,\n\"10s\" means a single 10-byte string, while \"10c\" means 10 characters.  When\npacking, the string is truncated or padded with 0 bytes as appropriate to make\nit conform to the specified length.  When unpacking, the resulting string always\nhas exactly the specified number of bytes.  As a special case, \"0s\" means a\nsingle, empty string (while \"0c\" means 0 characters).\n\n\nBy default, C numbers are represented in network (or big-endian) byte order.\nAlternatively, the first character of the format string can be used to indicate\nbyte order of the packed data, according to the following table:\n\n    Character | Byte Order\n    ----------------------------------\n        <     | little-endian\n        >     | big-endian\n        !     | network (= big-endian)\n\nIf the first character is not one of these, \"!\" is assumed.\n",
-  "readmeFilename": "README",
-  "bugs": {
-    "url": "https://github.com/birchroad/node-jspack/issues"
-  },
-  "_id": "jspack@0.0.1",
-  "dist": {
-    "shasum": "48b84d73b571f10e169224238ca70829fbae25e1"
-  },
-  "_from": "jspack@0.0.1",
-  "_resolved": "https://registry.npmjs.org/jspack/-/jspack-0.0.1.tgz"
-}
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/.npmignore b/examples/node/node_modules/node-osc/node_modules/osc-min/.npmignore
deleted file mode 100644
index c2658d7..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/COPYING b/examples/node/node_modules/node-osc/node_modules/osc-min/COPYING
deleted file mode 100644
index 3c10e66..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/COPYING
+++ /dev/null
@@ -1,14 +0,0 @@
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/Cakefile b/examples/node/node_modules/node-osc/node_modules/osc-min/Cakefile
deleted file mode 100644
index c01c603..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/Cakefile
+++ /dev/null
@@ -1,21 +0,0 @@
-fs = require 'fs'
-child = require 'child_process'
-
-task 'test', 'run tests (requires development install)', (options) ->
-    test = child.spawn 'expresso', ['-I', './lib', 'test']
-    test.stdout.pipe process.stdout
-    test.stderr.pipe process.stderr
-
-task 'coverage', 'run tests with coverage check (requires development install)', (options) ->
-    compile = child.exec 'coffee -c lib', ->
-      test = child.spawn 'expresso', ['-I', './lib', '--cov', 'test']
-      test.stdout.pipe process.stdout
-      test.stderr.pipe process.stderr
-      test.on "exit", () ->
-        child.exec "ls lib/*.coffee", (error, output) ->
-          output = output.replace /\.coffee/g, ".js"
-          child.exec "rm -rf lib-cov " + output
-
-task 'doc', 'create md and html doc files', (options) ->
-    child.exec 'docket lib/* examples/* -m'
-    child.exec 'docket lib/* examples/* -d doc_html'
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/TODO b/examples/node/node_modules/node-osc/node_modules/osc-min/TODO
deleted file mode 100644
index 8d79737..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/TODO
+++ /dev/null
@@ -1 +0,0 @@
-explain why to use address transformer instead of messagetransformer for future-proofing
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/docket.css b/examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/docket.css
deleted file mode 100644
index 6a00a7a..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/docket.css
+++ /dev/null
@@ -1,163 +0,0 @@
-/*--------------------- Layout and Typography ----------------------------*/
-body {
-  font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
-  font-size: 15px;
-  line-height: 22px;
-  color: #252519;
-  margin: 0; padding: 0;
-}
-a {
-  color: #261a3b;
-}
-  a:visited {
-    color: #261a3b;
-  }
-p {
-  margin: 0 0 15px 0;
-}
-h1, h2, h3, h4, h5, h6 {
-  margin: 0px 0 15px 0;
-}
-  h1 {
-    margin-top: 40px;
-  }
-#container {
-  position: relative;
-}
-#background {
-  position: fixed;
-  top: 0; left: 525px; right: 0; bottom: 0;
-  background: #f5f5ff;
-  border-left: 1px solid #e5e5ee;
-  z-index: -1;
-}
-#jump_to, #jump_page {
-  background: white;
-  -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777;
-  -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px;
-  font: 10px Arial;
-  text-transform: uppercase;
-  cursor: pointer;
-  text-align: right;
-}
-#jump_to, #jump_wrapper {
-  position: fixed;
-  right: 0; top: 0;
-  padding: 5px 10px;
-}
-  #jump_wrapper {
-    padding: 0;
-    display: none;
-  }
-    #jump_to:hover #jump_wrapper {
-      display: block;
-    }
-    #jump_page {
-      padding: 5px 0 3px;
-      margin: 0 0 25px 25px;
-    }
-      #jump_page .source {
-        display: block;
-        padding: 5px 10px;
-        text-decoration: none;
-        border-top: 1px solid #eee;
-      }
-        #jump_page .source:hover {
-          background: #f5f5ff;
-        }
-        #jump_page .source:first-child {
-        }
-table td {
-  border: 0;
-  outline: 0;
-}
-  td.docs, th.docs {
-    max-width: 600px;
-    min-width: 600px;
-    min-height: 5px;
-    padding: 10px 25px 1px 150px;
-    overflow-x: hidden;
-    vertical-align: top;
-    text-align: left;
-  }
-    .docs pre {
-      margin: 15px 0 15px;
-      padding-left: 15px;
-    }
-    .docs p tt, .docs p code {
-      background: #f8f8ff;
-      border: 1px solid #dedede;
-      font-size: 12px;
-      padding: 0 0.2em;
-    }
-    pre, tt, code {
-      font-size: 12px; line-height: 18px;
-      font-family: Monaco, Consolas, "Lucida Console", monospace;
-      margin: 0; padding: 0;
-    }
-
-
-/*---------------------- Syntax Highlighting -----------------------------*/
-td.linenos { background-color: #f0f0f0; padding-right: 10px; }
-span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
-body .hll { background-color: #ffffcc }
-body .c { color: #408080; font-style: italic }  /* Comment */
-body .err { border: 1px solid #FF0000 }         /* Error */
-body .k { color: #954121 }                      /* Keyword */
-body .o { color: #666666 }                      /* Operator */
-body .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-body .cp { color: #BC7A00 }                     /* Comment.Preproc */
-body .c1 { color: #408080; font-style: italic } /* Comment.Single */
-body .cs { color: #408080; font-style: italic } /* Comment.Special */
-body .gd { color: #A00000 }                     /* Generic.Deleted */
-body .ge { font-style: italic }                 /* Generic.Emph */
-body .gr { color: #FF0000 }                     /* Generic.Error */
-body .gh { color: #000080; font-weight: bold }  /* Generic.Heading */
-body .gi { color: #00A000 }                     /* Generic.Inserted */
-body .go { color: #808080 }                     /* Generic.Output */
-body .gp { color: #000080; font-weight: bold }  /* Generic.Prompt */
-body .gs { font-weight: bold }                  /* Generic.Strong */
-body .gu { color: #800080; font-weight: bold }  /* Generic.Subheading */
-body .gt { color: #0040D0 }                     /* Generic.Traceback */
-body .kc { color: #954121 }                     /* Keyword.Constant */
-body .kd { color: #954121; font-weight: bold }  /* Keyword.Declaration */
-body .kn { color: #954121; font-weight: bold }  /* Keyword.Namespace */
-body .kp { color: #954121 }                     /* Keyword.Pseudo */
-body .kr { color: #954121; font-weight: bold }  /* Keyword.Reserved */
-body .kt { color: #B00040 }                     /* Keyword.Type */
-body .m { color: #666666 }                      /* Literal.Number */
-body .s { color: #219161 }                      /* Literal.String */
-body .na { color: #7D9029 }                     /* Name.Attribute */
-body .nb { color: #954121 }                     /* Name.Builtin */
-body .nc { color: #0000FF; font-weight: bold }  /* Name.Class */
-body .no { color: #880000 }                     /* Name.Constant */
-body .nd { color: #AA22FF }                     /* Name.Decorator */
-body .ni { color: #999999; font-weight: bold }  /* Name.Entity */
-body .ne { color: #D2413A; font-weight: bold }  /* Name.Exception */
-body .nf { color: #0000FF }                     /* Name.Function */
-body .nl { color: #A0A000 }                     /* Name.Label */
-body .nn { color: #0000FF; font-weight: bold }  /* Name.Namespace */
-body .nt { color: #954121; font-weight: bold }  /* Name.Tag */
-body .nv { color: #19469D }                     /* Name.Variable */
-body .ow { color: #AA22FF; font-weight: bold }  /* Operator.Word */
-body .w { color: #bbbbbb }                      /* Text.Whitespace */
-body .mf { color: #666666 }                     /* Literal.Number.Float */
-body .mh { color: #666666 }                     /* Literal.Number.Hex */
-body .mi { color: #666666 }                     /* Literal.Number.Integer */
-body .mo { color: #666666 }                     /* Literal.Number.Oct */
-body .sb { color: #219161 }                     /* Literal.String.Backtick */
-body .sc { color: #219161 }                     /* Literal.String.Char */
-body .sd { color: #219161; font-style: italic } /* Literal.String.Doc */
-body .s2 { color: #219161 }                     /* Literal.String.Double */
-body .se { color: #BB6622; font-weight: bold }  /* Literal.String.Escape */
-body .sh { color: #219161 }                     /* Literal.String.Heredoc */
-body .si { color: #BB6688; font-weight: bold }  /* Literal.String.Interpol */
-body .sx { color: #954121 }                     /* Literal.String.Other */
-body .sr { color: #BB6688 }                     /* Literal.String.Regex */
-body .s1 { color: #219161 }                     /* Literal.String.Single */
-body .ss { color: #19469D }                     /* Literal.String.Symbol */
-body .bp { color: #954121 }                     /* Name.Builtin.Pseudo */
-body .vc { color: #19469D }                     /* Name.Variable.Class */
-body .vg { color: #19469D }                     /* Name.Variable.Global */
-body .vi { color: #19469D }                     /* Name.Variable.Instance */
-body .il { color: #666666 }                     /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/readme.html b/examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/readme.html
deleted file mode 100644
index b034ed9..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/doc_html/readme.html
+++ /dev/null
@@ -1,221 +0,0 @@
-<head>
-  <title>readme.out</title>
-  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-  <link rel="stylesheet" media="all" href="docket.css" />
-</head>
-<body>
-  <table cellpadding="0" cellspacing="0">
-      <tbody><tr><td class="docs"><h1>osc-min</h1>
-
-<p><em>simple utilities for open sound control in node.js</em></p>
-
-<p>This package provides some node.js utilities for working with 
-<a href="http://opensoundcontrol.org/">OSC</a>, a format for sound and systems control. <br />
-Here we implement the <a href="http://opensoundcontrol.org/spec-1_1">OSC 1.1</a> specification.  OSC is a transport-independent
-protocol, so we don't provide any server objects, as you should be able to 
-use OSC over any transport you like.  The most common is probably udp, but tcp
-is not unheard of.</p>
-
-<hr />
-
-<h2>Installation</h2>
-
-<p>The easiest way to get osc-min is through <a href="http://npmjs.org">NPM</a>.
-After install npm, you can install osc-min in the current directory with</p>
-
-<p><code>
-npm install osc-min
-</code></p>
-
-<p>If you'd rather get osc-min through github (for example, if you're forking
-it), you still need npm to install dependencies, which you can do with</p>
-
-<p><code>
-npm install --dev
-</code></p>
-
-<p>Once you've got all the dependencies you should be able to run the unit
-tests with </p>
-
-<p><code>
-npm test
-npm run-script coverage
-</code></p>
-
-<hr />
-
-<h2>Examples</h2>
-
-<h3>A simple OSC printer</h3>
-
-<pre><code>    sock = udp.createSocket "udp4", (msg, rinfo) -&gt;
-        try
-            console.log osc.fromBuffer msg
-        catch error
-            console.log "invalid OSC packet"
-    sock.bind inport
-</code></pre>
-
-<h3>Send a bunch of arguments every two seconds</h3>
-
-<pre><code>    sendHeartbeat = () -&gt;
-        buf = osc.toBuffer(
-            address : "/heartbeat"
-            arguments : [
-                12
-                "sttttring"
-                new Buffer "beat"
-                {type : "integer", value : 7}
-            ]
-        )
-
-        udp.send buf, 0, buf.length, outport, "localhost"
-
-    setInterval sendHeartbeat, 2000
-</code></pre>
-
-<h3>A simple OSC redirecter</h3>
-
-<pre><code>    sock = udp.createSocket "udp4", (msg, rinfo) -&gt;
-        try
-            redirected = osc.applyAddressTransform msg, (address) -&gt; "/redirect" + address
-            sock.send(
-                redirected,
-                0,
-                redirected.length,
-                outport,
-                "localhost"
-            )
-        catch error
-            console.log "error redirecting: " + error
-    sock.bind inport
-</code></pre>
-
-<p>more examples are available in the <code>examples/</code> directory.</p>
-
-<hr />
-
-<h2>Exported functions</h2>
-
-<hr />
-
-<h3>.fromBuffer(buffer, [strict])</h3>
-
-<p>takes a node.js Buffer of a complete <em>OSC Packet</em> and 
-outputs the javascript representation, or throws if the buffer is ill-formed.</p>
-
-<p><code>strict</code> is an optional parameter that makes the function fail more often.</p>
-
-<hr />
-
-<h3>.toBuffer(object, [strict])</h3>
-
-<p>takes a <em>OSC packet</em> javascript representation as defined below and returns
-a node.js Buffer, or throws if the representation is ill-formed.</p>
-
-<hr />
-
-<h3>.toBuffer(address, arguments[], [strict])</h3>
-
-<p>alternative syntax for above.  Assumes this is an <em>OSC Message</em> as defined below, 
-and <code>arguments</code> is an array of <em>OSC Arguments</em> or single <em>OSC Argument</em></p>
-
-<hr />
-
-<h3>.applyAddressTransform(buffer, transform)</h3>
-
-<p>takes a callback that takes a string and outputs a string,
-and applies that to the address of the message encoded in the buffer,
-and outputs an encoded buffer.</p>
-
-<p>If the buffer encodes an <em>OSC Bundle</em>, this applies the function to each address 
-in the bundle.</p>
-
-<p>There's two subtle reasons you'd want to use this function rather than 
-composing <code>fromBuffer</code> and <code>toBuffer</code>:
-  - Future-proofing - if the OSC message uses an argument typecode that
-    we don't understand, calling <code>fromBuffer</code> will throw.  The only time
-    when <code>applyAddressTranform</code> might fail is if the address is malformed.
-  - Accuracy - javascript represents numbers as 64-bit floats, so some
-    OSC types will not be able to be represented accurately.  If accuracy
-    is important to you, then, you should never convert the OSC message to a
-    javascript representation.</p>
-
-<hr />
-
-<h3>.applyMessageTransform(buffer, transform)</h3>
-
-<p>takes a function that takes and returns a javascript <em>OSC Message</em> representation,
-and applies that to each message encoded in the buffer,
-and outputs a new buffer with the new address.</p>
-
-<p>If the buffer encodes an osc-bundle, this applies the function to each message 
-in the bundle.</p>
-
-<p>See notes above for applyAddressTransform for why you might want to use this.
-While this does parse and re-pack the messages, the bundle timetags are left
-in their accurate and prestine state.</p>
-
-<hr />
-
-<h2>Javascript representations of the OSC types.</h2>
-
-<p>See the <a href="http://opensoundcontrol.org/spec-1_0">spec</a> for more information on the OSC types.</p>
-
-<ul>
-<li><p>An <em>OSC Packet</em> is an <em>OSC Message</em> or an <em>OSC Bundle</em>.</p></li>
-<li><p>An <em>OSC Message</em>:</p>
-
-<pre><code>  {
-      oscType : "message"
-      address : "/address/pattern/might/have/wildcards"
-      arguments : [arg1,arg2]
-  }
-</code></pre>
-
-<p>Where arguments is an array of <em>OSC Arguments</em>.  <code>oscType</code> is optional.
-<code>arguments</code> can be a single element.</p></li>
-<li><p>An <em>OSC Argument</em> is represented as a javascript object with the following layout:</p>
-
-<pre><code>  {
-      type : "string"
-      value : "value"
-  }
-</code></pre>
-
-<p>Where the <code>type</code> is one of the following:</p>
-
-<ul><li><code>string</code> - string value</li>
-<li><code>float</code> - numeric value</li>
-<li><code>integer</code> - numeric value</li>
-<li><code>blob</code> - node.js Buffer value</li>
-<li><code>true</code> - value is boolean true</li>
-<li><code>false</code> - value is boolean false</li>
-<li><code>null</code> - no value</li>
-<li><code>bang</code> - no value (this is the <code>I</code> type tag)</li>
-<li><code>timetag</code> - numeric value</li></ul>
-
-<p>Note that <code>type</code> is always a string - i.e. <code>"true"</code> rather than <code>true</code>.</p>
-
-<p>The following non-standard types are also supported:</p>
-
-<ul><li><code>double</code> - numeric value (encodes to a float64 value)</li></ul>
-
-<p>For messages sent to the <code>toBuffer</code> function, <code>type</code> is optional.
-If the argument is not an object, it will be interpreted as either
-<code>string</code>, <code>float</code>, or <code>blob</code>, depending on its javascript type.</p></li>
-<li><p>An <em>OSC Bundle</em> is represented as a javascript object with the following layout</p>
-
-<pre><code>  {
-      oscType : "bundle"
-      timetag : 7
-      elements : [element1, element]
-  }
-</code></pre>
-
-<p>Where the timetag is a javascript-native numeric value of the timetag,
-and elements is an array of either an <em>OSC Bundle</em> or an <em>OSC Message</em>
-The <code>oscType</code> field is optional, but is always returned by api functions.</p></li>
-</ul></td></tr></tbody>
-  </table>
-</body>
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-float-to-int.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-float-to-int.coffee
deleted file mode 100644
index 6b29a31..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-float-to-int.coffee
+++ /dev/null
@@ -1,38 +0,0 @@
-# This listens for osc messages and rebroadcasts them
-# with all the floats converted to ints.
-
-osc = require 'osc-min'
-udp = require "dgram"
-
-if process.argv[2]?
-    inport = parseInt process.argv[2]
-else
-    inport = 41234
-
-if process.argv[3]?
-    outport = parseInt process.argv[3]
-else
-    outport = 41235
-
-float_to_int = (message) ->
-    for arg in message.arguments
-        if arg.type is "float"
-            arg.type = "integer"
-    message
-
-sock = udp.createSocket "udp4", (msg, rinfo) ->
-    try
-        edited = osc.applyMessageTransform msg, (message) -> float_to_int message
-        sock.send(
-            edited,
-            0,
-            edited.length,
-            outport,
-            "localhost"
-        )
-    catch error
-        console.log "error redirecting: " + error
-sock.bind inport
-
-console.log "OSC redirecter running at http://localhost:" + inport
-console.log "translating messages to http://localhost:" + outport
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-redirect.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-redirect.coffee
deleted file mode 100644
index aa72c60..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/osc-redirect.coffee
+++ /dev/null
@@ -1,35 +0,0 @@
-# This listens for osc messages and outputs them
-# on a different port with all addresses redirected
-# to /redirect
-
-osc = require 'osc-min'
-udp = require "dgram"
-
-if process.argv[2]?
-    inport = parseInt process.argv[2]
-else
-    inport = 41234
-
-if process.argv[3]?
-    outport = parseInt process.argv[3]
-else
-    outport = 41235
-
-console.log "OSC redirecter running at http://localhost:" + inport
-console.log "redirecting messages to http://localhost:" + outport
-
-#~verbatim:examples[2]~
-#### A simple OSC redirecter
-sock = udp.createSocket "udp4", (msg, rinfo) ->
-    try
-        redirected = osc.applyAddressTransform msg, (address) -> "/redirect" + address
-        sock.send(
-            redirected,
-            0,
-            redirected.length,
-            outport,
-            "localhost"
-        )
-    catch error
-        console.log "error redirecting: " + error
-sock.bind inport
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscbundle_heartbeat.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscbundle_heartbeat.coffee
deleted file mode 100644
index 1cf61cd..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscbundle_heartbeat.coffee
+++ /dev/null
@@ -1,41 +0,0 @@
-# Same thing as the oscheartbeat example but with oscbundles.
-
-osc = require 'osc-min'
-dgram = require "dgram"
-
-udp = dgram.createSocket "udp4"
-
-if process.argv[2]?
-    outport = parseInt process.argv[2]
-else
-    outport = 41234
-
-sendHeartbeat = () ->
-    buf = osc.toBuffer(
-        timetag : 12345
-        elements : [
-            {
-                address : "/p1"
-                arguments : new Buffer "beat"
-            }
-            {
-                address : "/p2"
-                arguments : "string"
-            }
-            {
-                timetag: 34567
-                elements : [
-                    {
-                        address : "/p3"
-                        arguments : 12
-                    }
-                ]
-            }
-        ]
-    )
-    
-    udp.send buf, 0, buf.length, outport, "localhost"
-    
-setInterval sendHeartbeat, 2000
-
-console.log "sending heartbeat messages to http://localhost:" + outport
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscheartbeat.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscheartbeat.coffee
deleted file mode 100644
index fc9542c..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/oscheartbeat.coffee
+++ /dev/null
@@ -1,30 +0,0 @@
-# This example simply sends a message with several parameter types 
-# every two seconds to port 41234
-
-osc = require 'osc-min'
-dgram = require "dgram"
-
-udp = dgram.createSocket "udp4"
-
-if process.argv[2]?
-    outport = parseInt process.argv[2]
-else
-    outport = 41234
-console.log "sending heartbeat messages to http://localhost:" + outport
-
-#~verbatim:examples[1]~
-#### Send a bunch of arguments every two seconds
-sendHeartbeat = () ->
-    buf = osc.toBuffer(
-        address : "/heartbeat"
-        arguments : [
-            12
-            "sttttring"
-            new Buffer "beat"
-            {type : "integer", value : 7}
-        ]
-    )
-    
-    udp.send buf, 0, buf.length, outport, "localhost"
-    
-setInterval sendHeartbeat, 2000
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/printosc.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/examples/printosc.coffee
deleted file mode 100644
index 4662f7a..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/examples/printosc.coffee
+++ /dev/null
@@ -1,18 +0,0 @@
-osc = require 'osc-min'
-udp = require "dgram"
-
-if process.argv[2]?
-    inport = parseInt process.argv[2]
-else
-    inport = 41234
-
-console.log "OSC listener running at http://localhost:" + inport
-
-#~verbatim:examples[0]~
-#### A simple OSC printer
-sock = udp.createSocket "udp4", (msg, rinfo) ->
-    try
-        console.log osc.fromBuffer msg
-    catch error
-        console.log "invalid OSC packet"
-sock.bind inport
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/lib/index.js b/examples/node/node_modules/node-osc/node_modules/osc-min/lib/index.js
deleted file mode 100644
index e2eb204..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/lib/index.js
+++ /dev/null
@@ -1,162 +0,0 @@
-(function() {
-  
-//~readme.out~
-//# osc-min
-// 
-// _simple utilities for open sound control in node.js_
-//
-// This package provides some node.js utilities for working with 
-// [OSC](http://opensoundcontrol.org/), a format for sound and systems control.  
-// Here we implement the [OSC 1.1][spec11] specification.  OSC is a transport-independent
-// protocol, so we don't provide any server objects, as you should be able to 
-// use OSC over any transport you like.  The most common is probably udp, but tcp
-// is not unheard of.
-//
-// [spec11]: http://opensoundcontrol.org/spec-1_1
-//
-//----
-//## Installation
-//~installation~
-//----
-//## Examples
-//~examples~
-//
-// more examples are available in the `examples/` directory.
-//
-//----
-//~api~
-//----
-//~representation~
-
-//~representation~
-//## Javascript representations of the OSC types.  
-// See the [spec][spec] for more information on the OSC types.
-//
-// + An _OSC Packet_ is an _OSC Message_ or an _OSC Bundle_.
-//
-// + An _OSC Message_:
-//
-//           {
-//               oscType : "message"
-//               address : "/address/pattern/might/have/wildcards"
-//               arguments : [arg1,arg2]
-//           }
-//
-//    Where arguments is an array of _OSC Arguments_.  `oscType` is optional.
-//    `arguments` can be a single element.
-//
-// + An _OSC Argument_ is represented as a javascript object with the following layout:
-//
-//           {
-//               type : "string"
-//               value : "value"
-//           }
-//
-//    Where the `type` is one of the following:
-//    + `string` - string value
-//    + `float` - numeric value
-//    + `integer` - numeric value
-//    + `blob` - node.js Buffer value
-//    + `true` - value is boolean true
-//    + `false` - value is boolean false
-//    + `null` - no value
-//    + `bang` - no value (this is the `I` type tag)
-//    + `timetag` - numeric value
-// 
-//    Note that `type` is always a string - i.e. `"true"` rather than `true`.
-//   
-//    The following non-standard types are also supported:
-//    + `double` - numeric value (encodes to a float64 value)
-//
-//    
-//    For messages sent to the `toBuffer` function, `type` is optional.
-//    If the argument is not an object, it will be interpreted as either
-//    `string`, `float`, or `blob`, depending on its javascript type.
-//
-// + An _OSC Bundle_ is represented as a javascript object with the following layout
-//
-//           {
-//               oscType : "bundle"
-//               timetag : 7
-//               elements : [element1, element]
-//           }
-//
-//   Where the timetag is a javascript-native numeric value of the timetag,
-//   and elements is an array of either an _OSC Bundle_ or an _OSC Message_
-//   The `oscType` field is optional, but is always returned by api functions.
-//
-// [spec]: http://opensoundcontrol.org/spec-1_0
-  
-  var utils, coffee;
-  coffee = require("coffee-script");
-  utils = require("./osc-utilities");
-// ~api~
-//## Exported functions
-//
-//------
-//### .fromBuffer(buffer, [strict])
-// takes a node.js Buffer of a complete _OSC Packet_ and 
-// outputs the javascript representation, or throws if the buffer is ill-formed.
-//
-// `strict` is an optional parameter that makes the function fail more often.
-  exports.fromBuffer = function(buffer, strict) {
-    return utils.fromOscPacket(buffer, strict);
-  };
-
-//~api~
-//----
-//### .toBuffer(object, [strict])
-// takes a _OSC packet_ javascript representation as defined below and returns
-// a node.js Buffer, or throws if the representation is ill-formed.
-//
-//----
-//### .toBuffer(address, arguments[], [strict])
-// alternative syntax for above.  Assumes this is an _OSC Message_ as defined below, 
-// and `arguments` is an array of _OSC Arguments_ or single _OSC Argument_
-  exports.toBuffer = function(object, strict, opt) {
-    if(typeof object === "string")
-      return utils.toOscPacket({'address' : object, 'arguments' : strict}, opt);
-    return utils.toOscPacket(object, strict);
-  };
-
-//~api~
-//----
-//### .applyAddressTransform(buffer, transform)
-// takes a callback that takes a string and outputs a string,
-// and applies that to the address of the message encoded in the buffer,
-// and outputs an encoded buffer.
-//
-// If the buffer encodes an _OSC Bundle_, this applies the function to each address 
-// in the bundle.
-//
-// There's two subtle reasons you'd want to use this function rather than 
-// composing `fromBuffer` and `toBuffer`:
-//   - Future-proofing - if the OSC message uses an argument typecode that
-//     we don't understand, calling `fromBuffer` will throw.  The only time
-//     when `applyAddressTranform` might fail is if the address is malformed.
-//   - Accuracy - javascript represents numbers as 64-bit floats, so some
-//     OSC types will not be able to be represented accurately.  If accuracy
-//     is important to you, then, you should never convert the OSC message to a
-//     javascript representation.
-  exports.applyAddressTransform = function(buffer, transform) {
-    return utils.applyTransform(buffer, utils.addressTransform(transform));
-  };
-  
-//~api~
-//----
-//### .applyMessageTransform(buffer, transform)
-// takes a function that takes and returns a javascript _OSC Message_ representation,
-// and applies that to each message encoded in the buffer,
-// and outputs a new buffer with the new address.
-//
-// If the buffer encodes an osc-bundle, this applies the function to each message 
-// in the bundle.
-//
-// See notes above for applyAddressTransform for why you might want to use this.
-// While this does parse and re-pack the messages, the bundle timetags are left
-// in their accurate and prestine state.
-  exports.applyMessageTransform = function(buffer, transform) {
-    return utils.applyTransform(buffer, utils.messageTransform(transform));
-  };
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/lib/install.md b/examples/node/node_modules/node-osc/node_modules/osc-min/lib/install.md
deleted file mode 100644
index 24dafdd..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/lib/install.md
+++ /dev/null
@@ -1,23 +0,0 @@
-~installation~
- 
-The easiest way to get osc-min is through [NPM](http://npmjs.org).
-After install npm, you can install osc-min in the current directory with
- 
-```
-npm install osc-min
-```
- 
-If you'd rather get osc-min through github (for example, if you're forking
-it), you still need npm to install dependencies, which you can do with
- 
-```
-npm install --dev
-```
- 
-Once you've got all the dependencies you should be able to run the unit
-tests with 
- 
-```
-npm test
-npm run-script coverage
-```
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/lib/osc-utilities.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/lib/osc-utilities.coffee
deleted file mode 100644
index 88e9d43..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/lib/osc-utilities.coffee
+++ /dev/null
@@ -1,608 +0,0 @@
-# # osc-utilities.coffee
-# ## Intro
-#  This file contains some lower-level utilities for OSC handling.
-#  My guess is client code won't need this.  If you do need this, you must
-#  require coffee first, then write:
-#
-#       require("coffee-script");
-#       osc-utils = require("osc/lib/osc-utilities");
-#
-#  See the comments in osc.coffee for more information about the structure of
-# the objects we're dealing with here.
-#
-
-# ## Dependencies
-# require the minimal binary packing utilities
-binpack = require "binpack"
-
-# ## Exported Functions
-
-# Utility for working with buffers. takes an array of buffers,
-# output one buffer with all of the array concatenated
-#
-# This is really only exported for TDD, but maybe it'll be useful
-# to someone else too.
-exports.concat = (buffers) ->
-    if not IsArray buffers
-        throw new Error "concat must take an array of buffers"
-
-    for buffer in buffers
-        if not Buffer.isBuffer(buffer)
-            throw new Error "concat must take an array of buffers"
-
-    sumLength = 0
-    sumLength += buffer.length for buffer in buffers
-
-    destBuffer = new Buffer(sumLength)
-
-    copyTo = 0
-    for buffer in buffers
-        buffer.copy destBuffer, copyTo
-        copyTo += buffer.length
-
-    destBuffer
-
-#
-# Convert a javascript string into a node.js Buffer containing an OSC-String.
-#
-# str must not contain any \u0000 characters.
-#
-# `strict` is an optional boolean paramter that fails if the string is invalid
-# (i.e. contains a \u0000 character)
-exports.toOscString = (str, strict) ->
-    throw new Error "can't pack a non-string into an osc-string" if not (typeof str == "string")
-
-    # strip off any \u0000 characters.
-    nullIndex = str.indexOf("\u0000")
-
-    # if we're being strict, we can't allow strings with null characters
-    throw StrictError "Can't pack an osc-string that contains NULL characters" if (nullIndex != -1 and strict)
-
-    str = str[0...nullIndex] if nullIndex != -1
-
-    # osc-strings must have length divisible by 4 and end with at least one zero.
-    for i in [0...(padding str)]
-        str += "\u0000"
-
-    # create a new buffer from the string.
-    new Buffer(str)
-
-#
-# Try to split a buffer into a leading osc-string and the rest of the buffer,
-# with the following layout:
-# { string : "blah" rest : <Buffer>}.
-#
-# `strict`, as above, is an optional boolean parameter that defaults to false -
-# if it is true, then an invalid buffer will always return null.
-#
-exports.splitOscString = (buffer, strict) ->
-    throw StrictError "Can't split something that isn't a buffer" if not Buffer.isBuffer buffer
-
-    # extract the string
-    rawStr = buffer.toString "utf8"
-    nullIndex = rawStr.indexOf "\u0000"
-
-    # the rest of the code doesn't apply if there's no null character.
-    if nullIndex == -1
-        throw new Error "All osc-strings must contain a null character" if strict
-        return {string:rawStr, rest:(new Buffer 0)}
-
-    # extract the string.
-    str = rawStr[0...nullIndex]
-
-    # find the length of the string's buffer
-    splitPoint = Buffer.byteLength(str) + padding(str)
-
-    # in strict mode, don't succeed if there's not enough padding.
-    throw StrictError "Not enough padding for osc-string" if strict and splitPoint > buffer.length
-
-    # if we're in strict mode, check that all the padding is null
-    if strict
-        for i in [Buffer.byteLength(str)...splitPoint]
-           throw StrictError "Not enough or incorrect padding for osc-string" if buffer[i] != 0
-
-    # return a split
-    rest = buffer[splitPoint...(buffer.length)]
-
-    {string: str, rest: rest}
-
-# This has similar semantics to splitOscString but works with integers instead.
-# bytes is the number of bytes in the integer, defaults to 4.
-exports.splitInteger = (buffer, type) ->
-    type = "Int32" if not type?
-    bytes = (binpack["pack" + type] 0).length
-
-    throw new Error "buffer is not big enough for integer type" if buffer.length < bytes
-
-    num = 0
-
-    # integers are stored in big endian format.
-    value = binpack["unpack" + type] buffer[0...bytes], "big"
-
-    rest = buffer[bytes...(buffer.length)]
-
-    return {integer : value, rest : rest}
-
-exports.toIntegerBuffer = (number, type) ->
-    type = "Int32" if not type?
-    throw new Error "cannot pack a non-number into an integer buffer" if typeof number isnt "number"
-    binpack["pack" + type] number, "big"
-
-# This mapping contains three fields for each type:
-#  - representation : the javascript string representation of this type.  see index.js
-#  - split : a function to split a buffer into a decoded value and the rest of the buffer.
-#  - toArg : a function that takes the representation of the type and outputs a buffer.
-oscTypeCodes =
-    s : {
-        representation : "string"
-        split : (buffer, strict) ->
-            # just pass it through to splitOscString
-            split = exports.splitOscString buffer, strict
-            {value : split.string, rest : split.rest}
-        toArg : (value, strict) ->
-            throw new Error "expected string" if typeof value isnt "string"
-            exports.toOscString value, strict
-    }
-    i : {
-        representation : "integer"
-        split : (buffer, strict) ->
-            split = exports.splitInteger buffer
-            {value : split.integer, rest : split.rest}
-        toArg : (value, strict) ->
-            throw new Error "expected number" if typeof value isnt "number"
-            exports.toIntegerBuffer value
-    }
-    t : {
-        representation : "timetag"
-        split : (buffer, strict) ->
-            split = exports.splitInteger buffer, "UInt64"
-            {value : split.integer, rest : split.rest}
-        toArg : (value, strict) ->
-            throw new Error "expected number" if typeof value isnt "number"
-            exports.toIntegerBuffer value, "UInt64"
-    }
-    f : {
-        representation : "float"
-        split : (buffer, strict) ->
-            value : (binpack.unpackFloat32 buffer[0...4], "big")
-            rest : buffer[4...(buffer.length)]
-        toArg : (value, strict) ->
-            throw new Error "expected number" if typeof value isnt "number"
-            binpack.packFloat32 value, "big"
-    }
-    d : {
-        representation : "double"
-        split : (buffer, strict) ->
-            value : (binpack.unpackFloat64 buffer[0...8], "big")
-            rest : buffer[8...(buffer.length)]
-        toArg : (value, strict) ->
-            throw new Error "expected number" if typeof value isnt "number"
-            binpack.packFloat64 value, "big"
-    }
-    b : {
-        representation : "blob"
-        split : (buffer, strict) ->
-            # not much to do here, first grab an 4 byte int from the buffer
-            {integer : length, rest : buffer}  = exports.splitInteger buffer
-            {value : buffer[0...length], rest : buffer[length...(buffer.length)]}
-        toArg : (value, strict) ->
-            throw new Error "expected node.js Buffer" if not Buffer.isBuffer value
-            size = exports.toIntegerBuffer value.length
-            exports.concat [size, value]
-    }
-    T : {
-    representation : "true"
-    split : (buffer, strict) ->
-        rest : buffer
-        value : true
-    toArg : (value, strict) ->
-        throw new Error "true must be true" if not value and strict
-        new Buffer 0
-    }
-    F : {
-    representation : "false"
-    split : (buffer, strict) ->
-        rest : buffer
-        value : false
-    toArg : (value, strict) ->
-        throw new Error "false must be false" if value and strict
-        new Buffer 0
-    }
-    N : {
-    representation : "null"
-    split : (buffer, strict) ->
-        rest : buffer
-        value : null
-    toArg : (value, strict) ->
-        throw new Error "null must be false" if value and strict
-        new Buffer 0
-    }
-    I : {
-    representation : "bang"
-    split : (buffer, strict) ->
-        rest : buffer
-        value : "bang"
-    toArg : (value, strict) ->
-        new Buffer 0
-    }
-
-# simple function that converts a type code into it's javascript
-# string representation.
-exports.oscTypeCodeToTypeString = (code) ->
-    oscTypeCodes[code]?.representation
-
-# simple function that converts a javascript string representation
-# into its OSC type code.
-exports.typeStringToOscTypeCode = (rep) ->
-    for own code, {representation : str} of oscTypeCodes
-        return code if str is rep
-    return null
-
-exports.argToTypeCode = (arg, strict) ->
-    # if there's an explicit type annotation, back-translate that.
-    return code if arg?.type? and (typeof arg.type is 'string') and (code = exports.typeStringToOscTypeCode arg.type)?
-
-    value = if arg?.value? then arg.value else arg
-
-    # now, we try to guess the type.
-    throw new Error 'Argument has no value' if strict and not value?
-
-    # if it's a string, use 's'
-    if typeof value is 'string'
-        return 's'
-
-    # if it's a number, use 'f' by default.
-    if typeof value is 'number'
-        return 'f'
-
-    # if it's a buffer, use 'b'
-    if Buffer.isBuffer(value)
-        return 'b'
-
-    #### These are 1.1 specific types.
-
-    # if it's a boolean, use 'T' or 'F'
-    if typeof value is 'boolean'
-        if value then return 'T' else return 'F'
-
-    # if it's null, use 'N'
-    if value is null
-        return 'N'
-
-    throw new Error "I don't know what type this is supposed to be."
-
-# Splits out an argument from buffer.  Same thing as splitOscString but
-# works for all argument types.
-exports.splitOscArgument = (buffer, type, strict) ->
-    osctype = exports.typeStringToOscTypeCode type
-    if osctype?
-        oscTypeCodes[osctype].split buffer, strict
-    else
-        throw new Error "I don't understand how I'm supposed to unpack #{type}"
-
-# Create a buffer with the given javascript type
-exports.toOscArgument = (value, type, strict) ->
-    osctype = exports.typeStringToOscTypeCode type
-    if osctype?
-        oscTypeCodes[osctype].toArg value, strict
-    else
-        throw new Error "I don't know how to pack #{type}"
-
-#
-# translates an OSC message into a javascript representation.
-#
-exports.fromOscMessage = (buffer, strict) ->
-    # break off the address
-    { string : address, rest : buffer}  = exports.splitOscString buffer, strict
-
-    # technically, addresses have to start with '/'.
-    throw StrictError 'addresses must start with /' if strict and address[0] isnt '/'
-
-    # if there's no type string, this is technically illegal, but
-    # the specification says we should accept this until all
-    # implementations that send message without a type string are fixed.
-    # this will never happen, so we should accept this, even in
-    # strict mode.
-    return {address : address, arguments : []} if not buffer.length
-
-    # if there's more data but no type string, we can't parse the arguments.
-    {string : types, rest : buffer} = exports.splitOscString buffer, strict
-
-    # if the first letter isn't a ',' this isn't a valid type so we can't
-    # parse the arguments.
-    if types[0] isnt ','
-        throw StrictError 'Argument lists must begin with ,' if strict
-        return {address : address, arguments : []}
-
-    # we don't need the comma anymore
-    types = types[1..(types.length)]
-
-    args = []
-    # grab each argument.
-    for type in types
-        # by the standard, we have to ignore the whole message if we don't understand an argument
-        typeString = exports.oscTypeCodeToTypeString type
-        throw new Error "I don't understand the argument code #{type}" if not typeString?
-
-        arg = exports.splitOscArgument buffer, typeString, strict
-
-        # consume the argument from the buffer
-        buffer = arg.rest if arg?
-
-        # add it to the list.
-        args.push(
-            type : typeString
-            value : arg?.value
-        )
-
-    {address : address, arguments : args, oscType : "message"}
-
-#
-# Try to parse an OSC bundle into a javascript object.
-#
-exports.fromOscBundle = (buffer, strict) ->
-    # break off the bundletag
-    { string : bundleTag, rest : buffer} = exports.splitOscString buffer, strict
-
-    # bundles have to start with "#bundle".
-    throw new Error "osc-bundles must begin with \#bundle" if bundleTag isnt "\#bundle"
-
-    # grab the 8 - bit timetag
-    { integer : timetag, rest : buffer} = exports.splitInteger buffer, "UInt64"
-
-    # convert each element.
-    convertedElems = mapBundleList buffer, (buffer) ->
-        exports.fromOscPacket buffer, strict
-
-    return {timetag : timetag, elements : convertedElems, oscType : "bundle"}
-
-#
-# convert the buffer into a bundle or a message, depending on the first string
-#
-exports.fromOscPacket = (buffer, strict) ->
-    if isOscBundleBuffer buffer, strict
-        exports.fromOscBundle buffer, strict
-    else
-        exports.fromOscMessage buffer, strict
-
-#
-# convert a javascript format message into an osc buffer
-#
-exports.toOscMessage = (message, strict) ->
-    # the message must have addresses and arguments.
-    address = if message?.address? then message.address else message
-    throw new Error "message must contain an address" if typeof address isnt "string"
-
-    args = message?.args
-    if (not args?) and (message?.args?)
-        args = message?.args
-
-    if args is undefined
-        args = []
-
-    # pack single args
-    if not IsArray args
-        old_arg = args
-        args = []
-        args[0] = old_arg
-
-    oscaddr = exports.toOscString address, strict
-    osctype = ","
-    oscargs = []
-
-    # fill in args
-    for arg in args
-        typeCode = exports.argToTypeCode arg, strict
-        if typeCode?
-            value = arg?.value
-            if value is undefined
-                value = arg
-            buff = exports.toOscArgument value, exports.oscTypeCodeToTypeString(typeCode), strict
-            if buff?
-                oscargs.push buff
-                osctype += typeCode
-
-    # convert the type tag into an oscString.
-    osctype = exports.toOscString osctype
-
-    # bundle everything together.
-    allArgs = exports.concat oscargs
-    exports.concat [oscaddr, osctype, allArgs]
-
-#
-# convert a javascript format bundle into an osc buffer
-#
-exports.toOscBundle = (bundle, strict) ->
-    # the bundle must have timetag and elements.
-    throw StrictError "bundles must have timetags." if strict and not bundle?.timetag?
-    timetag =  bundle?.timetag ? 0
-    elements = bundle?.elements ? []
-    if not IsArray elements
-      elemstr = elements
-      elements = []
-      elements.push elemstr
-
-    oscBundleTag = exports.toOscString "\#bundle"
-    oscTimeTag = exports.toIntegerBuffer timetag, "UInt64"
-
-    oscElems = []
-    for elem in elements
-        try
-            # try to convert this sub-element into a buffer
-            buff = exports.toOscPacket elem, strict
-
-            # okay, pack in the size.
-            size = exports.toIntegerBuffer buff.length
-            oscElems.push exports.concat [size, buff]
-        catch e
-            null
-
-    allElems = exports.concat oscElems
-    exports.concat [oscBundleTag, oscTimeTag, allElems]
-
-# convert a javascript format bundle or message into a buffer
-exports.toOscPacket = (bundleOrMessage, strict) ->
-    # first, determine whether or not this is a bundle.
-    if bundleOrMessage?.oscType?
-        return exports.toOscBundle bundleOrMessage, strict if bundleOrMessage.oscType is "bundle"
-        return exports.toOscMessage bundleOrMessage, strict
-
-    # bundles have "timetags" and "elements"
-    return exports.toOscBundle bundleOrMessage, strict if bundleOrMessage?.timetag? or bundleOrMessage?.elements?
-
-    exports.toOscMessage bundleOrMessage, strict
-
-#
-# Helper function for transforming all messages in a bundle with a given message
-# transform.
-#
-exports.applyMessageTranformerToBundle = (transform) -> (buffer) ->
-
-    # parse out the bundle-id and the tag, we don't want to change these
-    { string, rest : buffer} = exports.splitOscString buffer
-
-    # bundles have to start with "#bundle".
-    throw new Error "osc-bundles must begin with \#bundle" if string isnt "\#bundle"
-
-    bundleTagBuffer = exports.toOscString string
-
-    # we know that the timetag is 8 bytes, we don't want to mess with it, so grab it as
-    # a buffer.  There is some subtle loss of precision with the round trip from
-    # int64 to float64.
-    timetagBuffer = buffer[0...8]
-    buffer = buffer[8...buffer.length]
-
-    # convert each element.
-    elems = mapBundleList buffer, (buffer) ->
-        exports.applyTransform(
-            buffer,
-            transform,
-            exports.applyMessageTranformerToBundle transform
-        )
-
-    totalLength = bundleTagBuffer.length + timetagBuffer.length
-    totalLength += 4 + elem.length for elem in elems
-
-    # okay, now we have to reconcatenate everything.
-    outBuffer = new Buffer totalLength
-    bundleTagBuffer.copy outBuffer, 0
-    timetagBuffer.copy outBuffer, bundleTagBuffer.length
-    copyIndex = bundleTagBuffer.length + timetagBuffer.length
-    for elem in elems
-        lengthBuff = exports.toIntegerBuffer elem.length
-        lengthBuff.copy outBuffer, copyIndex
-        copyIndex += 4
-        elem.copy outBuffer, copyIndex
-        copyIndex += elem.length
-    outBuffer
-
-#
-# Applies a transformation function (that is, a function from buffers to buffers)
-# to each element of given osc-bundle or message.
-#
-# `buffer` is the buffer to transform, which must be a buffer of a full packet.
-# `messageTransform` is function from message buffers to message buffers
-#  `bundleTransform` is an optional parameter for functions from bundle buffers to bundle buffers.
-# if `bundleTransform` is not set, it defaults to just applying the `messageTransform`
-# to each message in the bundle.
-#
-exports.applyTransform = (buffer, mTransform, bundleTransform) ->
-    if not bundleTransform?
-        bundleTransform = exports.applyMessageTranformerToBundle mTransform
-
-    if isOscBundleBuffer buffer
-        bundleTransform buffer
-    else
-        mTransform buffer
-
-# Converts a javascript function from string to string to a function
-# from message buffer to message buffer, applying the function to the
-# parsed strings.
-#
-# We pre-curry this because we expect to use this with `applyMessageTransform` above
-#
-exports.addressTransform = (transform) -> (buffer) ->
-    # parse out the address
-    {string, rest} = exports.splitOscString buffer
-
-    # apply the function
-    string = transform string
-
-    # re-concatenate
-    exports.concat [
-        exports.toOscString string
-        rest
-    ]
-
-#
-# Take a function that transform a javascript _OSC Message_ and
-# convert it to a function that transforms osc-buffers.
-#
-exports.messageTransform = (transform) -> (buffer) ->
-    message = exports.fromOscMessage buffer
-    exports.toOscMessage transform message
-
-## Private utilities
-
-#
-# is it an array?
-#
-IsArray = (arr) -> (((typeof arr) is "object") and (arr instanceof Array))
-
-#
-# An error that only throws when we're in strict mode.
-#
-StrictError = (str) ->
-    new Error "Strict Error: " + str
-
-# this private utility finds the amount of padding for a given string.
-padding = (str) ->
-    bufflength = Buffer.byteLength(str)
-    4 - (bufflength % 4)
-
-#
-# Internal function to check if this is a message or bundle.
-#
-isOscBundleBuffer = (buffer, strict) ->
-    # both formats begin with strings, so we should just grab the front but not consume it.
-    {string} = exports.splitOscString buffer, strict
-
-    return string is "\#bundle"
-
-#
-# Does something for each element in an array of osc-message-or-bundles,
-# each prefixed by a length (such as appears in osc-messages), then
-# return the result as an array.
-#
-# This is not exported because it doesn't validate the format and it's
-# not really a generally useful function.
-#
-# If a function throws on an element, we discard that element in the map
-# but we don't give up completely.
-#
-mapBundleList = (buffer, func) ->
-    elems = while buffer.length
-        # the length of the element is stored in an integer
-        {integer : size, rest : buffer}  = exports.splitInteger buffer
-
-        # if the size is bigger than the packet, something's messed up, so give up.
-        if size > buffer.length
-            throw new Error "Invalid bundle list: size of element is bigger than buffer"
-
-        thisElemBuffer = buffer[0...size]
-
-        # move the buffer to after the element we're just parsing.
-        buffer = buffer[size...buffer.length]
-
-        # record this element
-        try
-            func thisElemBuffer
-        catch e
-            null
-
-    # remove all null from elements
-    nonNullElems = []
-    for elem in elems
-        (nonNullElems.push elem) if elem?
-
-    nonNullElems
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/cake b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/cake
deleted file mode 120000
index d95f32a..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/cake
+++ /dev/null
@@ -1 +0,0 @@
-../coffee-script/bin/cake
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/coffee
deleted file mode 120000
index b57f275..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/.bin/coffee
+++ /dev/null
@@ -1 +0,0 @@
-../coffee-script/bin/coffee
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.npmignore b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.npmignore
deleted file mode 100644
index da77833..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-build/
-binpack.node
-node_modules
-.lock-wscript
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.travis.yml b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.travis.yml
deleted file mode 100644
index 5cc9b10..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: node_js
-node_js:
-  - 0.8
-  - 0.10
-branches:
-  only:
-    - master
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/COPYING b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/COPYING
deleted file mode 100644
index 3c10e66..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/COPYING
+++ /dev/null
@@ -1,14 +0,0 @@
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/changes.md b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/changes.md
deleted file mode 100644
index 3d00d42..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/changes.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Changelog
-
-## 0.0.3
-    Switched "repositories" to "repository" in package.json.
-## 0.0.2
-    Updated documentation
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/index.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/index.js
deleted file mode 100644
index d7ed315..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/index.js
+++ /dev/null
@@ -1,92 +0,0 @@
-// t is a binpack typename
-var sizeOfType = function(t) {
-    // unsigned are the same length as signed
-    if(t[0] === 'U') {
-        t = t.slice(1);
-    }
-
-    return {
-        'Float32' : 4,
-        'Float64' : 8,
-        'Int8' : 1,
-        'Int16' : 2,
-        'Int32' : 4,
-        'Int64' : 8
-    }[t];
-};
-
-var endianConv = function(e, t) {
-    // node doesn't define 8 bit endianness
-    if(t[t.length - 1] === '8')
-        return '';
-
-    if(e === 'big') {
-        return 'BE';
-    }
-    return 'LE';
-};
-
-var addBindings = function(binpackTypename, nodeTypename){
-    if(!(typeof nodeTypename !== "undefined" && nodeTypename !== null)) {
-        nodeTypename = binpackTypename;
-    }
-    module.exports['pack' + binpackTypename] = function(num, endian){
-        b = new Buffer(sizeOfType(binpackTypename));
-        b['write' + nodeTypename + endianConv(endian, binpackTypename)](num, 0, true);
-        return b;
-    }
-
-    module.exports['unpack' + binpackTypename] = function(buff, endian){
-        return buff['read' + nodeTypename + endianConv(endian, binpackTypename)](0);
-    }
-}
-
-var addIntBindings = function(n) {
-    addBindings("Int" + n);
-    addBindings("UInt" + n);
-}
-
-addIntBindings(8);
-addIntBindings(16);
-addIntBindings(32);
-
-twoToThe32 = Math.pow(2, 32);
-
-// 64 bit bindings require special care
-var read64 = function(unsigned){return function(buff, endian){
-    var e = endianConv(endian, '');
-    var u = unsigned ? 'U' : '';
-    var low, high;
-    if(e === 'LE') {
-        low = buff.readUInt32LE(0);
-        high = buff['read' + u + 'Int32LE'](4);
-    } else {
-        low = buff.readUInt32BE(4);
-        high = buff['read' + u + 'Int32BE'](0);
-    }
-    return high * twoToThe32 + low;
-};};
-
-var write64 = function(unsigned){return function(num, endian){
-    var e = endianConv(endian, '');
-    var u = unsigned ? 'U' : '';
-    var b = new Buffer(8);
-    var high = Math.floor(num / twoToThe32);
-    var low = Math.floor(num - high * twoToThe32);
-    if(e == 'LE') {
-        b.writeUInt32LE(low, 0, true);
-        b['write' + u + 'Int32LE'](high, 4, true);
-    } else {
-        b.writeUInt32BE(low, 4, true);
-        b['write' + u + 'Int32BE'](high, 0, true);
-    }
-    return b;
-};};
-
-module.exports.unpackInt64 = read64(false);
-module.exports.unpackUInt64 = read64(true);
-module.exports.packInt64 = write64(false);
-module.exports.packUInt64 = write64(true);
-
-addBindings("Float32", "Float");
-addBindings("Float64", "Double");
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/package.json b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/package.json
deleted file mode 100644
index 6fc051d..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "name": "binpack",
-  "version": "0.1.0",
-  "main": "index",
-  "author": {
-    "name": "Russell McClellan",
-    "email": "russell.mcclellan@gmail.com",
-    "url": "http://www.russellmcc.com"
-  },
-  "description": "Minimalist numeric binary packing utilities for node.js",
-  "keywords": [
-    "binary",
-    "pack",
-    "unpack"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/russellmcc/node-binpack.git"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "vows": "*",
-    "coffee-script": "<1.7.0"
-  },
-  "scripts": {
-    "test": "vows tests/*"
-  },
-  "readme": "[![build status](https://secure.travis-ci.org/russellmcc/node-binpack.png)](http://travis-ci.org/russellmcc/node-binpack)\n# binpack\n\n_Deprecated binary packing utilities for node.js_\n\n## What's all this?\n\nnode now actually contains native code for packing binary buffers so this module is no longer needed.  do not use in new code.\n\nsee the included COPYING file for licensing.\n\nthe core of the module is the set of `pack`/`unpack` pair functions.  The meaning should be clear from the name - for example, `packInt32` packs a given javascript number into a 32-bit int inside a 4-byte node.js Buffer, while `unpackFloat32` unpacks a 4-byte node.js Buffer containing a native floating point number into a javascript number.\n\nThe following types are available for both pack and unpack:\n\n    Float32 \n    Float64 \n    Int8\n    Int16 \n    Int32\n    UInt8 \n    UInt16\n    UInt32\n    \nEach `pack*` function takes a javascript number and outputs a node.js Buffer.\n\nEach `unpack*` function takes a node.js Buffer and outputs a javascript number.\n\nBoth types of functions take an optional second argument.  If this argument is `\"big\"`, the output is put in big endian format.  If the argument is `\"little\"`, the output is put in little endian format.  If the argument is anything else or non-existent, we default to \"little\" endian [THIS IS NEW BEHAVIOR IN 0.0.15 - previous version would default to the native encoding.].\n",
-  "readmeFilename": "readme.md",
-  "bugs": {
-    "url": "https://github.com/russellmcc/node-binpack/issues"
-  },
-  "_id": "binpack@0.1.0",
-  "dist": {
-    "shasum": "bd3d0974c3f2a0446e17df4f60b55a72a205a97e"
-  },
-  "_from": "binpack@*",
-  "_resolved": "https://registry.npmjs.org/binpack/-/binpack-0.1.0.tgz"
-}
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/readme.md b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/readme.md
deleted file mode 100644
index d94654a..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-[![build status](https://secure.travis-ci.org/russellmcc/node-binpack.png)](http://travis-ci.org/russellmcc/node-binpack)
-# binpack
-
-_Deprecated binary packing utilities for node.js_
-
-## What's all this?
-
-node now actually contains native code for packing binary buffers so this module is no longer needed.  do not use in new code.
-
-see the included COPYING file for licensing.
-
-the core of the module is the set of `pack`/`unpack` pair functions.  The meaning should be clear from the name - for example, `packInt32` packs a given javascript number into a 32-bit int inside a 4-byte node.js Buffer, while `unpackFloat32` unpacks a 4-byte node.js Buffer containing a native floating point number into a javascript number.
-
-The following types are available for both pack and unpack:
-
-    Float32 
-    Float64 
-    Int8
-    Int16 
-    Int32
-    UInt8 
-    UInt16
-    UInt32
-    
-Each `pack*` function takes a javascript number and outputs a node.js Buffer.
-
-Each `unpack*` function takes a node.js Buffer and outputs a javascript number.
-
-Both types of functions take an optional second argument.  If this argument is `"big"`, the output is put in big endian format.  If the argument is `"little"`, the output is put in little endian format.  If the argument is anything else or non-existent, we default to "little" endian [THIS IS NEW BEHAVIOR IN 0.0.15 - previous version would default to the native encoding.].
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/tests/test-binpack.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/tests/test-binpack.coffee
deleted file mode 100644
index 9910bf6..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/binpack/tests/test-binpack.coffee
+++ /dev/null
@@ -1,64 +0,0 @@
-vows = require "vows"
-assert = require "assert"
-binpack = require "../index"
-
-# do a round trip
-okayForOptions = (num, options) ->
-    return false if options.size? and Math.abs(num) > options.size?
-    return false if num < 0 and options.unsigned
-    true
-
-roundTrip = (type, options) ->
-    works : (num) ->
-        return null if not okayForOptions(num, options)
-        assert.strictEqual (binpack["unpack" + type] binpack["pack" + type] num), num
-
-    "fails plus 1.1" : (num) ->
-        return null if not okayForOptions(num, options)
-        assert.notStrictEqual (binpack["unpack" + type] binpack["pack" + type] num + 1.1), num
-
-    "works little endian" : (num) ->
-        return null if options.onebyte
-        return null if not okayForOptions(num, options)
-        assert.strictEqual (binpack["unpack" + type] (binpack["pack" + type] num, "little"), "little"), num
-
-    "works big endian" : (num) ->
-        return null if options.onebyte
-        return null if not okayForOptions(num, options)
-        assert.strictEqual (binpack["unpack" + type] (binpack["pack" + type] num, "big"), "big"), num
-
-    "fails mismatched" : (num) ->
-        return null if not okayForOptions(num, options)
-        return null if num is 0
-        return null if options.onebyte
-        assert.notStrictEqual (binpack["unpack" + type] (binpack["pack" + type] num, "little"), "big"), num
-
-types =
-    "Float32" : {}
-    "Float64" : {}
-    "Int8" : {onebyte : true, size : 128}
-    "Int16" : {size : 32768}
-    "Int32" : {}
-    "Int64" : {}
-    "UInt8" : {unsigned : true, onebyte : true, size:255}
-    "UInt16" : {unsigned : true, size : 65535}
-    "UInt32" : {unsigned : true}
-    "UInt64" : {unsigned : true}
-
-# round trip testing makes up the core of the test.
-roundTripTests = (num) ->
-    tests = {topic : num}
-    for type, options of types
-        tests[type + "round trip test"] = roundTrip type, options
-    tests
-
-vows.describe("binpack").addBatch(
-    # choose a bunch of random numbers
-    'roundTrips for 0' : roundTripTests 0
-    'roundTrips for 12' : roundTripTests 12
-    'roundTrips for -18' : roundTripTests -18
-    'roundTrips for 129' : roundTripTests 129
-    'roundTrips for -400' : roundTripTests -400
-    'roundTrips for 60000' : roundTripTests 60000
-    'roundTrips for 1234567' : roundTripTests 1234567
-).export module
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/.npmignore b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/.npmignore
deleted file mode 100644
index 21e430d..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/.npmignore
+++ /dev/null
@@ -1,11 +0,0 @@
-*.coffee
-*.html
-.DS_Store
-.git*
-Cakefile
-documentation/
-examples/
-extras/coffee-script.js
-raw/
-src/
-test/
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/CNAME b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/CNAME
deleted file mode 100644
index faadabe..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-coffeescript.org
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/LICENSE b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/LICENSE
deleted file mode 100644
index dbe6b4e..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2009-2012 Jeremy Ashkenas
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/README b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/README
deleted file mode 100644
index 69ee6f4..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/README
+++ /dev/null
@@ -1,51 +0,0 @@
-
-            {
-         }   }   {
-        {   {  }  }
-         }   }{  {
-        {  }{  }  }                    _____       __  __
-       ( }{ }{  { )                   / ____|     / _|/ _|
-     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___
-    (  ( } { } { } }  )              | |    / _ \|  _|  _/ _ \/ _ \
-    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/
-    |                 |               \_____\___/|_| |_| \___|\___|
-    |                 ;--.
-    |                (__  \            _____           _       _
-    |                 | )  )          / ____|         (_)     | |
-    |                 |/  /          | (___   ___ _ __ _ _ __ | |_
-    |                 (  /            \___ \ / __| '__| | '_ \| __|
-    |                 |/              ____) | (__| |  | | |_) | |_
-    |                 |              |_____/ \___|_|  |_| .__/ \__|
-     `-.._________..-'                                  | |
-                                                        |_|
-
-
-  CoffeeScript is a little language that compiles into JavaScript.
-
-  Install Node.js, and then the CoffeeScript compiler:
-  sudo bin/cake install
-
-  Or, if you have the Node Package Manager installed:
-  npm install -g coffee-script
-  (Leave off the -g if you don't wish to install globally.)
-
-  Execute a script:
-  coffee /path/to/script.coffee
-
-  Compile a script:
-  coffee -c /path/to/script.coffee
-
-  For documentation, usage, and examples, see:
-  http://coffeescript.org/
-
-  To suggest a feature, report a bug, or general discussion:
-  http://github.com/jashkenas/coffee-script/issues/
-
-  If you'd like to chat, drop by #coffeescript on Freenode IRC,
-  or on webchat.freenode.net.
-
-  The source repository:
-  git://github.com/jashkenas/coffee-script.git
-
-  All contributors are listed here:
-  http://github.com/jashkenas/coffee-script/contributors
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/Rakefile b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/Rakefile
deleted file mode 100644
index dfb85da..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/Rakefile
+++ /dev/null
@@ -1,78 +0,0 @@
-require 'rubygems'
-require 'erb'
-require 'fileutils'
-require 'rake/testtask'
-require 'json'
-
-desc "Build the documentation page"
-task :doc do
-  source = 'documentation/index.html.erb'
-  child = fork { exec "bin/coffee -bcw -o documentation/js documentation/coffee/*.coffee" }
-  at_exit { Process.kill("INT", child) }
-  Signal.trap("INT") { exit }
-  loop do
-    mtime = File.stat(source).mtime
-    if !@mtime || mtime > @mtime
-      rendered = ERB.new(File.read(source)).result(binding)
-      File.open('index.html', 'w+') {|f| f.write(rendered) }
-    end
-    @mtime = mtime
-    sleep 1
-  end
-end
-
-desc "Build coffee-script-source gem"
-task :gem do
-  require 'rubygems'
-  require 'rubygems/package'
-
-  gemspec = Gem::Specification.new do |s|
-    s.name      = 'coffee-script-source'
-    s.version   = JSON.parse(File.read('package.json'))["version"]
-    s.date      = Time.now.strftime("%Y-%m-%d")
-
-    s.homepage    = "http://jashkenas.github.com/coffee-script/"
-    s.summary     = "The CoffeeScript Compiler"
-    s.description = <<-EOS
-      CoffeeScript is a little language that compiles into JavaScript.
-      Underneath all of those embarrassing braces and semicolons,
-      JavaScript has always had a gorgeous object model at its heart.
-      CoffeeScript is an attempt to expose the good parts of JavaScript
-      in a simple way.
-    EOS
-
-    s.files = [
-      'lib/coffee_script/coffee-script.js',
-      'lib/coffee_script/source.rb'
-    ]
-
-    s.authors           = ['Jeremy Ashkenas']
-    s.email             = 'jashkenas@gmail.com'
-    s.rubyforge_project = 'coffee-script-source'
-  end
-
-  file = File.open("coffee-script-source.gem", "w")
-  Gem::Package.open(file, 'w') do |pkg|
-    pkg.metadata = gemspec.to_yaml
-
-    path = "lib/coffee_script/source.rb"
-    contents = <<-ERUBY
-module CoffeeScript
-  module Source
-    def self.bundled_path
-      File.expand_path("../coffee-script.js", __FILE__)
-    end
-  end
-end
-    ERUBY
-    pkg.add_file_simple(path, 0644, contents.size) do |tar_io|
-      tar_io.write(contents)
-    end
-
-    contents = File.read("extras/coffee-script.js")
-    path = "lib/coffee_script/coffee-script.js"
-    pkg.add_file_simple(path, 0644, contents.size) do |tar_io|
-      tar_io.write(contents)
-    end
-  end
-end
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/cake b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/cake
deleted file mode 100755
index 5965f4e..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/cake
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env node
-
-var path = require('path');
-var fs   = require('fs');
-var lib  = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
-
-require(lib + '/coffee-script/cake').run();
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/coffee
deleted file mode 100755
index 3d1d71c..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/bin/coffee
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env node
-
-var path = require('path');
-var fs   = require('fs');
-var lib  = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
-
-require(lib + '/coffee-script/command').run();
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/extras/jsl.conf b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/extras/jsl.conf
deleted file mode 100644
index 1190da5..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/extras/jsl.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-# JavaScriptLint configuration file for CoffeeScript.
-
-+no_return_value              # function {0} does not always return a value
-+duplicate_formal             # duplicate formal argument {0}
--equal_as_assign              # test for equality (==) mistyped as assignment (=)?{0}
-+var_hides_arg                # variable {0} hides argument
-+redeclared_var               # redeclaration of {0} {1}
--anon_no_return_value         # anonymous function does not always return a value
-+missing_semicolon            # missing semicolon
-+meaningless_block            # meaningless block; curly braces have no impact
--comma_separated_stmts        # multiple statements separated by commas (use semicolons?)
-+unreachable_code             # unreachable code
-+missing_break                # missing break statement
--missing_break_for_last_case  # missing break statement for last case in switch
--comparison_type_conv         # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==)
--inc_dec_within_stmt          # increment (++) and decrement (--) operators used as part of greater statement
--useless_void                 # use of the void type may be unnecessary (void is always undefined)
-+multiple_plus_minus          # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs
-+use_of_label                 # use of label
--block_without_braces         # block statement without curly braces
-+leading_decimal_point        # leading decimal point may indicate a number or an object member
-+trailing_decimal_point       # trailing decimal point may indicate a number or an object member
-+octal_number                 # leading zeros make an octal number
-+nested_comment               # nested comment
-+misplaced_regex              # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma
-+ambiguous_newline            # unexpected end of line; it is ambiguous whether these lines are part of the same statement
-+empty_statement              # empty statement or extra semicolon
--missing_option_explicit      # the "option explicit" control comment is missing
-+partial_option_explicit      # the "option explicit" control comment, if used, must be in the first script tag
-+dup_option_explicit          # duplicate "option explicit" control comment
-+useless_assign               # useless assignment
-+ambiguous_nested_stmt        # block statements containing block statements should use curly braces to resolve ambiguity
-+ambiguous_else_stmt          # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent)
--missing_default_case         # missing default case in switch statement
-+duplicate_case_in_switch     # duplicate case in switch statements
-+default_not_at_end           # the default case is not at the end of the switch statement
-+legacy_cc_not_understood     # couldn't understand control comment using /*@keyword@*/ syntax
-+jsl_cc_not_understood        # couldn't understand control comment using /*jsl:keyword*/ syntax
-+useless_comparison           # useless comparison; comparing identical expressions
-+with_statement               # with statement hides undeclared variables; use temporary variable instead
-+trailing_comma_in_array      # extra comma is not recommended in array initializers
-+assign_to_function_call      # assignment to a function call
-+parseint_missing_radix       # parseInt missing radix parameter
-+lambda_assign_requires_semicolon
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/browser.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/browser.js
deleted file mode 100644
index 9775048..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/browser.js
+++ /dev/null
@@ -1,91 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var CoffeeScript, runScripts;
-
-  CoffeeScript = require('./coffee-script');
-
-  CoffeeScript.require = require;
-
-  CoffeeScript["eval"] = function(code, options) {
-    if (options == null) {
-      options = {};
-    }
-    if (options.bare == null) {
-      options.bare = true;
-    }
-    return eval(CoffeeScript.compile(code, options));
-  };
-
-  CoffeeScript.run = function(code, options) {
-    if (options == null) {
-      options = {};
-    }
-    options.bare = true;
-    return Function(CoffeeScript.compile(code, options))();
-  };
-
-  if (typeof window === "undefined" || window === null) {
-    return;
-  }
-
-  CoffeeScript.load = function(url, callback) {
-    var xhr;
-    xhr = new (window.ActiveXObject || XMLHttpRequest)('Microsoft.XMLHTTP');
-    xhr.open('GET', url, true);
-    if ('overrideMimeType' in xhr) {
-      xhr.overrideMimeType('text/plain');
-    }
-    xhr.onreadystatechange = function() {
-      var _ref;
-      if (xhr.readyState === 4) {
-        if ((_ref = xhr.status) === 0 || _ref === 200) {
-          CoffeeScript.run(xhr.responseText);
-        } else {
-          throw new Error("Could not load " + url);
-        }
-        if (callback) {
-          return callback();
-        }
-      }
-    };
-    return xhr.send(null);
-  };
-
-  runScripts = function() {
-    var coffees, execute, index, length, s, scripts;
-    scripts = document.getElementsByTagName('script');
-    coffees = (function() {
-      var _i, _len, _results;
-      _results = [];
-      for (_i = 0, _len = scripts.length; _i < _len; _i++) {
-        s = scripts[_i];
-        if (s.type === 'text/coffeescript') {
-          _results.push(s);
-        }
-      }
-      return _results;
-    })();
-    index = 0;
-    length = coffees.length;
-    (execute = function() {
-      var script;
-      script = coffees[index++];
-      if ((script != null ? script.type : void 0) === 'text/coffeescript') {
-        if (script.src) {
-          return CoffeeScript.load(script.src, execute);
-        } else {
-          CoffeeScript.run(script.innerHTML);
-          return execute();
-        }
-      }
-    })();
-    return null;
-  };
-
-  if (window.addEventListener) {
-    addEventListener('DOMContentLoaded', runScripts, false);
-  } else {
-    attachEvent('onload', runScripts);
-  }
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/cake.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/cake.js
deleted file mode 100644
index 2934f6c..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/cake.js
+++ /dev/null
@@ -1,111 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks;
-
-  fs = require('fs');
-
-  path = require('path');
-
-  helpers = require('./helpers');
-
-  optparse = require('./optparse');
-
-  CoffeeScript = require('./coffee-script');
-
-  tasks = {};
-
-  options = {};
-
-  switches = [];
-
-  oparse = null;
-
-  helpers.extend(global, {
-    task: function(name, description, action) {
-      var _ref;
-      if (!action) {
-        _ref = [description, action], action = _ref[0], description = _ref[1];
-      }
-      return tasks[name] = {
-        name: name,
-        description: description,
-        action: action
-      };
-    },
-    option: function(letter, flag, description) {
-      return switches.push([letter, flag, description]);
-    },
-    invoke: function(name) {
-      if (!tasks[name]) {
-        missingTask(name);
-      }
-      return tasks[name].action(options);
-    }
-  });
-
-  exports.run = function() {
-    var arg, args, _i, _len, _ref, _results;
-    global.__originalDirname = fs.realpathSync('.');
-    process.chdir(cakefileDirectory(__originalDirname));
-    args = process.argv.slice(2);
-    CoffeeScript.run(fs.readFileSync('Cakefile').toString(), {
-      filename: 'Cakefile'
-    });
-    oparse = new optparse.OptionParser(switches);
-    if (!args.length) {
-      return printTasks();
-    }
-    try {
-      options = oparse.parse(args);
-    } catch (e) {
-      return fatalError("" + e);
-    }
-    _ref = options["arguments"];
-    _results = [];
-    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-      arg = _ref[_i];
-      _results.push(invoke(arg));
-    }
-    return _results;
-  };
-
-  printTasks = function() {
-    var cakefilePath, desc, name, relative, spaces, task;
-    relative = path.relative || path.resolve;
-    cakefilePath = path.join(relative(__originalDirname, process.cwd()), 'Cakefile');
-    console.log("" + cakefilePath + " defines the following tasks:\n");
-    for (name in tasks) {
-      task = tasks[name];
-      spaces = 20 - name.length;
-      spaces = spaces > 0 ? Array(spaces + 1).join(' ') : '';
-      desc = task.description ? "# " + task.description : '';
-      console.log("cake " + name + spaces + " " + desc);
-    }
-    if (switches.length) {
-      return console.log(oparse.help());
-    }
-  };
-
-  fatalError = function(message) {
-    console.error(message + '\n');
-    console.log('To see a list of all tasks/options, run "cake"');
-    return process.exit(1);
-  };
-
-  missingTask = function(task) {
-    return fatalError("No such task: " + task);
-  };
-
-  cakefileDirectory = function(dir) {
-    var parent;
-    if (path.existsSync(path.join(dir, 'Cakefile'))) {
-      return dir;
-    }
-    parent = path.normalize(path.join(dir, '..'));
-    if (parent !== dir) {
-      return cakefileDirectory(parent);
-    }
-    throw new Error("Cakefile not found in " + (process.cwd()));
-  };
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/coffee-script.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/coffee-script.js
deleted file mode 100644
index 0e2ceae..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/coffee-script.js
+++ /dev/null
@@ -1,167 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var Lexer, RESERVED, compile, fs, lexer, parser, path, vm, _ref,
-    __hasProp = {}.hasOwnProperty;
-
-  fs = require('fs');
-
-  path = require('path');
-
-  _ref = require('./lexer'), Lexer = _ref.Lexer, RESERVED = _ref.RESERVED;
-
-  parser = require('./parser').parser;
-
-  vm = require('vm');
-
-  if (require.extensions) {
-    require.extensions['.coffee'] = function(module, filename) {
-      var content;
-      content = compile(fs.readFileSync(filename, 'utf8'), {
-        filename: filename
-      });
-      return module._compile(content, filename);
-    };
-  } else if (require.registerExtension) {
-    require.registerExtension('.coffee', function(content) {
-      return compile(content);
-    });
-  }
-
-  exports.VERSION = '1.3.0';
-
-  exports.RESERVED = RESERVED;
-
-  exports.helpers = require('./helpers');
-
-  exports.compile = compile = function(code, options) {
-    var header, js, merge;
-    if (options == null) {
-      options = {};
-    }
-    merge = exports.helpers.merge;
-    try {
-      js = (parser.parse(lexer.tokenize(code))).compile(options);
-      if (!options.header) {
-        return js;
-      }
-    } catch (err) {
-      if (options.filename) {
-        err.message = "In " + options.filename + ", " + err.message;
-      }
-      throw err;
-    }
-    header = "Generated by CoffeeScript " + this.VERSION;
-    return "// " + header + "\n" + js;
-  };
-
-  exports.tokens = function(code, options) {
-    return lexer.tokenize(code, options);
-  };
-
-  exports.nodes = function(source, options) {
-    if (typeof source === 'string') {
-      return parser.parse(lexer.tokenize(source, options));
-    } else {
-      return parser.parse(source);
-    }
-  };
-
-  exports.run = function(code, options) {
-    var mainModule;
-    if (options == null) {
-      options = {};
-    }
-    mainModule = require.main;
-    mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.';
-    mainModule.moduleCache && (mainModule.moduleCache = {});
-    mainModule.paths = require('module')._nodeModulePaths(path.dirname(fs.realpathSync(options.filename)));
-    if (path.extname(mainModule.filename) !== '.coffee' || require.extensions) {
-      return mainModule._compile(compile(code, options), mainModule.filename);
-    } else {
-      return mainModule._compile(code, mainModule.filename);
-    }
-  };
-
-  exports["eval"] = function(code, options) {
-    var Module, Script, js, k, o, r, sandbox, v, _i, _len, _module, _ref1, _ref2, _require;
-    if (options == null) {
-      options = {};
-    }
-    if (!(code = code.trim())) {
-      return;
-    }
-    Script = vm.Script;
-    if (Script) {
-      if (options.sandbox != null) {
-        if (options.sandbox instanceof Script.createContext().constructor) {
-          sandbox = options.sandbox;
-        } else {
-          sandbox = Script.createContext();
-          _ref1 = options.sandbox;
-          for (k in _ref1) {
-            if (!__hasProp.call(_ref1, k)) continue;
-            v = _ref1[k];
-            sandbox[k] = v;
-          }
-        }
-        sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;
-      } else {
-        sandbox = global;
-      }
-      sandbox.__filename = options.filename || 'eval';
-      sandbox.__dirname = path.dirname(sandbox.__filename);
-      if (!(sandbox !== global || sandbox.module || sandbox.require)) {
-        Module = require('module');
-        sandbox.module = _module = new Module(options.modulename || 'eval');
-        sandbox.require = _require = function(path) {
-          return Module._load(path, _module, true);
-        };
-        _module.filename = sandbox.__filename;
-        _ref2 = Object.getOwnPropertyNames(require);
-        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-          r = _ref2[_i];
-          if (r !== 'paths') {
-            _require[r] = require[r];
-          }
-        }
-        _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());
-        _require.resolve = function(request) {
-          return Module._resolveFilename(request, _module);
-        };
-      }
-    }
-    o = {};
-    for (k in options) {
-      if (!__hasProp.call(options, k)) continue;
-      v = options[k];
-      o[k] = v;
-    }
-    o.bare = true;
-    js = compile(code, o);
-    if (sandbox === global) {
-      return vm.runInThisContext(js);
-    } else {
-      return vm.runInContext(js, sandbox);
-    }
-  };
-
-  lexer = new Lexer;
-
-  parser.lexer = {
-    lex: function() {
-      var tag, _ref1;
-      _ref1 = this.tokens[this.pos++] || [''], tag = _ref1[0], this.yytext = _ref1[1], this.yylineno = _ref1[2];
-      return tag;
-    },
-    setInput: function(tokens) {
-      this.tokens = tokens;
-      return this.pos = 0;
-    },
-    upcomingInput: function() {
-      return "";
-    }
-  };
-
-  parser.yy = require('./nodes');
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/command.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/command.js
deleted file mode 100644
index dc680c5..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/command.js
+++ /dev/null
@@ -1,502 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, forkNode, fs, helpers, hidden, joinTimeout, lint, loadRequires, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, removeSource, sourceCode, sources, spawn, timeLog, unwatchDir, usage, version, wait, watch, watchDir, watchers, writeJs, _ref;
-
-  fs = require('fs');
-
-  path = require('path');
-
-  helpers = require('./helpers');
-
-  optparse = require('./optparse');
-
-  CoffeeScript = require('./coffee-script');
-
-  _ref = require('child_process'), spawn = _ref.spawn, exec = _ref.exec;
-
-  EventEmitter = require('events').EventEmitter;
-
-  helpers.extend(CoffeeScript, new EventEmitter);
-
-  printLine = function(line) {
-    return process.stdout.write(line + '\n');
-  };
-
-  printWarn = function(line) {
-    return process.stderr.write(line + '\n');
-  };
-
-  hidden = function(file) {
-    return /^\.|~$/.test(file);
-  };
-
-  BANNER = 'Usage: coffee [options] path/to/script.coffee -- [args]\n\nIf called without options, `coffee` will run your script.';
-
-  SWITCHES = [['-b', '--bare', 'compile without a top-level function wrapper'], ['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-e', '--eval', 'pass a string from the command line as input'], ['-h', '--help', 'display this help message'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-j', '--join [FILE]', 'concatenate the source CoffeeScript before compiling'], ['-l', '--lint', 'pipe the compiled JavaScript through JavaScript Lint'], ['-n', '--nodes', 'print out the parse tree that the parser produces'], ['--nodejs [ARGS]', 'pass options directly to the "node" binary'], ['-o', '--output [DIR]', 'set the output directory for compiled JavaScript'], ['-p', '--print', 'print out the compiled JavaScript'], ['-r', '--require [FILE*]', 'require a library before executing your script'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-t', '--tokens', 'print out the tokens that the lexer/rewriter produce'], ['-v', '--version', 'display the version number'], ['-w', '--watch', 'watch scripts for changes and rerun commands']];
-
-  opts = {};
-
-  sources = [];
-
-  sourceCode = [];
-
-  notSources = {};
-
-  watchers = {};
-
-  optionParser = null;
-
-  exports.run = function() {
-    var literals, source, _i, _len, _results;
-    parseOptions();
-    if (opts.nodejs) {
-      return forkNode();
-    }
-    if (opts.help) {
-      return usage();
-    }
-    if (opts.version) {
-      return version();
-    }
-    if (opts.require) {
-      loadRequires();
-    }
-    if (opts.interactive) {
-      return require('./repl');
-    }
-    if (opts.watch && !fs.watch) {
-      return printWarn("The --watch feature depends on Node v0.6.0+. You are running " + process.version + ".");
-    }
-    if (opts.stdio) {
-      return compileStdio();
-    }
-    if (opts["eval"]) {
-      return compileScript(null, sources[0]);
-    }
-    if (!sources.length) {
-      return require('./repl');
-    }
-    literals = opts.run ? sources.splice(1) : [];
-    process.argv = process.argv.slice(0, 2).concat(literals);
-    process.argv[0] = 'coffee';
-    process.execPath = require.main.filename;
-    _results = [];
-    for (_i = 0, _len = sources.length; _i < _len; _i++) {
-      source = sources[_i];
-      _results.push(compilePath(source, true, path.normalize(source)));
-    }
-    return _results;
-  };
-
-  compilePath = function(source, topLevel, base) {
-    return fs.stat(source, function(err, stats) {
-      if (err && err.code !== 'ENOENT') {
-        throw err;
-      }
-      if ((err != null ? err.code : void 0) === 'ENOENT') {
-        if (topLevel && source.slice(-7) !== '.coffee') {
-          source = sources[sources.indexOf(source)] = "" + source + ".coffee";
-          return compilePath(source, topLevel, base);
-        }
-        if (topLevel) {
-          console.error("File not found: " + source);
-          process.exit(1);
-        }
-        return;
-      }
-      if (stats.isDirectory()) {
-        if (opts.watch) {
-          watchDir(source, base);
-        }
-        return fs.readdir(source, function(err, files) {
-          var file, index, _i, _len, _ref1, _ref2, _results;
-          if (err && err.code !== 'ENOENT') {
-            throw err;
-          }
-          if ((err != null ? err.code : void 0) === 'ENOENT') {
-            return;
-          }
-          index = sources.indexOf(source);
-          [].splice.apply(sources, [index, index - index + 1].concat(_ref1 = (function() {
-            var _i, _len, _results;
-            _results = [];
-            for (_i = 0, _len = files.length; _i < _len; _i++) {
-              file = files[_i];
-              _results.push(path.join(source, file));
-            }
-            return _results;
-          })())), _ref1;
-          [].splice.apply(sourceCode, [index, index - index + 1].concat(_ref2 = files.map(function() {
-            return null;
-          }))), _ref2;
-          _results = [];
-          for (_i = 0, _len = files.length; _i < _len; _i++) {
-            file = files[_i];
-            if (!hidden(file)) {
-              _results.push(compilePath(path.join(source, file), false, base));
-            }
-          }
-          return _results;
-        });
-      } else if (topLevel || path.extname(source) === '.coffee') {
-        if (opts.watch) {
-          watch(source, base);
-        }
-        return fs.readFile(source, function(err, code) {
-          if (err && err.code !== 'ENOENT') {
-            throw err;
-          }
-          if ((err != null ? err.code : void 0) === 'ENOENT') {
-            return;
-          }
-          return compileScript(source, code.toString(), base);
-        });
-      } else {
-        notSources[source] = true;
-        return removeSource(source, base);
-      }
-    });
-  };
-
-  compileScript = function(file, input, base) {
-    var o, options, t, task;
-    o = opts;
-    options = compileOptions(file);
-    try {
-      t = task = {
-        file: file,
-        input: input,
-        options: options
-      };
-      CoffeeScript.emit('compile', task);
-      if (o.tokens) {
-        return printTokens(CoffeeScript.tokens(t.input));
-      } else if (o.nodes) {
-        return printLine(CoffeeScript.nodes(t.input).toString().trim());
-      } else if (o.run) {
-        return CoffeeScript.run(t.input, t.options);
-      } else if (o.join && t.file !== o.join) {
-        sourceCode[sources.indexOf(t.file)] = t.input;
-        return compileJoin();
-      } else {
-        t.output = CoffeeScript.compile(t.input, t.options);
-        CoffeeScript.emit('success', task);
-        if (o.print) {
-          return printLine(t.output.trim());
-        } else if (o.compile) {
-          return writeJs(t.file, t.output, base);
-        } else if (o.lint) {
-          return lint(t.file, t.output);
-        }
-      }
-    } catch (err) {
-      CoffeeScript.emit('failure', err, task);
-      if (CoffeeScript.listeners('failure').length) {
-        return;
-      }
-      if (o.watch) {
-        return printLine(err.message + '\x07');
-      }
-      printWarn(err instanceof Error && err.stack || ("ERROR: " + err));
-      return process.exit(1);
-    }
-  };
-
-  compileStdio = function() {
-    var code, stdin;
-    code = '';
-    stdin = process.openStdin();
-    stdin.on('data', function(buffer) {
-      if (buffer) {
-        return code += buffer.toString();
-      }
-    });
-    return stdin.on('end', function() {
-      return compileScript(null, code);
-    });
-  };
-
-  joinTimeout = null;
-
-  compileJoin = function() {
-    if (!opts.join) {
-      return;
-    }
-    if (!sourceCode.some(function(code) {
-      return code === null;
-    })) {
-      clearTimeout(joinTimeout);
-      return joinTimeout = wait(100, function() {
-        return compileScript(opts.join, sourceCode.join('\n'), opts.join);
-      });
-    }
-  };
-
-  loadRequires = function() {
-    var realFilename, req, _i, _len, _ref1;
-    realFilename = module.filename;
-    module.filename = '.';
-    _ref1 = opts.require;
-    for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-      req = _ref1[_i];
-      require(req);
-    }
-    return module.filename = realFilename;
-  };
-
-  watch = function(source, base) {
-    var compile, compileTimeout, prevStats, rewatch, watchErr, watcher;
-    prevStats = null;
-    compileTimeout = null;
-    watchErr = function(e) {
-      if (e.code === 'ENOENT') {
-        if (sources.indexOf(source) === -1) {
-          return;
-        }
-        try {
-          rewatch();
-          return compile();
-        } catch (e) {
-          removeSource(source, base, true);
-          return compileJoin();
-        }
-      } else {
-        throw e;
-      }
-    };
-    compile = function() {
-      clearTimeout(compileTimeout);
-      return compileTimeout = wait(25, function() {
-        return fs.stat(source, function(err, stats) {
-          if (err) {
-            return watchErr(err);
-          }
-          if (prevStats && stats.size === prevStats.size && stats.mtime.getTime() === prevStats.mtime.getTime()) {
-            return rewatch();
-          }
-          prevStats = stats;
-          return fs.readFile(source, function(err, code) {
-            if (err) {
-              return watchErr(err);
-            }
-            compileScript(source, code.toString(), base);
-            return rewatch();
-          });
-        });
-      });
-    };
-    try {
-      watcher = fs.watch(source, compile);
-    } catch (e) {
-      watchErr(e);
-    }
-    return rewatch = function() {
-      if (watcher != null) {
-        watcher.close();
-      }
-      return watcher = fs.watch(source, compile);
-    };
-  };
-
-  watchDir = function(source, base) {
-    var readdirTimeout, watcher;
-    readdirTimeout = null;
-    try {
-      return watcher = fs.watch(source, function() {
-        clearTimeout(readdirTimeout);
-        return readdirTimeout = wait(25, function() {
-          return fs.readdir(source, function(err, files) {
-            var file, _i, _len, _results;
-            if (err) {
-              if (err.code !== 'ENOENT') {
-                throw err;
-              }
-              watcher.close();
-              return unwatchDir(source, base);
-            }
-            _results = [];
-            for (_i = 0, _len = files.length; _i < _len; _i++) {
-              file = files[_i];
-              if (!(!hidden(file) && !notSources[file])) {
-                continue;
-              }
-              file = path.join(source, file);
-              if (sources.some(function(s) {
-                return s.indexOf(file) >= 0;
-              })) {
-                continue;
-              }
-              sources.push(file);
-              sourceCode.push(null);
-              _results.push(compilePath(file, false, base));
-            }
-            return _results;
-          });
-        });
-      });
-    } catch (e) {
-      if (e.code !== 'ENOENT') {
-        throw e;
-      }
-    }
-  };
-
-  unwatchDir = function(source, base) {
-    var file, prevSources, toRemove, _i, _len;
-    prevSources = sources.slice(0);
-    toRemove = (function() {
-      var _i, _len, _results;
-      _results = [];
-      for (_i = 0, _len = sources.length; _i < _len; _i++) {
-        file = sources[_i];
-        if (file.indexOf(source) >= 0) {
-          _results.push(file);
-        }
-      }
-      return _results;
-    })();
-    for (_i = 0, _len = toRemove.length; _i < _len; _i++) {
-      file = toRemove[_i];
-      removeSource(file, base, true);
-    }
-    if (!sources.some(function(s, i) {
-      return prevSources[i] !== s;
-    })) {
-      return;
-    }
-    return compileJoin();
-  };
-
-  removeSource = function(source, base, removeJs) {
-    var index, jsPath;
-    index = sources.indexOf(source);
-    sources.splice(index, 1);
-    sourceCode.splice(index, 1);
-    if (removeJs && !opts.join) {
-      jsPath = outputPath(source, base);
-      return path.exists(jsPath, function(exists) {
-        if (exists) {
-          return fs.unlink(jsPath, function(err) {
-            if (err && err.code !== 'ENOENT') {
-              throw err;
-            }
-            return timeLog("removed " + source);
-          });
-        }
-      });
-    }
-  };
-
-  outputPath = function(source, base) {
-    var baseDir, dir, filename, srcDir;
-    filename = path.basename(source, path.extname(source)) + '.js';
-    srcDir = path.dirname(source);
-    baseDir = base === '.' ? srcDir : srcDir.substring(base.length);
-    dir = opts.output ? path.join(opts.output, baseDir) : srcDir;
-    return path.join(dir, filename);
-  };
-
-  writeJs = function(source, js, base) {
-    var compile, jsDir, jsPath;
-    jsPath = outputPath(source, base);
-    jsDir = path.dirname(jsPath);
-    compile = function() {
-      if (js.length <= 0) {
-        js = ' ';
-      }
-      return fs.writeFile(jsPath, js, function(err) {
-        if (err) {
-          return printLine(err.message);
-        } else if (opts.compile && opts.watch) {
-          return timeLog("compiled " + source);
-        }
-      });
-    };
-    return path.exists(jsDir, function(exists) {
-      if (exists) {
-        return compile();
-      } else {
-        return exec("mkdir -p " + jsDir, compile);
-      }
-    });
-  };
-
-  wait = function(milliseconds, func) {
-    return setTimeout(func, milliseconds);
-  };
-
-  timeLog = function(message) {
-    return console.log("" + ((new Date).toLocaleTimeString()) + " - " + message);
-  };
-
-  lint = function(file, js) {
-    var conf, jsl, printIt;
-    printIt = function(buffer) {
-      return printLine(file + ':\t' + buffer.toString().trim());
-    };
-    conf = __dirname + '/../../extras/jsl.conf';
-    jsl = spawn('jsl', ['-nologo', '-stdin', '-conf', conf]);
-    jsl.stdout.on('data', printIt);
-    jsl.stderr.on('data', printIt);
-    jsl.stdin.write(js);
-    return jsl.stdin.end();
-  };
-
-  printTokens = function(tokens) {
-    var strings, tag, token, value;
-    strings = (function() {
-      var _i, _len, _ref1, _results;
-      _results = [];
-      for (_i = 0, _len = tokens.length; _i < _len; _i++) {
-        token = tokens[_i];
-        _ref1 = [token[0], token[1].toString().replace(/\n/, '\\n')], tag = _ref1[0], value = _ref1[1];
-        _results.push("[" + tag + " " + value + "]");
-      }
-      return _results;
-    })();
-    return printLine(strings.join(' '));
-  };
-
-  parseOptions = function() {
-    var i, o, source, _i, _len;
-    optionParser = new optparse.OptionParser(SWITCHES, BANNER);
-    o = opts = optionParser.parse(process.argv.slice(2));
-    o.compile || (o.compile = !!o.output);
-    o.run = !(o.compile || o.print || o.lint);
-    o.print = !!(o.print || (o["eval"] || o.stdio && o.compile));
-    sources = o["arguments"];
-    for (i = _i = 0, _len = sources.length; _i < _len; i = ++_i) {
-      source = sources[i];
-      sourceCode[i] = null;
-    }
-  };
-
-  compileOptions = function(filename) {
-    return {
-      filename: filename,
-      bare: opts.bare,
-      header: opts.compile
-    };
-  };
-
-  forkNode = function() {
-    var args, nodeArgs;
-    nodeArgs = opts.nodejs.split(/\s+/);
-    args = process.argv.slice(1);
-    args.splice(args.indexOf('--nodejs'), 2);
-    return spawn(process.execPath, nodeArgs.concat(args), {
-      cwd: process.cwd(),
-      env: process.env,
-      customFds: [0, 1, 2]
-    });
-  };
-
-  usage = function() {
-    return printLine((new optparse.OptionParser(SWITCHES, BANNER)).help());
-  };
-
-  version = function() {
-    return printLine("CoffeeScript version " + CoffeeScript.VERSION);
-  };
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/grammar.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/grammar.js
deleted file mode 100644
index 2048f93..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/grammar.js
+++ /dev/null
@@ -1,603 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var Parser, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap;
-
-  Parser = require('jison').Parser;
-
-  unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/;
-
-  o = function(patternString, action, options) {
-    var match;
-    patternString = patternString.replace(/\s{2,}/g, ' ');
-    if (!action) {
-      return [patternString, '$$ = $1;', options];
-    }
-    action = (match = unwrap.exec(action)) ? match[1] : "(" + action + "())";
-    action = action.replace(/\bnew /g, '$&yy.');
-    action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&');
-    return [patternString, "$$ = " + action + ";", options];
-  };
-
-  grammar = {
-    Root: [
-      o('', function() {
-        return new Block;
-      }), o('Body'), o('Block TERMINATOR')
-    ],
-    Body: [
-      o('Line', function() {
-        return Block.wrap([$1]);
-      }), o('Body TERMINATOR Line', function() {
-        return $1.push($3);
-      }), o('Body TERMINATOR')
-    ],
-    Line: [o('Expression'), o('Statement')],
-    Statement: [
-      o('Return'), o('Comment'), o('STATEMENT', function() {
-        return new Literal($1);
-      })
-    ],
-    Expression: [o('Value'), o('Invocation'), o('Code'), o('Operation'), o('Assign'), o('If'), o('Try'), o('While'), o('For'), o('Switch'), o('Class'), o('Throw')],
-    Block: [
-      o('INDENT OUTDENT', function() {
-        return new Block;
-      }), o('INDENT Body OUTDENT', function() {
-        return $2;
-      })
-    ],
-    Identifier: [
-      o('IDENTIFIER', function() {
-        return new Literal($1);
-      })
-    ],
-    AlphaNumeric: [
-      o('NUMBER', function() {
-        return new Literal($1);
-      }), o('STRING', function() {
-        return new Literal($1);
-      })
-    ],
-    Literal: [
-      o('AlphaNumeric'), o('JS', function() {
-        return new Literal($1);
-      }), o('REGEX', function() {
-        return new Literal($1);
-      }), o('DEBUGGER', function() {
-        return new Literal($1);
-      }), o('BOOL', function() {
-        var val;
-        val = new Literal($1);
-        if ($1 === 'undefined') {
-          val.isUndefined = true;
-        }
-        return val;
-      })
-    ],
-    Assign: [
-      o('Assignable = Expression', function() {
-        return new Assign($1, $3);
-      }), o('Assignable = TERMINATOR Expression', function() {
-        return new Assign($1, $4);
-      }), o('Assignable = INDENT Expression OUTDENT', function() {
-        return new Assign($1, $4);
-      })
-    ],
-    AssignObj: [
-      o('ObjAssignable', function() {
-        return new Value($1);
-      }), o('ObjAssignable : Expression', function() {
-        return new Assign(new Value($1), $3, 'object');
-      }), o('ObjAssignable :\
-       INDENT Expression OUTDENT', function() {
-        return new Assign(new Value($1), $4, 'object');
-      }), o('Comment')
-    ],
-    ObjAssignable: [o('Identifier'), o('AlphaNumeric'), o('ThisProperty')],
-    Return: [
-      o('RETURN Expression', function() {
-        return new Return($2);
-      }), o('RETURN', function() {
-        return new Return;
-      })
-    ],
-    Comment: [
-      o('HERECOMMENT', function() {
-        return new Comment($1);
-      })
-    ],
-    Code: [
-      o('PARAM_START ParamList PARAM_END FuncGlyph Block', function() {
-        return new Code($2, $5, $4);
-      }), o('FuncGlyph Block', function() {
-        return new Code([], $2, $1);
-      })
-    ],
-    FuncGlyph: [
-      o('->', function() {
-        return 'func';
-      }), o('=>', function() {
-        return 'boundfunc';
-      })
-    ],
-    OptComma: [o(''), o(',')],
-    ParamList: [
-      o('', function() {
-        return [];
-      }), o('Param', function() {
-        return [$1];
-      }), o('ParamList , Param', function() {
-        return $1.concat($3);
-      })
-    ],
-    Param: [
-      o('ParamVar', function() {
-        return new Param($1);
-      }), o('ParamVar ...', function() {
-        return new Param($1, null, true);
-      }), o('ParamVar = Expression', function() {
-        return new Param($1, $3);
-      })
-    ],
-    ParamVar: [o('Identifier'), o('ThisProperty'), o('Array'), o('Object')],
-    Splat: [
-      o('Expression ...', function() {
-        return new Splat($1);
-      })
-    ],
-    SimpleAssignable: [
-      o('Identifier', function() {
-        return new Value($1);
-      }), o('Value Accessor', function() {
-        return $1.add($2);
-      }), o('Invocation Accessor', function() {
-        return new Value($1, [].concat($2));
-      }), o('ThisProperty')
-    ],
-    Assignable: [
-      o('SimpleAssignable'), o('Array', function() {
-        return new Value($1);
-      }), o('Object', function() {
-        return new Value($1);
-      })
-    ],
-    Value: [
-      o('Assignable'), o('Literal', function() {
-        return new Value($1);
-      }), o('Parenthetical', function() {
-        return new Value($1);
-      }), o('Range', function() {
-        return new Value($1);
-      }), o('This')
-    ],
-    Accessor: [
-      o('.  Identifier', function() {
-        return new Access($2);
-      }), o('?. Identifier', function() {
-        return new Access($2, 'soak');
-      }), o(':: Identifier', function() {
-        return [new Access(new Literal('prototype')), new Access($2)];
-      }), o('::', function() {
-        return new Access(new Literal('prototype'));
-      }), o('Index')
-    ],
-    Index: [
-      o('INDEX_START IndexValue INDEX_END', function() {
-        return $2;
-      }), o('INDEX_SOAK  Index', function() {
-        return extend($2, {
-          soak: true
-        });
-      })
-    ],
-    IndexValue: [
-      o('Expression', function() {
-        return new Index($1);
-      }), o('Slice', function() {
-        return new Slice($1);
-      })
-    ],
-    Object: [
-      o('{ AssignList OptComma }', function() {
-        return new Obj($2, $1.generated);
-      })
-    ],
-    AssignList: [
-      o('', function() {
-        return [];
-      }), o('AssignObj', function() {
-        return [$1];
-      }), o('AssignList , AssignObj', function() {
-        return $1.concat($3);
-      }), o('AssignList OptComma TERMINATOR AssignObj', function() {
-        return $1.concat($4);
-      }), o('AssignList OptComma INDENT AssignList OptComma OUTDENT', function() {
-        return $1.concat($4);
-      })
-    ],
-    Class: [
-      o('CLASS', function() {
-        return new Class;
-      }), o('CLASS Block', function() {
-        return new Class(null, null, $2);
-      }), o('CLASS EXTENDS Expression', function() {
-        return new Class(null, $3);
-      }), o('CLASS EXTENDS Expression Block', function() {
-        return new Class(null, $3, $4);
-      }), o('CLASS SimpleAssignable', function() {
-        return new Class($2);
-      }), o('CLASS SimpleAssignable Block', function() {
-        return new Class($2, null, $3);
-      }), o('CLASS SimpleAssignable EXTENDS Expression', function() {
-        return new Class($2, $4);
-      }), o('CLASS SimpleAssignable EXTENDS Expression Block', function() {
-        return new Class($2, $4, $5);
-      })
-    ],
-    Invocation: [
-      o('Value OptFuncExist Arguments', function() {
-        return new Call($1, $3, $2);
-      }), o('Invocation OptFuncExist Arguments', function() {
-        return new Call($1, $3, $2);
-      }), o('SUPER', function() {
-        return new Call('super', [new Splat(new Literal('arguments'))]);
-      }), o('SUPER Arguments', function() {
-        return new Call('super', $2);
-      })
-    ],
-    OptFuncExist: [
-      o('', function() {
-        return false;
-      }), o('FUNC_EXIST', function() {
-        return true;
-      })
-    ],
-    Arguments: [
-      o('CALL_START CALL_END', function() {
-        return [];
-      }), o('CALL_START ArgList OptComma CALL_END', function() {
-        return $2;
-      })
-    ],
-    This: [
-      o('THIS', function() {
-        return new Value(new Literal('this'));
-      }), o('@', function() {
-        return new Value(new Literal('this'));
-      })
-    ],
-    ThisProperty: [
-      o('@ Identifier', function() {
-        return new Value(new Literal('this'), [new Access($2)], 'this');
-      })
-    ],
-    Array: [
-      o('[ ]', function() {
-        return new Arr([]);
-      }), o('[ ArgList OptComma ]', function() {
-        return new Arr($2);
-      })
-    ],
-    RangeDots: [
-      o('..', function() {
-        return 'inclusive';
-      }), o('...', function() {
-        return 'exclusive';
-      })
-    ],
-    Range: [
-      o('[ Expression RangeDots Expression ]', function() {
-        return new Range($2, $4, $3);
-      })
-    ],
-    Slice: [
-      o('Expression RangeDots Expression', function() {
-        return new Range($1, $3, $2);
-      }), o('Expression RangeDots', function() {
-        return new Range($1, null, $2);
-      }), o('RangeDots Expression', function() {
-        return new Range(null, $2, $1);
-      }), o('RangeDots', function() {
-        return new Range(null, null, $1);
-      })
-    ],
-    ArgList: [
-      o('Arg', function() {
-        return [$1];
-      }), o('ArgList , Arg', function() {
-        return $1.concat($3);
-      }), o('ArgList OptComma TERMINATOR Arg', function() {
-        return $1.concat($4);
-      }), o('INDENT ArgList OptComma OUTDENT', function() {
-        return $2;
-      }), o('ArgList OptComma INDENT ArgList OptComma OUTDENT', function() {
-        return $1.concat($4);
-      })
-    ],
-    Arg: [o('Expression'), o('Splat')],
-    SimpleArgs: [
-      o('Expression'), o('SimpleArgs , Expression', function() {
-        return [].concat($1, $3);
-      })
-    ],
-    Try: [
-      o('TRY Block', function() {
-        return new Try($2);
-      }), o('TRY Block Catch', function() {
-        return new Try($2, $3[0], $3[1]);
-      }), o('TRY Block FINALLY Block', function() {
-        return new Try($2, null, null, $4);
-      }), o('TRY Block Catch FINALLY Block', function() {
-        return new Try($2, $3[0], $3[1], $5);
-      })
-    ],
-    Catch: [
-      o('CATCH Identifier Block', function() {
-        return [$2, $3];
-      })
-    ],
-    Throw: [
-      o('THROW Expression', function() {
-        return new Throw($2);
-      })
-    ],
-    Parenthetical: [
-      o('( Body )', function() {
-        return new Parens($2);
-      }), o('( INDENT Body OUTDENT )', function() {
-        return new Parens($3);
-      })
-    ],
-    WhileSource: [
-      o('WHILE Expression', function() {
-        return new While($2);
-      }), o('WHILE Expression WHEN Expression', function() {
-        return new While($2, {
-          guard: $4
-        });
-      }), o('UNTIL Expression', function() {
-        return new While($2, {
-          invert: true
-        });
-      }), o('UNTIL Expression WHEN Expression', function() {
-        return new While($2, {
-          invert: true,
-          guard: $4
-        });
-      })
-    ],
-    While: [
-      o('WhileSource Block', function() {
-        return $1.addBody($2);
-      }), o('Statement  WhileSource', function() {
-        return $2.addBody(Block.wrap([$1]));
-      }), o('Expression WhileSource', function() {
-        return $2.addBody(Block.wrap([$1]));
-      }), o('Loop', function() {
-        return $1;
-      })
-    ],
-    Loop: [
-      o('LOOP Block', function() {
-        return new While(new Literal('true')).addBody($2);
-      }), o('LOOP Expression', function() {
-        return new While(new Literal('true')).addBody(Block.wrap([$2]));
-      })
-    ],
-    For: [
-      o('Statement  ForBody', function() {
-        return new For($1, $2);
-      }), o('Expression ForBody', function() {
-        return new For($1, $2);
-      }), o('ForBody    Block', function() {
-        return new For($2, $1);
-      })
-    ],
-    ForBody: [
-      o('FOR Range', function() {
-        return {
-          source: new Value($2)
-        };
-      }), o('ForStart ForSource', function() {
-        $2.own = $1.own;
-        $2.name = $1[0];
-        $2.index = $1[1];
-        return $2;
-      })
-    ],
-    ForStart: [
-      o('FOR ForVariables', function() {
-        return $2;
-      }), o('FOR OWN ForVariables', function() {
-        $3.own = true;
-        return $3;
-      })
-    ],
-    ForValue: [
-      o('Identifier'), o('Array', function() {
-        return new Value($1);
-      }), o('Object', function() {
-        return new Value($1);
-      })
-    ],
-    ForVariables: [
-      o('ForValue', function() {
-        return [$1];
-      }), o('ForValue , ForValue', function() {
-        return [$1, $3];
-      })
-    ],
-    ForSource: [
-      o('FORIN Expression', function() {
-        return {
-          source: $2
-        };
-      }), o('FOROF Expression', function() {
-        return {
-          source: $2,
-          object: true
-        };
-      }), o('FORIN Expression WHEN Expression', function() {
-        return {
-          source: $2,
-          guard: $4
-        };
-      }), o('FOROF Expression WHEN Expression', function() {
-        return {
-          source: $2,
-          guard: $4,
-          object: true
-        };
-      }), o('FORIN Expression BY Expression', function() {
-        return {
-          source: $2,
-          step: $4
-        };
-      }), o('FORIN Expression WHEN Expression BY Expression', function() {
-        return {
-          source: $2,
-          guard: $4,
-          step: $6
-        };
-      }), o('FORIN Expression BY Expression WHEN Expression', function() {
-        return {
-          source: $2,
-          step: $4,
-          guard: $6
-        };
-      })
-    ],
-    Switch: [
-      o('SWITCH Expression INDENT Whens OUTDENT', function() {
-        return new Switch($2, $4);
-      }), o('SWITCH Expression INDENT Whens ELSE Block OUTDENT', function() {
-        return new Switch($2, $4, $6);
-      }), o('SWITCH INDENT Whens OUTDENT', function() {
-        return new Switch(null, $3);
-      }), o('SWITCH INDENT Whens ELSE Block OUTDENT', function() {
-        return new Switch(null, $3, $5);
-      })
-    ],
-    Whens: [
-      o('When'), o('Whens When', function() {
-        return $1.concat($2);
-      })
-    ],
-    When: [
-      o('LEADING_WHEN SimpleArgs Block', function() {
-        return [[$2, $3]];
-      }), o('LEADING_WHEN SimpleArgs Block TERMINATOR', function() {
-        return [[$2, $3]];
-      })
-    ],
-    IfBlock: [
-      o('IF Expression Block', function() {
-        return new If($2, $3, {
-          type: $1
-        });
-      }), o('IfBlock ELSE IF Expression Block', function() {
-        return $1.addElse(new If($4, $5, {
-          type: $3
-        }));
-      })
-    ],
-    If: [
-      o('IfBlock'), o('IfBlock ELSE Block', function() {
-        return $1.addElse($3);
-      }), o('Statement  POST_IF Expression', function() {
-        return new If($3, Block.wrap([$1]), {
-          type: $2,
-          statement: true
-        });
-      }), o('Expression POST_IF Expression', function() {
-        return new If($3, Block.wrap([$1]), {
-          type: $2,
-          statement: true
-        });
-      })
-    ],
-    Operation: [
-      o('UNARY Expression', function() {
-        return new Op($1, $2);
-      }), o('-     Expression', (function() {
-        return new Op('-', $2);
-      }), {
-        prec: 'UNARY'
-      }), o('+     Expression', (function() {
-        return new Op('+', $2);
-      }), {
-        prec: 'UNARY'
-      }), o('-- SimpleAssignable', function() {
-        return new Op('--', $2);
-      }), o('++ SimpleAssignable', function() {
-        return new Op('++', $2);
-      }), o('SimpleAssignable --', function() {
-        return new Op('--', $1, null, true);
-      }), o('SimpleAssignable ++', function() {
-        return new Op('++', $1, null, true);
-      }), o('Expression ?', function() {
-        return new Existence($1);
-      }), o('Expression +  Expression', function() {
-        return new Op('+', $1, $3);
-      }), o('Expression -  Expression', function() {
-        return new Op('-', $1, $3);
-      }), o('Expression MATH     Expression', function() {
-        return new Op($2, $1, $3);
-      }), o('Expression SHIFT    Expression', function() {
-        return new Op($2, $1, $3);
-      }), o('Expression COMPARE  Expression', function() {
-        return new Op($2, $1, $3);
-      }), o('Expression LOGIC    Expression', function() {
-        return new Op($2, $1, $3);
-      }), o('Expression RELATION Expression', function() {
-        if ($2.charAt(0) === '!') {
-          return new Op($2.slice(1), $1, $3).invert();
-        } else {
-          return new Op($2, $1, $3);
-        }
-      }), o('SimpleAssignable COMPOUND_ASSIGN\
-       Expression', function() {
-        return new Assign($1, $3, $2);
-      }), o('SimpleAssignable COMPOUND_ASSIGN\
-       INDENT Expression OUTDENT', function() {
-        return new Assign($1, $4, $2);
-      }), o('SimpleAssignable EXTENDS Expression', function() {
-        return new Extends($1, $3);
-      })
-    ]
-  };
-
-  operators = [['left', '.', '?.', '::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'LOGIC'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS'], ['right', 'POST_IF']];
-
-  tokens = [];
-
-  for (name in grammar) {
-    alternatives = grammar[name];
-    grammar[name] = (function() {
-      var _i, _j, _len, _len1, _ref, _results;
-      _results = [];
-      for (_i = 0, _len = alternatives.length; _i < _len; _i++) {
-        alt = alternatives[_i];
-        _ref = alt[0].split(' ');
-        for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
-          token = _ref[_j];
-          if (!grammar[token]) {
-            tokens.push(token);
-          }
-        }
-        if (name === 'Root') {
-          alt[1] = "return " + alt[1];
-        }
-        _results.push(alt);
-      }
-      return _results;
-    })();
-  }
-
-  exports.parser = new Parser({
-    tokens: tokens.join(' '),
-    bnf: grammar,
-    operators: operators.reverse(),
-    startSymbol: 'Root'
-  });
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/helpers.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/helpers.js
deleted file mode 100644
index 2b73ac1..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/helpers.js
+++ /dev/null
@@ -1,77 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var extend, flatten;
-
-  exports.starts = function(string, literal, start) {
-    return literal === string.substr(start, literal.length);
-  };
-
-  exports.ends = function(string, literal, back) {
-    var len;
-    len = literal.length;
-    return literal === string.substr(string.length - len - (back || 0), len);
-  };
-
-  exports.compact = function(array) {
-    var item, _i, _len, _results;
-    _results = [];
-    for (_i = 0, _len = array.length; _i < _len; _i++) {
-      item = array[_i];
-      if (item) {
-        _results.push(item);
-      }
-    }
-    return _results;
-  };
-
-  exports.count = function(string, substr) {
-    var num, pos;
-    num = pos = 0;
-    if (!substr.length) {
-      return 1 / 0;
-    }
-    while (pos = 1 + string.indexOf(substr, pos)) {
-      num++;
-    }
-    return num;
-  };
-
-  exports.merge = function(options, overrides) {
-    return extend(extend({}, options), overrides);
-  };
-
-  extend = exports.extend = function(object, properties) {
-    var key, val;
-    for (key in properties) {
-      val = properties[key];
-      object[key] = val;
-    }
-    return object;
-  };
-
-  exports.flatten = flatten = function(array) {
-    var element, flattened, _i, _len;
-    flattened = [];
-    for (_i = 0, _len = array.length; _i < _len; _i++) {
-      element = array[_i];
-      if (element instanceof Array) {
-        flattened = flattened.concat(flatten(element));
-      } else {
-        flattened.push(element);
-      }
-    }
-    return flattened;
-  };
-
-  exports.del = function(obj, key) {
-    var val;
-    val = obj[key];
-    delete obj[key];
-    return val;
-  };
-
-  exports.last = function(array, back) {
-    return array[array.length - (back || 0) - 1];
-  };
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/index.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/index.js
deleted file mode 100644
index 31572ff..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var key, val, _ref;
-
-  _ref = require('./coffee-script');
-  for (key in _ref) {
-    val = _ref[key];
-    exports[key] = val;
-  }
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/lexer.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/lexer.js
deleted file mode 100644
index 598d462..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/lexer.js
+++ /dev/null
@@ -1,792 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HEREDOC, HEREDOC_ILLEGAL, HEREDOC_INDENT, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDEXABLE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LINE_BREAK, LINE_CONTINUER, LOGIC, Lexer, MATH, MULTILINER, MULTI_DENT, NOT_REGEX, NOT_SPACED_REGEX, NUMBER, OPERATOR, REGEX, RELATION, RESERVED, Rewriter, SHIFT, SIMPLESTR, STRICT_PROSCRIBED, TRAILING_SPACES, UNARY, WHITESPACE, compact, count, key, last, starts, _ref, _ref1,
-    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-
-  _ref = require('./rewriter'), Rewriter = _ref.Rewriter, INVERSES = _ref.INVERSES;
-
-  _ref1 = require('./helpers'), count = _ref1.count, starts = _ref1.starts, compact = _ref1.compact, last = _ref1.last;
-
-  exports.Lexer = Lexer = (function() {
-
-    Lexer.name = 'Lexer';
-
-    function Lexer() {}
-
-    Lexer.prototype.tokenize = function(code, opts) {
-      var i, tag;
-      if (opts == null) {
-        opts = {};
-      }
-      if (WHITESPACE.test(code)) {
-        code = "\n" + code;
-      }
-      code = code.replace(/\r/g, '').replace(TRAILING_SPACES, '');
-      this.code = code;
-      this.line = opts.line || 0;
-      this.indent = 0;
-      this.indebt = 0;
-      this.outdebt = 0;
-      this.indents = [];
-      this.ends = [];
-      this.tokens = [];
-      i = 0;
-      while (this.chunk = code.slice(i)) {
-        i += this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.heredocToken() || this.stringToken() || this.numberToken() || this.regexToken() || this.jsToken() || this.literalToken();
-      }
-      this.closeIndentation();
-      if (tag = this.ends.pop()) {
-        this.error("missing " + tag);
-      }
-      if (opts.rewrite === false) {
-        return this.tokens;
-      }
-      return (new Rewriter).rewrite(this.tokens);
-    };
-
-    Lexer.prototype.identifierToken = function() {
-      var colon, forcedIdentifier, id, input, match, prev, tag, _ref2, _ref3;
-      if (!(match = IDENTIFIER.exec(this.chunk))) {
-        return 0;
-      }
-      input = match[0], id = match[1], colon = match[2];
-      if (id === 'own' && this.tag() === 'FOR') {
-        this.token('OWN', id);
-        return id.length;
-      }
-      forcedIdentifier = colon || (prev = last(this.tokens)) && (((_ref2 = prev[0]) === '.' || _ref2 === '?.' || _ref2 === '::') || !prev.spaced && prev[0] === '@');
-      tag = 'IDENTIFIER';
-      if (!forcedIdentifier && (__indexOf.call(JS_KEYWORDS, id) >= 0 || __indexOf.call(COFFEE_KEYWORDS, id) >= 0)) {
-        tag = id.toUpperCase();
-        if (tag === 'WHEN' && (_ref3 = this.tag(), __indexOf.call(LINE_BREAK, _ref3) >= 0)) {
-          tag = 'LEADING_WHEN';
-        } else if (tag === 'FOR') {
-          this.seenFor = true;
-        } else if (tag === 'UNLESS') {
-          tag = 'IF';
-        } else if (__indexOf.call(UNARY, tag) >= 0) {
-          tag = 'UNARY';
-        } else if (__indexOf.call(RELATION, tag) >= 0) {
-          if (tag !== 'INSTANCEOF' && this.seenFor) {
-            tag = 'FOR' + tag;
-            this.seenFor = false;
-          } else {
-            tag = 'RELATION';
-            if (this.value() === '!') {
-              this.tokens.pop();
-              id = '!' + id;
-            }
-          }
-        }
-      }
-      if (__indexOf.call(JS_FORBIDDEN, id) >= 0) {
-        if (forcedIdentifier) {
-          tag = 'IDENTIFIER';
-          id = new String(id);
-          id.reserved = true;
-        } else if (__indexOf.call(RESERVED, id) >= 0) {
-          this.error("reserved word \"" + id + "\"");
-        }
-      }
-      if (!forcedIdentifier) {
-        if (__indexOf.call(COFFEE_ALIASES, id) >= 0) {
-          id = COFFEE_ALIAS_MAP[id];
-        }
-        tag = (function() {
-          switch (id) {
-            case '!':
-              return 'UNARY';
-            case '==':
-            case '!=':
-              return 'COMPARE';
-            case '&&':
-            case '||':
-              return 'LOGIC';
-            case 'true':
-            case 'false':
-            case 'null':
-            case 'undefined':
-              return 'BOOL';
-            case 'break':
-            case 'continue':
-              return 'STATEMENT';
-            default:
-              return tag;
-          }
-        })();
-      }
-      this.token(tag, id);
-      if (colon) {
-        this.token(':', ':');
-      }
-      return input.length;
-    };
-
-    Lexer.prototype.numberToken = function() {
-      var binaryLiteral, lexedLength, match, number, octalLiteral;
-      if (!(match = NUMBER.exec(this.chunk))) {
-        return 0;
-      }
-      number = match[0];
-      if (/^0[BOX]/.test(number)) {
-        this.error("radix prefix '" + number + "' must be lowercase");
-      } else if (/E/.test(number) && !/^0x/.test(number)) {
-        this.error("exponential notation '" + number + "' must be indicated with a lowercase 'e'");
-      } else if (/^0\d*[89]/.test(number)) {
-        this.error("decimal literal '" + number + "' must not be prefixed with '0'");
-      } else if (/^0\d+/.test(number)) {
-        this.error("octal literal '" + number + "' must be prefixed with '0o'");
-      }
-      lexedLength = number.length;
-      if (octalLiteral = /^0o([0-7]+)/.exec(number)) {
-        number = '0x' + (parseInt(octalLiteral[1], 8)).toString(16);
-      }
-      if (binaryLiteral = /^0b([01]+)/.exec(number)) {
-        number = '0x' + (parseInt(binaryLiteral[1], 2)).toString(16);
-      }
-      this.token('NUMBER', number);
-      return lexedLength;
-    };
-
-    Lexer.prototype.stringToken = function() {
-      var match, octalEsc, string;
-      switch (this.chunk.charAt(0)) {
-        case "'":
-          if (!(match = SIMPLESTR.exec(this.chunk))) {
-            return 0;
-          }
-          this.token('STRING', (string = match[0]).replace(MULTILINER, '\\\n'));
-          break;
-        case '"':
-          if (!(string = this.balancedString(this.chunk, '"'))) {
-            return 0;
-          }
-          if (0 < string.indexOf('#{', 1)) {
-            this.interpolateString(string.slice(1, -1));
-          } else {
-            this.token('STRING', this.escapeLines(string));
-          }
-          break;
-        default:
-          return 0;
-      }
-      if (octalEsc = /^(?:\\.|[^\\])*\\[0-7]/.test(string)) {
-        this.error("octal escape sequences " + string + " are not allowed");
-      }
-      this.line += count(string, '\n');
-      return string.length;
-    };
-
-    Lexer.prototype.heredocToken = function() {
-      var doc, heredoc, match, quote;
-      if (!(match = HEREDOC.exec(this.chunk))) {
-        return 0;
-      }
-      heredoc = match[0];
-      quote = heredoc.charAt(0);
-      doc = this.sanitizeHeredoc(match[2], {
-        quote: quote,
-        indent: null
-      });
-      if (quote === '"' && 0 <= doc.indexOf('#{')) {
-        this.interpolateString(doc, {
-          heredoc: true
-        });
-      } else {
-        this.token('STRING', this.makeString(doc, quote, true));
-      }
-      this.line += count(heredoc, '\n');
-      return heredoc.length;
-    };
-
-    Lexer.prototype.commentToken = function() {
-      var comment, here, match;
-      if (!(match = this.chunk.match(COMMENT))) {
-        return 0;
-      }
-      comment = match[0], here = match[1];
-      if (here) {
-        this.token('HERECOMMENT', this.sanitizeHeredoc(here, {
-          herecomment: true,
-          indent: Array(this.indent + 1).join(' ')
-        }));
-      }
-      this.line += count(comment, '\n');
-      return comment.length;
-    };
-
-    Lexer.prototype.jsToken = function() {
-      var match, script;
-      if (!(this.chunk.charAt(0) === '`' && (match = JSTOKEN.exec(this.chunk)))) {
-        return 0;
-      }
-      this.token('JS', (script = match[0]).slice(1, -1));
-      return script.length;
-    };
-
-    Lexer.prototype.regexToken = function() {
-      var flags, length, match, prev, regex, _ref2, _ref3;
-      if (this.chunk.charAt(0) !== '/') {
-        return 0;
-      }
-      if (match = HEREGEX.exec(this.chunk)) {
-        length = this.heregexToken(match);
-        this.line += count(match[0], '\n');
-        return length;
-      }
-      prev = last(this.tokens);
-      if (prev && (_ref2 = prev[0], __indexOf.call((prev.spaced ? NOT_REGEX : NOT_SPACED_REGEX), _ref2) >= 0)) {
-        return 0;
-      }
-      if (!(match = REGEX.exec(this.chunk))) {
-        return 0;
-      }
-      _ref3 = match, match = _ref3[0], regex = _ref3[1], flags = _ref3[2];
-      if (regex.slice(0, 2) === '/*') {
-        this.error('regular expressions cannot begin with `*`');
-      }
-      if (regex === '//') {
-        regex = '/(?:)/';
-      }
-      this.token('REGEX', "" + regex + flags);
-      return match.length;
-    };
-
-    Lexer.prototype.heregexToken = function(match) {
-      var body, flags, heregex, re, tag, tokens, value, _i, _len, _ref2, _ref3, _ref4, _ref5;
-      heregex = match[0], body = match[1], flags = match[2];
-      if (0 > body.indexOf('#{')) {
-        re = body.replace(HEREGEX_OMIT, '').replace(/\//g, '\\/');
-        if (re.match(/^\*/)) {
-          this.error('regular expressions cannot begin with `*`');
-        }
-        this.token('REGEX', "/" + (re || '(?:)') + "/" + flags);
-        return heregex.length;
-      }
-      this.token('IDENTIFIER', 'RegExp');
-      this.tokens.push(['CALL_START', '(']);
-      tokens = [];
-      _ref2 = this.interpolateString(body, {
-        regex: true
-      });
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        _ref3 = _ref2[_i], tag = _ref3[0], value = _ref3[1];
-        if (tag === 'TOKENS') {
-          tokens.push.apply(tokens, value);
-        } else {
-          if (!(value = value.replace(HEREGEX_OMIT, ''))) {
-            continue;
-          }
-          value = value.replace(/\\/g, '\\\\');
-          tokens.push(['STRING', this.makeString(value, '"', true)]);
-        }
-        tokens.push(['+', '+']);
-      }
-      tokens.pop();
-      if (((_ref4 = tokens[0]) != null ? _ref4[0] : void 0) !== 'STRING') {
-        this.tokens.push(['STRING', '""'], ['+', '+']);
-      }
-      (_ref5 = this.tokens).push.apply(_ref5, tokens);
-      if (flags) {
-        this.tokens.push([',', ','], ['STRING', '"' + flags + '"']);
-      }
-      this.token(')', ')');
-      return heregex.length;
-    };
-
-    Lexer.prototype.lineToken = function() {
-      var diff, indent, match, noNewlines, prev, size;
-      if (!(match = MULTI_DENT.exec(this.chunk))) {
-        return 0;
-      }
-      indent = match[0];
-      this.line += count(indent, '\n');
-      this.seenFor = false;
-      prev = last(this.tokens, 1);
-      size = indent.length - 1 - indent.lastIndexOf('\n');
-      noNewlines = this.unfinished();
-      if (size - this.indebt === this.indent) {
-        if (noNewlines) {
-          this.suppressNewlines();
-        } else {
-          this.newlineToken();
-        }
-        return indent.length;
-      }
-      if (size > this.indent) {
-        if (noNewlines) {
-          this.indebt = size - this.indent;
-          this.suppressNewlines();
-          return indent.length;
-        }
-        diff = size - this.indent + this.outdebt;
-        this.token('INDENT', diff);
-        this.indents.push(diff);
-        this.ends.push('OUTDENT');
-        this.outdebt = this.indebt = 0;
-      } else {
-        this.indebt = 0;
-        this.outdentToken(this.indent - size, noNewlines);
-      }
-      this.indent = size;
-      return indent.length;
-    };
-
-    Lexer.prototype.outdentToken = function(moveOut, noNewlines) {
-      var dent, len;
-      while (moveOut > 0) {
-        len = this.indents.length - 1;
-        if (this.indents[len] === void 0) {
-          moveOut = 0;
-        } else if (this.indents[len] === this.outdebt) {
-          moveOut -= this.outdebt;
-          this.outdebt = 0;
-        } else if (this.indents[len] < this.outdebt) {
-          this.outdebt -= this.indents[len];
-          moveOut -= this.indents[len];
-        } else {
-          dent = this.indents.pop() - this.outdebt;
-          moveOut -= dent;
-          this.outdebt = 0;
-          this.pair('OUTDENT');
-          this.token('OUTDENT', dent);
-        }
-      }
-      if (dent) {
-        this.outdebt -= moveOut;
-      }
-      while (this.value() === ';') {
-        this.tokens.pop();
-      }
-      if (!(this.tag() === 'TERMINATOR' || noNewlines)) {
-        this.token('TERMINATOR', '\n');
-      }
-      return this;
-    };
-
-    Lexer.prototype.whitespaceToken = function() {
-      var match, nline, prev;
-      if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\n'))) {
-        return 0;
-      }
-      prev = last(this.tokens);
-      if (prev) {
-        prev[match ? 'spaced' : 'newLine'] = true;
-      }
-      if (match) {
-        return match[0].length;
-      } else {
-        return 0;
-      }
-    };
-
-    Lexer.prototype.newlineToken = function() {
-      while (this.value() === ';') {
-        this.tokens.pop();
-      }
-      if (this.tag() !== 'TERMINATOR') {
-        this.token('TERMINATOR', '\n');
-      }
-      return this;
-    };
-
-    Lexer.prototype.suppressNewlines = function() {
-      if (this.value() === '\\') {
-        this.tokens.pop();
-      }
-      return this;
-    };
-
-    Lexer.prototype.literalToken = function() {
-      var match, prev, tag, value, _ref2, _ref3, _ref4, _ref5;
-      if (match = OPERATOR.exec(this.chunk)) {
-        value = match[0];
-        if (CODE.test(value)) {
-          this.tagParameters();
-        }
-      } else {
-        value = this.chunk.charAt(0);
-      }
-      tag = value;
-      prev = last(this.tokens);
-      if (value === '=' && prev) {
-        if (!prev[1].reserved && (_ref2 = prev[1], __indexOf.call(JS_FORBIDDEN, _ref2) >= 0)) {
-          this.error("reserved word \"" + (this.value()) + "\" can't be assigned");
-        }
-        if ((_ref3 = prev[1]) === '||' || _ref3 === '&&') {
-          prev[0] = 'COMPOUND_ASSIGN';
-          prev[1] += '=';
-          return value.length;
-        }
-      }
-      if (value === ';') {
-        this.seenFor = false;
-        tag = 'TERMINATOR';
-      } else if (__indexOf.call(MATH, value) >= 0) {
-        tag = 'MATH';
-      } else if (__indexOf.call(COMPARE, value) >= 0) {
-        tag = 'COMPARE';
-      } else if (__indexOf.call(COMPOUND_ASSIGN, value) >= 0) {
-        tag = 'COMPOUND_ASSIGN';
-      } else if (__indexOf.call(UNARY, value) >= 0) {
-        tag = 'UNARY';
-      } else if (__indexOf.call(SHIFT, value) >= 0) {
-        tag = 'SHIFT';
-      } else if (__indexOf.call(LOGIC, value) >= 0 || value === '?' && (prev != null ? prev.spaced : void 0)) {
-        tag = 'LOGIC';
-      } else if (prev && !prev.spaced) {
-        if (value === '(' && (_ref4 = prev[0], __indexOf.call(CALLABLE, _ref4) >= 0)) {
-          if (prev[0] === '?') {
-            prev[0] = 'FUNC_EXIST';
-          }
-          tag = 'CALL_START';
-        } else if (value === '[' && (_ref5 = prev[0], __indexOf.call(INDEXABLE, _ref5) >= 0)) {
-          tag = 'INDEX_START';
-          switch (prev[0]) {
-            case '?':
-              prev[0] = 'INDEX_SOAK';
-          }
-        }
-      }
-      switch (value) {
-        case '(':
-        case '{':
-        case '[':
-          this.ends.push(INVERSES[value]);
-          break;
-        case ')':
-        case '}':
-        case ']':
-          this.pair(value);
-      }
-      this.token(tag, value);
-      return value.length;
-    };
-
-    Lexer.prototype.sanitizeHeredoc = function(doc, options) {
-      var attempt, herecomment, indent, match, _ref2;
-      indent = options.indent, herecomment = options.herecomment;
-      if (herecomment) {
-        if (HEREDOC_ILLEGAL.test(doc)) {
-          this.error("block comment cannot contain \"*/\", starting");
-        }
-        if (doc.indexOf('\n') <= 0) {
-          return doc;
-        }
-      } else {
-        while (match = HEREDOC_INDENT.exec(doc)) {
-          attempt = match[1];
-          if (indent === null || (0 < (_ref2 = attempt.length) && _ref2 < indent.length)) {
-            indent = attempt;
-          }
-        }
-      }
-      if (indent) {
-        doc = doc.replace(RegExp("\\n" + indent, "g"), '\n');
-      }
-      if (!herecomment) {
-        doc = doc.replace(/^\n/, '');
-      }
-      return doc;
-    };
-
-    Lexer.prototype.tagParameters = function() {
-      var i, stack, tok, tokens;
-      if (this.tag() !== ')') {
-        return this;
-      }
-      stack = [];
-      tokens = this.tokens;
-      i = tokens.length;
-      tokens[--i][0] = 'PARAM_END';
-      while (tok = tokens[--i]) {
-        switch (tok[0]) {
-          case ')':
-            stack.push(tok);
-            break;
-          case '(':
-          case 'CALL_START':
-            if (stack.length) {
-              stack.pop();
-            } else if (tok[0] === '(') {
-              tok[0] = 'PARAM_START';
-              return this;
-            } else {
-              return this;
-            }
-        }
-      }
-      return this;
-    };
-
-    Lexer.prototype.closeIndentation = function() {
-      return this.outdentToken(this.indent);
-    };
-
-    Lexer.prototype.balancedString = function(str, end) {
-      var continueCount, i, letter, match, prev, stack, _i, _ref2;
-      continueCount = 0;
-      stack = [end];
-      for (i = _i = 1, _ref2 = str.length; 1 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 1 <= _ref2 ? ++_i : --_i) {
-        if (continueCount) {
-          --continueCount;
-          continue;
-        }
-        switch (letter = str.charAt(i)) {
-          case '\\':
-            ++continueCount;
-            continue;
-          case end:
-            stack.pop();
-            if (!stack.length) {
-              return str.slice(0, i + 1 || 9e9);
-            }
-            end = stack[stack.length - 1];
-            continue;
-        }
-        if (end === '}' && (letter === '"' || letter === "'")) {
-          stack.push(end = letter);
-        } else if (end === '}' && letter === '/' && (match = HEREGEX.exec(str.slice(i)) || REGEX.exec(str.slice(i)))) {
-          continueCount += match[0].length - 1;
-        } else if (end === '}' && letter === '{') {
-          stack.push(end = '}');
-        } else if (end === '"' && prev === '#' && letter === '{') {
-          stack.push(end = '}');
-        }
-        prev = letter;
-      }
-      return this.error("missing " + (stack.pop()) + ", starting");
-    };
-
-    Lexer.prototype.interpolateString = function(str, options) {
-      var expr, heredoc, i, inner, interpolated, len, letter, nested, pi, regex, tag, tokens, value, _i, _len, _ref2, _ref3, _ref4;
-      if (options == null) {
-        options = {};
-      }
-      heredoc = options.heredoc, regex = options.regex;
-      tokens = [];
-      pi = 0;
-      i = -1;
-      while (letter = str.charAt(i += 1)) {
-        if (letter === '\\') {
-          i += 1;
-          continue;
-        }
-        if (!(letter === '#' && str.charAt(i + 1) === '{' && (expr = this.balancedString(str.slice(i + 1), '}')))) {
-          continue;
-        }
-        if (pi < i) {
-          tokens.push(['NEOSTRING', str.slice(pi, i)]);
-        }
-        inner = expr.slice(1, -1);
-        if (inner.length) {
-          nested = new Lexer().tokenize(inner, {
-            line: this.line,
-            rewrite: false
-          });
-          nested.pop();
-          if (((_ref2 = nested[0]) != null ? _ref2[0] : void 0) === 'TERMINATOR') {
-            nested.shift();
-          }
-          if (len = nested.length) {
-            if (len > 1) {
-              nested.unshift(['(', '(', this.line]);
-              nested.push([')', ')', this.line]);
-            }
-            tokens.push(['TOKENS', nested]);
-          }
-        }
-        i += expr.length;
-        pi = i + 1;
-      }
-      if ((i > pi && pi < str.length)) {
-        tokens.push(['NEOSTRING', str.slice(pi)]);
-      }
-      if (regex) {
-        return tokens;
-      }
-      if (!tokens.length) {
-        return this.token('STRING', '""');
-      }
-      if (tokens[0][0] !== 'NEOSTRING') {
-        tokens.unshift(['', '']);
-      }
-      if (interpolated = tokens.length > 1) {
-        this.token('(', '(');
-      }
-      for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) {
-        _ref3 = tokens[i], tag = _ref3[0], value = _ref3[1];
-        if (i) {
-          this.token('+', '+');
-        }
-        if (tag === 'TOKENS') {
-          (_ref4 = this.tokens).push.apply(_ref4, value);
-        } else {
-          this.token('STRING', this.makeString(value, '"', heredoc));
-        }
-      }
-      if (interpolated) {
-        this.token(')', ')');
-      }
-      return tokens;
-    };
-
-    Lexer.prototype.pair = function(tag) {
-      var size, wanted;
-      if (tag !== (wanted = last(this.ends))) {
-        if ('OUTDENT' !== wanted) {
-          this.error("unmatched " + tag);
-        }
-        this.indent -= size = last(this.indents);
-        this.outdentToken(size, true);
-        return this.pair(tag);
-      }
-      return this.ends.pop();
-    };
-
-    Lexer.prototype.token = function(tag, value) {
-      return this.tokens.push([tag, value, this.line]);
-    };
-
-    Lexer.prototype.tag = function(index, tag) {
-      var tok;
-      return (tok = last(this.tokens, index)) && (tag ? tok[0] = tag : tok[0]);
-    };
-
-    Lexer.prototype.value = function(index, val) {
-      var tok;
-      return (tok = last(this.tokens, index)) && (val ? tok[1] = val : tok[1]);
-    };
-
-    Lexer.prototype.unfinished = function() {
-      var _ref2;
-      return LINE_CONTINUER.test(this.chunk) || ((_ref2 = this.tag()) === '\\' || _ref2 === '.' || _ref2 === '?.' || _ref2 === 'UNARY' || _ref2 === 'MATH' || _ref2 === '+' || _ref2 === '-' || _ref2 === 'SHIFT' || _ref2 === 'RELATION' || _ref2 === 'COMPARE' || _ref2 === 'LOGIC' || _ref2 === 'THROW' || _ref2 === 'EXTENDS');
-    };
-
-    Lexer.prototype.escapeLines = function(str, heredoc) {
-      return str.replace(MULTILINER, heredoc ? '\\n' : '');
-    };
-
-    Lexer.prototype.makeString = function(body, quote, heredoc) {
-      if (!body) {
-        return quote + quote;
-      }
-      body = body.replace(/\\([\s\S])/g, function(match, contents) {
-        if (contents === '\n' || contents === quote) {
-          return contents;
-        } else {
-          return match;
-        }
-      });
-      body = body.replace(RegExp("" + quote, "g"), '\\$&');
-      return quote + this.escapeLines(body, heredoc) + quote;
-    };
-
-    Lexer.prototype.error = function(message) {
-      throw SyntaxError("" + message + " on line " + (this.line + 1));
-    };
-
-    return Lexer;
-
-  })();
-
-  JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super'];
-
-  COFFEE_KEYWORDS = ['undefined', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when'];
-
-  COFFEE_ALIAS_MAP = {
-    and: '&&',
-    or: '||',
-    is: '==',
-    isnt: '!=',
-    not: '!',
-    yes: 'true',
-    no: 'false',
-    on: 'true',
-    off: 'false'
-  };
-
-  COFFEE_ALIASES = (function() {
-    var _results;
-    _results = [];
-    for (key in COFFEE_ALIAS_MAP) {
-      _results.push(key);
-    }
-    return _results;
-  })();
-
-  COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES);
-
-  RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', '__hasProp', '__extends', '__slice', '__bind', '__indexOf', 'implements', 'interface', 'let', 'package', 'private', 'protected', 'public', 'static', 'yield'];
-
-  STRICT_PROSCRIBED = ['arguments', 'eval'];
-
-  JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED);
-
-  exports.RESERVED = RESERVED.concat(JS_KEYWORDS).concat(COFFEE_KEYWORDS).concat(STRICT_PROSCRIBED);
-
-  exports.STRICT_PROSCRIBED = STRICT_PROSCRIBED;
-
-  IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/;
-
-  NUMBER = /^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i;
-
-  HEREDOC = /^("""|''')([\s\S]*?)(?:\n[^\n\S]*)?\1/;
-
-  OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?\.|\.{2,3})/;
-
-  WHITESPACE = /^[^\n\S]+/;
-
-  COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|(?:###)?$)|^(?:\s*#(?!##[^#]).*)+/;
-
-  CODE = /^[-=]>/;
-
-  MULTI_DENT = /^(?:\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)/;
-
-  HEREGEX_OMIT = /\s+(?:#.*)?/g;
-
-  MULTILINER = /\n/g;
-
-  HEREDOC_INDENT = /\n+([^\n\S]*)/g;
-
-  HEREDOC_ILLEGAL = /\*\//;
-
-  LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|::)/;
-
-  TRAILING_SPACES = /\s+$/;
-
-  COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|='];
-
-  UNARY = ['!', '~', 'NEW', 'TYPEOF', 'DELETE', 'DO'];
-
-  LOGIC = ['&&', '||', '&', '|', '^'];
-
-  SHIFT = ['<<', '>>', '>>>'];
-
-  COMPARE = ['==', '!=', '<', '>', '<=', '>='];
-
-  MATH = ['*', '/', '%'];
-
-  RELATION = ['IN', 'OF', 'INSTANCEOF'];
-
-  BOOL = ['TRUE', 'FALSE', 'NULL', 'UNDEFINED'];
-
-  NOT_REGEX = ['NUMBER', 'REGEX', 'BOOL', '++', '--', ']'];
-
-  NOT_SPACED_REGEX = NOT_REGEX.concat(')', '}', 'THIS', 'IDENTIFIER', 'STRING');
-
-  CALLABLE = ['IDENTIFIER', 'STRING', 'REGEX', ')', ']', '}', '?', '::', '@', 'THIS', 'SUPER'];
-
-  INDEXABLE = CALLABLE.concat('NUMBER', 'BOOL');
-
-  LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR'];
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/nodes.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/nodes.js
deleted file mode 100644
index 88ea798..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/nodes.js
+++ /dev/null
@@ -1,2972 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var Access, Arr, Assign, Base, Block, Call, Class, Closure, Code, Comment, Existence, Extends, For, IDENTIFIER, IDENTIFIER_STR, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, compact, del, ends, extend, flatten, last, merge, multident, starts, unfoldSoak, utility, _ref, _ref1,
-    __hasProp = {}.hasOwnProperty,
-    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; },
-    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-
-  Scope = require('./scope').Scope;
-
-  _ref = require('./lexer'), RESERVED = _ref.RESERVED, STRICT_PROSCRIBED = _ref.STRICT_PROSCRIBED;
-
-  _ref1 = require('./helpers'), compact = _ref1.compact, flatten = _ref1.flatten, extend = _ref1.extend, merge = _ref1.merge, del = _ref1.del, starts = _ref1.starts, ends = _ref1.ends, last = _ref1.last;
-
-  exports.extend = extend;
-
-  YES = function() {
-    return true;
-  };
-
-  NO = function() {
-    return false;
-  };
-
-  THIS = function() {
-    return this;
-  };
-
-  NEGATE = function() {
-    this.negated = !this.negated;
-    return this;
-  };
-
-  exports.Base = Base = (function() {
-
-    Base.name = 'Base';
-
-    function Base() {}
-
-    Base.prototype.compile = function(o, lvl) {
-      var node;
-      o = extend({}, o);
-      if (lvl) {
-        o.level = lvl;
-      }
-      node = this.unfoldSoak(o) || this;
-      node.tab = o.indent;
-      if (o.level === LEVEL_TOP || !node.isStatement(o)) {
-        return node.compileNode(o);
-      } else {
-        return node.compileClosure(o);
-      }
-    };
-
-    Base.prototype.compileClosure = function(o) {
-      if (this.jumps()) {
-        throw SyntaxError('cannot use a pure statement in an expression.');
-      }
-      o.sharedScope = true;
-      return Closure.wrap(this).compileNode(o);
-    };
-
-    Base.prototype.cache = function(o, level, reused) {
-      var ref, sub;
-      if (!this.isComplex()) {
-        ref = level ? this.compile(o, level) : this;
-        return [ref, ref];
-      } else {
-        ref = new Literal(reused || o.scope.freeVariable('ref'));
-        sub = new Assign(ref, this);
-        if (level) {
-          return [sub.compile(o, level), ref.value];
-        } else {
-          return [sub, ref];
-        }
-      }
-    };
-
-    Base.prototype.compileLoopReference = function(o, name) {
-      var src, tmp;
-      src = tmp = this.compile(o, LEVEL_LIST);
-      if (!((-Infinity < +src && +src < Infinity) || IDENTIFIER.test(src) && o.scope.check(src, true))) {
-        src = "" + (tmp = o.scope.freeVariable(name)) + " = " + src;
-      }
-      return [src, tmp];
-    };
-
-    Base.prototype.makeReturn = function(res) {
-      var me;
-      me = this.unwrapAll();
-      if (res) {
-        return new Call(new Literal("" + res + ".push"), [me]);
-      } else {
-        return new Return(me);
-      }
-    };
-
-    Base.prototype.contains = function(pred) {
-      var contains;
-      contains = false;
-      this.traverseChildren(false, function(node) {
-        if (pred(node)) {
-          contains = true;
-          return false;
-        }
-      });
-      return contains;
-    };
-
-    Base.prototype.containsType = function(type) {
-      return this instanceof type || this.contains(function(node) {
-        return node instanceof type;
-      });
-    };
-
-    Base.prototype.lastNonComment = function(list) {
-      var i;
-      i = list.length;
-      while (i--) {
-        if (!(list[i] instanceof Comment)) {
-          return list[i];
-        }
-      }
-      return null;
-    };
-
-    Base.prototype.toString = function(idt, name) {
-      var tree;
-      if (idt == null) {
-        idt = '';
-      }
-      if (name == null) {
-        name = this.constructor.name;
-      }
-      tree = '\n' + idt + name;
-      if (this.soak) {
-        tree += '?';
-      }
-      this.eachChild(function(node) {
-        return tree += node.toString(idt + TAB);
-      });
-      return tree;
-    };
-
-    Base.prototype.eachChild = function(func) {
-      var attr, child, _i, _j, _len, _len1, _ref2, _ref3;
-      if (!this.children) {
-        return this;
-      }
-      _ref2 = this.children;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        attr = _ref2[_i];
-        if (this[attr]) {
-          _ref3 = flatten([this[attr]]);
-          for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
-            child = _ref3[_j];
-            if (func(child) === false) {
-              return this;
-            }
-          }
-        }
-      }
-      return this;
-    };
-
-    Base.prototype.traverseChildren = function(crossScope, func) {
-      return this.eachChild(function(child) {
-        if (func(child) === false) {
-          return false;
-        }
-        return child.traverseChildren(crossScope, func);
-      });
-    };
-
-    Base.prototype.invert = function() {
-      return new Op('!', this);
-    };
-
-    Base.prototype.unwrapAll = function() {
-      var node;
-      node = this;
-      while (node !== (node = node.unwrap())) {
-        continue;
-      }
-      return node;
-    };
-
-    Base.prototype.children = [];
-
-    Base.prototype.isStatement = NO;
-
-    Base.prototype.jumps = NO;
-
-    Base.prototype.isComplex = YES;
-
-    Base.prototype.isChainable = NO;
-
-    Base.prototype.isAssignable = NO;
-
-    Base.prototype.unwrap = THIS;
-
-    Base.prototype.unfoldSoak = NO;
-
-    Base.prototype.assigns = NO;
-
-    return Base;
-
-  })();
-
-  exports.Block = Block = (function(_super) {
-
-    __extends(Block, _super);
-
-    Block.name = 'Block';
-
-    function Block(nodes) {
-      this.expressions = compact(flatten(nodes || []));
-    }
-
-    Block.prototype.children = ['expressions'];
-
-    Block.prototype.push = function(node) {
-      this.expressions.push(node);
-      return this;
-    };
-
-    Block.prototype.pop = function() {
-      return this.expressions.pop();
-    };
-
-    Block.prototype.unshift = function(node) {
-      this.expressions.unshift(node);
-      return this;
-    };
-
-    Block.prototype.unwrap = function() {
-      if (this.expressions.length === 1) {
-        return this.expressions[0];
-      } else {
-        return this;
-      }
-    };
-
-    Block.prototype.isEmpty = function() {
-      return !this.expressions.length;
-    };
-
-    Block.prototype.isStatement = function(o) {
-      var exp, _i, _len, _ref2;
-      _ref2 = this.expressions;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        exp = _ref2[_i];
-        if (exp.isStatement(o)) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    Block.prototype.jumps = function(o) {
-      var exp, _i, _len, _ref2;
-      _ref2 = this.expressions;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        exp = _ref2[_i];
-        if (exp.jumps(o)) {
-          return exp;
-        }
-      }
-    };
-
-    Block.prototype.makeReturn = function(res) {
-      var expr, len;
-      len = this.expressions.length;
-      while (len--) {
-        expr = this.expressions[len];
-        if (!(expr instanceof Comment)) {
-          this.expressions[len] = expr.makeReturn(res);
-          if (expr instanceof Return && !expr.expression) {
-            this.expressions.splice(len, 1);
-          }
-          break;
-        }
-      }
-      return this;
-    };
-
-    Block.prototype.compile = function(o, level) {
-      if (o == null) {
-        o = {};
-      }
-      if (o.scope) {
-        return Block.__super__.compile.call(this, o, level);
-      } else {
-        return this.compileRoot(o);
-      }
-    };
-
-    Block.prototype.compileNode = function(o) {
-      var code, codes, node, top, _i, _len, _ref2;
-      this.tab = o.indent;
-      top = o.level === LEVEL_TOP;
-      codes = [];
-      _ref2 = this.expressions;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        node = _ref2[_i];
-        node = node.unwrapAll();
-        node = node.unfoldSoak(o) || node;
-        if (node instanceof Block) {
-          codes.push(node.compileNode(o));
-        } else if (top) {
-          node.front = true;
-          code = node.compile(o);
-          if (!node.isStatement(o)) {
-            code = "" + this.tab + code + ";";
-            if (node instanceof Literal) {
-              code = "" + code + "\n";
-            }
-          }
-          codes.push(code);
-        } else {
-          codes.push(node.compile(o, LEVEL_LIST));
-        }
-      }
-      if (top) {
-        if (this.spaced) {
-          return "\n" + (codes.join('\n\n')) + "\n";
-        } else {
-          return codes.join('\n');
-        }
-      }
-      code = codes.join(', ') || 'void 0';
-      if (codes.length > 1 && o.level >= LEVEL_LIST) {
-        return "(" + code + ")";
-      } else {
-        return code;
-      }
-    };
-
-    Block.prototype.compileRoot = function(o) {
-      var code, exp, i, prelude, preludeExps, rest;
-      o.indent = o.bare ? '' : TAB;
-      o.scope = new Scope(null, this, null);
-      o.level = LEVEL_TOP;
-      this.spaced = true;
-      prelude = "";
-      if (!o.bare) {
-        preludeExps = (function() {
-          var _i, _len, _ref2, _results;
-          _ref2 = this.expressions;
-          _results = [];
-          for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
-            exp = _ref2[i];
-            if (!(exp.unwrap() instanceof Comment)) {
-              break;
-            }
-            _results.push(exp);
-          }
-          return _results;
-        }).call(this);
-        rest = this.expressions.slice(preludeExps.length);
-        this.expressions = preludeExps;
-        if (preludeExps.length) {
-          prelude = "" + (this.compileNode(merge(o, {
-            indent: ''
-          }))) + "\n";
-        }
-        this.expressions = rest;
-      }
-      code = this.compileWithDeclarations(o);
-      if (o.bare) {
-        return code;
-      }
-      return "" + prelude + "(function() {\n" + code + "\n}).call(this);\n";
-    };
-
-    Block.prototype.compileWithDeclarations = function(o) {
-      var assigns, code, declars, exp, i, post, rest, scope, spaced, _i, _len, _ref2, _ref3, _ref4;
-      code = post = '';
-      _ref2 = this.expressions;
-      for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
-        exp = _ref2[i];
-        exp = exp.unwrap();
-        if (!(exp instanceof Comment || exp instanceof Literal)) {
-          break;
-        }
-      }
-      o = merge(o, {
-        level: LEVEL_TOP
-      });
-      if (i) {
-        rest = this.expressions.splice(i, 9e9);
-        _ref3 = [this.spaced, false], spaced = _ref3[0], this.spaced = _ref3[1];
-        _ref4 = [this.compileNode(o), spaced], code = _ref4[0], this.spaced = _ref4[1];
-        this.expressions = rest;
-      }
-      post = this.compileNode(o);
-      scope = o.scope;
-      if (scope.expressions === this) {
-        declars = o.scope.hasDeclarations();
-        assigns = scope.hasAssignments;
-        if (declars || assigns) {
-          if (i) {
-            code += '\n';
-          }
-          code += "" + this.tab + "var ";
-          if (declars) {
-            code += scope.declaredVariables().join(', ');
-          }
-          if (assigns) {
-            if (declars) {
-              code += ",\n" + (this.tab + TAB);
-            }
-            code += scope.assignedVariables().join(",\n" + (this.tab + TAB));
-          }
-          code += ';\n';
-        }
-      }
-      return code + post;
-    };
-
-    Block.wrap = function(nodes) {
-      if (nodes.length === 1 && nodes[0] instanceof Block) {
-        return nodes[0];
-      }
-      return new Block(nodes);
-    };
-
-    return Block;
-
-  })(Base);
-
-  exports.Literal = Literal = (function(_super) {
-
-    __extends(Literal, _super);
-
-    Literal.name = 'Literal';
-
-    function Literal(value) {
-      this.value = value;
-    }
-
-    Literal.prototype.makeReturn = function() {
-      if (this.isStatement()) {
-        return this;
-      } else {
-        return Literal.__super__.makeReturn.apply(this, arguments);
-      }
-    };
-
-    Literal.prototype.isAssignable = function() {
-      return IDENTIFIER.test(this.value);
-    };
-
-    Literal.prototype.isStatement = function() {
-      var _ref2;
-      return (_ref2 = this.value) === 'break' || _ref2 === 'continue' || _ref2 === 'debugger';
-    };
-
-    Literal.prototype.isComplex = NO;
-
-    Literal.prototype.assigns = function(name) {
-      return name === this.value;
-    };
-
-    Literal.prototype.jumps = function(o) {
-      if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) {
-        return this;
-      }
-      if (this.value === 'continue' && !(o != null ? o.loop : void 0)) {
-        return this;
-      }
-    };
-
-    Literal.prototype.compileNode = function(o) {
-      var code, _ref2;
-      code = this.isUndefined ? o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0' : this.value === 'this' ? ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? "\"" + this.value + "\"" : this.value;
-      if (this.isStatement()) {
-        return "" + this.tab + code + ";";
-      } else {
-        return code;
-      }
-    };
-
-    Literal.prototype.toString = function() {
-      return ' "' + this.value + '"';
-    };
-
-    return Literal;
-
-  })(Base);
-
-  exports.Return = Return = (function(_super) {
-
-    __extends(Return, _super);
-
-    Return.name = 'Return';
-
-    function Return(expr) {
-      if (expr && !expr.unwrap().isUndefined) {
-        this.expression = expr;
-      }
-    }
-
-    Return.prototype.children = ['expression'];
-
-    Return.prototype.isStatement = YES;
-
-    Return.prototype.makeReturn = THIS;
-
-    Return.prototype.jumps = THIS;
-
-    Return.prototype.compile = function(o, level) {
-      var expr, _ref2;
-      expr = (_ref2 = this.expression) != null ? _ref2.makeReturn() : void 0;
-      if (expr && !(expr instanceof Return)) {
-        return expr.compile(o, level);
-      } else {
-        return Return.__super__.compile.call(this, o, level);
-      }
-    };
-
-    Return.prototype.compileNode = function(o) {
-      return this.tab + ("return" + [this.expression ? " " + (this.expression.compile(o, LEVEL_PAREN)) : void 0] + ";");
-    };
-
-    return Return;
-
-  })(Base);
-
-  exports.Value = Value = (function(_super) {
-
-    __extends(Value, _super);
-
-    Value.name = 'Value';
-
-    function Value(base, props, tag) {
-      if (!props && base instanceof Value) {
-        return base;
-      }
-      this.base = base;
-      this.properties = props || [];
-      if (tag) {
-        this[tag] = true;
-      }
-      return this;
-    }
-
-    Value.prototype.children = ['base', 'properties'];
-
-    Value.prototype.add = function(props) {
-      this.properties = this.properties.concat(props);
-      return this;
-    };
-
-    Value.prototype.hasProperties = function() {
-      return !!this.properties.length;
-    };
-
-    Value.prototype.isArray = function() {
-      return !this.properties.length && this.base instanceof Arr;
-    };
-
-    Value.prototype.isComplex = function() {
-      return this.hasProperties() || this.base.isComplex();
-    };
-
-    Value.prototype.isAssignable = function() {
-      return this.hasProperties() || this.base.isAssignable();
-    };
-
-    Value.prototype.isSimpleNumber = function() {
-      return this.base instanceof Literal && SIMPLENUM.test(this.base.value);
-    };
-
-    Value.prototype.isString = function() {
-      return this.base instanceof Literal && IS_STRING.test(this.base.value);
-    };
-
-    Value.prototype.isAtomic = function() {
-      var node, _i, _len, _ref2;
-      _ref2 = this.properties.concat(this.base);
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        node = _ref2[_i];
-        if (node.soak || node instanceof Call) {
-          return false;
-        }
-      }
-      return true;
-    };
-
-    Value.prototype.isStatement = function(o) {
-      return !this.properties.length && this.base.isStatement(o);
-    };
-
-    Value.prototype.assigns = function(name) {
-      return !this.properties.length && this.base.assigns(name);
-    };
-
-    Value.prototype.jumps = function(o) {
-      return !this.properties.length && this.base.jumps(o);
-    };
-
-    Value.prototype.isObject = function(onlyGenerated) {
-      if (this.properties.length) {
-        return false;
-      }
-      return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated);
-    };
-
-    Value.prototype.isSplice = function() {
-      return last(this.properties) instanceof Slice;
-    };
-
-    Value.prototype.unwrap = function() {
-      if (this.properties.length) {
-        return this;
-      } else {
-        return this.base;
-      }
-    };
-
-    Value.prototype.cacheReference = function(o) {
-      var base, bref, name, nref;
-      name = last(this.properties);
-      if (this.properties.length < 2 && !this.base.isComplex() && !(name != null ? name.isComplex() : void 0)) {
-        return [this, this];
-      }
-      base = new Value(this.base, this.properties.slice(0, -1));
-      if (base.isComplex()) {
-        bref = new Literal(o.scope.freeVariable('base'));
-        base = new Value(new Parens(new Assign(bref, base)));
-      }
-      if (!name) {
-        return [base, bref];
-      }
-      if (name.isComplex()) {
-        nref = new Literal(o.scope.freeVariable('name'));
-        name = new Index(new Assign(nref, name.index));
-        nref = new Index(nref);
-      }
-      return [base.add(name), new Value(bref || base.base, [nref || name])];
-    };
-
-    Value.prototype.compileNode = function(o) {
-      var code, prop, props, _i, _len;
-      this.base.front = this.front;
-      props = this.properties;
-      code = this.base.compile(o, props.length ? LEVEL_ACCESS : null);
-      if ((this.base instanceof Parens || props.length) && SIMPLENUM.test(code)) {
-        code = "" + code + ".";
-      }
-      for (_i = 0, _len = props.length; _i < _len; _i++) {
-        prop = props[_i];
-        code += prop.compile(o);
-      }
-      return code;
-    };
-
-    Value.prototype.unfoldSoak = function(o) {
-      var result,
-        _this = this;
-      if (this.unfoldedSoak != null) {
-        return this.unfoldedSoak;
-      }
-      result = (function() {
-        var fst, i, ifn, prop, ref, snd, _i, _len, _ref2;
-        if (ifn = _this.base.unfoldSoak(o)) {
-          Array.prototype.push.apply(ifn.body.properties, _this.properties);
-          return ifn;
-        }
-        _ref2 = _this.properties;
-        for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
-          prop = _ref2[i];
-          if (!prop.soak) {
-            continue;
-          }
-          prop.soak = false;
-          fst = new Value(_this.base, _this.properties.slice(0, i));
-          snd = new Value(_this.base, _this.properties.slice(i));
-          if (fst.isComplex()) {
-            ref = new Literal(o.scope.freeVariable('ref'));
-            fst = new Parens(new Assign(ref, fst));
-            snd.base = ref;
-          }
-          return new If(new Existence(fst), snd, {
-            soak: true
-          });
-        }
-        return null;
-      })();
-      return this.unfoldedSoak = result || false;
-    };
-
-    return Value;
-
-  })(Base);
-
-  exports.Comment = Comment = (function(_super) {
-
-    __extends(Comment, _super);
-
-    Comment.name = 'Comment';
-
-    function Comment(comment) {
-      this.comment = comment;
-    }
-
-    Comment.prototype.isStatement = YES;
-
-    Comment.prototype.makeReturn = THIS;
-
-    Comment.prototype.compileNode = function(o, level) {
-      var code;
-      code = '/*' + multident(this.comment, this.tab) + ("\n" + this.tab + "*/\n");
-      if ((level || o.level) === LEVEL_TOP) {
-        code = o.indent + code;
-      }
-      return code;
-    };
-
-    return Comment;
-
-  })(Base);
-
-  exports.Call = Call = (function(_super) {
-
-    __extends(Call, _super);
-
-    Call.name = 'Call';
-
-    function Call(variable, args, soak) {
-      this.args = args != null ? args : [];
-      this.soak = soak;
-      this.isNew = false;
-      this.isSuper = variable === 'super';
-      this.variable = this.isSuper ? null : variable;
-    }
-
-    Call.prototype.children = ['variable', 'args'];
-
-    Call.prototype.newInstance = function() {
-      var base, _ref2;
-      base = ((_ref2 = this.variable) != null ? _ref2.base : void 0) || this.variable;
-      if (base instanceof Call && !base.isNew) {
-        base.newInstance();
-      } else {
-        this.isNew = true;
-      }
-      return this;
-    };
-
-    Call.prototype.superReference = function(o) {
-      var accesses, method, name;
-      method = o.scope.method;
-      if (!method) {
-        throw SyntaxError('cannot call super outside of a function.');
-      }
-      name = method.name;
-      if (name == null) {
-        throw SyntaxError('cannot call super on an anonymous function.');
-      }
-      if (method.klass) {
-        accesses = [new Access(new Literal('__super__'))];
-        if (method["static"]) {
-          accesses.push(new Access(new Literal('constructor')));
-        }
-        accesses.push(new Access(new Literal(name)));
-        return (new Value(new Literal(method.klass), accesses)).compile(o);
-      } else {
-        return "" + name + ".__super__.constructor";
-      }
-    };
-
-    Call.prototype.unfoldSoak = function(o) {
-      var call, ifn, left, list, rite, _i, _len, _ref2, _ref3;
-      if (this.soak) {
-        if (this.variable) {
-          if (ifn = unfoldSoak(o, this, 'variable')) {
-            return ifn;
-          }
-          _ref2 = new Value(this.variable).cacheReference(o), left = _ref2[0], rite = _ref2[1];
-        } else {
-          left = new Literal(this.superReference(o));
-          rite = new Value(left);
-        }
-        rite = new Call(rite, this.args);
-        rite.isNew = this.isNew;
-        left = new Literal("typeof " + (left.compile(o)) + " === \"function\"");
-        return new If(left, new Value(rite), {
-          soak: true
-        });
-      }
-      call = this;
-      list = [];
-      while (true) {
-        if (call.variable instanceof Call) {
-          list.push(call);
-          call = call.variable;
-          continue;
-        }
-        if (!(call.variable instanceof Value)) {
-          break;
-        }
-        list.push(call);
-        if (!((call = call.variable.base) instanceof Call)) {
-          break;
-        }
-      }
-      _ref3 = list.reverse();
-      for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
-        call = _ref3[_i];
-        if (ifn) {
-          if (call.variable instanceof Call) {
-            call.variable = ifn;
-          } else {
-            call.variable.base = ifn;
-          }
-        }
-        ifn = unfoldSoak(o, call, 'variable');
-      }
-      return ifn;
-    };
-
-    Call.prototype.filterImplicitObjects = function(list) {
-      var node, nodes, obj, prop, properties, _i, _j, _len, _len1, _ref2;
-      nodes = [];
-      for (_i = 0, _len = list.length; _i < _len; _i++) {
-        node = list[_i];
-        if (!((typeof node.isObject === "function" ? node.isObject() : void 0) && node.base.generated)) {
-          nodes.push(node);
-          continue;
-        }
-        obj = null;
-        _ref2 = node.base.properties;
-        for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
-          prop = _ref2[_j];
-          if (prop instanceof Assign || prop instanceof Comment) {
-            if (!obj) {
-              nodes.push(obj = new Obj(properties = [], true));
-            }
-            properties.push(prop);
-          } else {
-            nodes.push(prop);
-            obj = null;
-          }
-        }
-      }
-      return nodes;
-    };
-
-    Call.prototype.compileNode = function(o) {
-      var arg, args, code, _ref2;
-      if ((_ref2 = this.variable) != null) {
-        _ref2.front = this.front;
-      }
-      if (code = Splat.compileSplattedArray(o, this.args, true)) {
-        return this.compileSplat(o, code);
-      }
-      args = this.filterImplicitObjects(this.args);
-      args = ((function() {
-        var _i, _len, _results;
-        _results = [];
-        for (_i = 0, _len = args.length; _i < _len; _i++) {
-          arg = args[_i];
-          _results.push(arg.compile(o, LEVEL_LIST));
-        }
-        return _results;
-      })()).join(', ');
-      if (this.isSuper) {
-        return this.superReference(o) + (".call(this" + (args && ', ' + args) + ")");
-      } else {
-        return (this.isNew ? 'new ' : '') + this.variable.compile(o, LEVEL_ACCESS) + ("(" + args + ")");
-      }
-    };
-
-    Call.prototype.compileSuper = function(args, o) {
-      return "" + (this.superReference(o)) + ".call(this" + (args.length ? ', ' : '') + args + ")";
-    };
-
-    Call.prototype.compileSplat = function(o, splatArgs) {
-      var base, fun, idt, name, ref;
-      if (this.isSuper) {
-        return "" + (this.superReference(o)) + ".apply(this, " + splatArgs + ")";
-      }
-      if (this.isNew) {
-        idt = this.tab + TAB;
-        return "(function(func, args, ctor) {\n" + idt + "ctor.prototype = func.prototype;\n" + idt + "var child = new ctor, result = func.apply(child, args), t = typeof result;\n" + idt + "return t == \"object\" || t == \"function\" ? result || child : child;\n" + this.tab + "})(" + (this.variable.compile(o, LEVEL_LIST)) + ", " + splatArgs + ", function(){})";
-      }
-      base = new Value(this.variable);
-      if ((name = base.properties.pop()) && base.isComplex()) {
-        ref = o.scope.freeVariable('ref');
-        fun = "(" + ref + " = " + (base.compile(o, LEVEL_LIST)) + ")" + (name.compile(o));
-      } else {
-        fun = base.compile(o, LEVEL_ACCESS);
-        if (SIMPLENUM.test(fun)) {
-          fun = "(" + fun + ")";
-        }
-        if (name) {
-          ref = fun;
-          fun += name.compile(o);
-        } else {
-          ref = 'null';
-        }
-      }
-      return "" + fun + ".apply(" + ref + ", " + splatArgs + ")";
-    };
-
-    return Call;
-
-  })(Base);
-
-  exports.Extends = Extends = (function(_super) {
-
-    __extends(Extends, _super);
-
-    Extends.name = 'Extends';
-
-    function Extends(child, parent) {
-      this.child = child;
-      this.parent = parent;
-    }
-
-    Extends.prototype.children = ['child', 'parent'];
-
-    Extends.prototype.compile = function(o) {
-      return new Call(new Value(new Literal(utility('extends'))), [this.child, this.parent]).compile(o);
-    };
-
-    return Extends;
-
-  })(Base);
-
-  exports.Access = Access = (function(_super) {
-
-    __extends(Access, _super);
-
-    Access.name = 'Access';
-
-    function Access(name, tag) {
-      this.name = name;
-      this.name.asKey = true;
-      this.soak = tag === 'soak';
-    }
-
-    Access.prototype.children = ['name'];
-
-    Access.prototype.compile = function(o) {
-      var name;
-      name = this.name.compile(o);
-      if (IDENTIFIER.test(name)) {
-        return "." + name;
-      } else {
-        return "[" + name + "]";
-      }
-    };
-
-    Access.prototype.isComplex = NO;
-
-    return Access;
-
-  })(Base);
-
-  exports.Index = Index = (function(_super) {
-
-    __extends(Index, _super);
-
-    Index.name = 'Index';
-
-    function Index(index) {
-      this.index = index;
-    }
-
-    Index.prototype.children = ['index'];
-
-    Index.prototype.compile = function(o) {
-      return "[" + (this.index.compile(o, LEVEL_PAREN)) + "]";
-    };
-
-    Index.prototype.isComplex = function() {
-      return this.index.isComplex();
-    };
-
-    return Index;
-
-  })(Base);
-
-  exports.Range = Range = (function(_super) {
-
-    __extends(Range, _super);
-
-    Range.name = 'Range';
-
-    Range.prototype.children = ['from', 'to'];
-
-    function Range(from, to, tag) {
-      this.from = from;
-      this.to = to;
-      this.exclusive = tag === 'exclusive';
-      this.equals = this.exclusive ? '' : '=';
-    }
-
-    Range.prototype.compileVariables = function(o) {
-      var step, _ref2, _ref3, _ref4, _ref5;
-      o = merge(o, {
-        top: true
-      });
-      _ref2 = this.from.cache(o, LEVEL_LIST), this.fromC = _ref2[0], this.fromVar = _ref2[1];
-      _ref3 = this.to.cache(o, LEVEL_LIST), this.toC = _ref3[0], this.toVar = _ref3[1];
-      if (step = del(o, 'step')) {
-        _ref4 = step.cache(o, LEVEL_LIST), this.step = _ref4[0], this.stepVar = _ref4[1];
-      }
-      _ref5 = [this.fromVar.match(SIMPLENUM), this.toVar.match(SIMPLENUM)], this.fromNum = _ref5[0], this.toNum = _ref5[1];
-      if (this.stepVar) {
-        return this.stepNum = this.stepVar.match(SIMPLENUM);
-      }
-    };
-
-    Range.prototype.compileNode = function(o) {
-      var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, stepPart, to, varPart, _ref2, _ref3;
-      if (!this.fromVar) {
-        this.compileVariables(o);
-      }
-      if (!o.index) {
-        return this.compileArray(o);
-      }
-      known = this.fromNum && this.toNum;
-      idx = del(o, 'index');
-      idxName = del(o, 'name');
-      namedIndex = idxName && idxName !== idx;
-      varPart = "" + idx + " = " + this.fromC;
-      if (this.toC !== this.toVar) {
-        varPart += ", " + this.toC;
-      }
-      if (this.step !== this.stepVar) {
-        varPart += ", " + this.step;
-      }
-      _ref2 = ["" + idx + " <" + this.equals, "" + idx + " >" + this.equals], lt = _ref2[0], gt = _ref2[1];
-      condPart = this.stepNum ? +this.stepNum > 0 ? "" + lt + " " + this.toVar : "" + gt + " " + this.toVar : known ? ((_ref3 = [+this.fromNum, +this.toNum], from = _ref3[0], to = _ref3[1], _ref3), from <= to ? "" + lt + " " + to : "" + gt + " " + to) : (cond = "" + this.fromVar + " <= " + this.toVar, "" + cond + " ? " + lt + " " + this.toVar + " : " + gt + " " + this.toVar);
-      stepPart = this.stepVar ? "" + idx + " += " + this.stepVar : known ? namedIndex ? from <= to ? "++" + idx : "--" + idx : from <= to ? "" + idx + "++" : "" + idx + "--" : namedIndex ? "" + cond + " ? ++" + idx + " : --" + idx : "" + cond + " ? " + idx + "++ : " + idx + "--";
-      if (namedIndex) {
-        varPart = "" + idxName + " = " + varPart;
-      }
-      if (namedIndex) {
-        stepPart = "" + idxName + " = " + stepPart;
-      }
-      return "" + varPart + "; " + condPart + "; " + stepPart;
-    };
-
-    Range.prototype.compileArray = function(o) {
-      var args, body, cond, hasArgs, i, idt, post, pre, range, result, vars, _i, _ref2, _ref3, _results;
-      if (this.fromNum && this.toNum && Math.abs(this.fromNum - this.toNum) <= 20) {
-        range = (function() {
-          _results = [];
-          for (var _i = _ref2 = +this.fromNum, _ref3 = +this.toNum; _ref2 <= _ref3 ? _i <= _ref3 : _i >= _ref3; _ref2 <= _ref3 ? _i++ : _i--){ _results.push(_i); }
-          return _results;
-        }).apply(this);
-        if (this.exclusive) {
-          range.pop();
-        }
-        return "[" + (range.join(', ')) + "]";
-      }
-      idt = this.tab + TAB;
-      i = o.scope.freeVariable('i');
-      result = o.scope.freeVariable('results');
-      pre = "\n" + idt + result + " = [];";
-      if (this.fromNum && this.toNum) {
-        o.index = i;
-        body = this.compileNode(o);
-      } else {
-        vars = ("" + i + " = " + this.fromC) + (this.toC !== this.toVar ? ", " + this.toC : '');
-        cond = "" + this.fromVar + " <= " + this.toVar;
-        body = "var " + vars + "; " + cond + " ? " + i + " <" + this.equals + " " + this.toVar + " : " + i + " >" + this.equals + " " + this.toVar + "; " + cond + " ? " + i + "++ : " + i + "--";
-      }
-      post = "{ " + result + ".push(" + i + "); }\n" + idt + "return " + result + ";\n" + o.indent;
-      hasArgs = function(node) {
-        return node != null ? node.contains(function(n) {
-          return n instanceof Literal && n.value === 'arguments' && !n.asKey;
-        }) : void 0;
-      };
-      if (hasArgs(this.from) || hasArgs(this.to)) {
-        args = ', arguments';
-      }
-      return "(function() {" + pre + "\n" + idt + "for (" + body + ")" + post + "}).apply(this" + (args != null ? args : '') + ")";
-    };
-
-    return Range;
-
-  })(Base);
-
-  exports.Slice = Slice = (function(_super) {
-
-    __extends(Slice, _super);
-
-    Slice.name = 'Slice';
-
-    Slice.prototype.children = ['range'];
-
-    function Slice(range) {
-      this.range = range;
-      Slice.__super__.constructor.call(this);
-    }
-
-    Slice.prototype.compileNode = function(o) {
-      var compiled, from, fromStr, to, toStr, _ref2;
-      _ref2 = this.range, to = _ref2.to, from = _ref2.from;
-      fromStr = from && from.compile(o, LEVEL_PAREN) || '0';
-      compiled = to && to.compile(o, LEVEL_PAREN);
-      if (to && !(!this.range.exclusive && +compiled === -1)) {
-        toStr = ', ' + (this.range.exclusive ? compiled : SIMPLENUM.test(compiled) ? "" + (+compiled + 1) : (compiled = to.compile(o, LEVEL_ACCESS), "" + compiled + " + 1 || 9e9"));
-      }
-      return ".slice(" + fromStr + (toStr || '') + ")";
-    };
-
-    return Slice;
-
-  })(Base);
-
-  exports.Obj = Obj = (function(_super) {
-
-    __extends(Obj, _super);
-
-    Obj.name = 'Obj';
-
-    function Obj(props, generated) {
-      this.generated = generated != null ? generated : false;
-      this.objects = this.properties = props || [];
-    }
-
-    Obj.prototype.children = ['properties'];
-
-    Obj.prototype.compileNode = function(o) {
-      var i, idt, indent, join, lastNoncom, node, obj, prop, propName, propNames, props, _i, _j, _len, _len1, _ref2;
-      props = this.properties;
-      propNames = [];
-      _ref2 = this.properties;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        prop = _ref2[_i];
-        if (prop.isComplex()) {
-          prop = prop.variable;
-        }
-        if (prop != null) {
-          propName = prop.unwrapAll().value.toString();
-          if (__indexOf.call(propNames, propName) >= 0) {
-            throw SyntaxError("multiple object literal properties named \"" + propName + "\"");
-          }
-          propNames.push(propName);
-        }
-      }
-      if (!props.length) {
-        return (this.front ? '({})' : '{}');
-      }
-      if (this.generated) {
-        for (_j = 0, _len1 = props.length; _j < _len1; _j++) {
-          node = props[_j];
-          if (node instanceof Value) {
-            throw new Error('cannot have an implicit value in an implicit object');
-          }
-        }
-      }
-      idt = o.indent += TAB;
-      lastNoncom = this.lastNonComment(this.properties);
-      props = (function() {
-        var _k, _len2, _results;
-        _results = [];
-        for (i = _k = 0, _len2 = props.length; _k < _len2; i = ++_k) {
-          prop = props[i];
-          join = i === props.length - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\n' : ',\n';
-          indent = prop instanceof Comment ? '' : idt;
-          if (prop instanceof Value && prop["this"]) {
-            prop = new Assign(prop.properties[0].name, prop, 'object');
-          }
-          if (!(prop instanceof Comment)) {
-            if (!(prop instanceof Assign)) {
-              prop = new Assign(prop, prop, 'object');
-            }
-            (prop.variable.base || prop.variable).asKey = true;
-          }
-          _results.push(indent + prop.compile(o, LEVEL_TOP) + join);
-        }
-        return _results;
-      })();
-      props = props.join('');
-      obj = "{" + (props && '\n' + props + '\n' + this.tab) + "}";
-      if (this.front) {
-        return "(" + obj + ")";
-      } else {
-        return obj;
-      }
-    };
-
-    Obj.prototype.assigns = function(name) {
-      var prop, _i, _len, _ref2;
-      _ref2 = this.properties;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        prop = _ref2[_i];
-        if (prop.assigns(name)) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    return Obj;
-
-  })(Base);
-
-  exports.Arr = Arr = (function(_super) {
-
-    __extends(Arr, _super);
-
-    Arr.name = 'Arr';
-
-    function Arr(objs) {
-      this.objects = objs || [];
-    }
-
-    Arr.prototype.children = ['objects'];
-
-    Arr.prototype.filterImplicitObjects = Call.prototype.filterImplicitObjects;
-
-    Arr.prototype.compileNode = function(o) {
-      var code, obj, objs;
-      if (!this.objects.length) {
-        return '[]';
-      }
-      o.indent += TAB;
-      objs = this.filterImplicitObjects(this.objects);
-      if (code = Splat.compileSplattedArray(o, objs)) {
-        return code;
-      }
-      code = ((function() {
-        var _i, _len, _results;
-        _results = [];
-        for (_i = 0, _len = objs.length; _i < _len; _i++) {
-          obj = objs[_i];
-          _results.push(obj.compile(o, LEVEL_LIST));
-        }
-        return _results;
-      })()).join(', ');
-      if (code.indexOf('\n') >= 0) {
-        return "[\n" + o.indent + code + "\n" + this.tab + "]";
-      } else {
-        return "[" + code + "]";
-      }
-    };
-
-    Arr.prototype.assigns = function(name) {
-      var obj, _i, _len, _ref2;
-      _ref2 = this.objects;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        obj = _ref2[_i];
-        if (obj.assigns(name)) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    return Arr;
-
-  })(Base);
-
-  exports.Class = Class = (function(_super) {
-
-    __extends(Class, _super);
-
-    Class.name = 'Class';
-
-    function Class(variable, parent, body) {
-      this.variable = variable;
-      this.parent = parent;
-      this.body = body != null ? body : new Block;
-      this.boundFuncs = [];
-      this.body.classBody = true;
-    }
-
-    Class.prototype.children = ['variable', 'parent', 'body'];
-
-    Class.prototype.determineName = function() {
-      var decl, tail;
-      if (!this.variable) {
-        return null;
-      }
-      decl = (tail = last(this.variable.properties)) ? tail instanceof Access && tail.name.value : this.variable.base.value;
-      if (__indexOf.call(STRICT_PROSCRIBED, decl) >= 0) {
-        throw SyntaxError("variable name may not be " + decl);
-      }
-      return decl && (decl = IDENTIFIER.test(decl) && decl);
-    };
-
-    Class.prototype.setContext = function(name) {
-      return this.body.traverseChildren(false, function(node) {
-        if (node.classBody) {
-          return false;
-        }
-        if (node instanceof Literal && node.value === 'this') {
-          return node.value = name;
-        } else if (node instanceof Code) {
-          node.klass = name;
-          if (node.bound) {
-            return node.context = name;
-          }
-        }
-      });
-    };
-
-    Class.prototype.addBoundFunctions = function(o) {
-      var bvar, lhs, _i, _len, _ref2, _results;
-      if (this.boundFuncs.length) {
-        _ref2 = this.boundFuncs;
-        _results = [];
-        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-          bvar = _ref2[_i];
-          lhs = (new Value(new Literal("this"), [new Access(bvar)])).compile(o);
-          _results.push(this.ctor.body.unshift(new Literal("" + lhs + " = " + (utility('bind')) + "(" + lhs + ", this)")));
-        }
-        return _results;
-      }
-    };
-
-    Class.prototype.addProperties = function(node, name, o) {
-      var assign, base, exprs, func, props;
-      props = node.base.properties.slice(0);
-      exprs = (function() {
-        var _results;
-        _results = [];
-        while (assign = props.shift()) {
-          if (assign instanceof Assign) {
-            base = assign.variable.base;
-            delete assign.context;
-            func = assign.value;
-            if (base.value === 'constructor') {
-              if (this.ctor) {
-                throw new Error('cannot define more than one constructor in a class');
-              }
-              if (func.bound) {
-                throw new Error('cannot define a constructor as a bound function');
-              }
-              if (func instanceof Code) {
-                assign = this.ctor = func;
-              } else {
-                this.externalCtor = o.scope.freeVariable('class');
-                assign = new Assign(new Literal(this.externalCtor), func);
-              }
-            } else {
-              if (assign.variable["this"]) {
-                func["static"] = true;
-                if (func.bound) {
-                  func.context = name;
-                }
-              } else {
-                assign.variable = new Value(new Literal(name), [new Access(new Literal('prototype')), new Access(base)]);
-                if (func instanceof Code && func.bound) {
-                  this.boundFuncs.push(base);
-                  func.bound = false;
-                }
-              }
-            }
-          }
-          _results.push(assign);
-        }
-        return _results;
-      }).call(this);
-      return compact(exprs);
-    };
-
-    Class.prototype.walkBody = function(name, o) {
-      var _this = this;
-      return this.traverseChildren(false, function(child) {
-        var exps, i, node, _i, _len, _ref2;
-        if (child instanceof Class) {
-          return false;
-        }
-        if (child instanceof Block) {
-          _ref2 = exps = child.expressions;
-          for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
-            node = _ref2[i];
-            if (node instanceof Value && node.isObject(true)) {
-              exps[i] = _this.addProperties(node, name, o);
-            }
-          }
-          return child.expressions = exps = flatten(exps);
-        }
-      });
-    };
-
-    Class.prototype.hoistDirectivePrologue = function() {
-      var expressions, index, node;
-      index = 0;
-      expressions = this.body.expressions;
-      while ((node = expressions[index]) && node instanceof Comment || node instanceof Value && node.isString()) {
-        ++index;
-      }
-      return this.directives = expressions.splice(0, index);
-    };
-
-    Class.prototype.ensureConstructor = function(name) {
-      if (!this.ctor) {
-        this.ctor = new Code;
-        if (this.parent) {
-          this.ctor.body.push(new Literal("" + name + ".__super__.constructor.apply(this, arguments)"));
-        }
-        if (this.externalCtor) {
-          this.ctor.body.push(new Literal("" + this.externalCtor + ".apply(this, arguments)"));
-        }
-        this.ctor.body.makeReturn();
-        this.body.expressions.unshift(this.ctor);
-      }
-      this.ctor.ctor = this.ctor.name = name;
-      this.ctor.klass = null;
-      return this.ctor.noReturn = true;
-    };
-
-    Class.prototype.compileNode = function(o) {
-      var call, decl, klass, lname, name, params, _ref2;
-      decl = this.determineName();
-      name = decl || '_Class';
-      if (name.reserved) {
-        name = "_" + name;
-      }
-      lname = new Literal(name);
-      this.hoistDirectivePrologue();
-      this.setContext(name);
-      this.walkBody(name, o);
-      this.ensureConstructor(name);
-      this.body.spaced = true;
-      if (!(this.ctor instanceof Code)) {
-        this.body.expressions.unshift(this.ctor);
-      }
-      if (decl) {
-        this.body.expressions.unshift(new Assign(new Value(new Literal(name), [new Access(new Literal('name'))]), new Literal("'" + name + "'")));
-      }
-      this.body.expressions.push(lname);
-      (_ref2 = this.body.expressions).unshift.apply(_ref2, this.directives);
-      this.addBoundFunctions(o);
-      call = Closure.wrap(this.body);
-      if (this.parent) {
-        this.superClass = new Literal(o.scope.freeVariable('super', false));
-        this.body.expressions.unshift(new Extends(lname, this.superClass));
-        call.args.push(this.parent);
-        params = call.variable.params || call.variable.base.params;
-        params.push(new Param(this.superClass));
-      }
-      klass = new Parens(call, true);
-      if (this.variable) {
-        klass = new Assign(this.variable, klass);
-      }
-      return klass.compile(o);
-    };
-
-    return Class;
-
-  })(Base);
-
-  exports.Assign = Assign = (function(_super) {
-
-    __extends(Assign, _super);
-
-    Assign.name = 'Assign';
-
-    function Assign(variable, value, context, options) {
-      var forbidden, name, _ref2;
-      this.variable = variable;
-      this.value = value;
-      this.context = context;
-      this.param = options && options.param;
-      this.subpattern = options && options.subpattern;
-      forbidden = (_ref2 = (name = this.variable.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0);
-      if (forbidden && this.context !== 'object') {
-        throw SyntaxError("variable name may not be \"" + name + "\"");
-      }
-    }
-
-    Assign.prototype.children = ['variable', 'value'];
-
-    Assign.prototype.isStatement = function(o) {
-      return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && __indexOf.call(this.context, "?") >= 0;
-    };
-
-    Assign.prototype.assigns = function(name) {
-      return this[this.context === 'object' ? 'value' : 'variable'].assigns(name);
-    };
-
-    Assign.prototype.unfoldSoak = function(o) {
-      return unfoldSoak(o, this, 'variable');
-    };
-
-    Assign.prototype.compileNode = function(o) {
-      var isValue, match, name, val, varBase, _ref2, _ref3, _ref4, _ref5;
-      if (isValue = this.variable instanceof Value) {
-        if (this.variable.isArray() || this.variable.isObject()) {
-          return this.compilePatternMatch(o);
-        }
-        if (this.variable.isSplice()) {
-          return this.compileSplice(o);
-        }
-        if ((_ref2 = this.context) === '||=' || _ref2 === '&&=' || _ref2 === '?=') {
-          return this.compileConditional(o);
-        }
-      }
-      name = this.variable.compile(o, LEVEL_LIST);
-      if (!this.context) {
-        if (!(varBase = this.variable.unwrapAll()).isAssignable()) {
-          throw SyntaxError("\"" + (this.variable.compile(o)) + "\" cannot be assigned.");
-        }
-        if (!(typeof varBase.hasProperties === "function" ? varBase.hasProperties() : void 0)) {
-          if (this.param) {
-            o.scope.add(name, 'var');
-          } else {
-            o.scope.find(name);
-          }
-        }
-      }
-      if (this.value instanceof Code && (match = METHOD_DEF.exec(name))) {
-        if (match[1]) {
-          this.value.klass = match[1];
-        }
-        this.value.name = (_ref3 = (_ref4 = (_ref5 = match[2]) != null ? _ref5 : match[3]) != null ? _ref4 : match[4]) != null ? _ref3 : match[5];
-      }
-      val = this.value.compile(o, LEVEL_LIST);
-      if (this.context === 'object') {
-        return "" + name + ": " + val;
-      }
-      val = name + (" " + (this.context || '=') + " ") + val;
-      if (o.level <= LEVEL_LIST) {
-        return val;
-      } else {
-        return "(" + val + ")";
-      }
-    };
-
-    Assign.prototype.compilePatternMatch = function(o) {
-      var acc, assigns, code, i, idx, isObject, ivar, name, obj, objects, olen, ref, rest, splat, top, val, value, vvar, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8;
-      top = o.level === LEVEL_TOP;
-      value = this.value;
-      objects = this.variable.base.objects;
-      if (!(olen = objects.length)) {
-        code = value.compile(o);
-        if (o.level >= LEVEL_OP) {
-          return "(" + code + ")";
-        } else {
-          return code;
-        }
-      }
-      isObject = this.variable.isObject();
-      if (top && olen === 1 && !((obj = objects[0]) instanceof Splat)) {
-        if (obj instanceof Assign) {
-          _ref2 = obj, (_ref3 = _ref2.variable, idx = _ref3.base), obj = _ref2.value;
-        } else {
-          if (obj.base instanceof Parens) {
-            _ref4 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref4[0], idx = _ref4[1];
-          } else {
-            idx = isObject ? obj["this"] ? obj.properties[0].name : obj : new Literal(0);
-          }
-        }
-        acc = IDENTIFIER.test(idx.unwrap().value || 0);
-        value = new Value(value);
-        value.properties.push(new (acc ? Access : Index)(idx));
-        if (_ref5 = obj.unwrap().value, __indexOf.call(RESERVED, _ref5) >= 0) {
-          throw new SyntaxError("assignment to a reserved word: " + (obj.compile(o)) + " = " + (value.compile(o)));
-        }
-        return new Assign(obj, value, null, {
-          param: this.param
-        }).compile(o, LEVEL_TOP);
-      }
-      vvar = value.compile(o, LEVEL_LIST);
-      assigns = [];
-      splat = false;
-      if (!IDENTIFIER.test(vvar) || this.variable.assigns(vvar)) {
-        assigns.push("" + (ref = o.scope.freeVariable('ref')) + " = " + vvar);
-        vvar = ref;
-      }
-      for (i = _i = 0, _len = objects.length; _i < _len; i = ++_i) {
-        obj = objects[i];
-        idx = i;
-        if (isObject) {
-          if (obj instanceof Assign) {
-            _ref6 = obj, (_ref7 = _ref6.variable, idx = _ref7.base), obj = _ref6.value;
-          } else {
-            if (obj.base instanceof Parens) {
-              _ref8 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref8[0], idx = _ref8[1];
-            } else {
-              idx = obj["this"] ? obj.properties[0].name : obj;
-            }
-          }
-        }
-        if (!splat && obj instanceof Splat) {
-          name = obj.name.unwrap().value;
-          obj = obj.unwrap();
-          val = "" + olen + " <= " + vvar + ".length ? " + (utility('slice')) + ".call(" + vvar + ", " + i;
-          if (rest = olen - i - 1) {
-            ivar = o.scope.freeVariable('i');
-            val += ", " + ivar + " = " + vvar + ".length - " + rest + ") : (" + ivar + " = " + i + ", [])";
-          } else {
-            val += ") : []";
-          }
-          val = new Literal(val);
-          splat = "" + ivar + "++";
-        } else {
-          name = obj.unwrap().value;
-          if (obj instanceof Splat) {
-            obj = obj.name.compile(o);
-            throw new SyntaxError("multiple splats are disallowed in an assignment: " + obj + "...");
-          }
-          if (typeof idx === 'number') {
-            idx = new Literal(splat || idx);
-            acc = false;
-          } else {
-            acc = isObject && IDENTIFIER.test(idx.unwrap().value || 0);
-          }
-          val = new Value(new Literal(vvar), [new (acc ? Access : Index)(idx)]);
-        }
-        if ((name != null) && __indexOf.call(RESERVED, name) >= 0) {
-          throw new SyntaxError("assignment to a reserved word: " + (obj.compile(o)) + " = " + (val.compile(o)));
-        }
-        assigns.push(new Assign(obj, val, null, {
-          param: this.param,
-          subpattern: true
-        }).compile(o, LEVEL_LIST));
-      }
-      if (!(top || this.subpattern)) {
-        assigns.push(vvar);
-      }
-      code = assigns.join(', ');
-      if (o.level < LEVEL_LIST) {
-        return code;
-      } else {
-        return "(" + code + ")";
-      }
-    };
-
-    Assign.prototype.compileConditional = function(o) {
-      var left, right, _ref2;
-      _ref2 = this.variable.cacheReference(o), left = _ref2[0], right = _ref2[1];
-      if (left.base instanceof Literal && left.base.value !== "this" && !o.scope.check(left.base.value)) {
-        throw new Error("the variable \"" + left.base.value + "\" can't be assigned with " + this.context + " because it has not been defined.");
-      }
-      if (__indexOf.call(this.context, "?") >= 0) {
-        o.isExistentialEquals = true;
-      }
-      return new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compile(o);
-    };
-
-    Assign.prototype.compileSplice = function(o) {
-      var code, exclusive, from, fromDecl, fromRef, name, to, valDef, valRef, _ref2, _ref3, _ref4;
-      _ref2 = this.variable.properties.pop().range, from = _ref2.from, to = _ref2.to, exclusive = _ref2.exclusive;
-      name = this.variable.compile(o);
-      _ref3 = (from != null ? from.cache(o, LEVEL_OP) : void 0) || ['0', '0'], fromDecl = _ref3[0], fromRef = _ref3[1];
-      if (to) {
-        if ((from != null ? from.isSimpleNumber() : void 0) && to.isSimpleNumber()) {
-          to = +to.compile(o) - +fromRef;
-          if (!exclusive) {
-            to += 1;
-          }
-        } else {
-          to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef;
-          if (!exclusive) {
-            to += ' + 1';
-          }
-        }
-      } else {
-        to = "9e9";
-      }
-      _ref4 = this.value.cache(o, LEVEL_LIST), valDef = _ref4[0], valRef = _ref4[1];
-      code = "[].splice.apply(" + name + ", [" + fromDecl + ", " + to + "].concat(" + valDef + ")), " + valRef;
-      if (o.level > LEVEL_TOP) {
-        return "(" + code + ")";
-      } else {
-        return code;
-      }
-    };
-
-    return Assign;
-
-  })(Base);
-
-  exports.Code = Code = (function(_super) {
-
-    __extends(Code, _super);
-
-    Code.name = 'Code';
-
-    function Code(params, body, tag) {
-      this.params = params || [];
-      this.body = body || new Block;
-      this.bound = tag === 'boundfunc';
-      if (this.bound) {
-        this.context = '_this';
-      }
-    }
-
-    Code.prototype.children = ['params', 'body'];
-
-    Code.prototype.isStatement = function() {
-      return !!this.ctor;
-    };
-
-    Code.prototype.jumps = NO;
-
-    Code.prototype.compileNode = function(o) {
-      var code, exprs, i, idt, lit, name, p, param, params, ref, splats, uniqs, val, wasEmpty, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _m, _n, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8;
-      o.scope = new Scope(o.scope, this.body, this);
-      o.scope.shared = del(o, 'sharedScope');
-      o.indent += TAB;
-      delete o.bare;
-      delete o.isExistentialEquals;
-      params = [];
-      exprs = [];
-      _ref2 = this.paramNames();
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        name = _ref2[_i];
-        if (!o.scope.check(name)) {
-          o.scope.parameter(name);
-        }
-      }
-      _ref3 = this.params;
-      for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
-        param = _ref3[_j];
-        if (!param.splat) {
-          continue;
-        }
-        _ref4 = this.params;
-        for (_k = 0, _len2 = _ref4.length; _k < _len2; _k++) {
-          p = _ref4[_k];
-          if (p.name.value) {
-            o.scope.add(p.name.value, 'var', true);
-          }
-        }
-        splats = new Assign(new Value(new Arr((function() {
-          var _l, _len3, _ref5, _results;
-          _ref5 = this.params;
-          _results = [];
-          for (_l = 0, _len3 = _ref5.length; _l < _len3; _l++) {
-            p = _ref5[_l];
-            _results.push(p.asReference(o));
-          }
-          return _results;
-        }).call(this))), new Value(new Literal('arguments')));
-        break;
-      }
-      _ref5 = this.params;
-      for (_l = 0, _len3 = _ref5.length; _l < _len3; _l++) {
-        param = _ref5[_l];
-        if (param.isComplex()) {
-          val = ref = param.asReference(o);
-          if (param.value) {
-            val = new Op('?', ref, param.value);
-          }
-          exprs.push(new Assign(new Value(param.name), val, '=', {
-            param: true
-          }));
-        } else {
-          ref = param;
-          if (param.value) {
-            lit = new Literal(ref.name.value + ' == null');
-            val = new Assign(new Value(param.name), param.value, '=');
-            exprs.push(new If(lit, val));
-          }
-        }
-        if (!splats) {
-          params.push(ref);
-        }
-      }
-      wasEmpty = this.body.isEmpty();
-      if (splats) {
-        exprs.unshift(splats);
-      }
-      if (exprs.length) {
-        (_ref6 = this.body.expressions).unshift.apply(_ref6, exprs);
-      }
-      for (i = _m = 0, _len4 = params.length; _m < _len4; i = ++_m) {
-        p = params[i];
-        o.scope.parameter(params[i] = p.compile(o));
-      }
-      uniqs = [];
-      _ref7 = this.paramNames();
-      for (_n = 0, _len5 = _ref7.length; _n < _len5; _n++) {
-        name = _ref7[_n];
-        if (__indexOf.call(uniqs, name) >= 0) {
-          throw SyntaxError("multiple parameters named '" + name + "'");
-        }
-        uniqs.push(name);
-      }
-      if (!(wasEmpty || this.noReturn)) {
-        this.body.makeReturn();
-      }
-      if (this.bound) {
-        if ((_ref8 = o.scope.parent.method) != null ? _ref8.bound : void 0) {
-          this.bound = this.context = o.scope.parent.method.context;
-        } else if (!this["static"]) {
-          o.scope.parent.assign('_this', 'this');
-        }
-      }
-      idt = o.indent;
-      code = 'function';
-      if (this.ctor) {
-        code += ' ' + this.name;
-      }
-      code += '(' + params.join(', ') + ') {';
-      if (!this.body.isEmpty()) {
-        code += "\n" + (this.body.compileWithDeclarations(o)) + "\n" + this.tab;
-      }
-      code += '}';
-      if (this.ctor) {
-        return this.tab + code;
-      }
-      if (this.front || (o.level >= LEVEL_ACCESS)) {
-        return "(" + code + ")";
-      } else {
-        return code;
-      }
-    };
-
-    Code.prototype.paramNames = function() {
-      var names, param, _i, _len, _ref2;
-      names = [];
-      _ref2 = this.params;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        param = _ref2[_i];
-        names.push.apply(names, param.names());
-      }
-      return names;
-    };
-
-    Code.prototype.traverseChildren = function(crossScope, func) {
-      if (crossScope) {
-        return Code.__super__.traverseChildren.call(this, crossScope, func);
-      }
-    };
-
-    return Code;
-
-  })(Base);
-
-  exports.Param = Param = (function(_super) {
-
-    __extends(Param, _super);
-
-    Param.name = 'Param';
-
-    function Param(name, value, splat) {
-      var _ref2;
-      this.name = name;
-      this.value = value;
-      this.splat = splat;
-      if (_ref2 = (name = this.name.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) {
-        throw SyntaxError("parameter name \"" + name + "\" is not allowed");
-      }
-    }
-
-    Param.prototype.children = ['name', 'value'];
-
-    Param.prototype.compile = function(o) {
-      return this.name.compile(o, LEVEL_LIST);
-    };
-
-    Param.prototype.asReference = function(o) {
-      var node;
-      if (this.reference) {
-        return this.reference;
-      }
-      node = this.name;
-      if (node["this"]) {
-        node = node.properties[0].name;
-        if (node.value.reserved) {
-          node = new Literal(o.scope.freeVariable(node.value));
-        }
-      } else if (node.isComplex()) {
-        node = new Literal(o.scope.freeVariable('arg'));
-      }
-      node = new Value(node);
-      if (this.splat) {
-        node = new Splat(node);
-      }
-      return this.reference = node;
-    };
-
-    Param.prototype.isComplex = function() {
-      return this.name.isComplex();
-    };
-
-    Param.prototype.names = function(name) {
-      var atParam, names, obj, _i, _len, _ref2;
-      if (name == null) {
-        name = this.name;
-      }
-      atParam = function(obj) {
-        var value;
-        value = obj.properties[0].name.value;
-        if (value.reserved) {
-          return [];
-        } else {
-          return [value];
-        }
-      };
-      if (name instanceof Literal) {
-        return [name.value];
-      }
-      if (name instanceof Value) {
-        return atParam(name);
-      }
-      names = [];
-      _ref2 = name.objects;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        obj = _ref2[_i];
-        if (obj instanceof Assign) {
-          names.push(obj.variable.base.value);
-        } else if (obj.isArray() || obj.isObject()) {
-          names.push.apply(names, this.names(obj.base));
-        } else if (obj["this"]) {
-          names.push.apply(names, atParam(obj));
-        } else {
-          names.push(obj.base.value);
-        }
-      }
-      return names;
-    };
-
-    return Param;
-
-  })(Base);
-
-  exports.Splat = Splat = (function(_super) {
-
-    __extends(Splat, _super);
-
-    Splat.name = 'Splat';
-
-    Splat.prototype.children = ['name'];
-
-    Splat.prototype.isAssignable = YES;
-
-    function Splat(name) {
-      this.name = name.compile ? name : new Literal(name);
-    }
-
-    Splat.prototype.assigns = function(name) {
-      return this.name.assigns(name);
-    };
-
-    Splat.prototype.compile = function(o) {
-      if (this.index != null) {
-        return this.compileParam(o);
-      } else {
-        return this.name.compile(o);
-      }
-    };
-
-    Splat.prototype.unwrap = function() {
-      return this.name;
-    };
-
-    Splat.compileSplattedArray = function(o, list, apply) {
-      var args, base, code, i, index, node, _i, _len;
-      index = -1;
-      while ((node = list[++index]) && !(node instanceof Splat)) {
-        continue;
-      }
-      if (index >= list.length) {
-        return '';
-      }
-      if (list.length === 1) {
-        code = list[0].compile(o, LEVEL_LIST);
-        if (apply) {
-          return code;
-        }
-        return "" + (utility('slice')) + ".call(" + code + ")";
-      }
-      args = list.slice(index);
-      for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) {
-        node = args[i];
-        code = node.compile(o, LEVEL_LIST);
-        args[i] = node instanceof Splat ? "" + (utility('slice')) + ".call(" + code + ")" : "[" + code + "]";
-      }
-      if (index === 0) {
-        return args[0] + (".concat(" + (args.slice(1).join(', ')) + ")");
-      }
-      base = (function() {
-        var _j, _len1, _ref2, _results;
-        _ref2 = list.slice(0, index);
-        _results = [];
-        for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
-          node = _ref2[_j];
-          _results.push(node.compile(o, LEVEL_LIST));
-        }
-        return _results;
-      })();
-      return "[" + (base.join(', ')) + "].concat(" + (args.join(', ')) + ")";
-    };
-
-    return Splat;
-
-  })(Base);
-
-  exports.While = While = (function(_super) {
-
-    __extends(While, _super);
-
-    While.name = 'While';
-
-    function While(condition, options) {
-      this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition;
-      this.guard = options != null ? options.guard : void 0;
-    }
-
-    While.prototype.children = ['condition', 'guard', 'body'];
-
-    While.prototype.isStatement = YES;
-
-    While.prototype.makeReturn = function(res) {
-      if (res) {
-        return While.__super__.makeReturn.apply(this, arguments);
-      } else {
-        this.returns = !this.jumps({
-          loop: true
-        });
-        return this;
-      }
-    };
-
-    While.prototype.addBody = function(body) {
-      this.body = body;
-      return this;
-    };
-
-    While.prototype.jumps = function() {
-      var expressions, node, _i, _len;
-      expressions = this.body.expressions;
-      if (!expressions.length) {
-        return false;
-      }
-      for (_i = 0, _len = expressions.length; _i < _len; _i++) {
-        node = expressions[_i];
-        if (node.jumps({
-          loop: true
-        })) {
-          return node;
-        }
-      }
-      return false;
-    };
-
-    While.prototype.compileNode = function(o) {
-      var body, code, rvar, set;
-      o.indent += TAB;
-      set = '';
-      body = this.body;
-      if (body.isEmpty()) {
-        body = '';
-      } else {
-        if (this.returns) {
-          body.makeReturn(rvar = o.scope.freeVariable('results'));
-          set = "" + this.tab + rvar + " = [];\n";
-        }
-        if (this.guard) {
-          if (body.expressions.length > 1) {
-            body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
-          } else {
-            if (this.guard) {
-              body = Block.wrap([new If(this.guard, body)]);
-            }
-          }
-        }
-        body = "\n" + (body.compile(o, LEVEL_TOP)) + "\n" + this.tab;
-      }
-      code = set + this.tab + ("while (" + (this.condition.compile(o, LEVEL_PAREN)) + ") {" + body + "}");
-      if (this.returns) {
-        code += "\n" + this.tab + "return " + rvar + ";";
-      }
-      return code;
-    };
-
-    return While;
-
-  })(Base);
-
-  exports.Op = Op = (function(_super) {
-    var CONVERSIONS, INVERSIONS;
-
-    __extends(Op, _super);
-
-    Op.name = 'Op';
-
-    function Op(op, first, second, flip) {
-      if (op === 'in') {
-        return new In(first, second);
-      }
-      if (op === 'do') {
-        return this.generateDo(first);
-      }
-      if (op === 'new') {
-        if (first instanceof Call && !first["do"] && !first.isNew) {
-          return first.newInstance();
-        }
-        if (first instanceof Code && first.bound || first["do"]) {
-          first = new Parens(first);
-        }
-      }
-      this.operator = CONVERSIONS[op] || op;
-      this.first = first;
-      this.second = second;
-      this.flip = !!flip;
-      return this;
-    }
-
-    CONVERSIONS = {
-      '==': '===',
-      '!=': '!==',
-      'of': 'in'
-    };
-
-    INVERSIONS = {
-      '!==': '===',
-      '===': '!=='
-    };
-
-    Op.prototype.children = ['first', 'second'];
-
-    Op.prototype.isSimpleNumber = NO;
-
-    Op.prototype.isUnary = function() {
-      return !this.second;
-    };
-
-    Op.prototype.isComplex = function() {
-      var _ref2;
-      return !(this.isUnary() && ((_ref2 = this.operator) === '+' || _ref2 === '-')) || this.first.isComplex();
-    };
-
-    Op.prototype.isChainable = function() {
-      var _ref2;
-      return (_ref2 = this.operator) === '<' || _ref2 === '>' || _ref2 === '>=' || _ref2 === '<=' || _ref2 === '===' || _ref2 === '!==';
-    };
-
-    Op.prototype.invert = function() {
-      var allInvertable, curr, fst, op, _ref2;
-      if (this.isChainable() && this.first.isChainable()) {
-        allInvertable = true;
-        curr = this;
-        while (curr && curr.operator) {
-          allInvertable && (allInvertable = curr.operator in INVERSIONS);
-          curr = curr.first;
-        }
-        if (!allInvertable) {
-          return new Parens(this).invert();
-        }
-        curr = this;
-        while (curr && curr.operator) {
-          curr.invert = !curr.invert;
-          curr.operator = INVERSIONS[curr.operator];
-          curr = curr.first;
-        }
-        return this;
-      } else if (op = INVERSIONS[this.operator]) {
-        this.operator = op;
-        if (this.first.unwrap() instanceof Op) {
-          this.first.invert();
-        }
-        return this;
-      } else if (this.second) {
-        return new Parens(this).invert();
-      } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((_ref2 = fst.operator) === '!' || _ref2 === 'in' || _ref2 === 'instanceof')) {
-        return fst;
-      } else {
-        return new Op('!', this);
-      }
-    };
-
-    Op.prototype.unfoldSoak = function(o) {
-      var _ref2;
-      return ((_ref2 = this.operator) === '++' || _ref2 === '--' || _ref2 === 'delete') && unfoldSoak(o, this, 'first');
-    };
-
-    Op.prototype.generateDo = function(exp) {
-      var call, func, param, passedParams, ref, _i, _len, _ref2;
-      passedParams = [];
-      func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp;
-      _ref2 = func.params || [];
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        param = _ref2[_i];
-        if (param.value) {
-          passedParams.push(param.value);
-          delete param.value;
-        } else {
-          passedParams.push(param);
-        }
-      }
-      call = new Call(exp, passedParams);
-      call["do"] = true;
-      return call;
-    };
-
-    Op.prototype.compileNode = function(o) {
-      var code, isChain, _ref2, _ref3;
-      isChain = this.isChainable() && this.first.isChainable();
-      if (!isChain) {
-        this.first.front = this.front;
-      }
-      if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) {
-        throw SyntaxError('delete operand may not be argument or var');
-      }
-      if (((_ref2 = this.operator) === '--' || _ref2 === '++') && (_ref3 = this.first.unwrapAll().value, __indexOf.call(STRICT_PROSCRIBED, _ref3) >= 0)) {
-        throw SyntaxError('prefix increment/decrement may not have eval or arguments operand');
-      }
-      if (this.isUnary()) {
-        return this.compileUnary(o);
-      }
-      if (isChain) {
-        return this.compileChain(o);
-      }
-      if (this.operator === '?') {
-        return this.compileExistence(o);
-      }
-      code = this.first.compile(o, LEVEL_OP) + ' ' + this.operator + ' ' + this.second.compile(o, LEVEL_OP);
-      if (o.level <= LEVEL_OP) {
-        return code;
-      } else {
-        return "(" + code + ")";
-      }
-    };
-
-    Op.prototype.compileChain = function(o) {
-      var code, fst, shared, _ref2;
-      _ref2 = this.first.second.cache(o), this.first.second = _ref2[0], shared = _ref2[1];
-      fst = this.first.compile(o, LEVEL_OP);
-      code = "" + fst + " " + (this.invert ? '&&' : '||') + " " + (shared.compile(o)) + " " + this.operator + " " + (this.second.compile(o, LEVEL_OP));
-      return "(" + code + ")";
-    };
-
-    Op.prototype.compileExistence = function(o) {
-      var fst, ref;
-      if (this.first.isComplex() && o.level > LEVEL_TOP) {
-        ref = new Literal(o.scope.freeVariable('ref'));
-        fst = new Parens(new Assign(ref, this.first));
-      } else {
-        fst = this.first;
-        ref = fst;
-      }
-      return new If(new Existence(fst), ref, {
-        type: 'if'
-      }).addElse(this.second).compile(o);
-    };
-
-    Op.prototype.compileUnary = function(o) {
-      var op, parts, plusMinus;
-      if (o.level >= LEVEL_ACCESS) {
-        return (new Parens(this)).compile(o);
-      }
-      parts = [op = this.operator];
-      plusMinus = op === '+' || op === '-';
-      if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) {
-        parts.push(' ');
-      }
-      if ((plusMinus && this.first instanceof Op) || (op === 'new' && this.first.isStatement(o))) {
-        this.first = new Parens(this.first);
-      }
-      parts.push(this.first.compile(o, LEVEL_OP));
-      if (this.flip) {
-        parts.reverse();
-      }
-      return parts.join('');
-    };
-
-    Op.prototype.toString = function(idt) {
-      return Op.__super__.toString.call(this, idt, this.constructor.name + ' ' + this.operator);
-    };
-
-    return Op;
-
-  })(Base);
-
-  exports.In = In = (function(_super) {
-
-    __extends(In, _super);
-
-    In.name = 'In';
-
-    function In(object, array) {
-      this.object = object;
-      this.array = array;
-    }
-
-    In.prototype.children = ['object', 'array'];
-
-    In.prototype.invert = NEGATE;
-
-    In.prototype.compileNode = function(o) {
-      var hasSplat, obj, _i, _len, _ref2;
-      if (this.array instanceof Value && this.array.isArray()) {
-        _ref2 = this.array.base.objects;
-        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-          obj = _ref2[_i];
-          if (!(obj instanceof Splat)) {
-            continue;
-          }
-          hasSplat = true;
-          break;
-        }
-        if (!hasSplat) {
-          return this.compileOrTest(o);
-        }
-      }
-      return this.compileLoopTest(o);
-    };
-
-    In.prototype.compileOrTest = function(o) {
-      var cmp, cnj, i, item, ref, sub, tests, _ref2, _ref3;
-      if (this.array.base.objects.length === 0) {
-        return "" + (!!this.negated);
-      }
-      _ref2 = this.object.cache(o, LEVEL_OP), sub = _ref2[0], ref = _ref2[1];
-      _ref3 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = _ref3[0], cnj = _ref3[1];
-      tests = (function() {
-        var _i, _len, _ref4, _results;
-        _ref4 = this.array.base.objects;
-        _results = [];
-        for (i = _i = 0, _len = _ref4.length; _i < _len; i = ++_i) {
-          item = _ref4[i];
-          _results.push((i ? ref : sub) + cmp + item.compile(o, LEVEL_ACCESS));
-        }
-        return _results;
-      }).call(this);
-      tests = tests.join(cnj);
-      if (o.level < LEVEL_OP) {
-        return tests;
-      } else {
-        return "(" + tests + ")";
-      }
-    };
-
-    In.prototype.compileLoopTest = function(o) {
-      var code, ref, sub, _ref2;
-      _ref2 = this.object.cache(o, LEVEL_LIST), sub = _ref2[0], ref = _ref2[1];
-      code = utility('indexOf') + (".call(" + (this.array.compile(o, LEVEL_LIST)) + ", " + ref + ") ") + (this.negated ? '< 0' : '>= 0');
-      if (sub === ref) {
-        return code;
-      }
-      code = sub + ', ' + code;
-      if (o.level < LEVEL_LIST) {
-        return code;
-      } else {
-        return "(" + code + ")";
-      }
-    };
-
-    In.prototype.toString = function(idt) {
-      return In.__super__.toString.call(this, idt, this.constructor.name + (this.negated ? '!' : ''));
-    };
-
-    return In;
-
-  })(Base);
-
-  exports.Try = Try = (function(_super) {
-
-    __extends(Try, _super);
-
-    Try.name = 'Try';
-
-    function Try(attempt, error, recovery, ensure) {
-      this.attempt = attempt;
-      this.error = error;
-      this.recovery = recovery;
-      this.ensure = ensure;
-    }
-
-    Try.prototype.children = ['attempt', 'recovery', 'ensure'];
-
-    Try.prototype.isStatement = YES;
-
-    Try.prototype.jumps = function(o) {
-      var _ref2;
-      return this.attempt.jumps(o) || ((_ref2 = this.recovery) != null ? _ref2.jumps(o) : void 0);
-    };
-
-    Try.prototype.makeReturn = function(res) {
-      if (this.attempt) {
-        this.attempt = this.attempt.makeReturn(res);
-      }
-      if (this.recovery) {
-        this.recovery = this.recovery.makeReturn(res);
-      }
-      return this;
-    };
-
-    Try.prototype.compileNode = function(o) {
-      var catchPart, ensurePart, errorPart, tryPart;
-      o.indent += TAB;
-      errorPart = this.error ? " (" + (this.error.compile(o)) + ") " : ' ';
-      tryPart = this.attempt.compile(o, LEVEL_TOP);
-      catchPart = (function() {
-        var _ref2;
-        if (this.recovery) {
-          if (_ref2 = this.error.value, __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) {
-            throw SyntaxError("catch variable may not be \"" + this.error.value + "\"");
-          }
-          if (!o.scope.check(this.error.value)) {
-            o.scope.add(this.error.value, 'param');
-          }
-          return " catch" + errorPart + "{\n" + (this.recovery.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}";
-        } else if (!(this.ensure || this.recovery)) {
-          return ' catch (_error) {}';
-        }
-      }).call(this);
-      ensurePart = this.ensure ? " finally {\n" + (this.ensure.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}" : '';
-      return "" + this.tab + "try {\n" + tryPart + "\n" + this.tab + "}" + (catchPart || '') + ensurePart;
-    };
-
-    return Try;
-
-  })(Base);
-
-  exports.Throw = Throw = (function(_super) {
-
-    __extends(Throw, _super);
-
-    Throw.name = 'Throw';
-
-    function Throw(expression) {
-      this.expression = expression;
-    }
-
-    Throw.prototype.children = ['expression'];
-
-    Throw.prototype.isStatement = YES;
-
-    Throw.prototype.jumps = NO;
-
-    Throw.prototype.makeReturn = THIS;
-
-    Throw.prototype.compileNode = function(o) {
-      return this.tab + ("throw " + (this.expression.compile(o)) + ";");
-    };
-
-    return Throw;
-
-  })(Base);
-
-  exports.Existence = Existence = (function(_super) {
-
-    __extends(Existence, _super);
-
-    Existence.name = 'Existence';
-
-    function Existence(expression) {
-      this.expression = expression;
-    }
-
-    Existence.prototype.children = ['expression'];
-
-    Existence.prototype.invert = NEGATE;
-
-    Existence.prototype.compileNode = function(o) {
-      var cmp, cnj, code, _ref2;
-      this.expression.front = this.front;
-      code = this.expression.compile(o, LEVEL_OP);
-      if (IDENTIFIER.test(code) && !o.scope.check(code)) {
-        _ref2 = this.negated ? ['===', '||'] : ['!==', '&&'], cmp = _ref2[0], cnj = _ref2[1];
-        code = "typeof " + code + " " + cmp + " \"undefined\" " + cnj + " " + code + " " + cmp + " null";
-      } else {
-        code = "" + code + " " + (this.negated ? '==' : '!=') + " null";
-      }
-      if (o.level <= LEVEL_COND) {
-        return code;
-      } else {
-        return "(" + code + ")";
-      }
-    };
-
-    return Existence;
-
-  })(Base);
-
-  exports.Parens = Parens = (function(_super) {
-
-    __extends(Parens, _super);
-
-    Parens.name = 'Parens';
-
-    function Parens(body) {
-      this.body = body;
-    }
-
-    Parens.prototype.children = ['body'];
-
-    Parens.prototype.unwrap = function() {
-      return this.body;
-    };
-
-    Parens.prototype.isComplex = function() {
-      return this.body.isComplex();
-    };
-
-    Parens.prototype.compileNode = function(o) {
-      var bare, code, expr;
-      expr = this.body.unwrap();
-      if (expr instanceof Value && expr.isAtomic()) {
-        expr.front = this.front;
-        return expr.compile(o);
-      }
-      code = expr.compile(o, LEVEL_PAREN);
-      bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns));
-      if (bare) {
-        return code;
-      } else {
-        return "(" + code + ")";
-      }
-    };
-
-    return Parens;
-
-  })(Base);
-
-  exports.For = For = (function(_super) {
-
-    __extends(For, _super);
-
-    For.name = 'For';
-
-    function For(body, source) {
-      var _ref2;
-      this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index;
-      this.body = Block.wrap([body]);
-      this.own = !!source.own;
-      this.object = !!source.object;
-      if (this.object) {
-        _ref2 = [this.index, this.name], this.name = _ref2[0], this.index = _ref2[1];
-      }
-      if (this.index instanceof Value) {
-        throw SyntaxError('index cannot be a pattern matching expression');
-      }
-      this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length;
-      this.pattern = this.name instanceof Value;
-      if (this.range && this.index) {
-        throw SyntaxError('indexes do not apply to range loops');
-      }
-      if (this.range && this.pattern) {
-        throw SyntaxError('cannot pattern match over range loops');
-      }
-      this.returns = false;
-    }
-
-    For.prototype.children = ['body', 'source', 'guard', 'step'];
-
-    For.prototype.compileNode = function(o) {
-      var body, defPart, forPart, forVarPart, guardPart, idt1, index, ivar, kvar, kvarAssign, lastJumps, lvar, name, namePart, ref, resultPart, returnResult, rvar, scope, source, stepPart, stepvar, svar, varPart, _ref2;
-      body = Block.wrap([this.body]);
-      lastJumps = (_ref2 = last(body.expressions)) != null ? _ref2.jumps() : void 0;
-      if (lastJumps && lastJumps instanceof Return) {
-        this.returns = false;
-      }
-      source = this.range ? this.source.base : this.source;
-      scope = o.scope;
-      name = this.name && this.name.compile(o, LEVEL_LIST);
-      index = this.index && this.index.compile(o, LEVEL_LIST);
-      if (name && !this.pattern) {
-        scope.find(name, {
-          immediate: true
-        });
-      }
-      if (index) {
-        scope.find(index, {
-          immediate: true
-        });
-      }
-      if (this.returns) {
-        rvar = scope.freeVariable('results');
-      }
-      ivar = (this.object && index) || scope.freeVariable('i');
-      kvar = (this.range && name) || index || ivar;
-      kvarAssign = kvar !== ivar ? "" + kvar + " = " : "";
-      if (this.step && !this.range) {
-        stepvar = scope.freeVariable("step");
-      }
-      if (this.pattern) {
-        name = ivar;
-      }
-      varPart = '';
-      guardPart = '';
-      defPart = '';
-      idt1 = this.tab + TAB;
-      if (this.range) {
-        forPart = source.compile(merge(o, {
-          index: ivar,
-          name: name,
-          step: this.step
-        }));
-      } else {
-        svar = this.source.compile(o, LEVEL_LIST);
-        if ((name || this.own) && !IDENTIFIER.test(svar)) {
-          defPart = "" + this.tab + (ref = scope.freeVariable('ref')) + " = " + svar + ";\n";
-          svar = ref;
-        }
-        if (name && !this.pattern) {
-          namePart = "" + name + " = " + svar + "[" + kvar + "]";
-        }
-        if (!this.object) {
-          lvar = scope.freeVariable('len');
-          forVarPart = "" + kvarAssign + ivar + " = 0, " + lvar + " = " + svar + ".length";
-          if (this.step) {
-            forVarPart += ", " + stepvar + " = " + (this.step.compile(o, LEVEL_OP));
-          }
-          stepPart = "" + kvarAssign + (this.step ? "" + ivar + " += " + stepvar : (kvar !== ivar ? "++" + ivar : "" + ivar + "++"));
-          forPart = "" + forVarPart + "; " + ivar + " < " + lvar + "; " + stepPart;
-        }
-      }
-      if (this.returns) {
-        resultPart = "" + this.tab + rvar + " = [];\n";
-        returnResult = "\n" + this.tab + "return " + rvar + ";";
-        body.makeReturn(rvar);
-      }
-      if (this.guard) {
-        if (body.expressions.length > 1) {
-          body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
-        } else {
-          if (this.guard) {
-            body = Block.wrap([new If(this.guard, body)]);
-          }
-        }
-      }
-      if (this.pattern) {
-        body.expressions.unshift(new Assign(this.name, new Literal("" + svar + "[" + kvar + "]")));
-      }
-      defPart += this.pluckDirectCall(o, body);
-      if (namePart) {
-        varPart = "\n" + idt1 + namePart + ";";
-      }
-      if (this.object) {
-        forPart = "" + kvar + " in " + svar;
-        if (this.own) {
-          guardPart = "\n" + idt1 + "if (!" + (utility('hasProp')) + ".call(" + svar + ", " + kvar + ")) continue;";
-        }
-      }
-      body = body.compile(merge(o, {
-        indent: idt1
-      }), LEVEL_TOP);
-      if (body) {
-        body = '\n' + body + '\n';
-      }
-      return "" + defPart + (resultPart || '') + this.tab + "for (" + forPart + ") {" + guardPart + varPart + body + this.tab + "}" + (returnResult || '');
-    };
-
-    For.prototype.pluckDirectCall = function(o, body) {
-      var base, defs, expr, fn, idx, ref, val, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
-      defs = '';
-      _ref2 = body.expressions;
-      for (idx = _i = 0, _len = _ref2.length; _i < _len; idx = ++_i) {
-        expr = _ref2[idx];
-        expr = expr.unwrapAll();
-        if (!(expr instanceof Call)) {
-          continue;
-        }
-        val = expr.variable.unwrapAll();
-        if (!((val instanceof Code) || (val instanceof Value && ((_ref3 = val.base) != null ? _ref3.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((_ref4 = (_ref5 = val.properties[0].name) != null ? _ref5.value : void 0) === 'call' || _ref4 === 'apply')))) {
-          continue;
-        }
-        fn = ((_ref6 = val.base) != null ? _ref6.unwrapAll() : void 0) || val;
-        ref = new Literal(o.scope.freeVariable('fn'));
-        base = new Value(ref);
-        if (val.base) {
-          _ref7 = [base, val], val.base = _ref7[0], base = _ref7[1];
-        }
-        body.expressions[idx] = new Call(base, expr.args);
-        defs += this.tab + new Assign(ref, fn).compile(o, LEVEL_TOP) + ';\n';
-      }
-      return defs;
-    };
-
-    return For;
-
-  })(While);
-
-  exports.Switch = Switch = (function(_super) {
-
-    __extends(Switch, _super);
-
-    Switch.name = 'Switch';
-
-    function Switch(subject, cases, otherwise) {
-      this.subject = subject;
-      this.cases = cases;
-      this.otherwise = otherwise;
-    }
-
-    Switch.prototype.children = ['subject', 'cases', 'otherwise'];
-
-    Switch.prototype.isStatement = YES;
-
-    Switch.prototype.jumps = function(o) {
-      var block, conds, _i, _len, _ref2, _ref3, _ref4;
-      if (o == null) {
-        o = {
-          block: true
-        };
-      }
-      _ref2 = this.cases;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        _ref3 = _ref2[_i], conds = _ref3[0], block = _ref3[1];
-        if (block.jumps(o)) {
-          return block;
-        }
-      }
-      return (_ref4 = this.otherwise) != null ? _ref4.jumps(o) : void 0;
-    };
-
-    Switch.prototype.makeReturn = function(res) {
-      var pair, _i, _len, _ref2, _ref3;
-      _ref2 = this.cases;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        pair = _ref2[_i];
-        pair[1].makeReturn(res);
-      }
-      if (res) {
-        this.otherwise || (this.otherwise = new Block([new Literal('void 0')]));
-      }
-      if ((_ref3 = this.otherwise) != null) {
-        _ref3.makeReturn(res);
-      }
-      return this;
-    };
-
-    Switch.prototype.compileNode = function(o) {
-      var block, body, code, cond, conditions, expr, i, idt1, idt2, _i, _j, _len, _len1, _ref2, _ref3, _ref4, _ref5;
-      idt1 = o.indent + TAB;
-      idt2 = o.indent = idt1 + TAB;
-      code = this.tab + ("switch (" + (((_ref2 = this.subject) != null ? _ref2.compile(o, LEVEL_PAREN) : void 0) || false) + ") {\n");
-      _ref3 = this.cases;
-      for (i = _i = 0, _len = _ref3.length; _i < _len; i = ++_i) {
-        _ref4 = _ref3[i], conditions = _ref4[0], block = _ref4[1];
-        _ref5 = flatten([conditions]);
-        for (_j = 0, _len1 = _ref5.length; _j < _len1; _j++) {
-          cond = _ref5[_j];
-          if (!this.subject) {
-            cond = cond.invert();
-          }
-          code += idt1 + ("case " + (cond.compile(o, LEVEL_PAREN)) + ":\n");
-        }
-        if (body = block.compile(o, LEVEL_TOP)) {
-          code += body + '\n';
-        }
-        if (i === this.cases.length - 1 && !this.otherwise) {
-          break;
-        }
-        expr = this.lastNonComment(block.expressions);
-        if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) {
-          continue;
-        }
-        code += idt2 + 'break;\n';
-      }
-      if (this.otherwise && this.otherwise.expressions.length) {
-        code += idt1 + ("default:\n" + (this.otherwise.compile(o, LEVEL_TOP)) + "\n");
-      }
-      return code + this.tab + '}';
-    };
-
-    return Switch;
-
-  })(Base);
-
-  exports.If = If = (function(_super) {
-
-    __extends(If, _super);
-
-    If.name = 'If';
-
-    function If(condition, body, options) {
-      this.body = body;
-      if (options == null) {
-        options = {};
-      }
-      this.condition = options.type === 'unless' ? condition.invert() : condition;
-      this.elseBody = null;
-      this.isChain = false;
-      this.soak = options.soak;
-    }
-
-    If.prototype.children = ['condition', 'body', 'elseBody'];
-
-    If.prototype.bodyNode = function() {
-      var _ref2;
-      return (_ref2 = this.body) != null ? _ref2.unwrap() : void 0;
-    };
-
-    If.prototype.elseBodyNode = function() {
-      var _ref2;
-      return (_ref2 = this.elseBody) != null ? _ref2.unwrap() : void 0;
-    };
-
-    If.prototype.addElse = function(elseBody) {
-      if (this.isChain) {
-        this.elseBodyNode().addElse(elseBody);
-      } else {
-        this.isChain = elseBody instanceof If;
-        this.elseBody = this.ensureBlock(elseBody);
-      }
-      return this;
-    };
-
-    If.prototype.isStatement = function(o) {
-      var _ref2;
-      return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((_ref2 = this.elseBodyNode()) != null ? _ref2.isStatement(o) : void 0);
-    };
-
-    If.prototype.jumps = function(o) {
-      var _ref2;
-      return this.body.jumps(o) || ((_ref2 = this.elseBody) != null ? _ref2.jumps(o) : void 0);
-    };
-
-    If.prototype.compileNode = function(o) {
-      if (this.isStatement(o)) {
-        return this.compileStatement(o);
-      } else {
-        return this.compileExpression(o);
-      }
-    };
-
-    If.prototype.makeReturn = function(res) {
-      if (res) {
-        this.elseBody || (this.elseBody = new Block([new Literal('void 0')]));
-      }
-      this.body && (this.body = new Block([this.body.makeReturn(res)]));
-      this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(res)]));
-      return this;
-    };
-
-    If.prototype.ensureBlock = function(node) {
-      if (node instanceof Block) {
-        return node;
-      } else {
-        return new Block([node]);
-      }
-    };
-
-    If.prototype.compileStatement = function(o) {
-      var body, child, cond, exeq, ifPart;
-      child = del(o, 'chainChild');
-      exeq = del(o, 'isExistentialEquals');
-      if (exeq) {
-        return new If(this.condition.invert(), this.elseBodyNode(), {
-          type: 'if'
-        }).compile(o);
-      }
-      cond = this.condition.compile(o, LEVEL_PAREN);
-      o.indent += TAB;
-      body = this.ensureBlock(this.body);
-      ifPart = "if (" + cond + ") {\n" + (body.compile(o)) + "\n" + this.tab + "}";
-      if (!child) {
-        ifPart = this.tab + ifPart;
-      }
-      if (!this.elseBody) {
-        return ifPart;
-      }
-      return ifPart + ' else ' + (this.isChain ? (o.indent = this.tab, o.chainChild = true, this.elseBody.unwrap().compile(o, LEVEL_TOP)) : "{\n" + (this.elseBody.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}");
-    };
-
-    If.prototype.compileExpression = function(o) {
-      var alt, body, code, cond;
-      cond = this.condition.compile(o, LEVEL_COND);
-      body = this.bodyNode().compile(o, LEVEL_LIST);
-      alt = this.elseBodyNode() ? this.elseBodyNode().compile(o, LEVEL_LIST) : 'void 0';
-      code = "" + cond + " ? " + body + " : " + alt;
-      if (o.level >= LEVEL_COND) {
-        return "(" + code + ")";
-      } else {
-        return code;
-      }
-    };
-
-    If.prototype.unfoldSoak = function() {
-      return this.soak && this;
-    };
-
-    return If;
-
-  })(Base);
-
-  Closure = {
-    wrap: function(expressions, statement, noReturn) {
-      var args, call, func, mentionsArgs, meth;
-      if (expressions.jumps()) {
-        return expressions;
-      }
-      func = new Code([], Block.wrap([expressions]));
-      args = [];
-      if ((mentionsArgs = expressions.contains(this.literalArgs)) || expressions.contains(this.literalThis)) {
-        meth = new Literal(mentionsArgs ? 'apply' : 'call');
-        args = [new Literal('this')];
-        if (mentionsArgs) {
-          args.push(new Literal('arguments'));
-        }
-        func = new Value(func, [new Access(meth)]);
-      }
-      func.noReturn = noReturn;
-      call = new Call(func, args);
-      if (statement) {
-        return Block.wrap([call]);
-      } else {
-        return call;
-      }
-    },
-    literalArgs: function(node) {
-      return node instanceof Literal && node.value === 'arguments' && !node.asKey;
-    },
-    literalThis: function(node) {
-      return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound);
-    }
-  };
-
-  unfoldSoak = function(o, parent, name) {
-    var ifn;
-    if (!(ifn = parent[name].unfoldSoak(o))) {
-      return;
-    }
-    parent[name] = ifn.body;
-    ifn.body = new Value(parent);
-    return ifn;
-  };
-
-  UTILITIES = {
-    "extends": function() {
-      return "function(child, parent) { for (var key in parent) { if (" + (utility('hasProp')) + ".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }";
-    },
-    bind: function() {
-      return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }';
-    },
-    indexOf: function() {
-      return "[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }";
-    },
-    hasProp: function() {
-      return '{}.hasOwnProperty';
-    },
-    slice: function() {
-      return '[].slice';
-    }
-  };
-
-  LEVEL_TOP = 1;
-
-  LEVEL_PAREN = 2;
-
-  LEVEL_LIST = 3;
-
-  LEVEL_COND = 4;
-
-  LEVEL_OP = 5;
-
-  LEVEL_ACCESS = 6;
-
-  TAB = '  ';
-
-  IDENTIFIER_STR = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*";
-
-  IDENTIFIER = RegExp("^" + IDENTIFIER_STR + "$");
-
-  SIMPLENUM = /^[+-]?\d+$/;
-
-  METHOD_DEF = RegExp("^(?:(" + IDENTIFIER_STR + ")\\.prototype(?:\\.(" + IDENTIFIER_STR + ")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\]))|(" + IDENTIFIER_STR + ")$");
-
-  IS_STRING = /^['"]/;
-
-  utility = function(name) {
-    var ref;
-    ref = "__" + name;
-    Scope.root.assign(ref, UTILITIES[name]());
-    return ref;
-  };
-
-  multident = function(code, tab) {
-    code = code.replace(/\n/g, '$&' + tab);
-    return code.replace(/\s+$/, '');
-  };
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/optparse.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/optparse.js
deleted file mode 100644
index 0e4802b..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/optparse.js
+++ /dev/null
@@ -1,140 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments;
-
-  exports.OptionParser = OptionParser = (function() {
-
-    OptionParser.name = 'OptionParser';
-
-    function OptionParser(rules, banner) {
-      this.banner = banner;
-      this.rules = buildRules(rules);
-    }
-
-    OptionParser.prototype.parse = function(args) {
-      var arg, i, isOption, matchedRule, options, originalArgs, pos, rule, seenNonOptionArg, skippingArgument, value, _i, _j, _len, _len1, _ref;
-      options = {
-        "arguments": []
-      };
-      skippingArgument = false;
-      originalArgs = args;
-      args = normalizeArguments(args);
-      for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) {
-        arg = args[i];
-        if (skippingArgument) {
-          skippingArgument = false;
-          continue;
-        }
-        if (arg === '--') {
-          pos = originalArgs.indexOf('--');
-          options["arguments"] = options["arguments"].concat(originalArgs.slice(pos + 1));
-          break;
-        }
-        isOption = !!(arg.match(LONG_FLAG) || arg.match(SHORT_FLAG));
-        seenNonOptionArg = options["arguments"].length > 0;
-        if (!seenNonOptionArg) {
-          matchedRule = false;
-          _ref = this.rules;
-          for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
-            rule = _ref[_j];
-            if (rule.shortFlag === arg || rule.longFlag === arg) {
-              value = true;
-              if (rule.hasArgument) {
-                skippingArgument = true;
-                value = args[i + 1];
-              }
-              options[rule.name] = rule.isList ? (options[rule.name] || []).concat(value) : value;
-              matchedRule = true;
-              break;
-            }
-          }
-          if (isOption && !matchedRule) {
-            throw new Error("unrecognized option: " + arg);
-          }
-        }
-        if (seenNonOptionArg || !isOption) {
-          options["arguments"].push(arg);
-        }
-      }
-      return options;
-    };
-
-    OptionParser.prototype.help = function() {
-      var letPart, lines, rule, spaces, _i, _len, _ref;
-      lines = [];
-      if (this.banner) {
-        lines.unshift("" + this.banner + "\n");
-      }
-      _ref = this.rules;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        rule = _ref[_i];
-        spaces = 15 - rule.longFlag.length;
-        spaces = spaces > 0 ? Array(spaces + 1).join(' ') : '';
-        letPart = rule.shortFlag ? rule.shortFlag + ', ' : '    ';
-        lines.push('  ' + letPart + rule.longFlag + spaces + rule.description);
-      }
-      return "\n" + (lines.join('\n')) + "\n";
-    };
-
-    return OptionParser;
-
-  })();
-
-  LONG_FLAG = /^(--\w[\w\-]*)/;
-
-  SHORT_FLAG = /^(-\w)$/;
-
-  MULTI_FLAG = /^-(\w{2,})/;
-
-  OPTIONAL = /\[(\w+(\*?))\]/;
-
-  buildRules = function(rules) {
-    var tuple, _i, _len, _results;
-    _results = [];
-    for (_i = 0, _len = rules.length; _i < _len; _i++) {
-      tuple = rules[_i];
-      if (tuple.length < 3) {
-        tuple.unshift(null);
-      }
-      _results.push(buildRule.apply(null, tuple));
-    }
-    return _results;
-  };
-
-  buildRule = function(shortFlag, longFlag, description, options) {
-    var match;
-    if (options == null) {
-      options = {};
-    }
-    match = longFlag.match(OPTIONAL);
-    longFlag = longFlag.match(LONG_FLAG)[1];
-    return {
-      name: longFlag.substr(2),
-      shortFlag: shortFlag,
-      longFlag: longFlag,
-      description: description,
-      hasArgument: !!(match && match[1]),
-      isList: !!(match && match[2])
-    };
-  };
-
-  normalizeArguments = function(args) {
-    var arg, l, match, result, _i, _j, _len, _len1, _ref;
-    args = args.slice(0);
-    result = [];
-    for (_i = 0, _len = args.length; _i < _len; _i++) {
-      arg = args[_i];
-      if (match = arg.match(MULTI_FLAG)) {
-        _ref = match[1].split('');
-        for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
-          l = _ref[_j];
-          result.push('-' + l);
-        }
-      } else {
-        result.push(arg);
-      }
-    }
-    return result;
-  };
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/parser.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/parser.js
deleted file mode 100755
index 9bb9e75..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/parser.js
+++ /dev/null
@@ -1,592 +0,0 @@
-/* Jison generated parser */
-var parser = (function(){
-undefined
-var parser = {trace: function trace() { },
-yy: {},
-symbols_: {"error":2,"Root":3,"Body":4,"Block":5,"TERMINATOR":6,"Line":7,"Expression":8,"Statement":9,"Return":10,"Comment":11,"STATEMENT":12,"Value":13,"Invocation":14,"Code":15,"Operation":16,"Assign":17,"If":18,"Try":19,"While":20,"For":21,"Switch":22,"Class":23,"Throw":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"DEBUGGER":35,"BOOL":36,"Assignable":37,"=":38,"AssignObj":39,"ObjAssignable":40,":":41,"ThisProperty":42,"RETURN":43,"HERECOMMENT":44,"PARAM_START":45,"ParamList":46,"PARAM_END":47,"FuncGlyph":48,"->":49,"=>":50,"OptComma":51,",":52,"Param":53,"ParamVar":54,"...":55,"Array":56,"Object":57,"Splat":58,"SimpleAssignable":59,"Accessor":60,"Parenthetical":61,"Range":62,"This":63,".":64,"?.":65,"::":66,"Index":67,"INDEX_START":68,"IndexValue":69,"INDEX_END":70,"INDEX_SOAK":71,"Slice":72,"{":73,"AssignList":74,"}":75,"CLASS":76,"EXTENDS":77,"OptFuncExist":78,"Arguments":79,"SUPER":80,"FUNC_EXIST":81,"CALL_START":82,"CALL_END":83,"ArgList":84,"THIS":85,"@":86,"[":87,"]":88,"RangeDots":89,"..":90,"Arg":91,"SimpleArgs":92,"TRY":93,"Catch":94,"FINALLY":95,"CATCH":96,"THROW":97,"(":98,")":99,"WhileSource":100,"WHILE":101,"WHEN":102,"UNTIL":103,"Loop":104,"LOOP":105,"ForBody":106,"FOR":107,"ForStart":108,"ForSource":109,"ForVariables":110,"OWN":111,"ForValue":112,"FORIN":113,"FOROF":114,"BY":115,"SWITCH":116,"Whens":117,"ELSE":118,"When":119,"LEADING_WHEN":120,"IfBlock":121,"IF":122,"POST_IF":123,"UNARY":124,"-":125,"+":126,"--":127,"++":128,"?":129,"MATH":130,"SHIFT":131,"COMPARE":132,"LOGIC":133,"RELATION":134,"COMPOUND_ASSIGN":135,"$accept":0,"$end":1},
-terminals_: {2:"error",6:"TERMINATOR",12:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"BOOL",38:"=",41:":",43:"RETURN",44:"HERECOMMENT",45:"PARAM_START",47:"PARAM_END",49:"->",50:"=>",52:",",55:"...",64:".",65:"?.",66:"::",68:"INDEX_START",70:"INDEX_END",71:"INDEX_SOAK",73:"{",75:"}",76:"CLASS",77:"EXTENDS",80:"SUPER",81:"FUNC_EXIST",82:"CALL_START",83:"CALL_END",85:"THIS",86:"@",87:"[",88:"]",90:"..",93:"TRY",95:"FINALLY",96:"CATCH",97:"THROW",98:"(",99:")",101:"WHILE",102:"WHEN",103:"UNTIL",105:"LOOP",107:"FOR",111:"OWN",113:"FORIN",114:"FOROF",115:"BY",116:"SWITCH",118:"ELSE",120:"LEADING_WHEN",122:"IF",123:"POST_IF",124:"UNARY",125:"-",126:"+",127:"--",128:"++",129:"?",130:"MATH",131:"SHIFT",132:"COMPARE",133:"LOGIC",134:"RELATION",135:"COMPOUND_ASSIGN"},
-productions_: [0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[17,3],[17,4],[17,5],[39,1],[39,3],[39,5],[39,1],[40,1],[40,1],[40,1],[10,2],[10,1],[11,1],[15,5],[15,2],[48,1],[48,1],[51,0],[51,1],[46,0],[46,1],[46,3],[53,1],[53,2],[53,3],[54,1],[54,1],[54,1],[54,1],[58,2],[59,1],[59,2],[59,2],[59,1],[37,1],[37,1],[37,1],[13,1],[13,1],[13,1],[13,1],[13,1],[60,2],[60,2],[60,2],[60,1],[60,1],[67,3],[67,2],[69,1],[69,1],[57,4],[74,0],[74,1],[74,3],[74,4],[74,6],[23,1],[23,2],[23,3],[23,4],[23,2],[23,3],[23,4],[23,5],[14,3],[14,3],[14,1],[14,2],[78,0],[78,1],[79,2],[79,4],[63,1],[63,1],[42,2],[56,2],[56,4],[89,1],[89,1],[62,5],[72,3],[72,2],[72,2],[72,1],[84,1],[84,3],[84,4],[84,4],[84,6],[91,1],[91,1],[92,1],[92,3],[19,2],[19,3],[19,4],[19,5],[94,3],[24,2],[61,3],[61,5],[100,2],[100,4],[100,2],[100,4],[20,2],[20,2],[20,2],[20,1],[104,2],[104,2],[21,2],[21,2],[21,2],[106,2],[106,2],[108,2],[108,3],[112,1],[112,1],[112,1],[110,1],[110,3],[109,2],[109,2],[109,4],[109,4],[109,4],[109,6],[109,6],[22,5],[22,7],[22,4],[22,6],[117,1],[117,2],[119,3],[119,4],[121,3],[121,5],[18,1],[18,3],[18,3],[18,3],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,5],[16,3]],
-performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
-
-var $0 = $$.length - 1;
-switch (yystate) {
-case 1:return this.$ = new yy.Block;
-break;
-case 2:return this.$ = $$[$0];
-break;
-case 3:return this.$ = $$[$0-1];
-break;
-case 4:this.$ = yy.Block.wrap([$$[$0]]);
-break;
-case 5:this.$ = $$[$0-2].push($$[$0]);
-break;
-case 6:this.$ = $$[$0-1];
-break;
-case 7:this.$ = $$[$0];
-break;
-case 8:this.$ = $$[$0];
-break;
-case 9:this.$ = $$[$0];
-break;
-case 10:this.$ = $$[$0];
-break;
-case 11:this.$ = new yy.Literal($$[$0]);
-break;
-case 12:this.$ = $$[$0];
-break;
-case 13:this.$ = $$[$0];
-break;
-case 14:this.$ = $$[$0];
-break;
-case 15:this.$ = $$[$0];
-break;
-case 16:this.$ = $$[$0];
-break;
-case 17:this.$ = $$[$0];
-break;
-case 18:this.$ = $$[$0];
-break;
-case 19:this.$ = $$[$0];
-break;
-case 20:this.$ = $$[$0];
-break;
-case 21:this.$ = $$[$0];
-break;
-case 22:this.$ = $$[$0];
-break;
-case 23:this.$ = $$[$0];
-break;
-case 24:this.$ = new yy.Block;
-break;
-case 25:this.$ = $$[$0-1];
-break;
-case 26:this.$ = new yy.Literal($$[$0]);
-break;
-case 27:this.$ = new yy.Literal($$[$0]);
-break;
-case 28:this.$ = new yy.Literal($$[$0]);
-break;
-case 29:this.$ = $$[$0];
-break;
-case 30:this.$ = new yy.Literal($$[$0]);
-break;
-case 31:this.$ = new yy.Literal($$[$0]);
-break;
-case 32:this.$ = new yy.Literal($$[$0]);
-break;
-case 33:this.$ = (function () {
-        var val;
-        val = new yy.Literal($$[$0]);
-        if ($$[$0] === 'undefined') val.isUndefined = true;
-        return val;
-      }());
-break;
-case 34:this.$ = new yy.Assign($$[$0-2], $$[$0]);
-break;
-case 35:this.$ = new yy.Assign($$[$0-3], $$[$0]);
-break;
-case 36:this.$ = new yy.Assign($$[$0-4], $$[$0-1]);
-break;
-case 37:this.$ = new yy.Value($$[$0]);
-break;
-case 38:this.$ = new yy.Assign(new yy.Value($$[$0-2]), $$[$0], 'object');
-break;
-case 39:this.$ = new yy.Assign(new yy.Value($$[$0-4]), $$[$0-1], 'object');
-break;
-case 40:this.$ = $$[$0];
-break;
-case 41:this.$ = $$[$0];
-break;
-case 42:this.$ = $$[$0];
-break;
-case 43:this.$ = $$[$0];
-break;
-case 44:this.$ = new yy.Return($$[$0]);
-break;
-case 45:this.$ = new yy.Return;
-break;
-case 46:this.$ = new yy.Comment($$[$0]);
-break;
-case 47:this.$ = new yy.Code($$[$0-3], $$[$0], $$[$0-1]);
-break;
-case 48:this.$ = new yy.Code([], $$[$0], $$[$0-1]);
-break;
-case 49:this.$ = 'func';
-break;
-case 50:this.$ = 'boundfunc';
-break;
-case 51:this.$ = $$[$0];
-break;
-case 52:this.$ = $$[$0];
-break;
-case 53:this.$ = [];
-break;
-case 54:this.$ = [$$[$0]];
-break;
-case 55:this.$ = $$[$0-2].concat($$[$0]);
-break;
-case 56:this.$ = new yy.Param($$[$0]);
-break;
-case 57:this.$ = new yy.Param($$[$0-1], null, true);
-break;
-case 58:this.$ = new yy.Param($$[$0-2], $$[$0]);
-break;
-case 59:this.$ = $$[$0];
-break;
-case 60:this.$ = $$[$0];
-break;
-case 61:this.$ = $$[$0];
-break;
-case 62:this.$ = $$[$0];
-break;
-case 63:this.$ = new yy.Splat($$[$0-1]);
-break;
-case 64:this.$ = new yy.Value($$[$0]);
-break;
-case 65:this.$ = $$[$0-1].add($$[$0]);
-break;
-case 66:this.$ = new yy.Value($$[$0-1], [].concat($$[$0]));
-break;
-case 67:this.$ = $$[$0];
-break;
-case 68:this.$ = $$[$0];
-break;
-case 69:this.$ = new yy.Value($$[$0]);
-break;
-case 70:this.$ = new yy.Value($$[$0]);
-break;
-case 71:this.$ = $$[$0];
-break;
-case 72:this.$ = new yy.Value($$[$0]);
-break;
-case 73:this.$ = new yy.Value($$[$0]);
-break;
-case 74:this.$ = new yy.Value($$[$0]);
-break;
-case 75:this.$ = $$[$0];
-break;
-case 76:this.$ = new yy.Access($$[$0]);
-break;
-case 77:this.$ = new yy.Access($$[$0], 'soak');
-break;
-case 78:this.$ = [new yy.Access(new yy.Literal('prototype')), new yy.Access($$[$0])];
-break;
-case 79:this.$ = new yy.Access(new yy.Literal('prototype'));
-break;
-case 80:this.$ = $$[$0];
-break;
-case 81:this.$ = $$[$0-1];
-break;
-case 82:this.$ = yy.extend($$[$0], {
-          soak: true
-        });
-break;
-case 83:this.$ = new yy.Index($$[$0]);
-break;
-case 84:this.$ = new yy.Slice($$[$0]);
-break;
-case 85:this.$ = new yy.Obj($$[$0-2], $$[$0-3].generated);
-break;
-case 86:this.$ = [];
-break;
-case 87:this.$ = [$$[$0]];
-break;
-case 88:this.$ = $$[$0-2].concat($$[$0]);
-break;
-case 89:this.$ = $$[$0-3].concat($$[$0]);
-break;
-case 90:this.$ = $$[$0-5].concat($$[$0-2]);
-break;
-case 91:this.$ = new yy.Class;
-break;
-case 92:this.$ = new yy.Class(null, null, $$[$0]);
-break;
-case 93:this.$ = new yy.Class(null, $$[$0]);
-break;
-case 94:this.$ = new yy.Class(null, $$[$0-1], $$[$0]);
-break;
-case 95:this.$ = new yy.Class($$[$0]);
-break;
-case 96:this.$ = new yy.Class($$[$0-1], null, $$[$0]);
-break;
-case 97:this.$ = new yy.Class($$[$0-2], $$[$0]);
-break;
-case 98:this.$ = new yy.Class($$[$0-3], $$[$0-1], $$[$0]);
-break;
-case 99:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 100:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 101:this.$ = new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]);
-break;
-case 102:this.$ = new yy.Call('super', $$[$0]);
-break;
-case 103:this.$ = false;
-break;
-case 104:this.$ = true;
-break;
-case 105:this.$ = [];
-break;
-case 106:this.$ = $$[$0-2];
-break;
-case 107:this.$ = new yy.Value(new yy.Literal('this'));
-break;
-case 108:this.$ = new yy.Value(new yy.Literal('this'));
-break;
-case 109:this.$ = new yy.Value(new yy.Literal('this'), [new yy.Access($$[$0])], 'this');
-break;
-case 110:this.$ = new yy.Arr([]);
-break;
-case 111:this.$ = new yy.Arr($$[$0-2]);
-break;
-case 112:this.$ = 'inclusive';
-break;
-case 113:this.$ = 'exclusive';
-break;
-case 114:this.$ = new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]);
-break;
-case 115:this.$ = new yy.Range($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 116:this.$ = new yy.Range($$[$0-1], null, $$[$0]);
-break;
-case 117:this.$ = new yy.Range(null, $$[$0], $$[$0-1]);
-break;
-case 118:this.$ = new yy.Range(null, null, $$[$0]);
-break;
-case 119:this.$ = [$$[$0]];
-break;
-case 120:this.$ = $$[$0-2].concat($$[$0]);
-break;
-case 121:this.$ = $$[$0-3].concat($$[$0]);
-break;
-case 122:this.$ = $$[$0-2];
-break;
-case 123:this.$ = $$[$0-5].concat($$[$0-2]);
-break;
-case 124:this.$ = $$[$0];
-break;
-case 125:this.$ = $$[$0];
-break;
-case 126:this.$ = $$[$0];
-break;
-case 127:this.$ = [].concat($$[$0-2], $$[$0]);
-break;
-case 128:this.$ = new yy.Try($$[$0]);
-break;
-case 129:this.$ = new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]);
-break;
-case 130:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]);
-break;
-case 131:this.$ = new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]);
-break;
-case 132:this.$ = [$$[$0-1], $$[$0]];
-break;
-case 133:this.$ = new yy.Throw($$[$0]);
-break;
-case 134:this.$ = new yy.Parens($$[$0-1]);
-break;
-case 135:this.$ = new yy.Parens($$[$0-2]);
-break;
-case 136:this.$ = new yy.While($$[$0]);
-break;
-case 137:this.$ = new yy.While($$[$0-2], {
-          guard: $$[$0]
-        });
-break;
-case 138:this.$ = new yy.While($$[$0], {
-          invert: true
-        });
-break;
-case 139:this.$ = new yy.While($$[$0-2], {
-          invert: true,
-          guard: $$[$0]
-        });
-break;
-case 140:this.$ = $$[$0-1].addBody($$[$0]);
-break;
-case 141:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
-break;
-case 142:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
-break;
-case 143:this.$ = $$[$0];
-break;
-case 144:this.$ = new yy.While(new yy.Literal('true')).addBody($$[$0]);
-break;
-case 145:this.$ = new yy.While(new yy.Literal('true')).addBody(yy.Block.wrap([$$[$0]]));
-break;
-case 146:this.$ = new yy.For($$[$0-1], $$[$0]);
-break;
-case 147:this.$ = new yy.For($$[$0-1], $$[$0]);
-break;
-case 148:this.$ = new yy.For($$[$0], $$[$0-1]);
-break;
-case 149:this.$ = {
-          source: new yy.Value($$[$0])
-        };
-break;
-case 150:this.$ = (function () {
-        $$[$0].own = $$[$0-1].own;
-        $$[$0].name = $$[$0-1][0];
-        $$[$0].index = $$[$0-1][1];
-        return $$[$0];
-      }());
-break;
-case 151:this.$ = $$[$0];
-break;
-case 152:this.$ = (function () {
-        $$[$0].own = true;
-        return $$[$0];
-      }());
-break;
-case 153:this.$ = $$[$0];
-break;
-case 154:this.$ = new yy.Value($$[$0]);
-break;
-case 155:this.$ = new yy.Value($$[$0]);
-break;
-case 156:this.$ = [$$[$0]];
-break;
-case 157:this.$ = [$$[$0-2], $$[$0]];
-break;
-case 158:this.$ = {
-          source: $$[$0]
-        };
-break;
-case 159:this.$ = {
-          source: $$[$0],
-          object: true
-        };
-break;
-case 160:this.$ = {
-          source: $$[$0-2],
-          guard: $$[$0]
-        };
-break;
-case 161:this.$ = {
-          source: $$[$0-2],
-          guard: $$[$0],
-          object: true
-        };
-break;
-case 162:this.$ = {
-          source: $$[$0-2],
-          step: $$[$0]
-        };
-break;
-case 163:this.$ = {
-          source: $$[$0-4],
-          guard: $$[$0-2],
-          step: $$[$0]
-        };
-break;
-case 164:this.$ = {
-          source: $$[$0-4],
-          step: $$[$0-2],
-          guard: $$[$0]
-        };
-break;
-case 165:this.$ = new yy.Switch($$[$0-3], $$[$0-1]);
-break;
-case 166:this.$ = new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]);
-break;
-case 167:this.$ = new yy.Switch(null, $$[$0-1]);
-break;
-case 168:this.$ = new yy.Switch(null, $$[$0-3], $$[$0-1]);
-break;
-case 169:this.$ = $$[$0];
-break;
-case 170:this.$ = $$[$0-1].concat($$[$0]);
-break;
-case 171:this.$ = [[$$[$0-1], $$[$0]]];
-break;
-case 172:this.$ = [[$$[$0-2], $$[$0-1]]];
-break;
-case 173:this.$ = new yy.If($$[$0-1], $$[$0], {
-          type: $$[$0-2]
-        });
-break;
-case 174:this.$ = $$[$0-4].addElse(new yy.If($$[$0-1], $$[$0], {
-          type: $$[$0-2]
-        }));
-break;
-case 175:this.$ = $$[$0];
-break;
-case 176:this.$ = $$[$0-2].addElse($$[$0]);
-break;
-case 177:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
-          type: $$[$0-1],
-          statement: true
-        });
-break;
-case 178:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
-          type: $$[$0-1],
-          statement: true
-        });
-break;
-case 179:this.$ = new yy.Op($$[$0-1], $$[$0]);
-break;
-case 180:this.$ = new yy.Op('-', $$[$0]);
-break;
-case 181:this.$ = new yy.Op('+', $$[$0]);
-break;
-case 182:this.$ = new yy.Op('--', $$[$0]);
-break;
-case 183:this.$ = new yy.Op('++', $$[$0]);
-break;
-case 184:this.$ = new yy.Op('--', $$[$0-1], null, true);
-break;
-case 185:this.$ = new yy.Op('++', $$[$0-1], null, true);
-break;
-case 186:this.$ = new yy.Existence($$[$0-1]);
-break;
-case 187:this.$ = new yy.Op('+', $$[$0-2], $$[$0]);
-break;
-case 188:this.$ = new yy.Op('-', $$[$0-2], $$[$0]);
-break;
-case 189:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 190:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 191:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 192:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-break;
-case 193:this.$ = (function () {
-        if ($$[$0-1].charAt(0) === '!') {
-          return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert();
-        } else {
-          return new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-        }
-      }());
-break;
-case 194:this.$ = new yy.Assign($$[$0-2], $$[$0], $$[$0-1]);
-break;
-case 195:this.$ = new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]);
-break;
-case 196:this.$ = new yy.Extends($$[$0-2], $$[$0]);
-break;
-}
-},
-table: [{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[3]},{1:[2,2],6:[1,72]},{6:[1,73]},{1:[2,4],6:[2,4],26:[2,4],99:[2,4]},{4:75,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[1,74],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,7],6:[2,7],26:[2,7],99:[2,7],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,8],6:[2,8],26:[2,8],99:[2,8],100:88,101:[1,63],103:[1,64],106:89,107:[1,66],108:67,123:[1,87]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],47:[2,12],52:[2,12],55:[2,12],60:91,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],70:[2,12],71:[1,98],75:[2,12],78:90,81:[1,92],82:[2,103],83:[2,12],88:[2,12],90:[2,12],99:[2,12],101:[2,12],102:[2,12],103:[2,12],107:[2,12],115:[2,12],123:[2,12],125:[2,12],126:[2,12],129:[2,12],130:[2,12],131:[2,12],132:[2,12],133:[2,12],134:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],47:[2,13],52:[2,13],55:[2,13],60:100,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],70:[2,13],71:[1,98],75:[2,13],78:99,81:[1,92],82:[2,103],83:[2,13],88:[2,13],90:[2,13],99:[2,13],101:[2,13],102:[2,13],103:[2,13],107:[2,13],115:[2,13],123:[2,13],125:[2,13],126:[2,13],129:[2,13],130:[2,13],131:[2,13],132:[2,13],133:[2,13],134:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],47:[2,14],52:[2,14],55:[2,14],70:[2,14],75:[2,14],83:[2,14],88:[2,14],90:[2,14],99:[2,14],101:[2,14],102:[2,14],103:[2,14],107:[2,14],115:[2,14],123:[2,14],125:[2,14],126:[2,14],129:[2,14],130:[2,14],131:[2,14],132:[2,14],133:[2,14],134:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],47:[2,15],52:[2,15],55:[2,15],70:[2,15],75:[2,15],83:[2,15],88:[2,15],90:[2,15],99:[2,15],101:[2,15],102:[2,15],103:[2,15],107:[2,15],115:[2,15],123:[2,15],125:[2,15],126:[2,15],129:[2,15],130:[2,15],131:[2,15],132:[2,15],133:[2,15],134:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],47:[2,16],52:[2,16],55:[2,16],70:[2,16],75:[2,16],83:[2,16],88:[2,16],90:[2,16],99:[2,16],101:[2,16],102:[2,16],103:[2,16],107:[2,16],115:[2,16],123:[2,16],125:[2,16],126:[2,16],129:[2,16],130:[2,16],131:[2,16],132:[2,16],133:[2,16],134:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],47:[2,17],52:[2,17],55:[2,17],70:[2,17],75:[2,17],83:[2,17],88:[2,17],90:[2,17],99:[2,17],101:[2,17],102:[2,17],103:[2,17],107:[2,17],115:[2,17],123:[2,17],125:[2,17],126:[2,17],129:[2,17],130:[2,17],131:[2,17],132:[2,17],133:[2,17],134:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],47:[2,18],52:[2,18],55:[2,18],70:[2,18],75:[2,18],83:[2,18],88:[2,18],90:[2,18],99:[2,18],101:[2,18],102:[2,18],103:[2,18],107:[2,18],115:[2,18],123:[2,18],125:[2,18],126:[2,18],129:[2,18],130:[2,18],131:[2,18],132:[2,18],133:[2,18],134:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],47:[2,19],52:[2,19],55:[2,19],70:[2,19],75:[2,19],83:[2,19],88:[2,19],90:[2,19],99:[2,19],101:[2,19],102:[2,19],103:[2,19],107:[2,19],115:[2,19],123:[2,19],125:[2,19],126:[2,19],129:[2,19],130:[2,19],131:[2,19],132:[2,19],133:[2,19],134:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],47:[2,20],52:[2,20],55:[2,20],70:[2,20],75:[2,20],83:[2,20],88:[2,20],90:[2,20],99:[2,20],101:[2,20],102:[2,20],103:[2,20],107:[2,20],115:[2,20],123:[2,20],125:[2,20],126:[2,20],129:[2,20],130:[2,20],131:[2,20],132:[2,20],133:[2,20],134:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],47:[2,21],52:[2,21],55:[2,21],70:[2,21],75:[2,21],83:[2,21],88:[2,21],90:[2,21],99:[2,21],101:[2,21],102:[2,21],103:[2,21],107:[2,21],115:[2,21],123:[2,21],125:[2,21],126:[2,21],129:[2,21],130:[2,21],131:[2,21],132:[2,21],133:[2,21],134:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],47:[2,22],52:[2,22],55:[2,22],70:[2,22],75:[2,22],83:[2,22],88:[2,22],90:[2,22],99:[2,22],101:[2,22],102:[2,22],103:[2,22],107:[2,22],115:[2,22],123:[2,22],125:[2,22],126:[2,22],129:[2,22],130:[2,22],131:[2,22],132:[2,22],133:[2,22],134:[2,22]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],47:[2,23],52:[2,23],55:[2,23],70:[2,23],75:[2,23],83:[2,23],88:[2,23],90:[2,23],99:[2,23],101:[2,23],102:[2,23],103:[2,23],107:[2,23],115:[2,23],123:[2,23],125:[2,23],126:[2,23],129:[2,23],130:[2,23],131:[2,23],132:[2,23],133:[2,23],134:[2,23]},{1:[2,9],6:[2,9],26:[2,9],99:[2,9],101:[2,9],103:[2,9],107:[2,9],123:[2,9]},{1:[2,10],6:[2,10],26:[2,10],99:[2,10],101:[2,10],103:[2,10],107:[2,10],123:[2,10]},{1:[2,11],6:[2,11],26:[2,11],99:[2,11],101:[2,11],103:[2,11],107:[2,11],123:[2,11]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],38:[1,101],47:[2,71],52:[2,71],55:[2,71],64:[2,71],65:[2,71],66:[2,71],68:[2,71],70:[2,71],71:[2,71],75:[2,71],81:[2,71],82:[2,71],83:[2,71],88:[2,71],90:[2,71],99:[2,71],101:[2,71],102:[2,71],103:[2,71],107:[2,71],115:[2,71],123:[2,71],125:[2,71],126:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],47:[2,72],52:[2,72],55:[2,72],64:[2,72],65:[2,72],66:[2,72],68:[2,72],70:[2,72],71:[2,72],75:[2,72],81:[2,72],82:[2,72],83:[2,72],88:[2,72],90:[2,72],99:[2,72],101:[2,72],102:[2,72],103:[2,72],107:[2,72],115:[2,72],123:[2,72],125:[2,72],126:[2,72],129:[2,72],130:[2,72],131:[2,72],132:[2,72],133:[2,72],134:[2,72]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],47:[2,73],52:[2,73],55:[2,73],64:[2,73],65:[2,73],66:[2,73],68:[2,73],70:[2,73],71:[2,73],75:[2,73],81:[2,73],82:[2,73],83:[2,73],88:[2,73],90:[2,73],99:[2,73],101:[2,73],102:[2,73],103:[2,73],107:[2,73],115:[2,73],123:[2,73],125:[2,73],126:[2,73],129:[2,73],130:[2,73],131:[2,73],132:[2,73],133:[2,73],134:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],47:[2,74],52:[2,74],55:[2,74],64:[2,74],65:[2,74],66:[2,74],68:[2,74],70:[2,74],71:[2,74],75:[2,74],81:[2,74],82:[2,74],83:[2,74],88:[2,74],90:[2,74],99:[2,74],101:[2,74],102:[2,74],103:[2,74],107:[2,74],115:[2,74],123:[2,74],125:[2,74],126:[2,74],129:[2,74],130:[2,74],131:[2,74],132:[2,74],133:[2,74],134:[2,74]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],47:[2,75],52:[2,75],55:[2,75],64:[2,75],65:[2,75],66:[2,75],68:[2,75],70:[2,75],71:[2,75],75:[2,75],81:[2,75],82:[2,75],83:[2,75],88:[2,75],90:[2,75],99:[2,75],101:[2,75],102:[2,75],103:[2,75],107:[2,75],115:[2,75],123:[2,75],125:[2,75],126:[2,75],129:[2,75],130:[2,75],131:[2,75],132:[2,75],133:[2,75],134:[2,75]},{1:[2,101],6:[2,101],25:[2,101],26:[2,101],47:[2,101],52:[2,101],55:[2,101],64:[2,101],65:[2,101],66:[2,101],68:[2,101],70:[2,101],71:[2,101],75:[2,101],79:102,81:[2,101],82:[1,103],83:[2,101],88:[2,101],90:[2,101],99:[2,101],101:[2,101],102:[2,101],103:[2,101],107:[2,101],115:[2,101],123:[2,101],125:[2,101],126:[2,101],129:[2,101],130:[2,101],131:[2,101],132:[2,101],133:[2,101],134:[2,101]},{27:107,28:[1,71],42:108,46:104,47:[2,53],52:[2,53],53:105,54:106,56:109,57:110,73:[1,68],86:[1,111],87:[1,112]},{5:113,25:[1,5]},{8:114,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:116,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:117,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{13:119,14:120,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,56:47,57:48,59:118,61:25,62:26,63:27,73:[1,68],80:[1,28],85:[1,56],86:[1,57],87:[1,55],98:[1,54]},{13:119,14:120,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,56:47,57:48,59:122,61:25,62:26,63:27,73:[1,68],80:[1,28],85:[1,56],86:[1,57],87:[1,55],98:[1,54]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],38:[2,68],47:[2,68],52:[2,68],55:[2,68],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,68],71:[2,68],75:[2,68],77:[1,126],81:[2,68],82:[2,68],83:[2,68],88:[2,68],90:[2,68],99:[2,68],101:[2,68],102:[2,68],103:[2,68],107:[2,68],115:[2,68],123:[2,68],125:[2,68],126:[2,68],127:[1,123],128:[1,124],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[1,125]},{1:[2,175],6:[2,175],25:[2,175],26:[2,175],47:[2,175],52:[2,175],55:[2,175],70:[2,175],75:[2,175],83:[2,175],88:[2,175],90:[2,175],99:[2,175],101:[2,175],102:[2,175],103:[2,175],107:[2,175],115:[2,175],118:[1,127],123:[2,175],125:[2,175],126:[2,175],129:[2,175],130:[2,175],131:[2,175],132:[2,175],133:[2,175],134:[2,175]},{5:128,25:[1,5]},{5:129,25:[1,5]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],47:[2,143],52:[2,143],55:[2,143],70:[2,143],75:[2,143],83:[2,143],88:[2,143],90:[2,143],99:[2,143],101:[2,143],102:[2,143],103:[2,143],107:[2,143],115:[2,143],123:[2,143],125:[2,143],126:[2,143],129:[2,143],130:[2,143],131:[2,143],132:[2,143],133:[2,143],134:[2,143]},{5:130,25:[1,5]},{8:131,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,132],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,91],5:133,6:[2,91],13:119,14:120,25:[1,5],26:[2,91],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:121,42:61,47:[2,91],52:[2,91],55:[2,91],56:47,57:48,59:135,61:25,62:26,63:27,70:[2,91],73:[1,68],75:[2,91],77:[1,134],80:[1,28],83:[2,91],85:[1,56],86:[1,57],87:[1,55],88:[2,91],90:[2,91],98:[1,54],99:[2,91],101:[2,91],102:[2,91],103:[2,91],107:[2,91],115:[2,91],123:[2,91],125:[2,91],126:[2,91],129:[2,91],130:[2,91],131:[2,91],132:[2,91],133:[2,91],134:[2,91]},{8:136,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,45],6:[2,45],8:137,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,45],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],99:[2,45],100:39,101:[2,45],103:[2,45],104:40,105:[1,65],106:41,107:[2,45],108:67,116:[1,42],121:37,122:[1,62],123:[2,45],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,46],6:[2,46],25:[2,46],26:[2,46],52:[2,46],75:[2,46],99:[2,46],101:[2,46],103:[2,46],107:[2,46],123:[2,46]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],38:[2,69],47:[2,69],52:[2,69],55:[2,69],64:[2,69],65:[2,69],66:[2,69],68:[2,69],70:[2,69],71:[2,69],75:[2,69],81:[2,69],82:[2,69],83:[2,69],88:[2,69],90:[2,69],99:[2,69],101:[2,69],102:[2,69],103:[2,69],107:[2,69],115:[2,69],123:[2,69],125:[2,69],126:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],38:[2,70],47:[2,70],52:[2,70],55:[2,70],64:[2,70],65:[2,70],66:[2,70],68:[2,70],70:[2,70],71:[2,70],75:[2,70],81:[2,70],82:[2,70],83:[2,70],88:[2,70],90:[2,70],99:[2,70],101:[2,70],102:[2,70],103:[2,70],107:[2,70],115:[2,70],123:[2,70],125:[2,70],126:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],47:[2,29],52:[2,29],55:[2,29],64:[2,29],65:[2,29],66:[2,29],68:[2,29],70:[2,29],71:[2,29],75:[2,29],81:[2,29],82:[2,29],83:[2,29],88:[2,29],90:[2,29],99:[2,29],101:[2,29],102:[2,29],103:[2,29],107:[2,29],115:[2,29],123:[2,29],125:[2,29],126:[2,29],129:[2,29],130:[2,29],131:[2,29],132:[2,29],133:[2,29],134:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],47:[2,30],52:[2,30],55:[2,30],64:[2,30],65:[2,30],66:[2,30],68:[2,30],70:[2,30],71:[2,30],75:[2,30],81:[2,30],82:[2,30],83:[2,30],88:[2,30],90:[2,30],99:[2,30],101:[2,30],102:[2,30],103:[2,30],107:[2,30],115:[2,30],123:[2,30],125:[2,30],126:[2,30],129:[2,30],130:[2,30],131:[2,30],132:[2,30],133:[2,30],134:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],47:[2,31],52:[2,31],55:[2,31],64:[2,31],65:[2,31],66:[2,31],68:[2,31],70:[2,31],71:[2,31],75:[2,31],81:[2,31],82:[2,31],83:[2,31],88:[2,31],90:[2,31],99:[2,31],101:[2,31],102:[2,31],103:[2,31],107:[2,31],115:[2,31],123:[2,31],125:[2,31],126:[2,31],129:[2,31],130:[2,31],131:[2,31],132:[2,31],133:[2,31],134:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],47:[2,32],52:[2,32],55:[2,32],64:[2,32],65:[2,32],66:[2,32],68:[2,32],70:[2,32],71:[2,32],75:[2,32],81:[2,32],82:[2,32],83:[2,32],88:[2,32],90:[2,32],99:[2,32],101:[2,32],102:[2,32],103:[2,32],107:[2,32],115:[2,32],123:[2,32],125:[2,32],126:[2,32],129:[2,32],130:[2,32],131:[2,32],132:[2,32],133:[2,32],134:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],47:[2,33],52:[2,33],55:[2,33],64:[2,33],65:[2,33],66:[2,33],68:[2,33],70:[2,33],71:[2,33],75:[2,33],81:[2,33],82:[2,33],83:[2,33],88:[2,33],90:[2,33],99:[2,33],101:[2,33],102:[2,33],103:[2,33],107:[2,33],115:[2,33],123:[2,33],125:[2,33],126:[2,33],129:[2,33],130:[2,33],131:[2,33],132:[2,33],133:[2,33],134:[2,33]},{4:138,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,139],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:140,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:142,85:[1,56],86:[1,57],87:[1,55],88:[1,141],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,107],6:[2,107],25:[2,107],26:[2,107],47:[2,107],52:[2,107],55:[2,107],64:[2,107],65:[2,107],66:[2,107],68:[2,107],70:[2,107],71:[2,107],75:[2,107],81:[2,107],82:[2,107],83:[2,107],88:[2,107],90:[2,107],99:[2,107],101:[2,107],102:[2,107],103:[2,107],107:[2,107],115:[2,107],123:[2,107],125:[2,107],126:[2,107],129:[2,107],130:[2,107],131:[2,107],132:[2,107],133:[2,107],134:[2,107]},{1:[2,108],6:[2,108],25:[2,108],26:[2,108],27:146,28:[1,71],47:[2,108],52:[2,108],55:[2,108],64:[2,108],65:[2,108],66:[2,108],68:[2,108],70:[2,108],71:[2,108],75:[2,108],81:[2,108],82:[2,108],83:[2,108],88:[2,108],90:[2,108],99:[2,108],101:[2,108],102:[2,108],103:[2,108],107:[2,108],115:[2,108],123:[2,108],125:[2,108],126:[2,108],129:[2,108],130:[2,108],131:[2,108],132:[2,108],133:[2,108],134:[2,108]},{25:[2,49]},{25:[2,50]},{1:[2,64],6:[2,64],25:[2,64],26:[2,64],38:[2,64],47:[2,64],52:[2,64],55:[2,64],64:[2,64],65:[2,64],66:[2,64],68:[2,64],70:[2,64],71:[2,64],75:[2,64],77:[2,64],81:[2,64],82:[2,64],83:[2,64],88:[2,64],90:[2,64],99:[2,64],101:[2,64],102:[2,64],103:[2,64],107:[2,64],115:[2,64],123:[2,64],125:[2,64],126:[2,64],127:[2,64],128:[2,64],129:[2,64],130:[2,64],131:[2,64],132:[2,64],133:[2,64],134:[2,64],135:[2,64]},{1:[2,67],6:[2,67],25:[2,67],26:[2,67],38:[2,67],47:[2,67],52:[2,67],55:[2,67],64:[2,67],65:[2,67],66:[2,67],68:[2,67],70:[2,67],71:[2,67],75:[2,67],77:[2,67],81:[2,67],82:[2,67],83:[2,67],88:[2,67],90:[2,67],99:[2,67],101:[2,67],102:[2,67],103:[2,67],107:[2,67],115:[2,67],123:[2,67],125:[2,67],126:[2,67],127:[2,67],128:[2,67],129:[2,67],130:[2,67],131:[2,67],132:[2,67],133:[2,67],134:[2,67],135:[2,67]},{8:147,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:148,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:149,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{5:150,8:151,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{27:156,28:[1,71],56:157,57:158,62:152,73:[1,68],87:[1,55],110:153,111:[1,154],112:155},{109:159,113:[1,160],114:[1,161]},{6:[2,86],11:165,25:[2,86],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:163,40:164,42:168,44:[1,46],52:[2,86],74:162,75:[2,86],86:[1,111]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],41:[2,27],47:[2,27],52:[2,27],55:[2,27],64:[2,27],65:[2,27],66:[2,27],68:[2,27],70:[2,27],71:[2,27],75:[2,27],81:[2,27],82:[2,27],83:[2,27],88:[2,27],90:[2,27],99:[2,27],101:[2,27],102:[2,27],103:[2,27],107:[2,27],115:[2,27],123:[2,27],125:[2,27],126:[2,27],129:[2,27],130:[2,27],131:[2,27],132:[2,27],133:[2,27],134:[2,27]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],41:[2,28],47:[2,28],52:[2,28],55:[2,28],64:[2,28],65:[2,28],66:[2,28],68:[2,28],70:[2,28],71:[2,28],75:[2,28],81:[2,28],82:[2,28],83:[2,28],88:[2,28],90:[2,28],99:[2,28],101:[2,28],102:[2,28],103:[2,28],107:[2,28],115:[2,28],123:[2,28],125:[2,28],126:[2,28],129:[2,28],130:[2,28],131:[2,28],132:[2,28],133:[2,28],134:[2,28]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],38:[2,26],41:[2,26],47:[2,26],52:[2,26],55:[2,26],64:[2,26],65:[2,26],66:[2,26],68:[2,26],70:[2,26],71:[2,26],75:[2,26],77:[2,26],81:[2,26],82:[2,26],83:[2,26],88:[2,26],90:[2,26],99:[2,26],101:[2,26],102:[2,26],103:[2,26],107:[2,26],113:[2,26],114:[2,26],115:[2,26],123:[2,26],125:[2,26],126:[2,26],127:[2,26],128:[2,26],129:[2,26],130:[2,26],131:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26]},{1:[2,6],6:[2,6],7:169,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,6],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],99:[2,6],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,3]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],47:[2,24],52:[2,24],55:[2,24],70:[2,24],75:[2,24],83:[2,24],88:[2,24],90:[2,24],95:[2,24],96:[2,24],99:[2,24],101:[2,24],102:[2,24],103:[2,24],107:[2,24],115:[2,24],118:[2,24],120:[2,24],123:[2,24],125:[2,24],126:[2,24],129:[2,24],130:[2,24],131:[2,24],132:[2,24],133:[2,24],134:[2,24]},{6:[1,72],26:[1,170]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],47:[2,186],52:[2,186],55:[2,186],70:[2,186],75:[2,186],83:[2,186],88:[2,186],90:[2,186],99:[2,186],101:[2,186],102:[2,186],103:[2,186],107:[2,186],115:[2,186],123:[2,186],125:[2,186],126:[2,186],129:[2,186],130:[2,186],131:[2,186],132:[2,186],133:[2,186],134:[2,186]},{8:171,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:172,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:173,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:174,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:175,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:176,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:177,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:178,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],47:[2,142],52:[2,142],55:[2,142],70:[2,142],75:[2,142],83:[2,142],88:[2,142],90:[2,142],99:[2,142],101:[2,142],102:[2,142],103:[2,142],107:[2,142],115:[2,142],123:[2,142],125:[2,142],126:[2,142],129:[2,142],130:[2,142],131:[2,142],132:[2,142],133:[2,142],134:[2,142]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],47:[2,147],52:[2,147],55:[2,147],70:[2,147],75:[2,147],83:[2,147],88:[2,147],90:[2,147],99:[2,147],101:[2,147],102:[2,147],103:[2,147],107:[2,147],115:[2,147],123:[2,147],125:[2,147],126:[2,147],129:[2,147],130:[2,147],131:[2,147],132:[2,147],133:[2,147],134:[2,147]},{8:179,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],47:[2,141],52:[2,141],55:[2,141],70:[2,141],75:[2,141],83:[2,141],88:[2,141],90:[2,141],99:[2,141],101:[2,141],102:[2,141],103:[2,141],107:[2,141],115:[2,141],123:[2,141],125:[2,141],126:[2,141],129:[2,141],130:[2,141],131:[2,141],132:[2,141],133:[2,141],134:[2,141]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],47:[2,146],52:[2,146],55:[2,146],70:[2,146],75:[2,146],83:[2,146],88:[2,146],90:[2,146],99:[2,146],101:[2,146],102:[2,146],103:[2,146],107:[2,146],115:[2,146],123:[2,146],125:[2,146],126:[2,146],129:[2,146],130:[2,146],131:[2,146],132:[2,146],133:[2,146],134:[2,146]},{79:180,82:[1,103]},{1:[2,65],6:[2,65],25:[2,65],26:[2,65],38:[2,65],47:[2,65],52:[2,65],55:[2,65],64:[2,65],65:[2,65],66:[2,65],68:[2,65],70:[2,65],71:[2,65],75:[2,65],77:[2,65],81:[2,65],82:[2,65],83:[2,65],88:[2,65],90:[2,65],99:[2,65],101:[2,65],102:[2,65],103:[2,65],107:[2,65],115:[2,65],123:[2,65],125:[2,65],126:[2,65],127:[2,65],128:[2,65],129:[2,65],130:[2,65],131:[2,65],132:[2,65],133:[2,65],134:[2,65],135:[2,65]},{82:[2,104]},{27:181,28:[1,71]},{27:182,28:[1,71]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],27:183,28:[1,71],38:[2,79],47:[2,79],52:[2,79],55:[2,79],64:[2,79],65:[2,79],66:[2,79],68:[2,79],70:[2,79],71:[2,79],75:[2,79],77:[2,79],81:[2,79],82:[2,79],83:[2,79],88:[2,79],90:[2,79],99:[2,79],101:[2,79],102:[2,79],103:[2,79],107:[2,79],115:[2,79],123:[2,79],125:[2,79],126:[2,79],127:[2,79],128:[2,79],129:[2,79],130:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],38:[2,80],47:[2,80],52:[2,80],55:[2,80],64:[2,80],65:[2,80],66:[2,80],68:[2,80],70:[2,80],71:[2,80],75:[2,80],77:[2,80],81:[2,80],82:[2,80],83:[2,80],88:[2,80],90:[2,80],99:[2,80],101:[2,80],102:[2,80],103:[2,80],107:[2,80],115:[2,80],123:[2,80],125:[2,80],126:[2,80],127:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80]},{8:185,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],55:[1,189],56:47,57:48,59:36,61:25,62:26,63:27,69:184,72:186,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],89:187,90:[1,188],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{67:190,68:[1,97],71:[1,98]},{79:191,82:[1,103]},{1:[2,66],6:[2,66],25:[2,66],26:[2,66],38:[2,66],47:[2,66],52:[2,66],55:[2,66],64:[2,66],65:[2,66],66:[2,66],68:[2,66],70:[2,66],71:[2,66],75:[2,66],77:[2,66],81:[2,66],82:[2,66],83:[2,66],88:[2,66],90:[2,66],99:[2,66],101:[2,66],102:[2,66],103:[2,66],107:[2,66],115:[2,66],123:[2,66],125:[2,66],126:[2,66],127:[2,66],128:[2,66],129:[2,66],130:[2,66],131:[2,66],132:[2,66],133:[2,66],134:[2,66],135:[2,66]},{6:[1,193],8:192,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,194],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],47:[2,102],52:[2,102],55:[2,102],64:[2,102],65:[2,102],66:[2,102],68:[2,102],70:[2,102],71:[2,102],75:[2,102],81:[2,102],82:[2,102],83:[2,102],88:[2,102],90:[2,102],99:[2,102],101:[2,102],102:[2,102],103:[2,102],107:[2,102],115:[2,102],123:[2,102],125:[2,102],126:[2,102],129:[2,102],130:[2,102],131:[2,102],132:[2,102],133:[2,102],134:[2,102]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],83:[1,195],84:196,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{47:[1,198],52:[1,199]},{47:[2,54],52:[2,54]},{38:[1,201],47:[2,56],52:[2,56],55:[1,200]},{38:[2,59],47:[2,59],52:[2,59],55:[2,59]},{38:[2,60],47:[2,60],52:[2,60],55:[2,60]},{38:[2,61],47:[2,61],52:[2,61],55:[2,61]},{38:[2,62],47:[2,62],52:[2,62],55:[2,62]},{27:146,28:[1,71]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:142,85:[1,56],86:[1,57],87:[1,55],88:[1,141],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],47:[2,48],52:[2,48],55:[2,48],70:[2,48],75:[2,48],83:[2,48],88:[2,48],90:[2,48],99:[2,48],101:[2,48],102:[2,48],103:[2,48],107:[2,48],115:[2,48],123:[2,48],125:[2,48],126:[2,48],129:[2,48],130:[2,48],131:[2,48],132:[2,48],133:[2,48],134:[2,48]},{1:[2,179],6:[2,179],25:[2,179],26:[2,179],47:[2,179],52:[2,179],55:[2,179],70:[2,179],75:[2,179],83:[2,179],88:[2,179],90:[2,179],99:[2,179],100:85,101:[2,179],102:[2,179],103:[2,179],106:86,107:[2,179],108:67,115:[2,179],123:[2,179],125:[2,179],126:[2,179],129:[1,76],130:[2,179],131:[2,179],132:[2,179],133:[2,179],134:[2,179]},{100:88,101:[1,63],103:[1,64],106:89,107:[1,66],108:67,123:[1,87]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],47:[2,180],52:[2,180],55:[2,180],70:[2,180],75:[2,180],83:[2,180],88:[2,180],90:[2,180],99:[2,180],100:85,101:[2,180],102:[2,180],103:[2,180],106:86,107:[2,180],108:67,115:[2,180],123:[2,180],125:[2,180],126:[2,180],129:[1,76],130:[2,180],131:[2,180],132:[2,180],133:[2,180],134:[2,180]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],47:[2,181],52:[2,181],55:[2,181],70:[2,181],75:[2,181],83:[2,181],88:[2,181],90:[2,181],99:[2,181],100:85,101:[2,181],102:[2,181],103:[2,181],106:86,107:[2,181],108:67,115:[2,181],123:[2,181],125:[2,181],126:[2,181],129:[1,76],130:[2,181],131:[2,181],132:[2,181],133:[2,181],134:[2,181]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],47:[2,182],52:[2,182],55:[2,182],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,182],71:[2,68],75:[2,182],81:[2,68],82:[2,68],83:[2,182],88:[2,182],90:[2,182],99:[2,182],101:[2,182],102:[2,182],103:[2,182],107:[2,182],115:[2,182],123:[2,182],125:[2,182],126:[2,182],129:[2,182],130:[2,182],131:[2,182],132:[2,182],133:[2,182],134:[2,182]},{60:91,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],71:[1,98],78:90,81:[1,92],82:[2,103]},{60:100,64:[1,93],65:[1,94],66:[1,95],67:96,68:[1,97],71:[1,98],78:99,81:[1,92],82:[2,103]},{64:[2,71],65:[2,71],66:[2,71],68:[2,71],71:[2,71],81:[2,71],82:[2,71]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],47:[2,183],52:[2,183],55:[2,183],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,183],71:[2,68],75:[2,183],81:[2,68],82:[2,68],83:[2,183],88:[2,183],90:[2,183],99:[2,183],101:[2,183],102:[2,183],103:[2,183],107:[2,183],115:[2,183],123:[2,183],125:[2,183],126:[2,183],129:[2,183],130:[2,183],131:[2,183],132:[2,183],133:[2,183],134:[2,183]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],47:[2,184],52:[2,184],55:[2,184],70:[2,184],75:[2,184],83:[2,184],88:[2,184],90:[2,184],99:[2,184],101:[2,184],102:[2,184],103:[2,184],107:[2,184],115:[2,184],123:[2,184],125:[2,184],126:[2,184],129:[2,184],130:[2,184],131:[2,184],132:[2,184],133:[2,184],134:[2,184]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],47:[2,185],52:[2,185],55:[2,185],70:[2,185],75:[2,185],83:[2,185],88:[2,185],90:[2,185],99:[2,185],101:[2,185],102:[2,185],103:[2,185],107:[2,185],115:[2,185],123:[2,185],125:[2,185],126:[2,185],129:[2,185],130:[2,185],131:[2,185],132:[2,185],133:[2,185],134:[2,185]},{8:202,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,203],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:204,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{5:205,25:[1,5],122:[1,206]},{1:[2,128],6:[2,128],25:[2,128],26:[2,128],47:[2,128],52:[2,128],55:[2,128],70:[2,128],75:[2,128],83:[2,128],88:[2,128],90:[2,128],94:207,95:[1,208],96:[1,209],99:[2,128],101:[2,128],102:[2,128],103:[2,128],107:[2,128],115:[2,128],123:[2,128],125:[2,128],126:[2,128],129:[2,128],130:[2,128],131:[2,128],132:[2,128],133:[2,128],134:[2,128]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],47:[2,140],52:[2,140],55:[2,140],70:[2,140],75:[2,140],83:[2,140],88:[2,140],90:[2,140],99:[2,140],101:[2,140],102:[2,140],103:[2,140],107:[2,140],115:[2,140],123:[2,140],125:[2,140],126:[2,140],129:[2,140],130:[2,140],131:[2,140],132:[2,140],133:[2,140],134:[2,140]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],47:[2,148],52:[2,148],55:[2,148],70:[2,148],75:[2,148],83:[2,148],88:[2,148],90:[2,148],99:[2,148],101:[2,148],102:[2,148],103:[2,148],107:[2,148],115:[2,148],123:[2,148],125:[2,148],126:[2,148],129:[2,148],130:[2,148],131:[2,148],132:[2,148],133:[2,148],134:[2,148]},{25:[1,210],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{117:211,119:212,120:[1,213]},{1:[2,92],6:[2,92],25:[2,92],26:[2,92],47:[2,92],52:[2,92],55:[2,92],70:[2,92],75:[2,92],83:[2,92],88:[2,92],90:[2,92],99:[2,92],101:[2,92],102:[2,92],103:[2,92],107:[2,92],115:[2,92],123:[2,92],125:[2,92],126:[2,92],129:[2,92],130:[2,92],131:[2,92],132:[2,92],133:[2,92],134:[2,92]},{8:214,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,95],5:215,6:[2,95],25:[1,5],26:[2,95],47:[2,95],52:[2,95],55:[2,95],64:[2,68],65:[2,68],66:[2,68],68:[2,68],70:[2,95],71:[2,68],75:[2,95],77:[1,216],81:[2,68],82:[2,68],83:[2,95],88:[2,95],90:[2,95],99:[2,95],101:[2,95],102:[2,95],103:[2,95],107:[2,95],115:[2,95],123:[2,95],125:[2,95],126:[2,95],129:[2,95],130:[2,95],131:[2,95],132:[2,95],133:[2,95],134:[2,95]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],47:[2,133],52:[2,133],55:[2,133],70:[2,133],75:[2,133],83:[2,133],88:[2,133],90:[2,133],99:[2,133],100:85,101:[2,133],102:[2,133],103:[2,133],106:86,107:[2,133],108:67,115:[2,133],123:[2,133],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,44],6:[2,44],26:[2,44],99:[2,44],100:85,101:[2,44],103:[2,44],106:86,107:[2,44],108:67,123:[2,44],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,72],99:[1,217]},{4:218,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,124],25:[2,124],52:[2,124],55:[1,220],88:[2,124],89:219,90:[1,188],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],38:[2,110],47:[2,110],52:[2,110],55:[2,110],64:[2,110],65:[2,110],66:[2,110],68:[2,110],70:[2,110],71:[2,110],75:[2,110],81:[2,110],82:[2,110],83:[2,110],88:[2,110],90:[2,110],99:[2,110],101:[2,110],102:[2,110],103:[2,110],107:[2,110],113:[2,110],114:[2,110],115:[2,110],123:[2,110],125:[2,110],126:[2,110],129:[2,110],130:[2,110],131:[2,110],132:[2,110],133:[2,110],134:[2,110]},{6:[2,51],25:[2,51],51:221,52:[1,222],88:[2,51]},{6:[2,119],25:[2,119],26:[2,119],52:[2,119],83:[2,119],88:[2,119]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:223,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,125],25:[2,125],26:[2,125],52:[2,125],83:[2,125],88:[2,125]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],38:[2,109],41:[2,109],47:[2,109],52:[2,109],55:[2,109],64:[2,109],65:[2,109],66:[2,109],68:[2,109],70:[2,109],71:[2,109],75:[2,109],77:[2,109],81:[2,109],82:[2,109],83:[2,109],88:[2,109],90:[2,109],99:[2,109],101:[2,109],102:[2,109],103:[2,109],107:[2,109],115:[2,109],123:[2,109],125:[2,109],126:[2,109],127:[2,109],128:[2,109],129:[2,109],130:[2,109],131:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109]},{5:224,25:[1,5],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],47:[2,136],52:[2,136],55:[2,136],70:[2,136],75:[2,136],83:[2,136],88:[2,136],90:[2,136],99:[2,136],100:85,101:[1,63],102:[1,225],103:[1,64],106:86,107:[1,66],108:67,115:[2,136],123:[2,136],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],47:[2,138],52:[2,138],55:[2,138],70:[2,138],75:[2,138],83:[2,138],88:[2,138],90:[2,138],99:[2,138],100:85,101:[1,63],102:[1,226],103:[1,64],106:86,107:[1,66],108:67,115:[2,138],123:[2,138],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],47:[2,144],52:[2,144],55:[2,144],70:[2,144],75:[2,144],83:[2,144],88:[2,144],90:[2,144],99:[2,144],101:[2,144],102:[2,144],103:[2,144],107:[2,144],115:[2,144],123:[2,144],125:[2,144],126:[2,144],129:[2,144],130:[2,144],131:[2,144],132:[2,144],133:[2,144],134:[2,144]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],47:[2,145],52:[2,145],55:[2,145],70:[2,145],75:[2,145],83:[2,145],88:[2,145],90:[2,145],99:[2,145],100:85,101:[1,63],102:[2,145],103:[1,64],106:86,107:[1,66],108:67,115:[2,145],123:[2,145],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],47:[2,149],52:[2,149],55:[2,149],70:[2,149],75:[2,149],83:[2,149],88:[2,149],90:[2,149],99:[2,149],101:[2,149],102:[2,149],103:[2,149],107:[2,149],115:[2,149],123:[2,149],125:[2,149],126:[2,149],129:[2,149],130:[2,149],131:[2,149],132:[2,149],133:[2,149],134:[2,149]},{113:[2,151],114:[2,151]},{27:156,28:[1,71],56:157,57:158,73:[1,68],87:[1,112],110:227,112:155},{52:[1,228],113:[2,156],114:[2,156]},{52:[2,153],113:[2,153],114:[2,153]},{52:[2,154],113:[2,154],114:[2,154]},{52:[2,155],113:[2,155],114:[2,155]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],47:[2,150],52:[2,150],55:[2,150],70:[2,150],75:[2,150],83:[2,150],88:[2,150],90:[2,150],99:[2,150],101:[2,150],102:[2,150],103:[2,150],107:[2,150],115:[2,150],123:[2,150],125:[2,150],126:[2,150],129:[2,150],130:[2,150],131:[2,150],132:[2,150],133:[2,150],134:[2,150]},{8:229,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:230,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,51],25:[2,51],51:231,52:[1,232],75:[2,51]},{6:[2,87],25:[2,87],26:[2,87],52:[2,87],75:[2,87]},{6:[2,37],25:[2,37],26:[2,37],41:[1,233],52:[2,37],75:[2,37]},{6:[2,40],25:[2,40],26:[2,40],52:[2,40],75:[2,40]},{6:[2,41],25:[2,41],26:[2,41],41:[2,41],52:[2,41],75:[2,41]},{6:[2,42],25:[2,42],26:[2,42],41:[2,42],52:[2,42],75:[2,42]},{6:[2,43],25:[2,43],26:[2,43],41:[2,43],52:[2,43],75:[2,43]},{1:[2,5],6:[2,5],26:[2,5],99:[2,5]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],47:[2,25],52:[2,25],55:[2,25],70:[2,25],75:[2,25],83:[2,25],88:[2,25],90:[2,25],95:[2,25],96:[2,25],99:[2,25],101:[2,25],102:[2,25],103:[2,25],107:[2,25],115:[2,25],118:[2,25],120:[2,25],123:[2,25],125:[2,25],126:[2,25],129:[2,25],130:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],47:[2,187],52:[2,187],55:[2,187],70:[2,187],75:[2,187],83:[2,187],88:[2,187],90:[2,187],99:[2,187],100:85,101:[2,187],102:[2,187],103:[2,187],106:86,107:[2,187],108:67,115:[2,187],123:[2,187],125:[2,187],126:[2,187],129:[1,76],130:[1,79],131:[2,187],132:[2,187],133:[2,187],134:[2,187]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],47:[2,188],52:[2,188],55:[2,188],70:[2,188],75:[2,188],83:[2,188],88:[2,188],90:[2,188],99:[2,188],100:85,101:[2,188],102:[2,188],103:[2,188],106:86,107:[2,188],108:67,115:[2,188],123:[2,188],125:[2,188],126:[2,188],129:[1,76],130:[1,79],131:[2,188],132:[2,188],133:[2,188],134:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],47:[2,189],52:[2,189],55:[2,189],70:[2,189],75:[2,189],83:[2,189],88:[2,189],90:[2,189],99:[2,189],100:85,101:[2,189],102:[2,189],103:[2,189],106:86,107:[2,189],108:67,115:[2,189],123:[2,189],125:[2,189],126:[2,189],129:[1,76],130:[2,189],131:[2,189],132:[2,189],133:[2,189],134:[2,189]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],47:[2,190],52:[2,190],55:[2,190],70:[2,190],75:[2,190],83:[2,190],88:[2,190],90:[2,190],99:[2,190],100:85,101:[2,190],102:[2,190],103:[2,190],106:86,107:[2,190],108:67,115:[2,190],123:[2,190],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[2,190],132:[2,190],133:[2,190],134:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],47:[2,191],52:[2,191],55:[2,191],70:[2,191],75:[2,191],83:[2,191],88:[2,191],90:[2,191],99:[2,191],100:85,101:[2,191],102:[2,191],103:[2,191],106:86,107:[2,191],108:67,115:[2,191],123:[2,191],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[2,191],133:[2,191],134:[1,83]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],47:[2,192],52:[2,192],55:[2,192],70:[2,192],75:[2,192],83:[2,192],88:[2,192],90:[2,192],99:[2,192],100:85,101:[2,192],102:[2,192],103:[2,192],106:86,107:[2,192],108:67,115:[2,192],123:[2,192],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[2,192],134:[1,83]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],47:[2,193],52:[2,193],55:[2,193],70:[2,193],75:[2,193],83:[2,193],88:[2,193],90:[2,193],99:[2,193],100:85,101:[2,193],102:[2,193],103:[2,193],106:86,107:[2,193],108:67,115:[2,193],123:[2,193],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[2,193],133:[2,193],134:[2,193]},{1:[2,178],6:[2,178],25:[2,178],26:[2,178],47:[2,178],52:[2,178],55:[2,178],70:[2,178],75:[2,178],83:[2,178],88:[2,178],90:[2,178],99:[2,178],100:85,101:[1,63],102:[2,178],103:[1,64],106:86,107:[1,66],108:67,115:[2,178],123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,177],6:[2,177],25:[2,177],26:[2,177],47:[2,177],52:[2,177],55:[2,177],70:[2,177],75:[2,177],83:[2,177],88:[2,177],90:[2,177],99:[2,177],100:85,101:[1,63],102:[2,177],103:[1,64],106:86,107:[1,66],108:67,115:[2,177],123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,99],6:[2,99],25:[2,99],26:[2,99],47:[2,99],52:[2,99],55:[2,99],64:[2,99],65:[2,99],66:[2,99],68:[2,99],70:[2,99],71:[2,99],75:[2,99],81:[2,99],82:[2,99],83:[2,99],88:[2,99],90:[2,99],99:[2,99],101:[2,99],102:[2,99],103:[2,99],107:[2,99],115:[2,99],123:[2,99],125:[2,99],126:[2,99],129:[2,99],130:[2,99],131:[2,99],132:[2,99],133:[2,99],134:[2,99]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],38:[2,76],47:[2,76],52:[2,76],55:[2,76],64:[2,76],65:[2,76],66:[2,76],68:[2,76],70:[2,76],71:[2,76],75:[2,76],77:[2,76],81:[2,76],82:[2,76],83:[2,76],88:[2,76],90:[2,76],99:[2,76],101:[2,76],102:[2,76],103:[2,76],107:[2,76],115:[2,76],123:[2,76],125:[2,76],126:[2,76],127:[2,76],128:[2,76],129:[2,76],130:[2,76],131:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],38:[2,77],47:[2,77],52:[2,77],55:[2,77],64:[2,77],65:[2,77],66:[2,77],68:[2,77],70:[2,77],71:[2,77],75:[2,77],77:[2,77],81:[2,77],82:[2,77],83:[2,77],88:[2,77],90:[2,77],99:[2,77],101:[2,77],102:[2,77],103:[2,77],107:[2,77],115:[2,77],123:[2,77],125:[2,77],126:[2,77],127:[2,77],128:[2,77],129:[2,77],130:[2,77],131:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],38:[2,78],47:[2,78],52:[2,78],55:[2,78],64:[2,78],65:[2,78],66:[2,78],68:[2,78],70:[2,78],71:[2,78],75:[2,78],77:[2,78],81:[2,78],82:[2,78],83:[2,78],88:[2,78],90:[2,78],99:[2,78],101:[2,78],102:[2,78],103:[2,78],107:[2,78],115:[2,78],123:[2,78],125:[2,78],126:[2,78],127:[2,78],128:[2,78],129:[2,78],130:[2,78],131:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78]},{70:[1,234]},{55:[1,189],70:[2,83],89:235,90:[1,188],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{70:[2,84]},{8:236,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,70:[2,118],73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{12:[2,112],28:[2,112],30:[2,112],31:[2,112],33:[2,112],34:[2,112],35:[2,112],36:[2,112],43:[2,112],44:[2,112],45:[2,112],49:[2,112],50:[2,112],70:[2,112],73:[2,112],76:[2,112],80:[2,112],85:[2,112],86:[2,112],87:[2,112],93:[2,112],97:[2,112],98:[2,112],101:[2,112],103:[2,112],105:[2,112],107:[2,112],116:[2,112],122:[2,112],124:[2,112],125:[2,112],126:[2,112],127:[2,112],128:[2,112]},{12:[2,113],28:[2,113],30:[2,113],31:[2,113],33:[2,113],34:[2,113],35:[2,113],36:[2,113],43:[2,113],44:[2,113],45:[2,113],49:[2,113],50:[2,113],70:[2,113],73:[2,113],76:[2,113],80:[2,113],85:[2,113],86:[2,113],87:[2,113],93:[2,113],97:[2,113],98:[2,113],101:[2,113],103:[2,113],105:[2,113],107:[2,113],116:[2,113],122:[2,113],124:[2,113],125:[2,113],126:[2,113],127:[2,113],128:[2,113]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],38:[2,82],47:[2,82],52:[2,82],55:[2,82],64:[2,82],65:[2,82],66:[2,82],68:[2,82],70:[2,82],71:[2,82],75:[2,82],77:[2,82],81:[2,82],82:[2,82],83:[2,82],88:[2,82],90:[2,82],99:[2,82],101:[2,82],102:[2,82],103:[2,82],107:[2,82],115:[2,82],123:[2,82],125:[2,82],126:[2,82],127:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],47:[2,100],52:[2,100],55:[2,100],64:[2,100],65:[2,100],66:[2,100],68:[2,100],70:[2,100],71:[2,100],75:[2,100],81:[2,100],82:[2,100],83:[2,100],88:[2,100],90:[2,100],99:[2,100],101:[2,100],102:[2,100],103:[2,100],107:[2,100],115:[2,100],123:[2,100],125:[2,100],126:[2,100],129:[2,100],130:[2,100],131:[2,100],132:[2,100],133:[2,100],134:[2,100]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],47:[2,34],52:[2,34],55:[2,34],70:[2,34],75:[2,34],83:[2,34],88:[2,34],90:[2,34],99:[2,34],100:85,101:[2,34],102:[2,34],103:[2,34],106:86,107:[2,34],108:67,115:[2,34],123:[2,34],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:237,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:238,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],47:[2,105],52:[2,105],55:[2,105],64:[2,105],65:[2,105],66:[2,105],68:[2,105],70:[2,105],71:[2,105],75:[2,105],81:[2,105],82:[2,105],83:[2,105],88:[2,105],90:[2,105],99:[2,105],101:[2,105],102:[2,105],103:[2,105],107:[2,105],115:[2,105],123:[2,105],125:[2,105],126:[2,105],129:[2,105],130:[2,105],131:[2,105],132:[2,105],133:[2,105],134:[2,105]},{6:[2,51],25:[2,51],51:239,52:[1,222],83:[2,51]},{6:[2,124],25:[2,124],26:[2,124],52:[2,124],55:[1,240],83:[2,124],88:[2,124],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{48:241,49:[1,58],50:[1,59]},{27:107,28:[1,71],42:108,53:242,54:106,56:109,57:110,73:[1,68],86:[1,111],87:[1,112]},{47:[2,57],52:[2,57]},{8:243,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],47:[2,194],52:[2,194],55:[2,194],70:[2,194],75:[2,194],83:[2,194],88:[2,194],90:[2,194],99:[2,194],100:85,101:[2,194],102:[2,194],103:[2,194],106:86,107:[2,194],108:67,115:[2,194],123:[2,194],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:244,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],47:[2,196],52:[2,196],55:[2,196],70:[2,196],75:[2,196],83:[2,196],88:[2,196],90:[2,196],99:[2,196],100:85,101:[2,196],102:[2,196],103:[2,196],106:86,107:[2,196],108:67,115:[2,196],123:[2,196],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,176],6:[2,176],25:[2,176],26:[2,176],47:[2,176],52:[2,176],55:[2,176],70:[2,176],75:[2,176],83:[2,176],88:[2,176],90:[2,176],99:[2,176],101:[2,176],102:[2,176],103:[2,176],107:[2,176],115:[2,176],123:[2,176],125:[2,176],126:[2,176],129:[2,176],130:[2,176],131:[2,176],132:[2,176],133:[2,176],134:[2,176]},{8:245,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,129],6:[2,129],25:[2,129],26:[2,129],47:[2,129],52:[2,129],55:[2,129],70:[2,129],75:[2,129],83:[2,129],88:[2,129],90:[2,129],95:[1,246],99:[2,129],101:[2,129],102:[2,129],103:[2,129],107:[2,129],115:[2,129],123:[2,129],125:[2,129],126:[2,129],129:[2,129],130:[2,129],131:[2,129],132:[2,129],133:[2,129],134:[2,129]},{5:247,25:[1,5]},{27:248,28:[1,71]},{117:249,119:212,120:[1,213]},{26:[1,250],118:[1,251],119:252,120:[1,213]},{26:[2,169],118:[2,169],120:[2,169]},{8:254,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],92:253,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,93],5:255,6:[2,93],25:[1,5],26:[2,93],47:[2,93],52:[2,93],55:[2,93],70:[2,93],75:[2,93],83:[2,93],88:[2,93],90:[2,93],99:[2,93],100:85,101:[1,63],102:[2,93],103:[1,64],106:86,107:[1,66],108:67,115:[2,93],123:[2,93],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],47:[2,96],52:[2,96],55:[2,96],70:[2,96],75:[2,96],83:[2,96],88:[2,96],90:[2,96],99:[2,96],101:[2,96],102:[2,96],103:[2,96],107:[2,96],115:[2,96],123:[2,96],125:[2,96],126:[2,96],129:[2,96],130:[2,96],131:[2,96],132:[2,96],133:[2,96],134:[2,96]},{8:256,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],47:[2,134],52:[2,134],55:[2,134],64:[2,134],65:[2,134],66:[2,134],68:[2,134],70:[2,134],71:[2,134],75:[2,134],81:[2,134],82:[2,134],83:[2,134],88:[2,134],90:[2,134],99:[2,134],101:[2,134],102:[2,134],103:[2,134],107:[2,134],115:[2,134],123:[2,134],125:[2,134],126:[2,134],129:[2,134],130:[2,134],131:[2,134],132:[2,134],133:[2,134],134:[2,134]},{6:[1,72],26:[1,257]},{8:258,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,63],12:[2,113],25:[2,63],28:[2,113],30:[2,113],31:[2,113],33:[2,113],34:[2,113],35:[2,113],36:[2,113],43:[2,113],44:[2,113],45:[2,113],49:[2,113],50:[2,113],52:[2,63],73:[2,113],76:[2,113],80:[2,113],85:[2,113],86:[2,113],87:[2,113],88:[2,63],93:[2,113],97:[2,113],98:[2,113],101:[2,113],103:[2,113],105:[2,113],107:[2,113],116:[2,113],122:[2,113],124:[2,113],125:[2,113],126:[2,113],127:[2,113],128:[2,113]},{6:[1,260],25:[1,261],88:[1,259]},{6:[2,52],8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[2,52],26:[2,52],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],83:[2,52],85:[1,56],86:[1,57],87:[1,55],88:[2,52],91:262,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,51],25:[2,51],26:[2,51],51:263,52:[1,222]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],47:[2,173],52:[2,173],55:[2,173],70:[2,173],75:[2,173],83:[2,173],88:[2,173],90:[2,173],99:[2,173],101:[2,173],102:[2,173],103:[2,173],107:[2,173],115:[2,173],118:[2,173],123:[2,173],125:[2,173],126:[2,173],129:[2,173],130:[2,173],131:[2,173],132:[2,173],133:[2,173],134:[2,173]},{8:264,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:265,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{113:[2,152],114:[2,152]},{27:156,28:[1,71],56:157,57:158,73:[1,68],87:[1,112],112:266},{1:[2,158],6:[2,158],25:[2,158],26:[2,158],47:[2,158],52:[2,158],55:[2,158],70:[2,158],75:[2,158],83:[2,158],88:[2,158],90:[2,158],99:[2,158],100:85,101:[2,158],102:[1,267],103:[2,158],106:86,107:[2,158],108:67,115:[1,268],123:[2,158],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,159],6:[2,159],25:[2,159],26:[2,159],47:[2,159],52:[2,159],55:[2,159],70:[2,159],75:[2,159],83:[2,159],88:[2,159],90:[2,159],99:[2,159],100:85,101:[2,159],102:[1,269],103:[2,159],106:86,107:[2,159],108:67,115:[2,159],123:[2,159],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,271],25:[1,272],75:[1,270]},{6:[2,52],11:165,25:[2,52],26:[2,52],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:273,40:164,42:168,44:[1,46],75:[2,52],86:[1,111]},{8:274,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,275],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],38:[2,81],47:[2,81],52:[2,81],55:[2,81],64:[2,81],65:[2,81],66:[2,81],68:[2,81],70:[2,81],71:[2,81],75:[2,81],77:[2,81],81:[2,81],82:[2,81],83:[2,81],88:[2,81],90:[2,81],99:[2,81],101:[2,81],102:[2,81],103:[2,81],107:[2,81],115:[2,81],123:[2,81],125:[2,81],126:[2,81],127:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81]},{8:276,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,70:[2,116],73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{70:[2,117],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],47:[2,35],52:[2,35],55:[2,35],70:[2,35],75:[2,35],83:[2,35],88:[2,35],90:[2,35],99:[2,35],100:85,101:[2,35],102:[2,35],103:[2,35],106:86,107:[2,35],108:67,115:[2,35],123:[2,35],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,277],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,260],25:[1,261],83:[1,278]},{6:[2,63],25:[2,63],26:[2,63],52:[2,63],83:[2,63],88:[2,63]},{5:279,25:[1,5]},{47:[2,55],52:[2,55]},{47:[2,58],52:[2,58],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,280],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{5:281,25:[1,5],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{5:282,25:[1,5]},{1:[2,130],6:[2,130],25:[2,130],26:[2,130],47:[2,130],52:[2,130],55:[2,130],70:[2,130],75:[2,130],83:[2,130],88:[2,130],90:[2,130],99:[2,130],101:[2,130],102:[2,130],103:[2,130],107:[2,130],115:[2,130],123:[2,130],125:[2,130],126:[2,130],129:[2,130],130:[2,130],131:[2,130],132:[2,130],133:[2,130],134:[2,130]},{5:283,25:[1,5]},{26:[1,284],118:[1,285],119:252,120:[1,213]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],47:[2,167],52:[2,167],55:[2,167],70:[2,167],75:[2,167],83:[2,167],88:[2,167],90:[2,167],99:[2,167],101:[2,167],102:[2,167],103:[2,167],107:[2,167],115:[2,167],123:[2,167],125:[2,167],126:[2,167],129:[2,167],130:[2,167],131:[2,167],132:[2,167],133:[2,167],134:[2,167]},{5:286,25:[1,5]},{26:[2,170],118:[2,170],120:[2,170]},{5:287,25:[1,5],52:[1,288]},{25:[2,126],52:[2,126],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,94],6:[2,94],25:[2,94],26:[2,94],47:[2,94],52:[2,94],55:[2,94],70:[2,94],75:[2,94],83:[2,94],88:[2,94],90:[2,94],99:[2,94],101:[2,94],102:[2,94],103:[2,94],107:[2,94],115:[2,94],123:[2,94],125:[2,94],126:[2,94],129:[2,94],130:[2,94],131:[2,94],132:[2,94],133:[2,94],134:[2,94]},{1:[2,97],5:289,6:[2,97],25:[1,5],26:[2,97],47:[2,97],52:[2,97],55:[2,97],70:[2,97],75:[2,97],83:[2,97],88:[2,97],90:[2,97],99:[2,97],100:85,101:[1,63],102:[2,97],103:[1,64],106:86,107:[1,66],108:67,115:[2,97],123:[2,97],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{99:[1,290]},{88:[1,291],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],38:[2,111],47:[2,111],52:[2,111],55:[2,111],64:[2,111],65:[2,111],66:[2,111],68:[2,111],70:[2,111],71:[2,111],75:[2,111],81:[2,111],82:[2,111],83:[2,111],88:[2,111],90:[2,111],99:[2,111],101:[2,111],102:[2,111],103:[2,111],107:[2,111],113:[2,111],114:[2,111],115:[2,111],123:[2,111],125:[2,111],126:[2,111],129:[2,111],130:[2,111],131:[2,111],132:[2,111],133:[2,111],134:[2,111]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],91:292,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:197,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,144],27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,58:145,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],84:293,85:[1,56],86:[1,57],87:[1,55],91:143,93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[2,120],25:[2,120],26:[2,120],52:[2,120],83:[2,120],88:[2,120]},{6:[1,260],25:[1,261],26:[1,294]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],47:[2,137],52:[2,137],55:[2,137],70:[2,137],75:[2,137],83:[2,137],88:[2,137],90:[2,137],99:[2,137],100:85,101:[1,63],102:[2,137],103:[1,64],106:86,107:[1,66],108:67,115:[2,137],123:[2,137],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],47:[2,139],52:[2,139],55:[2,139],70:[2,139],75:[2,139],83:[2,139],88:[2,139],90:[2,139],99:[2,139],100:85,101:[1,63],102:[2,139],103:[1,64],106:86,107:[1,66],108:67,115:[2,139],123:[2,139],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{113:[2,157],114:[2,157]},{8:295,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:296,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:297,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],38:[2,85],47:[2,85],52:[2,85],55:[2,85],64:[2,85],65:[2,85],66:[2,85],68:[2,85],70:[2,85],71:[2,85],75:[2,85],81:[2,85],82:[2,85],83:[2,85],88:[2,85],90:[2,85],99:[2,85],101:[2,85],102:[2,85],103:[2,85],107:[2,85],113:[2,85],114:[2,85],115:[2,85],123:[2,85],125:[2,85],126:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85]},{11:165,27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:298,40:164,42:168,44:[1,46],86:[1,111]},{6:[2,86],11:165,25:[2,86],26:[2,86],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],39:163,40:164,42:168,44:[1,46],52:[2,86],74:299,86:[1,111]},{6:[2,88],25:[2,88],26:[2,88],52:[2,88],75:[2,88]},{6:[2,38],25:[2,38],26:[2,38],52:[2,38],75:[2,38],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{8:300,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{70:[2,115],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],47:[2,36],52:[2,36],55:[2,36],70:[2,36],75:[2,36],83:[2,36],88:[2,36],90:[2,36],99:[2,36],101:[2,36],102:[2,36],103:[2,36],107:[2,36],115:[2,36],123:[2,36],125:[2,36],126:[2,36],129:[2,36],130:[2,36],131:[2,36],132:[2,36],133:[2,36],134:[2,36]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],47:[2,106],52:[2,106],55:[2,106],64:[2,106],65:[2,106],66:[2,106],68:[2,106],70:[2,106],71:[2,106],75:[2,106],81:[2,106],82:[2,106],83:[2,106],88:[2,106],90:[2,106],99:[2,106],101:[2,106],102:[2,106],103:[2,106],107:[2,106],115:[2,106],123:[2,106],125:[2,106],126:[2,106],129:[2,106],130:[2,106],131:[2,106],132:[2,106],133:[2,106],134:[2,106]},{1:[2,47],6:[2,47],25:[2,47],26:[2,47],47:[2,47],52:[2,47],55:[2,47],70:[2,47],75:[2,47],83:[2,47],88:[2,47],90:[2,47],99:[2,47],101:[2,47],102:[2,47],103:[2,47],107:[2,47],115:[2,47],123:[2,47],125:[2,47],126:[2,47],129:[2,47],130:[2,47],131:[2,47],132:[2,47],133:[2,47],134:[2,47]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],47:[2,195],52:[2,195],55:[2,195],70:[2,195],75:[2,195],83:[2,195],88:[2,195],90:[2,195],99:[2,195],101:[2,195],102:[2,195],103:[2,195],107:[2,195],115:[2,195],123:[2,195],125:[2,195],126:[2,195],129:[2,195],130:[2,195],131:[2,195],132:[2,195],133:[2,195],134:[2,195]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],47:[2,174],52:[2,174],55:[2,174],70:[2,174],75:[2,174],83:[2,174],88:[2,174],90:[2,174],99:[2,174],101:[2,174],102:[2,174],103:[2,174],107:[2,174],115:[2,174],118:[2,174],123:[2,174],125:[2,174],126:[2,174],129:[2,174],130:[2,174],131:[2,174],132:[2,174],133:[2,174],134:[2,174]},{1:[2,131],6:[2,131],25:[2,131],26:[2,131],47:[2,131],52:[2,131],55:[2,131],70:[2,131],75:[2,131],83:[2,131],88:[2,131],90:[2,131],99:[2,131],101:[2,131],102:[2,131],103:[2,131],107:[2,131],115:[2,131],123:[2,131],125:[2,131],126:[2,131],129:[2,131],130:[2,131],131:[2,131],132:[2,131],133:[2,131],134:[2,131]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],47:[2,132],52:[2,132],55:[2,132],70:[2,132],75:[2,132],83:[2,132],88:[2,132],90:[2,132],95:[2,132],99:[2,132],101:[2,132],102:[2,132],103:[2,132],107:[2,132],115:[2,132],123:[2,132],125:[2,132],126:[2,132],129:[2,132],130:[2,132],131:[2,132],132:[2,132],133:[2,132],134:[2,132]},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],47:[2,165],52:[2,165],55:[2,165],70:[2,165],75:[2,165],83:[2,165],88:[2,165],90:[2,165],99:[2,165],101:[2,165],102:[2,165],103:[2,165],107:[2,165],115:[2,165],123:[2,165],125:[2,165],126:[2,165],129:[2,165],130:[2,165],131:[2,165],132:[2,165],133:[2,165],134:[2,165]},{5:301,25:[1,5]},{26:[1,302]},{6:[1,303],26:[2,171],118:[2,171],120:[2,171]},{8:304,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],47:[2,98],52:[2,98],55:[2,98],70:[2,98],75:[2,98],83:[2,98],88:[2,98],90:[2,98],99:[2,98],101:[2,98],102:[2,98],103:[2,98],107:[2,98],115:[2,98],123:[2,98],125:[2,98],126:[2,98],129:[2,98],130:[2,98],131:[2,98],132:[2,98],133:[2,98],134:[2,98]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],47:[2,135],52:[2,135],55:[2,135],64:[2,135],65:[2,135],66:[2,135],68:[2,135],70:[2,135],71:[2,135],75:[2,135],81:[2,135],82:[2,135],83:[2,135],88:[2,135],90:[2,135],99:[2,135],101:[2,135],102:[2,135],103:[2,135],107:[2,135],115:[2,135],123:[2,135],125:[2,135],126:[2,135],129:[2,135],130:[2,135],131:[2,135],132:[2,135],133:[2,135],134:[2,135]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],47:[2,114],52:[2,114],55:[2,114],64:[2,114],65:[2,114],66:[2,114],68:[2,114],70:[2,114],71:[2,114],75:[2,114],81:[2,114],82:[2,114],83:[2,114],88:[2,114],90:[2,114],99:[2,114],101:[2,114],102:[2,114],103:[2,114],107:[2,114],115:[2,114],123:[2,114],125:[2,114],126:[2,114],129:[2,114],130:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114]},{6:[2,121],25:[2,121],26:[2,121],52:[2,121],83:[2,121],88:[2,121]},{6:[2,51],25:[2,51],26:[2,51],51:305,52:[1,222]},{6:[2,122],25:[2,122],26:[2,122],52:[2,122],83:[2,122],88:[2,122]},{1:[2,160],6:[2,160],25:[2,160],26:[2,160],47:[2,160],52:[2,160],55:[2,160],70:[2,160],75:[2,160],83:[2,160],88:[2,160],90:[2,160],99:[2,160],100:85,101:[2,160],102:[2,160],103:[2,160],106:86,107:[2,160],108:67,115:[1,306],123:[2,160],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,162],6:[2,162],25:[2,162],26:[2,162],47:[2,162],52:[2,162],55:[2,162],70:[2,162],75:[2,162],83:[2,162],88:[2,162],90:[2,162],99:[2,162],100:85,101:[2,162],102:[1,307],103:[2,162],106:86,107:[2,162],108:67,115:[2,162],123:[2,162],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,161],6:[2,161],25:[2,161],26:[2,161],47:[2,161],52:[2,161],55:[2,161],70:[2,161],75:[2,161],83:[2,161],88:[2,161],90:[2,161],99:[2,161],100:85,101:[2,161],102:[2,161],103:[2,161],106:86,107:[2,161],108:67,115:[2,161],123:[2,161],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[2,89],25:[2,89],26:[2,89],52:[2,89],75:[2,89]},{6:[2,51],25:[2,51],26:[2,51],51:308,52:[1,232]},{26:[1,309],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{26:[1,310]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],47:[2,168],52:[2,168],55:[2,168],70:[2,168],75:[2,168],83:[2,168],88:[2,168],90:[2,168],99:[2,168],101:[2,168],102:[2,168],103:[2,168],107:[2,168],115:[2,168],123:[2,168],125:[2,168],126:[2,168],129:[2,168],130:[2,168],131:[2,168],132:[2,168],133:[2,168],134:[2,168]},{26:[2,172],118:[2,172],120:[2,172]},{25:[2,127],52:[2,127],100:85,101:[1,63],103:[1,64],106:86,107:[1,66],108:67,123:[1,84],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[1,260],25:[1,261],26:[1,311]},{8:312,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{8:313,9:115,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:60,28:[1,71],29:49,30:[1,69],31:[1,70],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:23,42:61,43:[1,45],44:[1,46],45:[1,29],48:30,49:[1,58],50:[1,59],56:47,57:48,59:36,61:25,62:26,63:27,73:[1,68],76:[1,43],80:[1,28],85:[1,56],86:[1,57],87:[1,55],93:[1,38],97:[1,44],98:[1,54],100:39,101:[1,63],103:[1,64],104:40,105:[1,65],106:41,107:[1,66],108:67,116:[1,42],121:37,122:[1,62],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{6:[1,271],25:[1,272],26:[1,314]},{6:[2,39],25:[2,39],26:[2,39],52:[2,39],75:[2,39]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],47:[2,166],52:[2,166],55:[2,166],70:[2,166],75:[2,166],83:[2,166],88:[2,166],90:[2,166],99:[2,166],101:[2,166],102:[2,166],103:[2,166],107:[2,166],115:[2,166],123:[2,166],125:[2,166],126:[2,166],129:[2,166],130:[2,166],131:[2,166],132:[2,166],133:[2,166],134:[2,166]},{6:[2,123],25:[2,123],26:[2,123],52:[2,123],83:[2,123],88:[2,123]},{1:[2,163],6:[2,163],25:[2,163],26:[2,163],47:[2,163],52:[2,163],55:[2,163],70:[2,163],75:[2,163],83:[2,163],88:[2,163],90:[2,163],99:[2,163],100:85,101:[2,163],102:[2,163],103:[2,163],106:86,107:[2,163],108:67,115:[2,163],123:[2,163],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{1:[2,164],6:[2,164],25:[2,164],26:[2,164],47:[2,164],52:[2,164],55:[2,164],70:[2,164],75:[2,164],83:[2,164],88:[2,164],90:[2,164],99:[2,164],100:85,101:[2,164],102:[2,164],103:[2,164],106:86,107:[2,164],108:67,115:[2,164],123:[2,164],125:[1,78],126:[1,77],129:[1,76],130:[1,79],131:[1,80],132:[1,81],133:[1,82],134:[1,83]},{6:[2,90],25:[2,90],26:[2,90],52:[2,90],75:[2,90]}],
-defaultActions: {58:[2,49],59:[2,50],73:[2,3],92:[2,104],186:[2,84]},
-parseError: function parseError(str, hash) {
-    throw new Error(str);
-},
-parse: function parse(input) {
-    var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
-    this.lexer.setInput(input);
-    this.lexer.yy = this.yy;
-    this.yy.lexer = this.lexer;
-    if (typeof this.lexer.yylloc == "undefined")
-        this.lexer.yylloc = {};
-    var yyloc = this.lexer.yylloc;
-    lstack.push(yyloc);
-    if (typeof this.yy.parseError === "function")
-        this.parseError = this.yy.parseError;
-    function popStack(n) {
-        stack.length = stack.length - 2 * n;
-        vstack.length = vstack.length - n;
-        lstack.length = lstack.length - n;
-    }
-    function lex() {
-        var token;
-        token = self.lexer.lex() || 1;
-        if (typeof token !== "number") {
-            token = self.symbols_[token] || token;
-        }
-        return token;
-    }
-    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
-    while (true) {
-        state = stack[stack.length - 1];
-        if (this.defaultActions[state]) {
-            action = this.defaultActions[state];
-        } else {
-            if (symbol == null)
-                symbol = lex();
-            action = table[state] && table[state][symbol];
-        }
-        if (typeof action === "undefined" || !action.length || !action[0]) {
-            if (!recovering) {
-                expected = [];
-                for (p in table[state])
-                    if (this.terminals_[p] && p > 2) {
-                        expected.push("'" + this.terminals_[p] + "'");
-                    }
-                var errStr = "";
-                if (this.lexer.showPosition) {
-                    errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + this.terminals_[symbol] + "'";
-                } else {
-                    errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
-                }
-                this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
-            }
-        }
-        if (action[0] instanceof Array && action.length > 1) {
-            throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
-        }
-        switch (action[0]) {
-        case 1:
-            stack.push(symbol);
-            vstack.push(this.lexer.yytext);
-            lstack.push(this.lexer.yylloc);
-            stack.push(action[1]);
-            symbol = null;
-            if (!preErrorSymbol) {
-                yyleng = this.lexer.yyleng;
-                yytext = this.lexer.yytext;
-                yylineno = this.lexer.yylineno;
-                yyloc = this.lexer.yylloc;
-                if (recovering > 0)
-                    recovering--;
-            } else {
-                symbol = preErrorSymbol;
-                preErrorSymbol = null;
-            }
-            break;
-        case 2:
-            len = this.productions_[action[1]][1];
-            yyval.$ = vstack[vstack.length - len];
-            yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
-            r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
-            if (typeof r !== "undefined") {
-                return r;
-            }
-            if (len) {
-                stack = stack.slice(0, -1 * len * 2);
-                vstack = vstack.slice(0, -1 * len);
-                lstack = lstack.slice(0, -1 * len);
-            }
-            stack.push(this.productions_[action[1]][0]);
-            vstack.push(yyval.$);
-            lstack.push(yyval._$);
-            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
-            stack.push(newState);
-            break;
-        case 3:
-            return true;
-        }
-    }
-    return true;
-}
-};
-return parser;
-})();
-if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
-exports.parser = parser;
-exports.parse = function () { return parser.parse.apply(parser, arguments); }
-exports.main = function commonjsMain(args) {
-    if (!args[1])
-        throw new Error('Usage: '+args[0]+' FILE');
-    if (typeof process !== 'undefined') {
-        var source = require('fs').readFileSync(require('path').join(process.cwd(), args[1]), "utf8");
-    } else {
-        var cwd = require("file").path(require("file").cwd());
-        var source = cwd.join(args[1]).read({charset: "utf-8"});
-    }
-    return exports.parser.parse(source);
-}
-if (typeof module !== 'undefined' && require.main === module) {
-  exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args);
-}
-}
\ No newline at end of file
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/repl.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/repl.js
deleted file mode 100644
index 6a02175..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/repl.js
+++ /dev/null
@@ -1,235 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var ACCESSOR, CoffeeScript, Module, REPL_PROMPT, REPL_PROMPT_CONTINUATION, REPL_PROMPT_MULTILINE, SIMPLEVAR, Script, autocomplete, backlog, completeAttribute, completeVariable, enableColours, error, getCompletions, inspect, multilineMode, pipedInput, readline, repl, run, stdin, stdout;
-
-  stdin = process.openStdin();
-
-  stdout = process.stdout;
-
-  CoffeeScript = require('./coffee-script');
-
-  readline = require('readline');
-
-  inspect = require('util').inspect;
-
-  Script = require('vm').Script;
-
-  Module = require('module');
-
-  REPL_PROMPT = 'coffee> ';
-
-  REPL_PROMPT_MULTILINE = '------> ';
-
-  REPL_PROMPT_CONTINUATION = '......> ';
-
-  enableColours = false;
-
-  if (process.platform !== 'win32') {
-    enableColours = !process.env.NODE_DISABLE_COLORS;
-  }
-
-  error = function(err) {
-    return stdout.write((err.stack || err.toString()) + '\n');
-  };
-
-  ACCESSOR = /\s*([\w\.]+)(?:\.(\w*))$/;
-
-  SIMPLEVAR = /(\w+)$/i;
-
-  autocomplete = function(text) {
-    return completeAttribute(text) || completeVariable(text) || [[], text];
-  };
-
-  completeAttribute = function(text) {
-    var all, completions, match, obj, prefix, val;
-    if (match = text.match(ACCESSOR)) {
-      all = match[0], obj = match[1], prefix = match[2];
-      try {
-        val = Script.runInThisContext(obj);
-      } catch (error) {
-        return;
-      }
-      completions = getCompletions(prefix, Object.getOwnPropertyNames(Object(val)));
-      return [completions, prefix];
-    }
-  };
-
-  completeVariable = function(text) {
-    var completions, free, keywords, possibilities, r, vars, _ref;
-    free = (_ref = text.match(SIMPLEVAR)) != null ? _ref[1] : void 0;
-    if (text === "") {
-      free = "";
-    }
-    if (free != null) {
-      vars = Script.runInThisContext('Object.getOwnPropertyNames(Object(this))');
-      keywords = (function() {
-        var _i, _len, _ref1, _results;
-        _ref1 = CoffeeScript.RESERVED;
-        _results = [];
-        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-          r = _ref1[_i];
-          if (r.slice(0, 2) !== '__') {
-            _results.push(r);
-          }
-        }
-        return _results;
-      })();
-      possibilities = vars.concat(keywords);
-      completions = getCompletions(free, possibilities);
-      return [completions, free];
-    }
-  };
-
-  getCompletions = function(prefix, candidates) {
-    var el, _i, _len, _results;
-    _results = [];
-    for (_i = 0, _len = candidates.length; _i < _len; _i++) {
-      el = candidates[_i];
-      if (el.indexOf(prefix) === 0) {
-        _results.push(el);
-      }
-    }
-    return _results;
-  };
-
-  process.on('uncaughtException', error);
-
-  backlog = '';
-
-  run = function(buffer) {
-    var code, returnValue, _;
-    buffer = buffer.replace(/[\r\n]+$/, "");
-    if (multilineMode) {
-      backlog += "" + buffer + "\n";
-      repl.setPrompt(REPL_PROMPT_CONTINUATION);
-      repl.prompt();
-      return;
-    }
-    if (!buffer.toString().trim() && !backlog) {
-      repl.prompt();
-      return;
-    }
-    code = backlog += buffer;
-    if (code[code.length - 1] === '\\') {
-      backlog = "" + backlog.slice(0, -1) + "\n";
-      repl.setPrompt(REPL_PROMPT_CONTINUATION);
-      repl.prompt();
-      return;
-    }
-    repl.setPrompt(REPL_PROMPT);
-    backlog = '';
-    try {
-      _ = global._;
-      returnValue = CoffeeScript["eval"]("_=(undefined\n;" + code + "\n)", {
-        filename: 'repl',
-        modulename: 'repl'
-      });
-      if (returnValue === void 0) {
-        global._ = _;
-      }
-      repl.output.write("" + (inspect(returnValue, false, 2, enableColours)) + "\n");
-    } catch (err) {
-      error(err);
-    }
-    return repl.prompt();
-  };
-
-  if (stdin.readable) {
-    pipedInput = '';
-    repl = {
-      prompt: function() {
-        return stdout.write(this._prompt);
-      },
-      setPrompt: function(p) {
-        return this._prompt = p;
-      },
-      input: stdin,
-      output: stdout,
-      on: function() {}
-    };
-    stdin.on('data', function(chunk) {
-      return pipedInput += chunk;
-    });
-    stdin.on('end', function() {
-      var line, _i, _len, _ref;
-      _ref = pipedInput.trim().split("\n");
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        line = _ref[_i];
-        stdout.write("" + line + "\n");
-        run(line);
-      }
-      stdout.write('\n');
-      return process.exit(0);
-    });
-  } else {
-    if (readline.createInterface.length < 3) {
-      repl = readline.createInterface(stdin, autocomplete);
-      stdin.on('data', function(buffer) {
-        return repl.write(buffer);
-      });
-    } else {
-      repl = readline.createInterface(stdin, stdout, autocomplete);
-    }
-  }
-
-  multilineMode = false;
-
-  repl.input.on('keypress', function(char, key) {
-    var cursorPos, newPrompt;
-    if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) {
-      return;
-    }
-    cursorPos = repl.cursor;
-    repl.output.cursorTo(0);
-    repl.output.clearLine(1);
-    multilineMode = !multilineMode;
-    if (!multilineMode && backlog) {
-      repl._line();
-    }
-    backlog = '';
-    repl.setPrompt((newPrompt = multilineMode ? REPL_PROMPT_MULTILINE : REPL_PROMPT));
-    repl.prompt();
-    return repl.output.cursorTo(newPrompt.length + (repl.cursor = cursorPos));
-  });
-
-  repl.input.on('keypress', function(char, key) {
-    if (!(multilineMode && repl.line)) {
-      return;
-    }
-    if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'd')) {
-      return;
-    }
-    multilineMode = false;
-    return repl._line();
-  });
-
-  repl.on('attemptClose', function() {
-    if (multilineMode) {
-      multilineMode = false;
-      repl.output.cursorTo(0);
-      repl.output.clearLine(1);
-      repl._onLine(repl.line);
-      return;
-    }
-    if (backlog) {
-      backlog = '';
-      repl.output.write('\n');
-      repl.setPrompt(REPL_PROMPT);
-      return repl.prompt();
-    } else {
-      return repl.close();
-    }
-  });
-
-  repl.on('close', function() {
-    repl.output.write('\n');
-    return repl.input.destroy();
-  });
-
-  repl.on('line', run);
-
-  repl.setPrompt(REPL_PROMPT);
-
-  repl.prompt();
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/rewriter.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/rewriter.js
deleted file mode 100644
index 1dc2d79..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/rewriter.js
+++ /dev/null
@@ -1,349 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, left, rite, _i, _len, _ref,
-    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
-    __slice = [].slice;
-
-  exports.Rewriter = (function() {
-
-    Rewriter.name = 'Rewriter';
-
-    function Rewriter() {}
-
-    Rewriter.prototype.rewrite = function(tokens) {
-      this.tokens = tokens;
-      this.removeLeadingNewlines();
-      this.removeMidExpressionNewlines();
-      this.closeOpenCalls();
-      this.closeOpenIndexes();
-      this.addImplicitIndentation();
-      this.tagPostfixConditionals();
-      this.addImplicitBraces();
-      this.addImplicitParentheses();
-      return this.tokens;
-    };
-
-    Rewriter.prototype.scanTokens = function(block) {
-      var i, token, tokens;
-      tokens = this.tokens;
-      i = 0;
-      while (token = tokens[i]) {
-        i += block.call(this, token, i, tokens);
-      }
-      return true;
-    };
-
-    Rewriter.prototype.detectEnd = function(i, condition, action) {
-      var levels, token, tokens, _ref, _ref1;
-      tokens = this.tokens;
-      levels = 0;
-      while (token = tokens[i]) {
-        if (levels === 0 && condition.call(this, token, i)) {
-          return action.call(this, token, i);
-        }
-        if (!token || levels < 0) {
-          return action.call(this, token, i - 1);
-        }
-        if (_ref = token[0], __indexOf.call(EXPRESSION_START, _ref) >= 0) {
-          levels += 1;
-        } else if (_ref1 = token[0], __indexOf.call(EXPRESSION_END, _ref1) >= 0) {
-          levels -= 1;
-        }
-        i += 1;
-      }
-      return i - 1;
-    };
-
-    Rewriter.prototype.removeLeadingNewlines = function() {
-      var i, tag, _i, _len, _ref;
-      _ref = this.tokens;
-      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
-        tag = _ref[i][0];
-        if (tag !== 'TERMINATOR') {
-          break;
-        }
-      }
-      if (i) {
-        return this.tokens.splice(0, i);
-      }
-    };
-
-    Rewriter.prototype.removeMidExpressionNewlines = function() {
-      return this.scanTokens(function(token, i, tokens) {
-        var _ref;
-        if (!(token[0] === 'TERMINATOR' && (_ref = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref) >= 0))) {
-          return 1;
-        }
-        tokens.splice(i, 1);
-        return 0;
-      });
-    };
-
-    Rewriter.prototype.closeOpenCalls = function() {
-      var action, condition;
-      condition = function(token, i) {
-        var _ref;
-        return ((_ref = token[0]) === ')' || _ref === 'CALL_END') || token[0] === 'OUTDENT' && this.tag(i - 1) === ')';
-      };
-      action = function(token, i) {
-        return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END';
-      };
-      return this.scanTokens(function(token, i) {
-        if (token[0] === 'CALL_START') {
-          this.detectEnd(i + 1, condition, action);
-        }
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.closeOpenIndexes = function() {
-      var action, condition;
-      condition = function(token, i) {
-        var _ref;
-        return (_ref = token[0]) === ']' || _ref === 'INDEX_END';
-      };
-      action = function(token, i) {
-        return token[0] = 'INDEX_END';
-      };
-      return this.scanTokens(function(token, i) {
-        if (token[0] === 'INDEX_START') {
-          this.detectEnd(i + 1, condition, action);
-        }
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.addImplicitBraces = function() {
-      var action, condition, sameLine, stack, start, startIndent, startsLine;
-      stack = [];
-      start = null;
-      startsLine = null;
-      sameLine = true;
-      startIndent = 0;
-      condition = function(token, i) {
-        var one, tag, three, two, _ref, _ref1;
-        _ref = this.tokens.slice(i + 1, (i + 3) + 1 || 9e9), one = _ref[0], two = _ref[1], three = _ref[2];
-        if ('HERECOMMENT' === (one != null ? one[0] : void 0)) {
-          return false;
-        }
-        tag = token[0];
-        if (__indexOf.call(LINEBREAKS, tag) >= 0) {
-          sameLine = false;
-        }
-        return (((tag === 'TERMINATOR' || tag === 'OUTDENT') || (__indexOf.call(IMPLICIT_END, tag) >= 0 && sameLine)) && ((!startsLine && this.tag(i - 1) !== ',') || !((two != null ? two[0] : void 0) === ':' || (one != null ? one[0] : void 0) === '@' && (three != null ? three[0] : void 0) === ':'))) || (tag === ',' && one && ((_ref1 = one[0]) !== 'IDENTIFIER' && _ref1 !== 'NUMBER' && _ref1 !== 'STRING' && _ref1 !== '@' && _ref1 !== 'TERMINATOR' && _ref1 !== 'OUTDENT'));
-      };
-      action = function(token, i) {
-        var tok;
-        tok = this.generate('}', '}', token[2]);
-        return this.tokens.splice(i, 0, tok);
-      };
-      return this.scanTokens(function(token, i, tokens) {
-        var ago, idx, prevTag, tag, tok, value, _ref, _ref1;
-        if (_ref = (tag = token[0]), __indexOf.call(EXPRESSION_START, _ref) >= 0) {
-          stack.push([(tag === 'INDENT' && this.tag(i - 1) === '{' ? '{' : tag), i]);
-          return 1;
-        }
-        if (__indexOf.call(EXPRESSION_END, tag) >= 0) {
-          start = stack.pop();
-          return 1;
-        }
-        if (!(tag === ':' && ((ago = this.tag(i - 2)) === ':' || ((_ref1 = stack[stack.length - 1]) != null ? _ref1[0] : void 0) !== '{'))) {
-          return 1;
-        }
-        sameLine = true;
-        stack.push(['{']);
-        idx = ago === '@' ? i - 2 : i - 1;
-        while (this.tag(idx - 2) === 'HERECOMMENT') {
-          idx -= 2;
-        }
-        prevTag = this.tag(idx - 1);
-        startsLine = !prevTag || (__indexOf.call(LINEBREAKS, prevTag) >= 0);
-        value = new String('{');
-        value.generated = true;
-        tok = this.generate('{', value, token[2]);
-        tokens.splice(idx, 0, tok);
-        this.detectEnd(i + 2, condition, action);
-        return 2;
-      });
-    };
-
-    Rewriter.prototype.addImplicitParentheses = function() {
-      var action, condition, noCall, seenControl, seenSingle;
-      noCall = seenSingle = seenControl = false;
-      condition = function(token, i) {
-        var post, tag, _ref, _ref1;
-        tag = token[0];
-        if (!seenSingle && token.fromThen) {
-          return true;
-        }
-        if (tag === 'IF' || tag === 'ELSE' || tag === 'CATCH' || tag === '->' || tag === '=>' || tag === 'CLASS') {
-          seenSingle = true;
-        }
-        if (tag === 'IF' || tag === 'ELSE' || tag === 'SWITCH' || tag === 'TRY' || tag === '=') {
-          seenControl = true;
-        }
-        if ((tag === '.' || tag === '?.' || tag === '::') && this.tag(i - 1) === 'OUTDENT') {
-          return true;
-        }
-        return !token.generated && this.tag(i - 1) !== ',' && (__indexOf.call(IMPLICIT_END, tag) >= 0 || (tag === 'INDENT' && !seenControl)) && (tag !== 'INDENT' || (((_ref = this.tag(i - 2)) !== 'CLASS' && _ref !== 'EXTENDS') && (_ref1 = this.tag(i - 1), __indexOf.call(IMPLICIT_BLOCK, _ref1) < 0) && !((post = this.tokens[i + 1]) && post.generated && post[0] === '{')));
-      };
-      action = function(token, i) {
-        return this.tokens.splice(i, 0, this.generate('CALL_END', ')', token[2]));
-      };
-      return this.scanTokens(function(token, i, tokens) {
-        var callObject, current, next, prev, tag, _ref, _ref1, _ref2;
-        tag = token[0];
-        if (tag === 'CLASS' || tag === 'IF' || tag === 'FOR' || tag === 'WHILE') {
-          noCall = true;
-        }
-        _ref = tokens.slice(i - 1, (i + 1) + 1 || 9e9), prev = _ref[0], current = _ref[1], next = _ref[2];
-        callObject = !noCall && tag === 'INDENT' && next && next.generated && next[0] === '{' && prev && (_ref1 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref1) >= 0);
-        seenSingle = false;
-        seenControl = false;
-        if (__indexOf.call(LINEBREAKS, tag) >= 0) {
-          noCall = false;
-        }
-        if (prev && !prev.spaced && tag === '?') {
-          token.call = true;
-        }
-        if (token.fromThen) {
-          return 1;
-        }
-        if (!(callObject || (prev != null ? prev.spaced : void 0) && (prev.call || (_ref2 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref2) >= 0)) && (__indexOf.call(IMPLICIT_CALL, tag) >= 0 || !(token.spaced || token.newLine) && __indexOf.call(IMPLICIT_UNSPACED_CALL, tag) >= 0))) {
-          return 1;
-        }
-        tokens.splice(i, 0, this.generate('CALL_START', '(', token[2]));
-        this.detectEnd(i + 1, condition, action);
-        if (prev[0] === '?') {
-          prev[0] = 'FUNC_EXIST';
-        }
-        return 2;
-      });
-    };
-
-    Rewriter.prototype.addImplicitIndentation = function() {
-      var action, condition, indent, outdent, starter;
-      starter = indent = outdent = null;
-      condition = function(token, i) {
-        var _ref;
-        return token[1] !== ';' && (_ref = token[0], __indexOf.call(SINGLE_CLOSERS, _ref) >= 0) && !(token[0] === 'ELSE' && (starter !== 'IF' && starter !== 'THEN'));
-      };
-      action = function(token, i) {
-        return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);
-      };
-      return this.scanTokens(function(token, i, tokens) {
-        var tag, _ref, _ref1;
-        tag = token[0];
-        if (tag === 'TERMINATOR' && this.tag(i + 1) === 'THEN') {
-          tokens.splice(i, 1);
-          return 0;
-        }
-        if (tag === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
-          tokens.splice.apply(tokens, [i, 0].concat(__slice.call(this.indentation(token))));
-          return 2;
-        }
-        if (tag === 'CATCH' && ((_ref = this.tag(i + 2)) === 'OUTDENT' || _ref === 'TERMINATOR' || _ref === 'FINALLY')) {
-          tokens.splice.apply(tokens, [i + 2, 0].concat(__slice.call(this.indentation(token))));
-          return 4;
-        }
-        if (__indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) {
-          starter = tag;
-          _ref1 = this.indentation(token, true), indent = _ref1[0], outdent = _ref1[1];
-          if (starter === 'THEN') {
-            indent.fromThen = true;
-          }
-          tokens.splice(i + 1, 0, indent);
-          this.detectEnd(i + 2, condition, action);
-          if (tag === 'THEN') {
-            tokens.splice(i, 1);
-          }
-          return 1;
-        }
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.tagPostfixConditionals = function() {
-      var action, condition, original;
-      original = null;
-      condition = function(token, i) {
-        var _ref;
-        return (_ref = token[0]) === 'TERMINATOR' || _ref === 'INDENT';
-      };
-      action = function(token, i) {
-        if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) {
-          return original[0] = 'POST_' + original[0];
-        }
-      };
-      return this.scanTokens(function(token, i) {
-        if (token[0] !== 'IF') {
-          return 1;
-        }
-        original = token;
-        this.detectEnd(i + 1, condition, action);
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.indentation = function(token, implicit) {
-      var indent, outdent;
-      if (implicit == null) {
-        implicit = false;
-      }
-      indent = ['INDENT', 2, token[2]];
-      outdent = ['OUTDENT', 2, token[2]];
-      if (implicit) {
-        indent.generated = outdent.generated = true;
-      }
-      return [indent, outdent];
-    };
-
-    Rewriter.prototype.generate = function(tag, value, line) {
-      var tok;
-      tok = [tag, value, line];
-      tok.generated = true;
-      return tok;
-    };
-
-    Rewriter.prototype.tag = function(i) {
-      var _ref;
-      return (_ref = this.tokens[i]) != null ? _ref[0] : void 0;
-    };
-
-    return Rewriter;
-
-  })();
-
-  BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END']];
-
-  exports.INVERSES = INVERSES = {};
-
-  EXPRESSION_START = [];
-
-  EXPRESSION_END = [];
-
-  for (_i = 0, _len = BALANCED_PAIRS.length; _i < _len; _i++) {
-    _ref = BALANCED_PAIRS[_i], left = _ref[0], rite = _ref[1];
-    EXPRESSION_START.push(INVERSES[rite] = left);
-    EXPRESSION_END.push(INVERSES[left] = rite);
-  }
-
-  EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);
-
-  IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];
-
-  IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'UNARY', 'SUPER', '@', '->', '=>', '[', '(', '{', '--', '++'];
-
-  IMPLICIT_UNSPACED_CALL = ['+', '-'];
-
-  IMPLICIT_BLOCK = ['->', '=>', '{', '[', ','];
-
-  IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR'];
-
-  SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'];
-
-  SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'];
-
-  LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'];
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/scope.js b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/scope.js
deleted file mode 100644
index ff1634b..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/lib/coffee-script/scope.js
+++ /dev/null
@@ -1,145 +0,0 @@
-// Generated by CoffeeScript 1.3.0
-(function() {
-  var Scope, extend, last, _ref;
-
-  _ref = require('./helpers'), extend = _ref.extend, last = _ref.last;
-
-  exports.Scope = Scope = (function() {
-
-    Scope.name = 'Scope';
-
-    Scope.root = null;
-
-    function Scope(parent, expressions, method) {
-      this.parent = parent;
-      this.expressions = expressions;
-      this.method = method;
-      this.variables = [
-        {
-          name: 'arguments',
-          type: 'arguments'
-        }
-      ];
-      this.positions = {};
-      if (!this.parent) {
-        Scope.root = this;
-      }
-    }
-
-    Scope.prototype.add = function(name, type, immediate) {
-      if (this.shared && !immediate) {
-        return this.parent.add(name, type, immediate);
-      }
-      if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
-        return this.variables[this.positions[name]].type = type;
-      } else {
-        return this.positions[name] = this.variables.push({
-          name: name,
-          type: type
-        }) - 1;
-      }
-    };
-
-    Scope.prototype.find = function(name, options) {
-      if (this.check(name, options)) {
-        return true;
-      }
-      this.add(name, 'var');
-      return false;
-    };
-
-    Scope.prototype.parameter = function(name) {
-      if (this.shared && this.parent.check(name, true)) {
-        return;
-      }
-      return this.add(name, 'param');
-    };
-
-    Scope.prototype.check = function(name, immediate) {
-      var found, _ref1;
-      found = !!this.type(name);
-      if (found || immediate) {
-        return found;
-      }
-      return !!((_ref1 = this.parent) != null ? _ref1.check(name) : void 0);
-    };
-
-    Scope.prototype.temporary = function(name, index) {
-      if (name.length > 1) {
-        return '_' + name + (index > 1 ? index - 1 : '');
-      } else {
-        return '_' + (index + parseInt(name, 36)).toString(36).replace(/\d/g, 'a');
-      }
-    };
-
-    Scope.prototype.type = function(name) {
-      var v, _i, _len, _ref1;
-      _ref1 = this.variables;
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        v = _ref1[_i];
-        if (v.name === name) {
-          return v.type;
-        }
-      }
-      return null;
-    };
-
-    Scope.prototype.freeVariable = function(name, reserve) {
-      var index, temp;
-      if (reserve == null) {
-        reserve = true;
-      }
-      index = 0;
-      while (this.check((temp = this.temporary(name, index)))) {
-        index++;
-      }
-      if (reserve) {
-        this.add(temp, 'var', true);
-      }
-      return temp;
-    };
-
-    Scope.prototype.assign = function(name, value) {
-      this.add(name, {
-        value: value,
-        assigned: true
-      }, true);
-      return this.hasAssignments = true;
-    };
-
-    Scope.prototype.hasDeclarations = function() {
-      return !!this.declaredVariables().length;
-    };
-
-    Scope.prototype.declaredVariables = function() {
-      var realVars, tempVars, v, _i, _len, _ref1;
-      realVars = [];
-      tempVars = [];
-      _ref1 = this.variables;
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        v = _ref1[_i];
-        if (v.type === 'var') {
-          (v.name.charAt(0) === '_' ? tempVars : realVars).push(v.name);
-        }
-      }
-      return realVars.sort().concat(tempVars.sort());
-    };
-
-    Scope.prototype.assignedVariables = function() {
-      var v, _i, _len, _ref1, _results;
-      _ref1 = this.variables;
-      _results = [];
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        v = _ref1[_i];
-        if (v.type.assigned) {
-          _results.push("" + v.name + " = " + v.type.value);
-        }
-      }
-      return _results;
-    };
-
-    return Scope;
-
-  })();
-
-}).call(this);
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/package.json b/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/package.json
deleted file mode 100644
index a19e19e..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/node_modules/coffee-script/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "name": "coffee-script",
-  "description": "Unfancy JavaScript",
-  "keywords": [
-    "javascript",
-    "language",
-    "coffeescript",
-    "compiler"
-  ],
-  "author": {
-    "name": "Jeremy Ashkenas"
-  },
-  "version": "1.3.0",
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "http://github.com/jashkenas/coffee-script/raw/master/LICENSE"
-    }
-  ],
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "directories": {
-    "lib": "./lib/coffee-script"
-  },
-  "main": "./lib/coffee-script/coffee-script",
-  "bin": {
-    "coffee": "./bin/coffee",
-    "cake": "./bin/cake"
-  },
-  "homepage": "http://coffeescript.org",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/jashkenas/coffee-script.git"
-  },
-  "devDependencies": {
-    "uglify-js": ">=1.0.0",
-    "jison": ">=0.2.0"
-  },
-  "readme": "\n            {\n         }   }   {\n        {   {  }  }\n         }   }{  {\n        {  }{  }  }                    _____       __  __\n       ( }{ }{  { )                   / ____|     / _|/ _|\n     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___\n    (  ( } { } { } }  )              | |    / _ \\|  _|  _/ _ \\/ _ \\\n    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/\n    |                 |               \\_____\\___/|_| |_| \\___|\\___|\n    |                 ;--.\n    |                (__  \\            _____           _       _\n    |                 | )  )          / ____|         (_)     | |\n    |                 |/  /          | (___   ___ _ __ _ _ __ | |_\n    |                 (  /            \\___ \\ / __| '__| | '_ \\| __|\n    |                 |/              ____) | (__| |  | | |_) | |_\n    |                 |              |_____/ \\___|_|  |_| .__/ \\__|\n     `-.._________..-'                                  | |\n                                                        |_|\n\n\n  CoffeeScript is a little language that compiles into JavaScript.\n\n  Install Node.js, and then the CoffeeScript compiler:\n  sudo bin/cake install\n\n  Or, if you have the Node Package Manager installed:\n  npm install -g coffee-script\n  (Leave off the -g if you don't wish to install globally.)\n\n  Execute a script:\n  coffee /path/to/script.coffee\n\n  Compile a script:\n  coffee -c /path/to/script.coffee\n\n  For documentation, usage, and examples, see:\n  http://coffeescript.org/\n\n  To suggest a feature, report a bug, or general discussion:\n  http://github.com/jashkenas/coffee-script/issues/\n\n  If you'd like to chat, drop by #coffeescript on Freenode IRC,\n  or on webchat.freenode.net.\n\n  The source repository:\n  git://github.com/jashkenas/coffee-script.git\n\n  All contributors are listed here:\n  http://github.com/jashkenas/coffee-script/contributors\n",
-  "readmeFilename": "README",
-  "bugs": {
-    "url": "https://github.com/jashkenas/coffee-script/issues"
-  },
-  "_id": "coffee-script@1.3.0",
-  "dist": {
-    "shasum": "16ef3a378aaab5acc421f42670b985ae148fd4b9"
-  },
-  "_from": "coffee-script@1.3.0",
-  "_resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.0.tgz"
-}
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/package.json b/examples/node/node_modules/node-osc/node_modules/osc-min/package.json
deleted file mode 100644
index f5a6cf5..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "name": "osc-min",
-  "version": "0.0.5",
-  "main": "lib/index",
-  "author": {
-    "name": "Russell McClellan",
-    "email": "russell.mcclellan@gmail.com",
-    "url": "http://www.ghostfact.com"
-  },
-  "description": "Simple utilities for open sound control in node.js",
-  "keywords": [
-    "open sound control",
-    "OSC",
-    "music control",
-    "NIME"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/ghostfact/node-osc-min.git"
-  },
-  "dependencies": {
-    "binpack": "*",
-    "coffee-script": "1.3.0"
-  },
-  "devDependencies": {
-    "expresso": "*",
-    "docket": ">=0.0.3"
-  },
-  "directories": {
-    "lib": "lib",
-    "examples": "examples"
-  },
-  "engines": {
-    "node": ">=0.6.0"
-  },
-  "scripts": {
-    "test": "cake test",
-    "coverage": "cake coverage",
-    "doc": "cake doc"
-  },
-  "readme": "# osc-min\n\n_simple utilities for open sound control in node.js_\n\nThis package provides some node.js utilities for working with \n[OSC](http://opensoundcontrol.org/), a format for sound and systems control.  \nHere we implement the [OSC 1.1][spec11] specification.  OSC is a transport-independent\nprotocol, so we don't provide any server objects, as you should be able to \nuse OSC over any transport you like.  The most common is probably udp, but tcp\nis not unheard of.\n\n[spec11]: http://opensoundcontrol.org/spec-1_1\n\n----\n## Installation\n \nThe easiest way to get osc-min is through [NPM](http://npmjs.org).\nAfter install npm, you can install osc-min in the current directory with\n \n```\nnpm install osc-min\n```\n \nIf you'd rather get osc-min through github (for example, if you're forking\nit), you still need npm to install dependencies, which you can do with\n \n```\nnpm install --dev\n```\n \nOnce you've got all the dependencies you should be able to run the unit\ntests with \n \n```\nnpm test\nnpm run-script coverage\n```\n\n----\n## Examples\n### A simple OSC printer\n```coffee-script\nsock = udp.createSocket \"udp4\", (msg, rinfo) ->\n    try\n        console.log osc.fromBuffer msg\n    catch error\n        console.log \"invalid OSC packet\"\nsock.bind inport\n\n```\n### Send a bunch of arguments every two seconds\n```coffee-script\nsendHeartbeat = () ->\n    buf = osc.toBuffer(\n        address : \"/heartbeat\"\n        arguments : [\n            12\n            \"sttttring\"\n            new Buffer \"beat\"\n            {type : \"integer\", value : 7}\n        ]\n    )\n    \n    udp.send buf, 0, buf.length, outport, \"localhost\"\n    \nsetInterval sendHeartbeat, 2000\n```\n### A simple OSC redirecter\n```coffee-script\nsock = udp.createSocket \"udp4\", (msg, rinfo) ->\n    try\n        redirected = osc.applyAddressTransform msg, (address) -> \"/redirect\" + address\n        sock.send(\n            redirected,\n            0,\n            redirected.length,\n            outport,\n            \"localhost\"\n        )\n    catch error\n        console.log \"error redirecting: \" + error\nsock.bind inport\n```\n\n\nmore examples are available in the `examples/` directory.\n\n----\n## Exported functions\n\n------\n### .fromBuffer(buffer, [strict])\ntakes a node.js Buffer of a complete _OSC Packet_ and \noutputs the javascript representation, or throws if the buffer is ill-formed.\n\n`strict` is an optional parameter that makes the function fail more often.\n\n----\n### .toBuffer(object, [strict])\ntakes a _OSC packet_ javascript representation as defined below and returns\na node.js Buffer, or throws if the representation is ill-formed.\n\n----\n### .toBuffer(address, arguments[], [strict])\nalternative syntax for above.  Assumes this is an _OSC Message_ as defined below, \nand `arguments` is an array of _OSC Arguments_ or single _OSC Argument_\n\n----\n### .applyAddressTransform(buffer, transform)\ntakes a callback that takes a string and outputs a string,\nand applies that to the address of the message encoded in the buffer,\nand outputs an encoded buffer.\n\nIf the buffer encodes an _OSC Bundle_, this applies the function to each address \nin the bundle.\n\nThere's two subtle reasons you'd want to use this function rather than \ncomposing `fromBuffer` and `toBuffer`:\n  - Future-proofing - if the OSC message uses an argument typecode that\n    we don't understand, calling `fromBuffer` will throw.  The only time\n    when `applyAddressTranform` might fail is if the address is malformed.\n  - Accuracy - javascript represents numbers as 64-bit floats, so some\n    OSC types will not be able to be represented accurately.  If accuracy\n    is important to you, then, you should never convert the OSC message to a\n    javascript representation.\n\n----\n### .applyMessageTransform(buffer, transform)\ntakes a function that takes and returns a javascript _OSC Message_ representation,\nand applies that to each message encoded in the buffer,\nand outputs a new buffer with the new address.\n\nIf the buffer encodes an osc-bundle, this applies the function to each message \nin the bundle.\n\nSee notes above for applyAddressTransform for why you might want to use this.\nWhile this does parse and re-pack the messages, the bundle timetags are left\nin their accurate and prestine state.\n\n----\n## Javascript representations of the OSC types.  \nSee the [spec][spec] for more information on the OSC types.\n\n+ An _OSC Packet_ is an _OSC Message_ or an _OSC Bundle_.\n\n+ An _OSC Message_:\n\n          {\n              oscType : \"message\"\n              address : \"/address/pattern/might/have/wildcards\"\n              arguments : [arg1,arg2]\n          }\n\n   Where arguments is an array of _OSC Arguments_.  `oscType` is optional.\n   `arguments` can be a single element.\n\n+ An _OSC Argument_ is represented as a javascript object with the following layout:\n\n          {\n              type : \"string\"\n              value : \"value\"\n          }\n\n   Where the `type` is one of the following:\n   + `string` - string value\n   + `float` - numeric value\n   + `integer` - numeric value\n   + `blob` - node.js Buffer value\n   + `true` - value is boolean true\n   + `false` - value is boolean false\n   + `null` - no value\n   + `bang` - no value (this is the `I` type tag)\n   + `timetag` - numeric value\n\n   Note that `type` is always a string - i.e. `\"true\"` rather than `true`.\n  \n   The following non-standard types are also supported:\n   + `double` - numeric value (encodes to a float64 value)\n\n   \n   For messages sent to the `toBuffer` function, `type` is optional.\n   If the argument is not an object, it will be interpreted as either\n   `string`, `float`, or `blob`, depending on its javascript type.\n\n+ An _OSC Bundle_ is represented as a javascript object with the following layout\n\n          {\n              oscType : \"bundle\"\n              timetag : 7\n              elements : [element1, element]\n          }\n\n  Where the timetag is a javascript-native numeric value of the timetag,\n  and elements is an array of either an _OSC Bundle_ or an _OSC Message_\n  The `oscType` field is optional, but is always returned by api functions.\n\n[spec]: http://opensoundcontrol.org/spec-1_0\n\n",
-  "readmeFilename": "readme.md",
-  "bugs": {
-    "url": "https://github.com/ghostfact/node-osc-min/issues"
-  },
-  "_id": "osc-min@0.0.5",
-  "dist": {
-    "shasum": "6bd7e3de3aa2aa3a54a59806a3641eb31da9b3a6"
-  },
-  "_from": "osc-min@0.0.5",
-  "_resolved": "https://registry.npmjs.org/osc-min/-/osc-min-0.0.5.tgz"
-}
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/readme.md b/examples/node/node_modules/node-osc/node_modules/osc-min/readme.md
deleted file mode 100644
index 6429ab9..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/readme.md
+++ /dev/null
@@ -1,198 +0,0 @@
-# osc-min
-
-_simple utilities for open sound control in node.js_
-
-This package provides some node.js utilities for working with 
-[OSC](http://opensoundcontrol.org/), a format for sound and systems control.  
-Here we implement the [OSC 1.1][spec11] specification.  OSC is a transport-independent
-protocol, so we don't provide any server objects, as you should be able to 
-use OSC over any transport you like.  The most common is probably udp, but tcp
-is not unheard of.
-
-[spec11]: http://opensoundcontrol.org/spec-1_1
-
-----
-## Installation
- 
-The easiest way to get osc-min is through [NPM](http://npmjs.org).
-After install npm, you can install osc-min in the current directory with
- 
-```
-npm install osc-min
-```
- 
-If you'd rather get osc-min through github (for example, if you're forking
-it), you still need npm to install dependencies, which you can do with
- 
-```
-npm install --dev
-```
- 
-Once you've got all the dependencies you should be able to run the unit
-tests with 
- 
-```
-npm test
-npm run-script coverage
-```
-
-----
-## Examples
-### A simple OSC printer
-```coffee-script
-sock = udp.createSocket "udp4", (msg, rinfo) ->
-    try
-        console.log osc.fromBuffer msg
-    catch error
-        console.log "invalid OSC packet"
-sock.bind inport
-
-```
-### Send a bunch of arguments every two seconds
-```coffee-script
-sendHeartbeat = () ->
-    buf = osc.toBuffer(
-        address : "/heartbeat"
-        arguments : [
-            12
-            "sttttring"
-            new Buffer "beat"
-            {type : "integer", value : 7}
-        ]
-    )
-    
-    udp.send buf, 0, buf.length, outport, "localhost"
-    
-setInterval sendHeartbeat, 2000
-```
-### A simple OSC redirecter
-```coffee-script
-sock = udp.createSocket "udp4", (msg, rinfo) ->
-    try
-        redirected = osc.applyAddressTransform msg, (address) -> "/redirect" + address
-        sock.send(
-            redirected,
-            0,
-            redirected.length,
-            outport,
-            "localhost"
-        )
-    catch error
-        console.log "error redirecting: " + error
-sock.bind inport
-```
-
-
-more examples are available in the `examples/` directory.
-
-----
-## Exported functions
-
-------
-### .fromBuffer(buffer, [strict])
-takes a node.js Buffer of a complete _OSC Packet_ and 
-outputs the javascript representation, or throws if the buffer is ill-formed.
-
-`strict` is an optional parameter that makes the function fail more often.
-
-----
-### .toBuffer(object, [strict])
-takes a _OSC packet_ javascript representation as defined below and returns
-a node.js Buffer, or throws if the representation is ill-formed.
-
-----
-### .toBuffer(address, arguments[], [strict])
-alternative syntax for above.  Assumes this is an _OSC Message_ as defined below, 
-and `arguments` is an array of _OSC Arguments_ or single _OSC Argument_
-
-----
-### .applyAddressTransform(buffer, transform)
-takes a callback that takes a string and outputs a string,
-and applies that to the address of the message encoded in the buffer,
-and outputs an encoded buffer.
-
-If the buffer encodes an _OSC Bundle_, this applies the function to each address 
-in the bundle.
-
-There's two subtle reasons you'd want to use this function rather than 
-composing `fromBuffer` and `toBuffer`:
-  - Future-proofing - if the OSC message uses an argument typecode that
-    we don't understand, calling `fromBuffer` will throw.  The only time
-    when `applyAddressTranform` might fail is if the address is malformed.
-  - Accuracy - javascript represents numbers as 64-bit floats, so some
-    OSC types will not be able to be represented accurately.  If accuracy
-    is important to you, then, you should never convert the OSC message to a
-    javascript representation.
-
-----
-### .applyMessageTransform(buffer, transform)
-takes a function that takes and returns a javascript _OSC Message_ representation,
-and applies that to each message encoded in the buffer,
-and outputs a new buffer with the new address.
-
-If the buffer encodes an osc-bundle, this applies the function to each message 
-in the bundle.
-
-See notes above for applyAddressTransform for why you might want to use this.
-While this does parse and re-pack the messages, the bundle timetags are left
-in their accurate and prestine state.
-
-----
-## Javascript representations of the OSC types.  
-See the [spec][spec] for more information on the OSC types.
-
-+ An _OSC Packet_ is an _OSC Message_ or an _OSC Bundle_.
-
-+ An _OSC Message_:
-
-          {
-              oscType : "message"
-              address : "/address/pattern/might/have/wildcards"
-              arguments : [arg1,arg2]
-          }
-
-   Where arguments is an array of _OSC Arguments_.  `oscType` is optional.
-   `arguments` can be a single element.
-
-+ An _OSC Argument_ is represented as a javascript object with the following layout:
-
-          {
-              type : "string"
-              value : "value"
-          }
-
-   Where the `type` is one of the following:
-   + `string` - string value
-   + `float` - numeric value
-   + `integer` - numeric value
-   + `blob` - node.js Buffer value
-   + `true` - value is boolean true
-   + `false` - value is boolean false
-   + `null` - no value
-   + `bang` - no value (this is the `I` type tag)
-   + `timetag` - numeric value
-
-   Note that `type` is always a string - i.e. `"true"` rather than `true`.
-  
-   The following non-standard types are also supported:
-   + `double` - numeric value (encodes to a float64 value)
-
-   
-   For messages sent to the `toBuffer` function, `type` is optional.
-   If the argument is not an object, it will be interpreted as either
-   `string`, `float`, or `blob`, depending on its javascript type.
-
-+ An _OSC Bundle_ is represented as a javascript object with the following layout
-
-          {
-              oscType : "bundle"
-              timetag : 7
-              elements : [element1, element]
-          }
-
-  Where the timetag is a javascript-native numeric value of the timetag,
-  and elements is an array of either an _OSC Bundle_ or an _OSC Message_
-  The `oscType` field is optional, but is always returned by api functions.
-
-[spec]: http://opensoundcontrol.org/spec-1_0
-
diff --git a/examples/node/node_modules/node-osc/node_modules/osc-min/test/test-osc-utilities.coffee b/examples/node/node_modules/node-osc/node_modules/osc-min/test/test-osc-utilities.coffee
deleted file mode 100644
index c3e7a5a..0000000
--- a/examples/node/node_modules/node-osc/node_modules/osc-min/test/test-osc-utilities.coffee
+++ /dev/null
@@ -1,661 +0,0 @@
-#
-# This file was used for TDD and as such probably has limited utility as
-# actual unit tests.
-#
-
-osc = require "../lib/osc-utilities"
-assert = require "assert"
-
-# Basic string tests.
-
-testString = (str, expected_len) ->
-    str : str
-    len : expected_len
-
-testData = [
-    testString("abc", 4)
-    testString("abcd", 8)
-    testString("abcde", 8)
-    testString("abcdef", 8)
-    testString("abcdefg", 8)
-]
-
-testStringLength = (str, expected_len) ->
-    oscstr = osc.toOscString(str)
-    assert.strictEqual(oscstr.length, expected_len)
-
-exports["basic strings length"] = ->
-    for data in testData
-        testStringLength data.str, data.len
-
-
-testStringRoundTrip = (str, strict) ->
-    oscstr = osc.toOscString(str)
-    str2 = osc.splitOscString(oscstr, strict)?.string
-    assert.strictEqual(str, str2)
-
-exports["basic strings round trip"] = ->
-    for data in testData
-        testStringRoundTrip data.str
-
-
-exports["non strings fail toOscString"] = ->
-    assert.throws -> osc.toOscString(7)
-
-
-exports["strings with null characters don't fail toOscString by default"] = ->
-    assert.notEqual(osc.toOscString("\u0000"), null)
-
-
-exports["strings with null characters fail toOscString in strict mode"] = ->
-    assert.throws -> osc.toOscString("\u0000", true)
-
-
-exports["osc buffers with no null characters fail splitOscString in strict mode"] = ->
-    assert.throws -> osc.splitOscString new Buffer("abc"), true
-
-
-exports["osc buffers with non-null characters after a null character fail fromOscString in strict mode"] = ->
-    assert.throws -> osc.fromOscString new Buffer("abc\u0000abcd"), true
-
-
-exports["basic strings pass fromOscString in strict mode"] = ->
-    for data in testData
-        testStringRoundTrip data.str, true
-
-
-exports["osc buffers with non-four length fail in strict mode"] = ->
-    assert.throws -> osc.fromOscString new Buffer("abcd\u0000\u0000"), true
-
-exports["splitOscString throws when passed a non-buffer"] = ->
-    assert.throws -> osc.splitOscString "test"
-
-exports["splitOscString of an osc-string matches the string"] = ->
-    split = osc.splitOscString osc.toOscString "testing it"
-    assert.strictEqual(split?.string, "testing it")
-    assert.strictEqual(split?.rest?.length, 0)
-
-
-exports["splitOscString works with an over-allocated buffer"] = ->
-    buffer = osc.toOscString "testing it"
-    overallocated = new Buffer(16)
-    buffer.copy(overallocated)
-    split = osc.splitOscString overallocated
-    assert.strictEqual(split?.string, "testing it")
-    assert.strictEqual(split?.rest?.length, 4)
-
-
-exports["splitOscString works with just a string by default"] = ->
-    split = osc.splitOscString (new Buffer "testing it")
-    assert.strictEqual(split?.string, "testing it")
-    assert.strictEqual(split?.rest?.length, 0)
-
-
-exports["splitOscString strict fails for just a string"] = ->
-    assert.throws -> osc.splitOscString (new Buffer "testing it"), true
-
-
-exports["splitOscString strict fails for string with not enough padding"] = ->
-    assert.throws -> osc.splitOscString (new Buffer "testing \u0000\u0000"), true
-
-
-exports["splitOscString strict succeeds for strings with valid padding"] = ->
-    split = osc.splitOscString (new Buffer "testing it\u0000\u0000aaaa"), true
-    assert.strictEqual(split?.string, "testing it")
-    assert.strictEqual(split?.rest?.length, 4)
-
-
-exports["splitOscString strict fails for string with invalid padding"] = ->
-    assert.throws -> osc.splitOscString (new Buffer "testing it\u0000aaaaa"), true
-
-exports["concat throws when passed a single buffer"] = ->
-    assert.throws -> osc.concat new Buffer "test"
-
-exports["concat throws when passed an array of non-buffers"] = ->
-    assert.throws -> osc.concat ["bleh"]
-
-exports["toIntegerBuffer throws when passed a non-number"] = ->
-    assert.throws -> osc.toIntegerBuffer "abcdefg"
-
-exports["splitInteger fails when sent a buffer that's too small"] = ->
-    assert.throws -> osc.splitInteger new Buffer 3, "Int32"
-
-exports["splitOscArgument fails when given a bogus type"] = ->
-    assert.throws -> osc.splitOscArgument new Buffer 8, "bogus"
-
-exports["fromOscMessage with no type string works"] = ->
-    translate = osc.fromOscMessage osc.toOscString "/stuff"
-    assert.strictEqual translate?.address, "/stuff"
-    assert.deepEqual translate?.arguments, []
-
-exports["fromOscMessage with type string and no arguments works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ","
-    oscmessage = new Buffer(oscaddr.length + osctype.length)
-    oscaddr.copy oscmessage
-    osctype.copy oscmessage, oscaddr.length
-    translate = osc.fromOscMessage oscmessage
-    assert.strictEqual translate?.address, "/stuff"
-    assert.deepEqual translate?.arguments, []
-
-exports["fromOscMessage with string argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",s"
-    oscarg = osc.toOscString "argu"
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype, oscarg]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "string"
-    assert.strictEqual translate?.arguments?[0]?.value, "argu"
-
-exports["fromOscMessage with true argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",T"
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "true"
-    assert.strictEqual translate?.arguments?[0]?.value, true
-
-exports["fromOscMessage with false argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",F"
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "false"
-    assert.strictEqual translate?.arguments?[0]?.value, false
-
-exports["fromOscMessage with null argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",N"
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "null"
-    assert.strictEqual translate?.arguments?[0]?.value, null
-
-exports["fromOscMessage with bang argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",I"
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "bang"
-    assert.strictEqual translate?.arguments?[0]?.value, "bang"
-
-exports["fromOscMessage with blob argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",b"
-    oscarg = osc.concat [(osc.toIntegerBuffer 4), new Buffer "argu"]
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype, oscarg]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "blob"
-    assert.strictEqual (translate?.arguments?[0]?.value?.toString "utf8"), "argu"
-
-
-exports["fromOscMessage with integer argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",i"
-    oscarg = osc.toIntegerBuffer 888
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype, oscarg]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "integer"
-    assert.strictEqual (translate?.arguments?[0]?.value), 888
-
-exports["fromOscMessage with timetag argument works"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",t"
-    oscarg = osc.toIntegerBuffer 8888, "UInt64"
-    translate = osc.fromOscMessage osc.concat [oscaddr, osctype, oscarg]
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "timetag"
-    assert.strictEqual (translate?.arguments?[0]?.value), 8888
-
-exports["fromOscMessage with multiple arguments works."] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString ",sbi"
-    oscargs = [
-                (osc.toOscString "argu")
-                (osc.concat [(osc.toIntegerBuffer 4), new Buffer "argu"])
-                (osc.toIntegerBuffer 888)
-    ]
-
-    oscbuffer = osc.concat [oscaddr, osctype, (osc.concat oscargs)]
-    translate = osc.fromOscMessage oscbuffer
-    assert.strictEqual translate?.address, "/stuff"
-    assert.strictEqual translate?.arguments?[0]?.type, "string"
-    assert.strictEqual (translate?.arguments?[0]?.value), "argu"
-
-exports["fromOscMessage strict fails if type string has no comma"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString "fake"
-    assert.throws ->
-        osc.fromOscMessage (osc.concat [oscaddr, osctype]), true
-
-exports["fromOscMessage non-strict works if type string has no comma"] = ->
-    oscaddr = osc.toOscString "/stuff"
-    osctype = osc.toOscString "fake"
-    message = osc.fromOscMessage (osc.concat [oscaddr, osctype])
-    assert.strictEqual message.address, "/stuff"
-    assert.strictEqual message.arguments.length, 0
-
-exports["fromOscMessage strict fails if type address doesn't begin with /"] = ->
-    oscaddr = osc.toOscString "stuff"
-    osctype = osc.toOscString ","
-    assert.throws ->
-        osc.fromOscMessage (osc.concat [oscaddr, osctype]), true
-
-
-exports["fromOscBundle works with no messages"] = ->
-    oscbundle = osc.toOscString "#bundle"
-    osctimetag = osc.toIntegerBuffer 0, "UInt64"
-    buffer = osc.concat [oscbundle, osctimetag]
-    translate = osc.fromOscBundle buffer
-    assert.strictEqual translate?.timetag, 0
-    assert.deepEqual translate?.elements, []
-
-
-exports["fromOscBundle works with single message"] = ->
-    oscbundle = osc.toOscString "#bundle"
-    osctimetag = osc.toIntegerBuffer 0, "UInt64"
-    oscaddr = osc.toOscString "/addr"
-    osctype = osc.toOscString ","
-    oscmessage = osc.concat [oscaddr, osctype]
-    osclen = osc.toIntegerBuffer oscmessage.length
-    buffer = osc.concat [oscbundle, osctimetag, osclen, oscmessage]
-    translate = osc.fromOscBundle buffer
-    assert.strictEqual translate?.timetag, 0
-    assert.strictEqual translate?.elements?.length, 1
-    assert.strictEqual translate?.elements?[0]?.address, "/addr"
-
-
-exports["fromOscBundle works with multiple messages"] = ->
-    oscbundle = osc.toOscString "#bundle"
-    osctimetag = osc.toIntegerBuffer 0, "UInt64"
-    oscaddr1 = osc.toOscString "/addr"
-    osctype1 = osc.toOscString ","
-    oscmessage1 = osc.concat [oscaddr1, osctype1]
-    osclen1 = osc.toIntegerBuffer oscmessage1.length
-    oscaddr2 = osc.toOscString "/addr2"
-    osctype2 = osc.toOscString ","
-    oscmessage2 = osc.concat [oscaddr2, osctype2]
-    osclen2 = osc.toIntegerBuffer oscmessage2.length
-    buffer = osc.concat [oscbundle, osctimetag, osclen1, oscmessage1, osclen2, oscmessage2]
-    translate = osc.fromOscBundle buffer
-    assert.strictEqual translate?.timetag, 0
-    assert.strictEqual translate?.elements?.length, 2
-    assert.strictEqual translate?.elements?[0]?.address, "/addr"
-    assert.strictEqual translate?.elements?[1]?.address, "/addr2"
-
-
-exports["fromOscBundle works with nested bundles"] = ->
-    oscbundle = osc.toOscString "#bundle"
-    osctimetag = osc.toIntegerBuffer 0, "UInt64"
-    oscaddr1 = osc.toOscString "/addr"
-    osctype1 = osc.toOscString ","
-    oscmessage1 = osc.concat [oscaddr1, osctype1]
-    osclen1 = osc.toIntegerBuffer oscmessage1.length
-    oscbundle2 = osc.toOscString "#bundle"
-    osctimetag2 = osc.toIntegerBuffer 0, "UInt64"
-    oscmessage2 = osc.concat [oscbundle2, osctimetag2]
-    osclen2 = osc.toIntegerBuffer oscmessage2.length
-    buffer = osc.concat [oscbundle, osctimetag, osclen1, oscmessage1, osclen2, oscmessage2]
-    translate = osc.fromOscBundle buffer
-    assert.strictEqual translate?.timetag, 0
-    assert.strictEqual translate?.elements?.length, 2
-    assert.strictEqual translate?.elements?[0]?.address, "/addr"
-    assert.strictEqual translate?.elements?[1]?.timetag, 0
-
-exports["fromOscBundle works with non-understood messages"] = ->
-    oscbundle = osc.toOscString "#bundle"
-    osctimetag = osc.toIntegerBuffer 0, "UInt64"
-    oscaddr1 = osc.toOscString "/addr"
-    osctype1 = osc.toOscString ","
-    oscmessage1 = osc.concat [oscaddr1, osctype1]
-    osclen1 = osc.toIntegerBuffer oscmessage1.length
-    oscaddr2 = osc.toOscString "/addr2"
-    osctype2 = osc.toOscString ",α"
-    oscmessage2 = osc.concat [oscaddr2, osctype2]
-    osclen2 = osc.toIntegerBuffer oscmessage2.length
-    buffer = osc.concat [oscbundle, osctimetag, osclen1, oscmessage1, osclen2, oscmessage2]
-    translate = osc.fromOscBundle buffer
-    assert.strictEqual translate?.timetag, 0
-    assert.strictEqual translate?.elements?.length, 1
-    assert.strictEqual translate?.elements?[0]?.address, "/addr"
-
-exports["fromOscBundle fails with bad bundle ID"] = ->
-    oscbundle = osc.toOscString "#blunder"
-    assert.throws -> osc.fromOscBundle oscbundle
-
-exports["fromOscBundle fails with ridiculous sizes"] = ->
-    oscbundle = osc.concat [
-        osc.toOscString "#bundle"
-        osc.toIntegerBuffer 1234567, "Int64"
-        osc.toIntegerBuffer 999999
-    ]
-    assert.throws -> osc.fromOscBundle oscbundle
-
-roundTripMessage = (args) ->
-    oscMessage = {
-        address : "/addr"
-        arguments : args
-    }
-    roundTrip = osc.fromOscMessage (osc.toOscMessage oscMessage), true
-    assert.strictEqual roundTrip?.address, "/addr"
-    assert.strictEqual roundTrip?.arguments?.length, args.length
-    for i in [0...args.length]
-        comp = if args[i]?.value? then args[i].value else args[i]
-        assert.strictEqual roundTrip?.arguments?[i]?.type, args[i].type if args[i]?.type?
-        if Buffer.isBuffer comp
-            for j in [0...comp.length]
-                assert.strictEqual roundTrip?.arguments?[i]?.value?[j], comp[j]
-        else
-            assert.strictEqual roundTrip?.arguments?[i]?.value, comp
-
-exports["toOscArgument fails when given bogus type"] = ->
-    assert.throws -> osc.toOscArgument "bleh", "bogus"
-
-# we tested fromOsc* manually, so just use roundtrip testing for toOsc*
-exports["toOscMessage with no arguments works"] = ->
-    roundTripMessage []
-
-exports["toOscMessage strict with null argument throws"] = ->
-    assert.throws -> osc.toOscMessage {address : "/addr", arguments : [null]}, true
-
-exports["toOscMessage with string argument works"] = ->
-    roundTripMessage ["strr"]
-
-buffeq = (buff, exp_buff) ->
-    assert.strictEqual buff.length, exp_buff.length
-    for i in [0...exp_buff.length]
-        assert.equal buff[i], exp_buff[i]
-
-exports["toOscMessage with bad layout works"] = ->
-    oscMessage = {
-        address : "/addr"
-        arguments : [
-            "strr"
-        ]
-    }
-    roundTrip = osc.fromOscMessage (osc.toOscMessage oscMessage), true
-    assert.strictEqual roundTrip?.address, "/addr"
-    assert.strictEqual roundTrip?.arguments?.length, 1
-    assert.strictEqual roundTrip?.arguments?[0]?.value, "strr"
-
-exports["toOscMessage with single numeric argument works"] = ->
-    oscMessage = {
-        address : "/addr"
-        arguments : 13
-    }
-    roundTrip = osc.fromOscMessage (osc.toOscMessage oscMessage)
-    assert.strictEqual roundTrip?.address, "/addr"
-    assert.strictEqual roundTrip?.arguments?.length, 1
-    assert.strictEqual roundTrip?.arguments?[0]?.value, 13
-    assert.strictEqual roundTrip?.arguments?[0]?.type, "float"
-
-exports["toOscMessage with args shortcut works"] = ->
-    oscMessage = {
-        address : "/addr"
-        args : 13
-    }
-    roundTrip = osc.fromOscMessage (osc.toOscMessage oscMessage)
-    assert.strictEqual roundTrip?.address, "/addr"
-    assert.strictEqual roundTrip?.arguments?.length, 1
-    assert.strictEqual roundTrip?.arguments?[0]?.value, 13
-    assert.strictEqual roundTrip?.arguments?[0]?.type, "float"
-
-exports["toOscMessage with single blob argument works"] = ->
-    buff = new Buffer 18
-    oscMessage = {
-        address : "/addr"
-        arguments : buff
-    }
-    roundTrip = osc.fromOscMessage (osc.toOscMessage oscMessage)
-    assert.strictEqual roundTrip?.address, "/addr"
-    assert.strictEqual roundTrip?.arguments?.length, 1
-    buffeq roundTrip?.arguments?[0]?.value, buff
-    assert.strictEqual roundTrip?.arguments?[0]?.type, "blob"
-
-exports["toOscMessage with single string argument works"] = ->
-    oscMessage = {
-        address : "/addr"
-        arguments : "strr"
-    }
-    roundTrip = osc.fromOscMessage (osc.toOscMessage oscMessage)
-    assert.strictEqual roundTrip?.address, "/addr"
-    assert.strictEqual roundTrip?.arguments?.length, 1
-    assert.strictEqual roundTrip?.arguments?[0]?.value, "strr"
-    assert.strictEqual roundTrip?.arguments?[0]?.type, "string"
-
-exports["toOscMessage with integer argument works"] = ->
-    roundTripMessage [8]
-
-exports["toOscMessage with buffer argument works"] = ->
-    # buffer will have random contents, but that's okay.
-    roundTripMessage [new Buffer 16]
-
-exports["toOscMessage strict with type true and value false throws"] = ->
-    assert.throws -> osc.toOscMessage {address: "/addr/", arguments: {type : "true", value : false}}, true
-
-exports["toOscMessage strict with type false with value true throws"] = ->
-    assert.throws -> osc.toOscMessage {address: "/addr/", arguments: {type : "false", value : true}}, true
-
-exports["toOscMessage with type true works"] = ->
-    roundTrip = osc.fromOscMessage osc.toOscMessage {address: "/addr", arguments : true}
-    assert.strictEqual roundTrip.arguments.length, 1
-    assert.strictEqual roundTrip.arguments[0].value, true
-    assert.strictEqual roundTrip.arguments[0].type, "true"
-
-exports["toOscMessage with type false works"] = ->
-    roundTrip = osc.fromOscMessage osc.toOscMessage {address: "/addr", arguments : false}
-    assert.strictEqual roundTrip.arguments.length, 1
-    assert.strictEqual roundTrip.arguments[0].value, false
-    assert.strictEqual roundTrip.arguments[0].type, "false"
-
-exports["toOscMessage with type bang argument works"] = ->
-    roundTrip = osc.fromOscMessage osc.toOscMessage {address: "/addr", arguments : {type:"bang"}}
-    assert.strictEqual roundTrip.arguments.length, 1
-    assert.strictEqual roundTrip.arguments[0].value, "bang"
-    assert.strictEqual roundTrip.arguments[0].type, "bang"
-
-exports["toOscMessage with type timetag argument works"] = ->
-    roundTripMessage [{type: "timetag", value:8888}]
-
-exports["toOscMessage with type double argument works"] = ->
-    roundTripMessage [{type: "double", value:8888}]
-
-exports["toOscMessage strict with type null with value true throws"] = ->
-    assert.throws -> osc.toOscMessage({address: "/addr/", arguments: {type : "null", value : true}}, true)
-
-exports["toOscMessage with type null works"] = ->
-    roundTrip = osc.fromOscMessage osc.toOscMessage {address: "/addr", arguments : null}
-    assert.strictEqual roundTrip.arguments.length, 1
-    assert.strictEqual roundTrip.arguments[0].value, null
-    assert.strictEqual roundTrip.arguments[0].type, "null"
-
-exports["toOscMessage with float argument works"] = ->
-    roundTripMessage [{value : 6, type : "float"}]
-
-exports["toOscMessage just a string works"] = ->
-    message = osc.fromOscMessage osc.toOscMessage "bleh"
-    assert.strictEqual message.address, "bleh"
-    assert.strictEqual message.arguments.length, 0
-
-exports["toOscMessage with multiple arguments works"] = ->
-    roundTripMessage ["str", 7, (new Buffer 30), 6]
-
-exports["toOscMessage with integer argument works"] = ->
-    roundTripMessage [{value : 7, type: "integer"}]
-
-exports["toOscMessage fails with no address"] = ->
-    assert.throws -> osc.toOscMessage {arguments : []}
-
-toOscMessageThrowsHelper = (arg) ->
-    assert.throws -> osc.toOscMessage(
-        address : "/addr"
-        arguments : [arg]
-    )
-
-exports["toOscMessage fails when string type is specified but wrong"] = ->
-    toOscMessageThrowsHelper(
-        value : 7
-        type : "string"
-    )
-
-exports["toOscMessage fails when integer type is specified but wrong"] = ->
-    toOscMessageThrowsHelper(
-        value : "blah blah"
-        type : "integer"
-    )
-
-exports["toOscMessage fails when float type is specified but wrong"] = ->
-    toOscMessageThrowsHelper(
-        value : "blah blah"
-        type : "float"
-    )
-
-exports["toOscMessage fails when timetag type is specified but wrong"] = ->
-    toOscMessageThrowsHelper(
-        value : "blah blah"
-        type : "timetag"
-    )
-
-exports["toOscMessage fails when double type is specified but wrong"] = ->
-    toOscMessageThrowsHelper(
-        value : "blah blah"
-        type : "double"
-    )
-
-exports["toOscMessage fails when blob type is specified but wrong"] = ->
-    toOscMessageThrowsHelper(
-        value : "blah blah"
-        type : "blob"
-    )
-
-exports["toOscMessage fails argument is a random type"] = ->
-    toOscMessageThrowsHelper(
-        random_field : 42
-        "is pretty random" : 888
-    )
-
-roundTripBundle = (elems) ->
-    oscMessage = {
-        timetag : 0
-        elements : elems
-    }
-    roundTrip = osc.fromOscBundle (osc.toOscBundle oscMessage), true
-    assert.strictEqual roundTrip?.timetag, 0
-    length = if typeof elems is "object" then elems.length else 1
-    assert.strictEqual roundTrip?.elements?.length, length
-    for i in [0...length]
-      if typeof elems is "object"
-        assert.strictEqual roundTrip?.elements?[i]?.timetag, elems[i].timetag
-        assert.strictEqual roundTrip?.elements?[i]?.address, elems[i].address
-      else
-        assert.strictEqual roundTrip?.elements?[i]?.address, elems
-
-exports["toOscBundle with no elements works"] = ->
-    roundTripBundle []
-
-exports["toOscBundle with just a string works"] = ->
-    roundTripBundle "/address"
-
-exports["toOscBundle with just a number fails"] = ->
-    assert.throws -> roundTripBundle 78
-
-exports["toOscBundle with one message works"] = ->
-    roundTripBundle [{address : "/addr"}]
-
-exports["toOscBundle with nested bundles works"] = ->
-    roundTripBundle [{address : "/addr"}, {timetag : 0}]
-
-exports["toOscBundle with bogus packets works"] = ->
-    roundTrip = osc.fromOscBundle osc.toOscBundle {
-        timetag : 0
-        elements : [{timetag : 0}, {maddress : "/addr"}]
-    }
-    assert.strictEqual roundTrip.elements.length, 1
-    assert.strictEqual roundTrip.elements[0].timetag, 0
-
-exports["toOscBundle strict fails without timetags"] = ->
-    assert.throws -> osc.toOscBundle {elements :[]}, true
-
-exports["identity applyTransform works with single message"] = ->
-    testBuffer = osc.toOscString "/message"
-    assert.strictEqual (osc.applyTransform testBuffer, (a) -> a), testBuffer
-
-exports["nullary applyTransform works with single message"] = ->
-    testBuffer = osc.toOscString "/message"
-    assert.strictEqual (osc.applyTransform testBuffer, (a) -> new Buffer 0).length, 0
-
-exports["toOscPacket works when explicitly set to bundle"] = ->
-    roundTrip = osc.fromOscBundle osc.toOscPacket {timetag: 0, oscType:"bundle", elements :[]}, true
-    assert.strictEqual roundTrip.elements.length, 0
-
-exports["toOscPacket works when explicitly set to message"] = ->
-    roundTrip = osc.fromOscPacket osc.toOscPacket {address: "/bleh", oscType:"message", arguments :[]}, true
-    assert.strictEqual roundTrip.arguments.length, 0
-    assert.strictEqual roundTrip.address, "/bleh"
-
-exports["identity applyTransform works with a simple bundle"] = ->
-    base = {
-        timetag : 0
-        elements : [
-            {address : "test1"}
-            {address : "test2"}
-        ]
-    }
-    transformed = osc.fromOscPacket (osc.applyTransform (osc.toOscPacket base), (a) -> a)
-
-    assert.strictEqual transformed?.timetag, 0
-    assert.strictEqual transformed?.elements?.length, base.elements.length
-    for i in [0...base.elements.length]
-        assert.strictEqual transformed?.elements?[i]?.timetag, base.elements[i].timetag
-        assert.strictEqual transformed?.elements?[i]?.address, base.elements[i].address
-
-exports["applyMessageTranformerToBundle fails on bundle without tag"] = ->
-    func = osc.applyMessageTranformerToBundle ((a) -> a)
-    assert.throws -> func osc.concat [osc.toOscString "#grundle", osc.toIntegerBuffer 0, "Int64"]
-
-exports["addressTransform works with identity"] = ->
-    testBuffer = osc.concat [
-        osc.toOscString "/message"
-        new Buffer "gobblegobblewillsnever\u0000parse blah lbha"
-    ]
-    transformed = osc.applyTransform testBuffer, osc.addressTransform((a) -> a)
-    for i in [0...testBuffer.length]
-        assert.equal transformed[i], testBuffer[i]
-
-
-exports["addressTransform works with bundles"] = ->
-    base = {
-        timetag : 0
-        elements : [
-            {address : "test1"}
-            {address : "test2"}
-        ]
-    }
-    transformed = osc.fromOscPacket (osc.applyTransform (osc.toOscPacket base), osc.addressTransform((a) -> "/prelude/" + a))
-
-    assert.strictEqual transformed?.timetag, 0
-    assert.strictEqual transformed?.elements?.length, base.elements.length
-    for i in [0...base.elements.length]
-        assert.strictEqual transformed?.elements?[i]?.timetag, base.elements[i].timetag
-        assert.strictEqual transformed?.elements?[i]?.address, "/prelude/" + base.elements[i].address
-
-exports["messageTransform works with identity function for single message"] = ->
-    message =
-        address: "/addr"
-        arguments: []
-    buff = osc.toOscPacket message
-    buffeq (osc.applyTransform buff, osc.messageTransform (a) -> a), buff
-
-
-exports["messageTransform works with bundles"] = ->
-    message = {
-        timetag : 0
-        elements : [
-            {address : "test1"}
-            {address : "test2"}
-        ]
-    }
-    buff = osc.toOscPacket message
-    buffeq (osc.applyTransform buff, osc.messageTransform (a) -> a), buff
-
-
diff --git a/examples/node/node_modules/node-osc/package.json b/examples/node/node_modules/node-osc/package.json
deleted file mode 100644
index e94ba94..0000000
--- a/examples/node/node_modules/node-osc/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "name": "node-osc",
-  "description": "pyOSC inspired library",
-  "version": "0.2.1",
-  "main": "index",
-  "athor": {
-    "name": "Myles Borins",
-    "email": "myles.borins@gmail.com"
-  },
-  "contributors": [
-    {
-      "name": "Hans Hübner",
-      "email": "hans.huebner@gmail.com"
-    },
-    {
-      "name": "Andy Smith",
-      "email": "jabber@term.ie"
-    }
-  ],
-  "dependencies": {
-    "jspack": "0.0.1",
-    "osc-min": "0.0.5"
-  },
-  "keywords": [
-    "osc",
-    "udp"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TheAlphaNerd/node-osc.git"
-  },
-  "readme": "--------\nnode-osc\n--------\n\nA very basic OSC client (so far) implementation based heavily on pyOSC_.\n\n\nRelies on current trunk of node.js for the dgram library.\n\n.. _pyOSC: https://trac.v2.nl/wiki/pyOSC\n\nInstall using npm\n\nnpm install node-osc\n\nExample\n-------\n\nSending OSC messages:\n\n::\n  \n  var osc = require('node-osc');\n  \n  var client = new osc.Client('127.0.0.1', 3333);\n  client.send('/oscAddress', 200);\n  \nListening for OSC messages:\n\n::\n  \n  var osc = require('./lib/osc');\n  \n  var oscServer = new osc.Server(3333, '0.0.0.0');\n  oscServer.on(\"message\", function (msg, rinfo) {\n  \tconsole.log(\"TUIO message:\");\n  \tconsole.log(msg);\n  });\n  \nExample of received TUIO (based on OSC) messages:\n\n::\n\n  TUIO message:\n  [ [ '/tuio/2Dcur', 'alive', 3 ],\n    [ '/tuio/2Dcur',\n      'set',\n      3,\n      0.5218750238418579,\n      0.3895833194255829,\n      0,\n      0,\n      0 ],\n    [ '/tuio/2Dcur', 'fseq', 2842 ] ]\n  \n  TUIO message:\n  [ [ '/tuio/2Dcur', 'alive', 3 ],\n    [ '/tuio/2Dcur',\n      'set',\n      3,\n      0.5218750238418579,\n      0.3895833194255829,\n      0,\n      0,\n      0 ],\n    [ '/tuio/2Dcur', 'fseq', 2843 ] ]\n  \n  TUIO message:\n  [ [ '/tuio/2Dcur', 'alive' ],\n    [ '/tuio/2Dcur', 'fseq', 2844 ] ]\n\nLicensing\n---------\n\nLGPL.  Please see the file lesser.txt for details.\n",
-  "readmeFilename": "README.rst",
-  "bugs": {
-    "url": "https://github.com/TheAlphaNerd/node-osc/issues"
-  },
-  "_id": "node-osc@0.2.1",
-  "_from": "node-osc@"
-}
diff --git a/examples/node/node_modules/simplex-noise/.jshintrc b/examples/node/node_modules/simplex-noise/.jshintrc
deleted file mode 100644
index b6c2f0b..0000000
--- a/examples/node/node_modules/simplex-noise/.jshintrc
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "predef": [
-        'define'
-    ],
-    "browser" : true,
-    "node" : true,
-    "jquery" : true,
-    "boss" : true,
-    "eqeqeq": false,
-    "evil": false,
-    "eqnull": true,
-    "forin": false,
-    "laxbreak": false,
-    "newcap": true,
-    "noarg": true,
-    "noempty": false,
-    "nonew": false,
-    "nomen": false,
-    "plusplus": false,
-    "regexp": false,
-    "undef": true,
-    "sub": true,
-    "strict": false,
-    "white": false,
-    "latedef": false
-}
diff --git a/examples/node/node_modules/simplex-noise/.npmignore b/examples/node/node_modules/simplex-noise/.npmignore
deleted file mode 100644
index 3c3629e..0000000
--- a/examples/node/node_modules/simplex-noise/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/examples/node/node_modules/simplex-noise/Makefile b/examples/node/node_modules/simplex-noise/Makefile
deleted file mode 100644
index 1e1ff21..0000000
--- a/examples/node/node_modules/simplex-noise/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-all: tests simplex-noise.min.js
-
-tests:
-	jshint simplex-noise.js
-	./node_modules/buster/bin/buster test
-
-
-simplex-noise.min.js: simplex-noise.js
-	echo "/*! simplex-noise.js: copyright 2012 Jonas Wagner, licensed under a MIT license. See https://github.com/jwagner/simplex-noise.js for details */" > simplex-noise.min.js
-	uglifyjs -nc --unsafe < simplex-noise.js >> simplex-noise.min.js
diff --git a/examples/node/node_modules/simplex-noise/README.md b/examples/node/node_modules/simplex-noise/README.md
deleted file mode 100644
index 904d404..0000000
--- a/examples/node/node_modules/simplex-noise/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# simplex-noise.js
-
-simplex-noise.js is a fast simplex noise implementation in Javascript. It works in the browser and on nodejs.
-
-## Requirements
-
-It requires typed arrays, if you want to use it in browsers without support
-you will need to use a polyfill like [typedarray.js](http://www.calormen.com/polyfill/typedarray.js).
-
-## Demo
-Simple 2D plasma demo on [jsfiddle.net](http://jsfiddle.net/UL69K/5/).
-
-## Usage
-
-```javascript
-// initializing a simplex instance
-// do this only once it's relatively expensive
-var simplex = new SimplexNoise(),
-    value2d = simplex.noise2D(x, y),
-    value3d = simplex.noise3D(x, y, z),
-    value4d = simplex.noise2D(x, y, z, w);
-```
-
-You can also pass an alternative random function to the constructor that is
-used to build the permutation table:
-
-```javascript
-var simplex = new SimplexNoise(Math.random),
-    value2d = simplex.noise2D(x, y);
-```
-
-## node.js
-
-Node.js is also supported, you can install the package using [npm](https://npmjs.org/package/simplex-noise).
-
-```javascript
-var SimplexNoise = require('simplex-noise'),
-    simplex = new SimplexNoise(Math.random),
-    value2d = simplex.noise2D(x, y);
-```
-
-## Benchmarks
-
-- [Comparison between 2D and 3D noise](http://jsperf.com/simplex-noise/2)
-- [Comparison with simplex implementation in three.js](http://jsperf.com/simplex-noise-comparison)
-
-## Tests
-
-There are some simple buster.js tests for this library to run them first install buster.js and jshint:
-```shell
-npm install buster.js
-# if you haven't done so already
-npm install -g jshint
-make tests
-```
-
-## Changelog
-
-### 2.1.1
-- Increased entropy by fixing a little initialization issue.
-
-### 2.1.0
-- AMD support
-
-### 2.0.0
-- Changed node.js api, SimplexNoise is now exported directly.
-- Added unit tests
-
-### 1.0.0
-- Initial Release
-
-## Credits
-
-This is mostly a direct javascript port of the [Java implementation](http://webstaff.itn.liu.se/~stegu/simplexnoise/SimplexNoise.java)
-by Stefan Gustavson and Peter Eastman.
diff --git a/examples/node/node_modules/simplex-noise/package.json b/examples/node/node_modules/simplex-noise/package.json
deleted file mode 100644
index f00c425..0000000
--- a/examples/node/node_modules/simplex-noise/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "name": "simplex-noise",
-  "version": "2.1.1",
-  "description": "simplex-noise is a fast simplex noise implementation in Javascript.",
-  "homepage": "https://github.com/jwagner/simplex-noise.js",
-  "author": {
-    "name": "Jonas Wagner",
-    "email": "jonas@29a.ch",
-    "url": "http://29a.ch/"
-  },
-  "main": "./simplex-noise",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/jwagner/simplex-noise.js.git"
-  },
-  "readme": "# simplex-noise.js\n\nsimplex-noise.js is a fast simplex noise implementation in Javascript. It works in the browser and on nodejs.\n\n## Requirements\n\nIt requires typed arrays, if you want to use it in browsers without support\nyou will need to use a polyfill like [typedarray.js](http://www.calormen.com/polyfill/typedarray.js).\n\n## Demo\nSimple 2D plasma demo on [jsfiddle.net](http://jsfiddle.net/UL69K/5/).\n\n## Usage\n\n```javascript\n// initializing a simplex instance\n// do this only once it's relatively expensive\nvar simplex = new SimplexNoise(),\n    value2d = simplex.noise2D(x, y),\n    value3d = simplex.noise3D(x, y, z),\n    value4d = simplex.noise2D(x, y, z, w);\n```\n\nYou can also pass an alternative random function to the constructor that is\nused to build the permutation table:\n\n```javascript\nvar simplex = new SimplexNoise(Math.random),\n    value2d = simplex.noise2D(x, y);\n```\n\n## node.js\n\nNode.js is also supported, you can install the package using [npm](https://npmjs.org/package/simplex-noise).\n\n```javascript\nvar SimplexNoise = require('simplex-noise'),\n    simplex = new SimplexNoise(Math.random),\n    value2d = simplex.noise2D(x, y);\n```\n\n## Benchmarks\n\n- [Comparison between 2D and 3D noise](http://jsperf.com/simplex-noise/2)\n- [Comparison with simplex implementation in three.js](http://jsperf.com/simplex-noise-comparison)\n\n## Tests\n\nThere are some simple buster.js tests for this library to run them first install buster.js and jshint:\n```shell\nnpm install buster.js\n# if you haven't done so already\nnpm install -g jshint\nmake tests\n```\n\n## Changelog\n\n### 2.1.1\n- Increased entropy by fixing a little initialization issue.\n\n### 2.1.0\n- AMD support\n\n### 2.0.0\n- Changed node.js api, SimplexNoise is now exported directly.\n- Added unit tests\n\n### 1.0.0\n- Initial Release\n\n## Credits\n\nThis is mostly a direct javascript port of the [Java implementation](http://webstaff.itn.liu.se/~stegu/simplexnoise/SimplexNoise.java)\nby Stefan Gustavson and Peter Eastman.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/jwagner/simplex-noise.js/issues"
-  },
-  "_id": "simplex-noise@2.1.1",
-  "dist": {
-    "shasum": "d9e89da95ca137f7c42778c9f9da6d44f8899b78"
-  },
-  "_from": "simplex-noise@",
-  "_resolved": "https://registry.npmjs.org/simplex-noise/-/simplex-noise-2.1.1.tgz"
-}
diff --git a/examples/node/node_modules/simplex-noise/simplex-noise.js b/examples/node/node_modules/simplex-noise/simplex-noise.js
deleted file mode 100644
index 4c4aa81..0000000
--- a/examples/node/node_modules/simplex-noise/simplex-noise.js
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- * A fast javascript implementation of simplex noise by Jonas Wagner
- *
- * Based on a speed-improved simplex noise algorithm for 2D, 3D and 4D in Java.
- * Which is based on example code by Stefan Gustavson (stegu@itn.liu.se).
- * With Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).
- * Better rank ordering method by Stefan Gustavson in 2012.
- *
- *
- * Copyright (C) 2012 Jonas Wagner
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-(function () {
-
-var F2 = 0.5 * (Math.sqrt(3.0) - 1.0),
-    G2 = (3.0 - Math.sqrt(3.0)) / 6.0,
-    F3 = 1.0 / 3.0,
-    G3 = 1.0 / 6.0,
-    F4 = (Math.sqrt(5.0) - 1.0) / 4.0,
-    G4 = (5.0 - Math.sqrt(5.0)) / 20.0;
-
-
-function SimplexNoise(random) {
-    if (!random) random = Math.random;
-    this.p = new Uint8Array(256);
-    this.perm = new Uint8Array(512);
-    this.permMod12 = new Uint8Array(512);
-    for (var i = 0; i < 256; i++) {
-        this.p[i] = random() * 256;
-    }
-    for (i = 0; i < 512; i++) {
-        this.perm[i] = this.p[i & 255];
-        this.permMod12[i] = this.perm[i] % 12;
-    }
-
-}
-SimplexNoise.prototype = {
-    grad3: new Float32Array([1, 1, 0,
-                            - 1, 1, 0,
-                            1, - 1, 0,
-
-                            - 1, - 1, 0,
-                            1, 0, 1,
-                            - 1, 0, 1,
-
-                            1, 0, - 1,
-                            - 1, 0, - 1,
-                            0, 1, 1,
-
-                            0, - 1, 1,
-                            0, 1, - 1,
-                            0, - 1, - 1]),
-    grad4: new Float32Array([0, 1, 1, 1, 0, 1, 1, - 1, 0, 1, - 1, 1, 0, 1, - 1, - 1,
-                            0, - 1, 1, 1, 0, - 1, 1, - 1, 0, - 1, - 1, 1, 0, - 1, - 1, - 1,
-                            1, 0, 1, 1, 1, 0, 1, - 1, 1, 0, - 1, 1, 1, 0, - 1, - 1,
-                            - 1, 0, 1, 1, - 1, 0, 1, - 1, - 1, 0, - 1, 1, - 1, 0, - 1, - 1,
-                            1, 1, 0, 1, 1, 1, 0, - 1, 1, - 1, 0, 1, 1, - 1, 0, - 1,
-                            - 1, 1, 0, 1, - 1, 1, 0, - 1, - 1, - 1, 0, 1, - 1, - 1, 0, - 1,
-                            1, 1, 1, 0, 1, 1, - 1, 0, 1, - 1, 1, 0, 1, - 1, - 1, 0,
-                            - 1, 1, 1, 0, - 1, 1, - 1, 0, - 1, - 1, 1, 0, - 1, - 1, - 1, 0]),
-    noise2D: function (xin, yin) {
-        var permMod12 = this.permMod12,
-            perm = this.perm,
-            grad3 = this.grad3;
-        var n0, n1, n2; // Noise contributions from the three corners
-        // Skew the input space to determine which simplex cell we're in
-        var s = (xin + yin) * F2; // Hairy factor for 2D
-        var i = Math.floor(xin + s);
-        var j = Math.floor(yin + s);
-        var t = (i + j) * G2;
-        var X0 = i - t; // Unskew the cell origin back to (x,y) space
-        var Y0 = j - t;
-        var x0 = xin - X0; // The x,y distances from the cell origin
-        var y0 = yin - Y0;
-        // For the 2D case, the simplex shape is an equilateral triangle.
-        // Determine which simplex we are in.
-        var i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords
-        if (x0 > y0) {
-            i1 = 1;
-            j1 = 0;
-        } // lower triangle, XY order: (0,0)->(1,0)->(1,1)
-        else {
-            i1 = 0;
-            j1 = 1;
-        } // upper triangle, YX order: (0,0)->(0,1)->(1,1)
-        // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and
-        // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where
-        // c = (3-sqrt(3))/6
-        var x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords
-        var y1 = y0 - j1 + G2;
-        var x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords
-        var y2 = y0 - 1.0 + 2.0 * G2;
-        // Work out the hashed gradient indices of the three simplex corners
-        var ii = i & 255;
-        var jj = j & 255;
-        // Calculate the contribution from the three corners
-        var t0 = 0.5 - x0 * x0 - y0 * y0;
-        if (t0 < 0) n0 = 0.0;
-        else {
-            var gi0 = permMod12[ii + perm[jj]] * 3;
-            t0 *= t0;
-            n0 = t0 * t0 * (grad3[gi0] * x0 + grad3[gi0 + 1] * y0); // (x,y) of grad3 used for 2D gradient
-        }
-        var t1 = 0.5 - x1 * x1 - y1 * y1;
-        if (t1 < 0) n1 = 0.0;
-        else {
-            var gi1 = permMod12[ii + i1 + perm[jj + j1]] * 3;
-            t1 *= t1;
-            n1 = t1 * t1 * (grad3[gi1] * x1 + grad3[gi1 + 1] * y1);
-        }
-        var t2 = 0.5 - x2 * x2 - y2 * y2;
-        if (t2 < 0) n2 = 0.0;
-        else {
-            var gi2 = permMod12[ii + 1 + perm[jj + 1]] * 3;
-            t2 *= t2;
-            n2 = t2 * t2 * (grad3[gi2] * x2 + grad3[gi2 + 1] * y2);
-        }
-        // Add contributions from each corner to get the final noise value.
-        // The result is scaled to return values in the interval [-1,1].
-        return 70.0 * (n0 + n1 + n2);
-    },
-    // 3D simplex noise
-    noise3D: function (xin, yin, zin) {
-        var permMod12 = this.permMod12,
-            perm = this.perm,
-            grad3 = this.grad3;
-        var n0, n1, n2, n3; // Noise contributions from the four corners
-        // Skew the input space to determine which simplex cell we're in
-        var s = (xin + yin + zin) * F3; // Very nice and simple skew factor for 3D
-        var i = Math.floor(xin + s);
-        var j = Math.floor(yin + s);
-        var k = Math.floor(zin + s);
-        var t = (i + j + k) * G3;
-        var X0 = i - t; // Unskew the cell origin back to (x,y,z) space
-        var Y0 = j - t;
-        var Z0 = k - t;
-        var x0 = xin - X0; // The x,y,z distances from the cell origin
-        var y0 = yin - Y0;
-        var z0 = zin - Z0;
-        // For the 3D case, the simplex shape is a slightly irregular tetrahedron.
-        // Determine which simplex we are in.
-        var i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords
-        var i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords
-        if (x0 >= y0) {
-            if (y0 >= z0) {
-                i1 = 1;
-                j1 = 0;
-                k1 = 0;
-                i2 = 1;
-                j2 = 1;
-                k2 = 0;
-            } // X Y Z order
-            else if (x0 >= z0) {
-                i1 = 1;
-                j1 = 0;
-                k1 = 0;
-                i2 = 1;
-                j2 = 0;
-                k2 = 1;
-            } // X Z Y order
-            else {
-                i1 = 0;
-                j1 = 0;
-                k1 = 1;
-                i2 = 1;
-                j2 = 0;
-                k2 = 1;
-            } // Z X Y order
-        }
-        else { // x0<y0
-            if (y0 < z0) {
-                i1 = 0;
-                j1 = 0;
-                k1 = 1;
-                i2 = 0;
-                j2 = 1;
-                k2 = 1;
-            } // Z Y X order
-            else if (x0 < z0) {
-                i1 = 0;
-                j1 = 1;
-                k1 = 0;
-                i2 = 0;
-                j2 = 1;
-                k2 = 1;
-            } // Y Z X order
-            else {
-                i1 = 0;
-                j1 = 1;
-                k1 = 0;
-                i2 = 1;
-                j2 = 1;
-                k2 = 0;
-            } // Y X Z order
-        }
-        // A step of (1,0,0) in (i,j,k) means a step of (1-c,-c,-c) in (x,y,z),
-        // a step of (0,1,0) in (i,j,k) means a step of (-c,1-c,-c) in (x,y,z), and
-        // a step of (0,0,1) in (i,j,k) means a step of (-c,-c,1-c) in (x,y,z), where
-        // c = 1/6.
-        var x1 = x0 - i1 + G3; // Offsets for second corner in (x,y,z) coords
-        var y1 = y0 - j1 + G3;
-        var z1 = z0 - k1 + G3;
-        var x2 = x0 - i2 + 2.0 * G3; // Offsets for third corner in (x,y,z) coords
-        var y2 = y0 - j2 + 2.0 * G3;
-        var z2 = z0 - k2 + 2.0 * G3;
-        var x3 = x0 - 1.0 + 3.0 * G3; // Offsets for last corner in (x,y,z) coords
-        var y3 = y0 - 1.0 + 3.0 * G3;
-        var z3 = z0 - 1.0 + 3.0 * G3;
-        // Work out the hashed gradient indices of the four simplex corners
-        var ii = i & 255;
-        var jj = j & 255;
-        var kk = k & 255;
-        // Calculate the contribution from the four corners
-        var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0;
-        if (t0 < 0) n0 = 0.0;
-        else {
-            var gi0 = permMod12[ii + perm[jj + perm[kk]]] * 3;
-            t0 *= t0;
-            n0 = t0 * t0 * (grad3[gi0] * x0 + grad3[gi0 + 1] * y0 + grad3[gi0 + 2] * z0);
-        }
-        var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1;
-        if (t1 < 0) n1 = 0.0;
-        else {
-            var gi1 = permMod12[ii + i1 + perm[jj + j1 + perm[kk + k1]]] * 3;
-            t1 *= t1;
-            n1 = t1 * t1 * (grad3[gi1] * x1 + grad3[gi1 + 1] * y1 + grad3[gi1 + 2] * z1);
-        }
-        var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2;
-        if (t2 < 0) n2 = 0.0;
-        else {
-            var gi2 = permMod12[ii + i2 + perm[jj + j2 + perm[kk + k2]]] * 3;
-            t2 *= t2;
-            n2 = t2 * t2 * (grad3[gi2] * x2 + grad3[gi2 + 1] * y2 + grad3[gi2 + 2] * z2);
-        }
-        var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3;
-        if (t3 < 0) n3 = 0.0;
-        else {
-            var gi3 = permMod12[ii + 1 + perm[jj + 1 + perm[kk + 1]]] * 3;
-            t3 *= t3;
-            n3 = t3 * t3 * (grad3[gi3] * x3 + grad3[gi3 + 1] * y3 + grad3[gi3 + 2] * z3);
-        }
-        // Add contributions from each corner to get the final noise value.
-        // The result is scaled to stay just inside [-1,1]
-        return 32.0 * (n0 + n1 + n2 + n3);
-    },
-    // 4D simplex noise, better simplex rank ordering method 2012-03-09
-    noise4D: function (x, y, z, w) {
-        var permMod12 = this.permMod12,
-            perm = this.perm,
-            grad4 = this.grad4;
-
-        var n0, n1, n2, n3, n4; // Noise contributions from the five corners
-        // Skew the (x,y,z,w) space to determine which cell of 24 simplices we're in
-        var s = (x + y + z + w) * F4; // Factor for 4D skewing
-        var i = Math.floor(x + s);
-        var j = Math.floor(y + s);
-        var k = Math.floor(z + s);
-        var l = Math.floor(w + s);
-        var t = (i + j + k + l) * G4; // Factor for 4D unskewing
-        var X0 = i - t; // Unskew the cell origin back to (x,y,z,w) space
-        var Y0 = j - t;
-        var Z0 = k - t;
-        var W0 = l - t;
-        var x0 = x - X0; // The x,y,z,w distances from the cell origin
-        var y0 = y - Y0;
-        var z0 = z - Z0;
-        var w0 = w - W0;
-        // For the 4D case, the simplex is a 4D shape I won't even try to describe.
-        // To find out which of the 24 possible simplices we're in, we need to
-        // determine the magnitude ordering of x0, y0, z0 and w0.
-        // Six pair-wise comparisons are performed between each possible pair
-        // of the four coordinates, and the results are used to rank the numbers.
-        var rankx = 0;
-        var ranky = 0;
-        var rankz = 0;
-        var rankw = 0;
-        if (x0 > y0) rankx++;
-        else ranky++;
-        if (x0 > z0) rankx++;
-        else rankz++;
-        if (x0 > w0) rankx++;
-        else rankw++;
-        if (y0 > z0) ranky++;
-        else rankz++;
-        if (y0 > w0) ranky++;
-        else rankw++;
-        if (z0 > w0) rankz++;
-        else rankw++;
-        var i1, j1, k1, l1; // The integer offsets for the second simplex corner
-        var i2, j2, k2, l2; // The integer offsets for the third simplex corner
-        var i3, j3, k3, l3; // The integer offsets for the fourth simplex corner
-        // simplex[c] is a 4-vector with the numbers 0, 1, 2 and 3 in some order.
-        // Many values of c will never occur, since e.g. x>y>z>w makes x<z, y<w and x<w
-        // impossible. Only the 24 indices which have non-zero entries make any sense.
-        // We use a thresholding to set the coordinates in turn from the largest magnitude.
-        // Rank 3 denotes the largest coordinate.
-        i1 = rankx >= 3 ? 1 : 0;
-        j1 = ranky >= 3 ? 1 : 0;
-        k1 = rankz >= 3 ? 1 : 0;
-        l1 = rankw >= 3 ? 1 : 0;
-        // Rank 2 denotes the second largest coordinate.
-        i2 = rankx >= 2 ? 1 : 0;
-        j2 = ranky >= 2 ? 1 : 0;
-        k2 = rankz >= 2 ? 1 : 0;
-        l2 = rankw >= 2 ? 1 : 0;
-        // Rank 1 denotes the second smallest coordinate.
-        i3 = rankx >= 1 ? 1 : 0;
-        j3 = ranky >= 1 ? 1 : 0;
-        k3 = rankz >= 1 ? 1 : 0;
-        l3 = rankw >= 1 ? 1 : 0;
-        // The fifth corner has all coordinate offsets = 1, so no need to compute that.
-        var x1 = x0 - i1 + G4; // Offsets for second corner in (x,y,z,w) coords
-        var y1 = y0 - j1 + G4;
-        var z1 = z0 - k1 + G4;
-        var w1 = w0 - l1 + G4;
-        var x2 = x0 - i2 + 2.0 * G4; // Offsets for third corner in (x,y,z,w) coords
-        var y2 = y0 - j2 + 2.0 * G4;
-        var z2 = z0 - k2 + 2.0 * G4;
-        var w2 = w0 - l2 + 2.0 * G4;
-        var x3 = x0 - i3 + 3.0 * G4; // Offsets for fourth corner in (x,y,z,w) coords
-        var y3 = y0 - j3 + 3.0 * G4;
-        var z3 = z0 - k3 + 3.0 * G4;
-        var w3 = w0 - l3 + 3.0 * G4;
-        var x4 = x0 - 1.0 + 4.0 * G4; // Offsets for last corner in (x,y,z,w) coords
-        var y4 = y0 - 1.0 + 4.0 * G4;
-        var z4 = z0 - 1.0 + 4.0 * G4;
-        var w4 = w0 - 1.0 + 4.0 * G4;
-        // Work out the hashed gradient indices of the five simplex corners
-        var ii = i & 255;
-        var jj = j & 255;
-        var kk = k & 255;
-        var ll = l & 255;
-        // Calculate the contribution from the five corners
-        var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;
-        if (t0 < 0) n0 = 0.0;
-        else {
-            var gi0 = (perm[ii + perm[jj + perm[kk + perm[ll]]]] % 32) * 4;
-            t0 *= t0;
-            n0 = t0 * t0 * (grad4[gi0] * x0 + grad4[gi0 + 1] * y0 + grad4[gi0 + 2] * z0 + grad4[gi0 + 3] * w0);
-        }
-        var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;
-        if (t1 < 0) n1 = 0.0;
-        else {
-            var gi1 = (perm[ii + i1 + perm[jj + j1 + perm[kk + k1 + perm[ll + l1]]]] % 32) * 4;
-            t1 *= t1;
-            n1 = t1 * t1 * (grad4[gi1] * x1 + grad4[gi1 + 1] * y1 + grad4[gi1 + 2] * z1 + grad4[gi1 + 3] * w1);
-        }
-        var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;
-        if (t2 < 0) n2 = 0.0;
-        else {
-            var gi2 = (perm[ii + i2 + perm[jj + j2 + perm[kk + k2 + perm[ll + l2]]]] % 32) * 4;
-            t2 *= t2;
-            n2 = t2 * t2 * (grad4[gi2] * x2 + grad4[gi2 + 1] * y2 + grad4[gi2 + 2] * z2 + grad4[gi2 + 3] * w2);
-        }
-        var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;
-        if (t3 < 0) n3 = 0.0;
-        else {
-            var gi3 = (perm[ii + i3 + perm[jj + j3 + perm[kk + k3 + perm[ll + l3]]]] % 32) * 4;
-            t3 *= t3;
-            n3 = t3 * t3 * (grad4[gi3] * x3 + grad4[gi3 + 1] * y3 + grad4[gi3 + 2] * z3 + grad4[gi3 + 3] * w3);
-        }
-        var t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;
-        if (t4 < 0) n4 = 0.0;
-        else {
-            var gi4 = (perm[ii + 1 + perm[jj + 1 + perm[kk + 1 + perm[ll + 1]]]] % 32) * 4;
-            t4 *= t4;
-            n4 = t4 * t4 * (grad4[gi4] * x4 + grad4[gi4 + 1] * y4 + grad4[gi4 + 2] * z4 + grad4[gi4 + 3] * w4);
-        }
-        // Sum up and scale the result to cover the range [-1,1]
-        return 27.0 * (n0 + n1 + n2 + n3 + n4);
-    }
-
-
-};
-
-// amd
-if (typeof define !== 'undefined' && define.amd) define(function(){return SimplexNoise;});
-// browser
-else if (typeof window !== 'undefined') window.SimplexNoise = SimplexNoise;
-//common js
-if (typeof exports !== 'undefined') exports.SimplexNoise = SimplexNoise;
-// nodejs
-if (typeof module !== 'undefined') {
-    module.exports = SimplexNoise;
-}
-
-})();
diff --git a/examples/node/node_modules/simplex-noise/simplex-noise.min.js b/examples/node/node_modules/simplex-noise/simplex-noise.min.js
deleted file mode 100644
index 5093804..0000000
--- a/examples/node/node_modules/simplex-noise/simplex-noise.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! copyright 2012 Jonas Wagner, licensed under a MIT license. See https://github.com/jwagner/simplex-noise.js for details */
-(function(){function g(a){a||(a=Math.random),this.p=new Uint8Array(256),this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);for(var b=0;b<256;b++)this.p[b]=a()*256;for(b=0;b<512;b++)this.perm[b]=this.p[b&255],this.permMod12[b]=this.perm[b]%12}var a=.5*(Math.sqrt(3)-1),b=(3-Math.sqrt(3))/6,c=1/3,d=1/6,e=(Math.sqrt(5)-1)/4,f=(5-Math.sqrt(5))/20;g.prototype={grad3:new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]),grad4:new Float32Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]),noise2D:function(c,d){var e=this.permMod12,f=this.perm,g=this.grad3,h,i,j,k=(c+d)*a,l=Math.floor(c+k),m=Math.floor(d+k),n=(l+m)*b,o=l-n,p=m-n,q=c-o,r=d-p,s,t;q>r?(s=1,t=0):(s=0,t=1);var u=q-s+b,v=r-t+b,w=q-1+2*b,x=r-1+2*b,y=l&255,z=m&255,A=.5-q*q-r*r;if(A<0)h=0;else{var B=e[y+f[z]]*3;A*=A,h=A*A*(g[B]*q+g[B+1]*r)}var C=.5-u*u-v*v;if(C<0)i=0;else{var D=e[y+s+f[z+t]]*3;C*=C,i=C*C*(g[D]*u+g[D+1]*v)}var E=.5-w*w-x*x;if(E<0)j=0;else{var F=e[y+1+f[z+1]]*3;E*=E,j=E*E*(g[F]*w+g[F+1]*x)}return 70*(h+i+j)},noise3D:function(a,b,e){var f=this.permMod12,g=this.perm,h=this.grad3,i,j,k,l,m=(a+b+e)*c,n=Math.floor(a+m),o=Math.floor(b+m),p=Math.floor(e+m),q=(n+o+p)*d,r=n-q,s=o-q,t=p-q,u=a-r,v=b-s,w=e-t,x,y,z,A,B,C;u<v?v<w?(x=0,y=0,z=1,A=0,B=1,C=1):u<w?(x=0,y=1,z=0,A=0,B=1,C=1):(x=0,y=1,z=0,A=1,B=1,C=0):v<w?u<w?(x=0,y=0,z=1,A=1,B=0,C=1):(x=1,y=0,z=0,A=1,B=0,C=1):(x=1,y=0,z=0,A=1,B=1,C=0);var D=u-x+d,E=v-y+d,F=w-z+d,G=u-A+2*d,H=v-B+2*d,I=w-C+2*d,J=u-1+3*d,K=v-1+3*d,L=w-1+3*d,M=n&255,N=o&255,O=p&255,P=.6-u*u-v*v-w*w;if(P<0)i=0;else{var Q=f[M+g[N+g[O]]]*3;P*=P,i=P*P*(h[Q]*u+h[Q+1]*v+h[Q+2]*w)}var R=.6-D*D-E*E-F*F;if(R<0)j=0;else{var S=f[M+x+g[N+y+g[O+z]]]*3;R*=R,j=R*R*(h[S]*D+h[S+1]*E+h[S+2]*F)}var T=.6-G*G-H*H-I*I;if(T<0)k=0;else{var U=f[M+A+g[N+B+g[O+C]]]*3;T*=T,k=T*T*(h[U]*G+h[U+1]*H+h[U+2]*I)}var V=.6-J*J-K*K-L*L;if(V<0)l=0;else{var W=f[M+1+g[N+1+g[O+1]]]*3;V*=V,l=V*V*(h[W]*J+h[W+1]*K+h[W+2]*L)}return 32*(i+j+k+l)},noise4D:function(a,b,c,d){var g=this.permMod12,h=this.perm,i=this.grad4,j,k,l,m,n,o=(a+b+c+d)*e,p=Math.floor(a+o),q=Math.floor(b+o),r=Math.floor(c+o),s=Math.floor(d+o),t=(p+q+r+s)*f,u=p-t,v=q-t,w=r-t,x=s-t,y=a-u,z=b-v,A=c-w,B=d-x,C=0,D=0,E=0,F=0;y>z?C++:D++,y>A?C++:E++,y>B?C++:F++,z>A?D++:E++,z>B?D++:F++,A>B?E++:F++;var G,H,I,J,K,L,M,N,O,P,Q,R;G=C>=3?1:0,H=D>=3?1:0,I=E>=3?1:0,J=F>=3?1:0,K=C>=2?1:0,L=D>=2?1:0,M=E>=2?1:0,N=F>=2?1:0,O=C>=1?1:0,P=D>=1?1:0,Q=E>=1?1:0,R=F>=1?1:0;var S=y-G+f,T=z-H+f,U=A-I+f,V=B-J+f,W=y-K+2*f,X=z-L+2*f,Y=A-M+2*f,Z=B-N+2*f,$=y-O+3*f,_=z-P+3*f,ba=A-Q+3*f,bb=B-R+3*f,bc=y-1+4*f,bd=z-1+4*f,be=A-1+4*f,bf=B-1+4*f,bg=p&255,bh=q&255,bi=r&255,bj=s&255,bk=.6-y*y-z*z-A*A-B*B;if(bk<0)j=0;else{var bl=h[bg+h[bh+h[bi+h[bj]]]]%32*4;bk*=bk,j=bk*bk*(i[bl]*y+i[bl+1]*z+i[bl+2]*A+i[bl+3]*B)}var bm=.6-S*S-T*T-U*U-V*V;if(bm<0)k=0;else{var bn=h[bg+G+h[bh+H+h[bi+I+h[bj+J]]]]%32*4;bm*=bm,k=bm*bm*(i[bn]*S+i[bn+1]*T+i[bn+2]*U+i[bn+3]*V)}var bo=.6-W*W-X*X-Y*Y-Z*Z;if(bo<0)l=0;else{var bp=h[bg+K+h[bh+L+h[bi+M+h[bj+N]]]]%32*4;bo*=bo,l=bo*bo*(i[bp]*W+i[bp+1]*X+i[bp+2]*Y+i[bp+3]*Z)}var bq=.6-$*$-_*_-ba*ba-bb*bb;if(bq<0)m=0;else{var br=h[bg+O+h[bh+P+h[bi+Q+h[bj+R]]]]%32*4;bq*=bq,m=bq*bq*(i[br]*$+i[br+1]*_+i[br+2]*ba+i[br+3]*bb)}var bs=.6-bc*bc-bd*bd-be*be-bf*bf;if(bs<0)n=0;else{var bt=h[bg+1+h[bh+1+h[bi+1+h[bj+1]]]]%32*4;bs*=bs,n=bs*bs*(i[bt]*bc+i[bt+1]*bd+i[bt+2]*be+i[bt+3]*bf)}return 27*(j+k+l+m+n)}},typeof window!="undefined"&&(window.SimplexNoise=g),typeof exports!="undefined"&&(exports.SimplexNoise=g),typeof module!="undefined"&&(module.exports=g)})()
\ No newline at end of file
diff --git a/examples/node/node_modules/simplex-noise/test/buster.js b/examples/node/node_modules/simplex-noise/test/buster.js
deleted file mode 100644
index 73b5315..0000000
--- a/examples/node/node_modules/simplex-noise/test/buster.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var config = module.exports;
-
-config["tests"] = {
-    rootPath: '../',
-    environment: 'node',
-    sources: ['simplex-noise.js'],
-    tests: ['test/*-test.js']
-};
diff --git a/examples/node/node_modules/simplex-noise/test/simplex-noise-test.js b/examples/node/node_modules/simplex-noise/test/simplex-noise-test.js
deleted file mode 100644
index 6166f26..0000000
--- a/examples/node/node_modules/simplex-noise/test/simplex-noise-test.js
+++ /dev/null
@@ -1,106 +0,0 @@
-if(typeof require !== 'undefined'){
-    var buster = require("buster");
-    var SimplexNoise = require("../simplex-noise");
-}
-
-var assert = buster.assertions.assert,
-    refute = buster.assertions.refute;
-
-var _rnd;
-function random(){
-    return 1.0/(_rnd++);
-}
-
-buster.testCase("simplex-noise", {
-    setUp: function() {_rnd = 0;},
-    "should initialize with Math.random": function () {
-        var simplex = new SimplexNoise();
-        assert.equals(simplex.perm.length, 512);
-        assert.equals(simplex.permMod12.length, 512);
-        for(var i = 0; i < 512; i++){
-            assert(simplex.perm[i] < 256);
-            assert(simplex.perm[i] >= 0);
-            assert(simplex.perm[i] >= 0);
-            assert.equals(simplex.perm[i], simplex.perm[i&255]);
-            assert.equals(simplex.permMod12[i], simplex.perm[i]%12);
-        }
-    },
-    "should initialize with a custom random function": function () {
-        var i = 2,
-            simplex = new SimplexNoise(function(){return 1.0/i++;});
-            assert.equals(simplex.perm.length, 512);
-            assert.equals(simplex.permMod12.length, 512);
-            assert.equals(simplex.perm[0], 128);
-            assert.equals(simplex.perm[1], 85);
-            assert.equals(simplex.perm[256], 128);
-            assert.equals(simplex.perm[257], 85);
-            assert.equals(simplex.permMod12[0], 128%12);
-            assert.equals(simplex.permMod12[1], 85%12);
-    },
-    'noise': {
-        setUp: function() {
-            this.simplex = new SimplexNoise(random);
-        },
-        'noise2D': {
-            'should return the same value for the same input': function() {
-                assert.equals(this.simplex.noise2D(0.1, 0.2), this.simplex.noise2D(0.1, 0.2));
-            },
-            'should return a different value for a different input': function() {
-                refute.equals(this.simplex.noise2D(0.1, 0.2), this.simplex.noise2D(0.101, 0.202));
-            },
-            'should return values between -1 and 1': function () {
-                for(var x = 0; x < 10; x++) {
-                    for(var y = 0; y < 10; y++) {
-                        assert(this.simplex.noise2D(x/5, y/5) >= -1);
-                        assert(this.simplex.noise2D(x/5, y/5) <= 1);
-                    }
-                }
-            },
-            'should return similar values for similar inputs': function () {
-                assert(Math.abs(this.simplex.noise2D(0.1, 0.2)-this.simplex.noise2D(0.101, 0.202))<0.1);
-            }
-        },
-        'noise3D': {
-            'should return the same value for the same input': function() {
-                assert.equals(this.simplex.noise3D(0.1, 0.2, 0.3), this.simplex.noise3D(0.1, 0.2, 0.3));
-            },
-            'should return a different value for a different input': function() {
-                refute.equals(this.simplex.noise3D(0.1, 0.2, 0.3), this.simplex.noise3D(0.101, 0.202, 0.303));
-                refute.equals(this.simplex.noise3D(0.1, 0.2, 0.3), this.simplex.noise3D(0.1, 0.2, 0.303));
-            },
-            'should return values between -1 and 1': function () {
-                for(var x = 0; x < 10; x++) {
-                    for(var y = 0; y < 10; y++) {
-                        assert(this.simplex.noise3D(x/5, y/5, x+y) >= -1);
-                        assert(this.simplex.noise3D(x/5, y/5, x+y) <= 1);
-                    }
-                }
-            },
-            'should return similar values for similar inputs': function () {
-                assert(Math.abs(this.simplex.noise3D(0.1, 0.2, 0.3)-this.simplex.noise3D(0.101, 0.202, 0.303))<0.1);
-            }
-        },
-        'noise4D': {
-            'should return the same value for the same input': function() {
-                assert.equals(this.simplex.noise4D(0.1, 0.2, 0.3, 0.4), this.simplex.noise4D(0.1, 0.2, 0.3, 0.4));
-            },
-            'should return a different value for a different input': function() {
-                refute.equals(this.simplex.noise4D(0.1, 0.2, 0.3, 0.4), this.simplex.noise4D(0.101, 0.202, 0.303, 0.404));
-                refute.equals(this.simplex.noise4D(0.1, 0.2, 0.3, 0.4), this.simplex.noise4D(0.1, 0.2, 0.3, 0.404));
-            },
-            'should return values between -1 and 1': function () {
-                for(var x = 0; x < 10; x++) {
-                    for(var y = 0; y < 10; y++) {
-                        assert(this.simplex.noise4D(x/5, y/5, x+y, x-y) >= -1);
-                        assert(this.simplex.noise4D(x/5, y/5, x+y, x-y) <= 1);
-                    }
-                }
-            },
-            'should return similar values for similar inputs': function () {
-                assert(Math.abs(this.simplex.noise4D(0.1, 0.2, 0.3, 0.4)-this.simplex.noise4D(0.101, 0.202, 0.303, 0.404))<0.1);
-            }
-        }
-
-
-    } 
-});
diff --git a/examples/node/package.json b/examples/node/package.json
new file mode 100644
index 0000000..cc8612a
--- /dev/null
+++ b/examples/node/package.json
@@ -0,0 +1,11 @@
+{
+  "name": "fadecandy-examples-node",
+  "devDependencies": {
+    "coffee": "~0.0.1"
+  },
+  "dependencies": {
+    "flags": "~0.1.1",
+    "midi": "~0.8.1"
+  },
+  "private": true
+}
-- 
GitLab