You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cmda.apache.org by xi...@apache.org on 2015/10/17 01:11:40 UTC

[06/51] [partial] incubator-cmda git commit: Update ApacheCMDA_1.0

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/pause-resume.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/pause-resume.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/pause-resume.js
new file mode 100644
index 0000000..64d0d09
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/pause-resume.js
@@ -0,0 +1,73 @@
+var BlockStream = require("../block-stream.js")
+
+var blockSizes = [16]
+  , writeSizes = [15, 16, 17]
+  , writeCounts = [1, 10]//, 100]
+  , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+  tap.test("writeSize=" + writeSize +
+           " blockSize="+blockSize +
+           " writeCount="+writeCount, function (t) {
+    var f = new BlockStream(blockSize)
+
+    var actualChunks = 0
+    var actualBytes = 0
+    var timeouts = 0
+    var paused = false
+
+    f.on("data", function (c) {
+      timeouts ++
+      t.notOk(paused, "should not be paused when emitting data")
+
+      actualChunks ++
+      actualBytes += c.length
+
+      // make sure that no data gets corrupted, and basic sanity
+      var before = c.toString()
+      // simulate a slow write operation
+      paused = true
+      f.pause()
+      process.nextTick(function () {
+        var after = c.toString()
+        t.equal(after, before, "should not change data")
+
+        // now corrupt it, to find leaks.
+        for (var i = 0; i < c.length; i ++) {
+          c[i] = "x".charCodeAt(0)
+        }
+        paused = false
+        f.resume()
+        timeouts --
+      })
+    })
+
+    f.on("end", function () {
+      // round up to the nearest block size
+      var expectChunks = Math.ceil(writeSize * writeCount  * 2 / blockSize)
+      var expectBytes = expectChunks * blockSize
+      t.equal(actualBytes, expectBytes,
+              "bytes=" + expectBytes + " writeSize=" + writeSize)
+      t.equal(actualChunks, expectChunks,
+              "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+      // wait for all the timeout checks to finish, then end the test
+      setTimeout(function WAIT () {
+        if (timeouts > 0) return setTimeout(WAIT)
+        t.end()
+      }, 200)
+    })
+
+    for (var i = 0; i < writeCount; i ++) {
+      var a = new Buffer(writeSize);
+      for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+      var b = new Buffer(writeSize);
+      for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+      f.write(a)
+      f.write(b)
+    }
+    f.end()
+  })
+}) }) })

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/thorough.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/thorough.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/thorough.js
new file mode 100644
index 0000000..1cc9ea0
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/thorough.js
@@ -0,0 +1,68 @@
+var BlockStream = require("../block-stream.js")
+
+var blockSizes = [16]//, 25]//, 1024]
+  , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100]
+  , writeCounts = [1, 10]//, 100]
+  , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+  tap.test("writeSize=" + writeSize +
+           " blockSize="+blockSize +
+           " writeCount="+writeCount, function (t) {
+    var f = new BlockStream(blockSize)
+
+    var actualChunks = 0
+    var actualBytes = 0
+    var timeouts = 0
+
+    f.on("data", function (c) {
+      timeouts ++
+
+      actualChunks ++
+      actualBytes += c.length
+
+      // make sure that no data gets corrupted, and basic sanity
+      var before = c.toString()
+      // simulate a slow write operation
+      setTimeout(function () {
+        timeouts --
+
+        var after = c.toString()
+        t.equal(after, before, "should not change data")
+
+        // now corrupt it, to find leaks.
+        for (var i = 0; i < c.length; i ++) {
+          c[i] = "x".charCodeAt(0)
+        }
+      }, 100)
+    })
+
+    f.on("end", function () {
+      // round up to the nearest block size
+      var expectChunks = Math.ceil(writeSize * writeCount  * 2 / blockSize)
+      var expectBytes = expectChunks * blockSize
+      t.equal(actualBytes, expectBytes,
+              "bytes=" + expectBytes + " writeSize=" + writeSize)
+      t.equal(actualChunks, expectChunks,
+              "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+      // wait for all the timeout checks to finish, then end the test
+      setTimeout(function WAIT () {
+        if (timeouts > 0) return setTimeout(WAIT)
+        t.end()
+      }, 100)
+    })
+
+    for (var i = 0; i < writeCount; i ++) {
+      var a = new Buffer(writeSize);
+      for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+      var b = new Buffer(writeSize);
+      for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+      f.write(a)
+      f.write(b)
+    }
+    f.end()
+  })
+}) }) })

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/two-stream.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/two-stream.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/two-stream.js
new file mode 100644
index 0000000..c6db79a
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/block-stream/test/two-stream.js
@@ -0,0 +1,59 @@
+var log = console.log,
+    assert = require( 'assert' ),
+    BlockStream = require("../block-stream.js"),
+    isize = 0, tsize = 0, fsize = 0, psize = 0, i = 0,
+    filter = null, paper = null, stack = null,
+
+// a source data buffer
+tsize = 1 * 1024; // <- 1K
+stack = new Buffer( tsize );
+for ( ; i < tsize; i++) stack[i] = "x".charCodeAt(0);
+
+isize = 1 * 1024; // <- initial packet size with 4K no bug!
+fsize = 2 * 1024 ; // <- first block-stream size 
+psize = Math.ceil( isize / 6 ); // <- second block-stream size
+
+fexpected = Math.ceil( tsize / fsize ); // <- packets expected for first 
+pexpected = Math.ceil( tsize / psize ); // <- packets expected for second
+
+
+filter = new BlockStream( fsize, { nopad : true } );
+paper = new BlockStream( psize, { nopad : true } );
+
+
+var fcounter = 0;
+filter.on( 'data', function (c) {
+  // verify that they're not null-padded
+  for (var i = 0; i < c.length; i ++) {
+    assert.strictEqual(c[i], "x".charCodeAt(0))
+  }
+    ++fcounter;
+} );
+
+var pcounter = 0;
+paper.on( 'data', function (c) {
+  // verify that they're not null-padded
+  for (var i = 0; i < c.length; i ++) {
+    assert.strictEqual(c[i], "x".charCodeAt(0))
+  }
+    ++pcounter;
+} );
+
+filter.pipe( paper );
+
+filter.on( 'end', function () {
+  log("fcounter: %s === %s", fcounter, fexpected)
+    assert.strictEqual( fcounter, fexpected );
+} );
+
+paper.on( 'end', function () {
+  log("pcounter: %s === %s", pcounter, pexpected);
+    assert.strictEqual( pcounter, pexpected );
+} );
+
+
+for ( i = 0, j = isize; j <= tsize; j += isize ) {
+    filter.write( stack.slice( j - isize, j ) );
+}
+
+filter.end();

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/README.md
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/README.md b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/README.md
new file mode 100644
index 0000000..ac6c184
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/README.md
@@ -0,0 +1,45 @@
+
+# child-process-close
+
+This module makes child process objects, (created with `spawn`, `fork`, `exec`
+or `execFile`) emit the `close` event in node v0.6 like they do in node v0.8.
+This makes it easier to write code that works correctly on both version of
+node.
+
+
+## Usage
+
+Just make sure to `require('child-process-close')` anywhere. It will patch the `child_process` module.
+
+```js
+require('child-process-close');
+var spawn = require('child_process').spawn;
+
+var cp = spawn('foo');
+cp.on('close', function(exitCode, signal) {
+  // This now works on all node versions.
+});
+```
+
+
+## License
+
+Copyright (C) 2012 Bert Belder
+
+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.

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/index.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/index.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/index.js
new file mode 100644
index 0000000..562516a
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/index.js
@@ -0,0 +1,48 @@
+
+var child_process = require('child_process');
+
+// Re-export the child_process module.
+module.exports = child_process;
+
+// Only node versions up to v0.7.6 need this hook.
+if (!/^v0\.([0-6]\.|7\.[0-6](\D|$))/.test(process.version))
+  return;
+
+// Do not add the hook if already hooked.
+if (child_process.hasOwnProperty('_exit_hook'))
+  return;
+
+// Version the hook in case there is ever the need to release a 0.2.0.
+child_process._exit_hook = 1;
+
+
+function hook(name) {
+  var orig = child_process[name];
+
+  // Older node versions may not have all functions, e.g. fork().
+  if (!orig)
+    return;
+
+  // Store the unhooked version.
+  child_process['_original_' + name] = orig;
+
+  // Do the actual hooking.
+  child_process[name] = function() {
+    var child = orig.apply(this, arguments);
+
+    child.once('exit', function(code, signal) {
+      process.nextTick(function() {
+        child.emit('close', code, signal);
+      });
+    });
+
+    return child;
+  }
+}
+
+hook('spawn');
+hook('fork');
+hook('execFile');
+
+// Don't hook 'exec': it calls `exports.execFile` internally, so hooking it
+// would trigger the close event twice.

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/package.json
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/package.json b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/package.json
new file mode 100644
index 0000000..23b19e0
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/package.json
@@ -0,0 +1,37 @@
+{
+  "name": "child-process-close",
+  "version": "0.1.1",
+  "description": "Make child_process objects emit 'close' events in node v0.6 like they do in v0.8. This makes it easier to write code that works correctly on both version of node.",
+  "main": "index.js",
+  "scripts": {
+    "test": "node test/test.js"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/piscisaureus/child-process-close.git"
+  },
+  "keywords": [
+    "child_process",
+    "spawn",
+    "fork",
+    "exec",
+    "execFile",
+    "close",
+    "exit"
+  ],
+  "author": {
+    "name": "Bert Belder"
+  },
+  "license": "MIT",
+  "readme": "\n# child-process-close\n\nThis module makes child process objects, (created with `spawn`, `fork`, `exec`\nor `execFile`) emit the `close` event in node v0.6 like they do in node v0.8.\nThis makes it easier to write code that works correctly on both version of\nnode.\n\n\n## Usage\n\nJust make sure to `require('child-process-close')` anywhere. It will patch the `child_process` module.\n\n```js\nrequire('child-process-close');\nvar spawn = require('child_process').spawn;\n\nvar cp = spawn('foo');\ncp.on('close', function(exitCode, signal) {\n  // This now works on all node versions.\n});\n```\n\n\n## License\n\nCopyright (C) 2012 Bert Belder\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Softwa
 re, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n",
+  "readmeFilename": "README.md",
+  "bugs": {
+    "url": "https://github.com/piscisaureus/child-process-close/issues"
+  },
+  "_id": "child-process-close@0.1.1",
+  "dist": {
+    "shasum": "c1909c6c3bbcea623e3bd74493ddb1c94c47c500"
+  },
+  "_from": "child-process-close@",
+  "_resolved": "https://registry.npmjs.org/child-process-close/-/child-process-close-0.1.1.tgz"
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-exec.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-exec.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-exec.js
new file mode 100644
index 0000000..5072d02
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-exec.js
@@ -0,0 +1,50 @@
+
+require('../index');
+
+var assert = require('assert'),
+    exec = require('child_process').exec;
+
+var cp = exec('echo hello', function(err) {
+  assert(!err);
+});
+
+var stdoutData = '',
+    stdoutEnd = false,
+    gotExit = false,
+    gotClose = false;
+
+cp.stdout.setEncoding('ascii');
+
+cp.stdout.on('data', function(data) {
+  assert(!stdoutEnd);
+  stdoutData += data;
+});
+
+cp.stdout.on('end', function() {
+  assert(!stdoutEnd);
+  assert(/^hello/.test(stdoutData));
+  stdoutEnd = true;
+});
+
+cp.on('exit', function(code, signal) {
+  assert.strictEqual(code, 0);
+  assert(!signal);
+  assert(!gotExit);
+  assert(!gotClose);
+  gotExit = true;
+});
+
+cp.on('close', function(code, signal) {
+  assert.strictEqual(code, 0);
+  assert(!signal);
+  assert(gotExit);
+  assert(stdoutEnd);
+  assert(!gotClose);
+  gotClose = true;
+});
+
+process.on('exit', function() {
+  assert(stdoutEnd);
+  assert(gotExit);
+  assert(gotClose);
+});

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-fork.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-fork.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-fork.js
new file mode 100644
index 0000000..9743c02
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-fork.js
@@ -0,0 +1,41 @@
+
+require('../index');
+
+var assert = require('assert'),
+    fork = require('child_process').fork;
+
+var cp = fork('worker-fork');
+
+var gotMessage = false,
+    gotExit = false,
+    gotClose = false;
+
+cp.on('message', function(msg) {
+  assert.strictEqual(msg, 'hello');
+  assert(!gotMessage);
+  assert(!gotClose);
+  gotMessage = true;
+});
+
+cp.on('exit', function(code, signal) {
+  assert.strictEqual(code, 0);
+  assert(!signal);
+  assert(!gotExit);
+  assert(!gotClose);
+  gotExit = true;
+});
+
+cp.on('close', function(code, signal) {
+  assert.strictEqual(code, 0);
+  assert(!signal);
+  assert(gotExit);
+  assert(gotMessage);
+  assert(!gotClose);
+  gotClose = true;
+});
+
+process.on('exit', function() {
+  assert(gotMessage);
+  assert(gotExit);
+  assert(gotClose);
+});

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js
new file mode 100644
index 0000000..82f9fa9
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test-spawn-and-execfile.js
@@ -0,0 +1,73 @@
+
+require('../index');
+
+var assert = require('assert'),
+    spawn = require('child_process').spawn;
+    execFile = require('child_process').execFile;
+
+
+var cp1 = spawn(process.execPath, ['worker-spawn']);
+check(cp1);
+
+var cp2 = execFile(process.execPath, ['worker-spawn'], function(err) {
+  assert(!err);
+});
+check(cp2);
+
+
+function check(cp) {
+  var gotExit = false,
+      gotClose = false,
+      stdoutData = '',
+      stdoutEnd = false,
+      stderrData = '',
+      stderrEnd = false;
+
+  cp.stdout.setEncoding('ascii');
+
+  cp.stdout.on('data', function(data) {
+    assert(!stdoutEnd);
+    stdoutData += data;
+  });
+
+  cp.stdout.on('end', function(data) {
+    assert(!stdoutEnd)
+    assert.strictEqual(stdoutData.length, 100000);
+    stdoutEnd = true;
+  });
+
+  cp.stderr.setEncoding('ascii');
+
+  cp.stderr.on('data', function(data) {
+    stderrData += data;
+  });
+
+  cp.stderr.on('end', function(data) {
+    assert(!stderrEnd)
+    assert.strictEqual(stderrData.length, 100000);
+    stderrEnd = true;
+  });
+
+  cp.on('exit', function(code, signal) {
+    assert.strictEqual(code, 0);
+    assert(!signal);
+    assert(!gotExit);
+    assert(!gotClose);
+    gotExit = true;
+  });
+
+  cp.on('close', function(code, signal) {
+    assert.strictEqual(code, 0);
+    assert(!signal);
+    assert(!cp.stdout || stdoutEnd);
+    assert(!cp.stderr || stderrEnd);
+    assert(gotExit);
+    assert(!gotClose);
+    gotClose = true;
+  });
+
+  process.on('exit', function() {
+    assert(gotExit);
+    assert(gotClose);
+  });
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test.js
new file mode 100644
index 0000000..9904745
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/test.js
@@ -0,0 +1,41 @@
+
+var TESTS = [
+  'test-spawn-and-execfile',
+  'test-fork',
+  'test-exec',
+];
+
+var execFile = require('child_process').execFile;
+var passed = 0, failed = 0;
+
+function next() {
+  var test = TESTS.shift();
+  if (!test)
+    done();
+
+  console.log("Running test: %s", test);
+  execFile(process.execPath, [test], { cwd: __dirname }, onExit);
+}
+
+function onExit(err, stdout, stderr) {
+  if (err) {
+    console.log("... failed:\n%s%s\n", stdout, stderr);
+    failed++;
+  } else {
+    console.log("... pass");
+    passed++;
+  }
+
+  next();
+}
+
+function done() {
+  console.log("Tests run: %d. Passed: %d. Failed: %d",
+              passed + failed,
+              passed,
+              failed);
+
+  process.exit(+(failed > 0));
+}
+
+next();

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-fork.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-fork.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-fork.js
new file mode 100644
index 0000000..56e83ce
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-fork.js
@@ -0,0 +1,3 @@
+
+process.send('hello');
+process.exit(0);

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-spawn.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-spawn.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-spawn.js
new file mode 100644
index 0000000..f45d898
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/child-process-close/test/worker-spawn.js
@@ -0,0 +1,5 @@
+
+var out = new Array(100000).join('x');
+
+console.log(out);
+console.error(out);

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/LICENSE
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/LICENSE b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/LICENSE
new file mode 100644
index 0000000..0c44ae7
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) Isaac Z. Schlueter ("Author")
+All rights reserved.
+
+The BSD License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. 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.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/README.md
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/README.md b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/README.md
new file mode 100644
index 0000000..e3e9313
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/README.md
@@ -0,0 +1,3 @@
+Like `chmod -R`.
+
+Takes the same arguments as `fs.chmod()`

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/chmodr.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/chmodr.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/chmodr.js
new file mode 100644
index 0000000..9edaa7f
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/chmodr.js
@@ -0,0 +1,54 @@
+module.exports = chmodr
+chmodr.sync = chmodrSync
+
+var fs = require("fs")
+, path = require("path")
+
+function chmodr (p, mode, cb) {
+  fs.readdir(p, function (er, children) {
+    // any error other than ENOTDIR means it's not readable, or
+    // doesn't exist.  give up.
+    if (er && er.code !== "ENOTDIR")
+      return cb(er)
+    var isDir = !er
+    var m = isDir ? dirMode(mode) : mode
+    if (er || !children.length)
+      return fs.chmod(p, m, cb)
+
+    var len = children.length
+    var errState = null
+    children.forEach(function (child) {
+      chmodr(path.resolve(p, child), mode, then)
+    })
+    function then (er) {
+      if (errState) return
+      if (er) return cb(errState = er)
+      if (-- len === 0) return fs.chmod(p, dirMode(mode), cb)
+    }
+  })
+}
+
+function chmodrSync (p, mode) {
+  var children
+  try {
+    children = fs.readdirSync(p)
+  } catch (er) {
+    if (er && er.code === "ENOTDIR") return fs.chmodSync(p, mode)
+    throw er
+  }
+  if (!children.length) return fs.chmodSync(p, dirMode(mode))
+
+  children.forEach(function (child) {
+    chmodrSync(path.resolve(p, child), mode)
+  })
+  return fs.chmodSync(p, dirMode(mode))
+}
+
+// If a party has r, add x
+// so that dirs are listable
+function dirMode(mode) {
+  if (mode & 0400) mode |= 0100
+  if (mode & 040) mode |= 010
+  if (mode & 04) mode |= 01
+  return mode
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/package.json
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/package.json b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/package.json
new file mode 100644
index 0000000..67334ae
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/package.json
@@ -0,0 +1,28 @@
+{
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "name": "chmodr",
+  "description": "like `chmod -R`",
+  "version": "0.1.0",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/chmodr.git"
+  },
+  "main": "chmodr.js",
+  "devDependencies": {
+    "tap": "0.2",
+    "mkdirp": "0.3",
+    "rimraf": ""
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "license": "BSD",
+  "readme": "Like `chmod -R`.\n\nTakes the same arguments as `fs.chmod()`\n",
+  "readmeFilename": "README.md",
+  "_id": "chmodr@0.1.0",
+  "_from": "chmodr@latest"
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/basic.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/basic.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/basic.js
new file mode 100644
index 0000000..aba1cd3
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/basic.js
@@ -0,0 +1,63 @@
+var chmodr = require("../")
+, test = require("tap").test
+, mkdirp = require("mkdirp")
+, rimraf = require("rimraf")
+, fs = require("fs")
+, dirs = []
+
+rimraf("/tmp/chmodr", function (er) {
+  if (er) throw er
+  var cnt = 5
+  for (var i = 0; i < 5; i ++) {
+    mkdirp(getDir(), then)
+  }
+  function then (er) {
+    if (er) throw er
+    if (-- cnt === 0) {
+      runTest()
+    }
+  }
+})
+
+function getDir () {
+  var dir = "/tmp/chmodr"
+
+  dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
+  dirs.push(dir)
+  dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
+  dirs.push(dir)
+  dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
+  dirs.push(dir)
+  return dir
+}
+
+function runTest () {
+  test("should complete successfully", function (t) {
+    console.error("calling chmodr 0700")
+    chmodr("/tmp/chmodr", 0700, function (er) {
+      t.ifError(er)
+      t.end()
+    })
+  })
+
+  dirs.forEach(function (dir) {
+    test("verify "+dir, function (t) {
+      fs.stat(dir, function (er, st) {
+        if (er) {
+          t.ifError(er)
+          return t.end()
+        }
+        t.equal(st.mode & 0777, 0700, "mode should be 0700")
+        t.end()
+      })
+    })
+  })
+
+  test("cleanup", function (t) {
+    rimraf("/tmp/chmodr/", function (er) {
+      t.ifError(er)
+      t.end()
+    })
+  })
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/sync.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/sync.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/sync.js
new file mode 100644
index 0000000..71f90cd
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chmodr/test/sync.js
@@ -0,0 +1,58 @@
+var chmodr = require("../")
+, test = require("tap").test
+, mkdirp = require("mkdirp")
+, rimraf = require("rimraf")
+, fs = require("fs")
+, dirs = []
+
+rimraf("/tmp/chmodr", function (er) {
+  if (er) throw er
+  var cnt = 5
+  for (var i = 0; i < 5; i ++) {
+    mkdirp(getDir(), then)
+  }
+  function then (er) {
+    if (er) throw er
+    if (-- cnt === 0) {
+      runTest()
+    }
+  }
+})
+
+function getDir () {
+  var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+  var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+  var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+  var dir = "/tmp/chmodr/" + [x,y,z].join("/")
+  dirs.push(dir)
+  return dir
+}
+
+function runTest () {
+  test("should complete successfully", function (t) {
+    console.error("calling chmodr 0700")
+    chmodr.sync("/tmp/chmodr", 0700)
+    t.end()
+  })
+
+  dirs.forEach(function (dir) {
+    test("verify "+dir, function (t) {
+      fs.stat(dir, function (er, st) {
+        if (er) {
+          t.ifError(er)
+          return t.end()
+        }
+        t.equal(st.mode & 0777, 0700, "uid should be 0700")
+        t.end()
+      })
+    })
+  })
+
+  test("cleanup", function (t) {
+    rimraf("/tmp/chmodr", function (er) {
+      t.ifError(er)
+      t.end()
+    })
+  })
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/LICENCE
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/LICENCE b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/LICENCE
new file mode 100644
index 0000000..74489e2
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/LICENCE
@@ -0,0 +1,25 @@
+Copyright (c) Isaac Z. Schlueter
+All rights reserved.
+
+The BSD License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. 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.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/README.md
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/README.md b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/README.md
new file mode 100644
index 0000000..70e9a54
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/README.md
@@ -0,0 +1,3 @@
+Like `chown -R`.
+
+Takes the same arguments as `fs.chown()`

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/chownr.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/chownr.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/chownr.js
new file mode 100644
index 0000000..598b8f8
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/chownr.js
@@ -0,0 +1,41 @@
+module.exports = chownr
+chownr.sync = chownrSync
+
+var fs = require("fs")
+, path = require("path")
+
+function chownr (p, uid, gid, cb) {
+  fs.readdir(p, function (er, children) {
+    // any error other than ENOTDIR means it's not readable, or
+    // doesn't exist.  give up.
+    if (er && er.code !== "ENOTDIR") return cb(er)
+    if (er || !children.length) return fs.chown(p, uid, gid, cb)
+
+    var len = children.length
+    , errState = null
+    children.forEach(function (child) {
+      chownr(path.resolve(p, child), uid, gid, then)
+    })
+    function then (er) {
+      if (errState) return
+      if (er) return cb(errState = er)
+      if (-- len === 0) return fs.chown(p, uid, gid, cb)
+    }
+  })
+}
+
+function chownrSync (p, uid, gid) {
+  var children
+  try {
+    children = fs.readdirSync(p)
+  } catch (er) {
+    if (er && er.code === "ENOTDIR") return fs.chownSync(p, uid, gid)
+    throw er
+  }
+  if (!children.length) return fs.chownSync(p, uid, gid)
+
+  children.forEach(function (child) {
+    chownrSync(path.resolve(p, child), uid, gid)
+  })
+  return fs.chownSync(p, uid, gid)
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/package.json
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/package.json b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/package.json
new file mode 100644
index 0000000..bb321f8
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/chownr/package.json
@@ -0,0 +1,42 @@
+{
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "name": "chownr",
+  "description": "like `chown -R`",
+  "version": "0.0.1",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/chownr.git"
+  },
+  "main": "chownr.js",
+  "devDependencies": {
+    "tap": "0.2",
+    "mkdirp": "0.3",
+    "rimraf": ""
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "license": "BSD",
+  "_npmUser": {
+    "name": "isaacs",
+    "email": "i@izs.me"
+  },
+  "_id": "chownr@0.0.1",
+  "dependencies": {},
+  "optionalDependencies": {},
+  "engines": {
+    "node": "*"
+  },
+  "_engineSupported": true,
+  "_npmVersion": "1.1.23",
+  "_nodeVersion": "v0.7.10-pre",
+  "_defaultsLoaded": true,
+  "dist": {
+    "shasum": "51d18189d9092d5f8afd623f3288bfd1c6bf1a62"
+  },
+  "_from": "../chownr"
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.npmignore
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.npmignore b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.npmignore
new file mode 100644
index 0000000..69f75d2
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.npmignore
@@ -0,0 +1,16 @@
+lib-cov
+*.seed
+*.log
+*.csv
+*.dat
+*.out
+*.pid
+*.gz
+
+pids
+logs
+results
+
+npm-debug.log
+
+node_modules

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.travis.yml
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.travis.yml b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.travis.yml
new file mode 100644
index 0000000..97e4515
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+  - "0.10"
+  - "0.8"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/LICENSE
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/LICENSE b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/LICENSE
new file mode 100644
index 0000000..6e93978
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) Isaac Z. Schlueter ("Author")
+All rights reserved.
+
+The BSD License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. 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.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/README.md
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/README.md b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/README.md
new file mode 100644
index 0000000..fb997d5
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/README.md
@@ -0,0 +1,42 @@
+# cmd-shim
+
+The cmd-shim used in npm to create executable scripts on Windows,
+since symlinks are not suitable for this purpose there.
+
+On Unix systems, you should use a symbolic link instead.
+
+[![Build Status](https://travis-ci.org/ForbesLindesay/cmd-shim.png?branch=master)](https://travis-ci.org/ForbesLindesay/cmd-shim) [![Dependency Status](https://gemnasium.com/ForbesLindesay/cmd-shim.png)](https://gemnasium.com/ForbesLindesay/cmd-shim)
+
+## Installation
+
+```
+npm install cmd-shim
+```
+
+## API
+
+### cmdShim(from, to, cb)
+
+Create a cmd shim at `to` for the command line program at `from`.
+e.g.
+
+```javascript
+var cmdShim = require('cmd-shim');
+cmdShim(__dirname + '/cli.js', '/usr/bin/command-name', function (err) {
+  if (err) throw err;
+});
+```
+
+### cmdShim.ifExists(from, to, cb)
+
+The same as above, but will just continue if the file does not exist.
+Source:
+
+```javascript
+function cmdShimIfExists (from, to, cb) {
+  fs.stat(from, function (er) {
+    if (er) return cb()
+    cmdShim(from, to, cb)
+  })
+}
+```

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/index.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/index.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/index.js
new file mode 100644
index 0000000..1cfd24e
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/index.js
@@ -0,0 +1,180 @@
+// On windows, create a .cmd file.
+// Read the #! in the file to see what it uses.  The vast majority
+// of the time, this will be either:
+// "#!/usr/bin/env <prog> <args...>"
+// or:
+// "#!<prog> <args...>"
+//
+// Write a binroot/pkg.bin + ".cmd" file that has this line in it:
+// @<prog> <args...> %~dp0<target> %*
+
+module.exports = cmdShim
+cmdShim.ifExists = cmdShimIfExists
+
+try {
+  var fs = require("graceful-fs")
+} catch (e) {
+  var fs = require("fs")
+}
+
+var mkdir = require("mkdirp")
+  , path = require("path")
+  , shebangExpr = /^#\!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/
+
+function cmdShimIfExists (from, to, cb) {
+  fs.stat(from, function (er) {
+    if (er) return cb()
+    cmdShim(from, to, cb)
+  })
+}
+
+// Try to unlink, but ignore errors.
+// Any problems will surface later.
+function rm (path, cb) {
+  fs.unlink(path, function(er) {
+    cb()
+  })
+}
+
+function cmdShim (from, to, cb) {
+  fs.stat(from, function (er, stat) {
+    if (er)
+      return cb(er)
+
+    cmdShim_(from, to, cb)
+  })
+}
+
+function cmdShim_ (from, to, cb) {
+  var then = times(2, next, cb)
+  rm(to, then)
+  rm(to + ".cmd", then)
+
+  function next(er) {
+    writeShim(from, to, cb)
+  }
+}
+
+function writeShim (from, to, cb) {
+  // make a cmd file and a sh script
+  // First, check if the bin is a #! of some sort.
+  // If not, then assume it's something that'll be compiled, or some other
+  // sort of script, and just call it directly.
+  mkdir(path.dirname(to), function (er) {
+    if (er)
+      return cb(er)
+    fs.readFile(from, "utf8", function (er, data) {
+      if (er) return writeShim_(from, to, null, null, cb)
+      var firstLine = data.trim().split(/\r*\n/)[0]
+        , shebang = firstLine.match(shebangExpr)
+      if (!shebang) return writeShim_(from, to, null, null, cb)
+      var prog = shebang[1]
+        , args = shebang[2] || ""
+      return writeShim_(from, to, prog, args, cb)
+    })
+  })
+}
+
+function writeShim_ (from, to, prog, args, cb) {
+  var shTarget = path.relative(path.dirname(to), from)
+    , target = shTarget.split("/").join("\\")
+    , longProg
+    , shProg = prog && prog.split("\\").join("/")
+    , shLongProg
+  shTarget = shTarget.split("\\").join("/")
+  args = args || ""
+  if (!prog) {
+    prog = "\"%~dp0\\" + target + "\""
+    shProg = "\"$basedir/" + shTarget + "\""
+    args = ""
+    target = ""
+    shTarget = ""
+  } else {
+    longProg = "\"%~dp0\\" + prog + ".exe\""
+    shLongProg = "\"$basedir/" + prog + "\""
+    target = "\"%~dp0\\" + target + "\""
+    shTarget = "\"$basedir/" + shTarget + "\""
+  }
+
+  // @IF EXIST "%~dp0\node.exe" (
+  //   "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
+  // ) ELSE (
+  //   node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
+  // )
+  var cmd
+  if (longProg) {
+    cmd = "@IF EXIST " + longProg + " (\r\n"
+        + "  " + longProg + " " + args + " " + target + " %*\r\n"
+        + ") ELSE (\r\n"
+        + "  " + prog + " " + args + " " + target + " %*\r\n"
+        + ")"
+  } else {
+    cmd = prog + " " + args + " " + target + " %*\r\n"
+  }
+
+  // #!/bin/sh
+  // basedir=`dirname "$0"`
+  //
+  // case `uname` in
+  //     *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+  // esac
+  //
+  // if [ -x "$basedir/node.exe" ]; then
+  //   "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
+  //   ret=$?
+  // else
+  //   node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
+  //   ret=$?
+  // fi
+  // exit $ret
+
+  var sh = "#!/bin/sh\n"
+
+  if (shLongProg) {
+    sh = sh
+        + "basedir=`dirname \"$0\"`\n"
+        + "\n"
+        + "case `uname` in\n"
+        + "    *CYGWIN*) basedir=`cygpath -w \"$basedir\"`;;\n"
+        + "esac\n"
+        + "\n"
+
+    sh = sh
+       + "if [ -x "+shLongProg+" ]; then\n"
+       + "  " + shLongProg + " " + args + " " + shTarget + " \"$@\"\n"
+       + "  ret=$?\n"
+       + "else \n"
+       + "  " + shProg + " " + args + " " + shTarget + " \"$@\"\n"
+       + "  ret=$?\n"
+       + "fi\n"
+       + "exit $ret\n"
+  } else {
+    sh = shProg + " " + args + " " + shTarget + " \"$@\"\n"
+       + "exit $?\n"
+  }
+
+  var then = times(2, next, cb)
+  fs.writeFile(to + ".cmd", cmd, "utf8", then)
+  fs.writeFile(to, sh, "utf8", then)
+  function next () {
+    chmodShim(to, cb)
+  }
+}
+
+function chmodShim (to, cb) {
+  var then = times(2, cb, cb)
+  fs.chmod(to, 0755, then)
+  fs.chmod(to + ".cmd", 0755, then)
+}
+
+function times(n, ok, cb) {
+  var errState = null
+  return function(er) {
+    if (!errState) {
+      if (er)
+        cb(errState = er)
+      else if (--n === 0)
+        ok()
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/package.json
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/package.json b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/package.json
new file mode 100644
index 0000000..cf6c952
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/package.json
@@ -0,0 +1,35 @@
+{
+  "name": "cmd-shim",
+  "version": "1.1.1",
+  "description": "Used in npm for command line application support",
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/ForbesLindesay/cmd-shim.git"
+  },
+  "license": "BSD",
+  "optionalDependencies": {
+    "graceful-fs": "2"
+  },
+  "dependencies": {
+    "mkdirp": "~0.3.3",
+    "graceful-fs": "2"
+  },
+  "devDependencies": {
+    "tap": "~0.4.1",
+    "rimraf": "~2.1.4"
+  },
+  "readme": "# cmd-shim\r\n\r\nThe cmd-shim used in npm to create executable scripts on Windows,\r\nsince symlinks are not suitable for this purpose there.\r\n\r\nOn Unix systems, you should use a symbolic link instead.\r\n\r\n[![Build Status](https://travis-ci.org/ForbesLindesay/cmd-shim.png?branch=master)](https://travis-ci.org/ForbesLindesay/cmd-shim) [![Dependency Status](https://gemnasium.com/ForbesLindesay/cmd-shim.png)](https://gemnasium.com/ForbesLindesay/cmd-shim)\r\n\r\n## Installation\r\n\r\n```\r\nnpm install cmd-shim\r\n```\r\n\r\n## API\r\n\r\n### cmdShim(from, to, cb)\r\n\r\nCreate a cmd shim at `to` for the command line program at `from`.\r\ne.g.\r\n\r\n```javascript\r\nvar cmdShim = require('cmd-shim');\r\ncmdShim(__dirname + '/cli.js', '/usr/bin/command-name', function (err) {\r\n  if (err) throw err;\r\n});\r\n```\r\n\r\n### cmdShim.ifExists(from, to, cb)\r\n\r\nThe same as above, but will just continue if the file does not exist.\r\nSource:\r\n\r\n```javascript\r
 \nfunction cmdShimIfExists (from, to, cb) {\r\n  fs.stat(from, function (er) {\r\n    if (er) return cb()\r\n    cmdShim(from, to, cb)\r\n  })\r\n}\r\n```\r\n",
+  "readmeFilename": "README.md",
+  "bugs": {
+    "url": "https://github.com/ForbesLindesay/cmd-shim/issues"
+  },
+  "_id": "cmd-shim@1.1.1",
+  "dist": {
+    "shasum": "87741e2a8b6307ea1ea8bf1f65287cb4a9ca977a"
+  },
+  "_from": "cmd-shim@latest",
+  "_resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-1.1.1.tgz"
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/00-setup.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/00-setup.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/00-setup.js
new file mode 100644
index 0000000..f2689e6
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/00-setup.js
@@ -0,0 +1,34 @@
+var test = require('tap').test
+var mkdirp = require('mkdirp')
+var fs = require('fs')
+var path = require('path')
+var fixtures = path.resolve(__dirname, 'fixtures')
+
+var froms = {
+  'from.exe': 'exe',
+  'from.env': '#!/usr/bin/env node\nconsole.log(/hi/)\n',
+  'from.env.args': '#!/usr/bin/env node --expose_gc\ngc()\n',
+  'from.sh': '#!/usr/bin/sh\necho hi\n',
+  'from.sh.args': '#!/usr/bin/sh -x\necho hi\n'
+}
+
+var cmdShim = require('../')
+
+test('create fixture', function (t) {
+  mkdirp(fixtures, function (er) {
+    if (er)
+      throw er
+    t.pass('made dir')
+    Object.keys(froms).forEach(function (f) {
+      t.test('write ' + f, function (t) {
+        fs.writeFile(path.resolve(fixtures, f), froms[f], function (er) {
+          if (er)
+            throw er
+          t.pass('wrote ' + f)
+          t.end()
+        })
+      })
+    })
+    t.end()
+  })
+})

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/basic.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/basic.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/basic.js
new file mode 100644
index 0000000..93da5ea
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/basic.js
@@ -0,0 +1,167 @@
+var test = require('tap').test
+var mkdirp = require('mkdirp')
+var fs = require('fs')
+var path = require('path')
+var fixtures = path.resolve(__dirname, 'fixtures')
+
+var cmdShim = require('../')
+
+test('no shebang', function (t) {
+  var from = path.resolve(fixtures, 'from.exe')
+  var to = path.resolve(fixtures, 'exe.shim')
+  cmdShim(from, to, function(er) {
+    if (er)
+      throw er
+    t.equal(fs.readFileSync(to, 'utf8'),
+            "\"$basedir/from.exe\"   \"$@\"\nexit $?\n")
+    t.equal(fs.readFileSync(to + '.cmd', 'utf8'),
+            "\"%~dp0\\from.exe\"   %*\r\n")
+    t.end()
+  })
+})
+
+test('env shebang', function (t) {
+  var from = path.resolve(fixtures, 'from.env')
+  var to = path.resolve(fixtures, 'env.shim')
+  cmdShim(from, to, function(er) {
+    if (er)
+      throw er
+    console.error('%j', fs.readFileSync(to, 'utf8'))
+    console.error('%j', fs.readFileSync(to + '.cmd', 'utf8'))
+
+    t.equal(fs.readFileSync(to, 'utf8'),
+            "#!/bin/sh"+
+            "\nbasedir=`dirname \"$0\"`"+
+            "\n"+
+            "\ncase `uname` in"+
+            "\n    *CYGWIN*) basedir=`cygpath -w \"$basedir\"`;;"+
+            "\nesac"+
+            "\n"+
+            "\nif [ -x \"$basedir/node\" ]; then"+
+            "\n  \"$basedir/node\"  \"$basedir/from.env\" \"$@\""+
+            "\n  ret=$?"+
+            "\nelse "+
+            "\n  node  \"$basedir/from.env\" \"$@\""+
+            "\n  ret=$?"+
+            "\nfi"+
+            "\nexit $ret"+
+            "\n")
+    t.equal(fs.readFileSync(to + '.cmd', 'utf8'),
+            "@IF EXIST \"%~dp0\\node.exe\" (\r"+
+            "\n  \"%~dp0\\node.exe\"  \"%~dp0\\from.env\" %*\r"+
+            "\n) ELSE (\r"+
+            "\n  node  \"%~dp0\\from.env\" %*\r"+
+            "\n)")
+    t.end()
+  })
+})
+
+test('env shebang with args', function (t) {
+  var from = path.resolve(fixtures, 'from.env.args')
+  var to = path.resolve(fixtures, 'env.args.shim')
+  cmdShim(from, to, function(er) {
+    if (er)
+      throw er
+    console.error('%j', fs.readFileSync(to, 'utf8'))
+    console.error('%j', fs.readFileSync(to + '.cmd', 'utf8'))
+
+    t.equal(fs.readFileSync(to, 'utf8'),
+            "#!/bin/sh"+
+            "\nbasedir=`dirname \"$0\"`"+
+            "\n"+
+            "\ncase `uname` in"+
+            "\n    *CYGWIN*) basedir=`cygpath -w \"$basedir\"`;;"+
+            "\nesac"+
+            "\n"+
+            "\nif [ -x \"$basedir/node\" ]; then"+
+            "\n  \"$basedir/node\"  --expose_gc \"$basedir/from.env.args\" \"$@\""+
+            "\n  ret=$?"+
+            "\nelse "+
+            "\n  node  --expose_gc \"$basedir/from.env.args\" \"$@\""+
+            "\n  ret=$?"+
+            "\nfi"+
+            "\nexit $ret"+
+            "\n")
+    t.equal(fs.readFileSync(to + '.cmd', 'utf8'),
+            "@IF EXIST \"%~dp0\\node.exe\" (\r"+
+            "\n  \"%~dp0\\node.exe\"  --expose_gc \"%~dp0\\from.env.args\" %*\r"+
+            "\n) ELSE (\r"+
+            "\n  node  --expose_gc \"%~dp0\\from.env.args\" %*\r"+
+            "\n)")
+    t.end()
+  })
+})
+
+test('explicit shebang', function (t) {
+  var from = path.resolve(fixtures, 'from.sh')
+  var to = path.resolve(fixtures, 'sh.shim')
+  cmdShim(from, to, function(er) {
+    if (er)
+      throw er
+    console.error('%j', fs.readFileSync(to, 'utf8'))
+    console.error('%j', fs.readFileSync(to + '.cmd', 'utf8'))
+
+    t.equal(fs.readFileSync(to, 'utf8'),
+            "#!/bin/sh" +
+            "\nbasedir=`dirname \"$0\"`" +
+            "\n" +
+            "\ncase `uname` in" +
+            "\n    *CYGWIN*) basedir=`cygpath -w \"$basedir\"`;;" +
+            "\nesac" +
+            "\n" +
+            "\nif [ -x \"$basedir//usr/bin/sh\" ]; then" +
+            "\n  \"$basedir//usr/bin/sh\"  \"$basedir/from.sh\" \"$@\"" +
+            "\n  ret=$?" +
+            "\nelse " +
+            "\n  /usr/bin/sh  \"$basedir/from.sh\" \"$@\"" +
+            "\n  ret=$?" +
+            "\nfi" +
+            "\nexit $ret" +
+            "\n")
+
+    t.equal(fs.readFileSync(to + '.cmd', 'utf8'),
+            "@IF EXIST \"%~dp0\\/usr/bin/sh.exe\" (\r" +
+            "\n  \"%~dp0\\/usr/bin/sh.exe\"  \"%~dp0\\from.sh\" %*\r" +
+            "\n) ELSE (\r" +
+            "\n  /usr/bin/sh  \"%~dp0\\from.sh\" %*\r" +
+            "\n)")
+    t.end()
+  })
+})
+
+test('explicit shebang with args', function (t) {
+  var from = path.resolve(fixtures, 'from.sh.args')
+  var to = path.resolve(fixtures, 'sh.args.shim')
+  cmdShim(from, to, function(er) {
+    if (er)
+      throw er
+    console.error('%j', fs.readFileSync(to, 'utf8'))
+    console.error('%j', fs.readFileSync(to + '.cmd', 'utf8'))
+
+    t.equal(fs.readFileSync(to, 'utf8'),
+            "#!/bin/sh" +
+            "\nbasedir=`dirname \"$0\"`" +
+            "\n" +
+            "\ncase `uname` in" +
+            "\n    *CYGWIN*) basedir=`cygpath -w \"$basedir\"`;;" +
+            "\nesac" +
+            "\n" +
+            "\nif [ -x \"$basedir//usr/bin/sh\" ]; then" +
+            "\n  \"$basedir//usr/bin/sh\"  -x \"$basedir/from.sh.args\" \"$@\"" +
+            "\n  ret=$?" +
+            "\nelse " +
+            "\n  /usr/bin/sh  -x \"$basedir/from.sh.args\" \"$@\"" +
+            "\n  ret=$?" +
+            "\nfi" +
+            "\nexit $ret" +
+            "\n")
+
+    t.equal(fs.readFileSync(to + '.cmd', 'utf8'),
+            "@IF EXIST \"%~dp0\\/usr/bin/sh.exe\" (\r" +
+            "\n  \"%~dp0\\/usr/bin/sh.exe\"  -x \"%~dp0\\from.sh.args\" %*\r" +
+            "\n) ELSE (\r" +
+            "\n  /usr/bin/sh  -x \"%~dp0\\from.sh.args\" %*\r" +
+            "\n)")
+    t.end()
+  })
+})

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/zz-cleanup.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/zz-cleanup.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/zz-cleanup.js
new file mode 100644
index 0000000..47b7899
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/cmd-shim/test/zz-cleanup.js
@@ -0,0 +1,13 @@
+var test = require('tap').test
+var path = require('path')
+var fixtures = path.resolve(__dirname, 'fixtures')
+var rimraf = require('rimraf')
+
+test('cleanup', function(t) {
+  rimraf(fixtures, function(er) {
+    if (er)
+      throw er
+    t.pass('cleaned up')
+    t.end()
+  })
+})

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/Readme.md
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/Readme.md b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/Readme.md
new file mode 100644
index 0000000..6520379
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/Readme.md
@@ -0,0 +1,189 @@
+# columnify
+
+[![Build Status](https://travis-ci.org/timoxley/columnify.png?branch=master)](https://travis-ci.org/timoxley/columnify)
+
+Create text-based columns suitable for console output. 
+Supports minimum and maximum column widths via truncation and text wrapping.
+
+Designed to [handle sensible wrapping in npm search results](https://github.com/isaacs/npm/pull/2328).
+
+`npm search` before & after integrating columnify:
+
+![npm-tidy-search](https://f.cloud.github.com/assets/43438/1848959/ae02ad04-76a1-11e3-8255-4781debffc26.gif)
+
+## Installation & Update
+
+```
+$ npm install --save columnify@latest
+```
+
+## Usage
+
+```js
+var columnify = require('columnify')
+var columns = columnify(data, options)
+console.log(columns)
+```
+
+## Examples
+
+### Simple Columns
+
+Text is aligned under column headings. Columns are automatically resized
+to fit the content of the largest cell.  Each cell will be padded with
+spaces to fill the available space and ensure column contents are
+left-aligned.
+
+```js
+var columnify = require('columnify')
+
+var columns = columnify([{
+  name: 'mod1',
+  version: '0.0.1'
+}, {
+  name: 'module2',
+  version: '0.2.0'
+}])
+
+console.log(columns)
+```
+```
+NAME    VERSION
+mod1    0.0.1  
+module2 0.2.0  
+```
+
+### Wrapping Column Cells
+
+You can define the maximum width before wrapping for individual cells in
+columns. Minimum width is also supported. Wrapping will happen at word
+boundaries. Empty cells or those which do not fill the max/min width
+will be padded with spaces.
+
+```js
+var columnify = require('columnify')
+
+var columns = columnify([{
+  name: 'mod1',
+  description: 'some description which happens to be far larger than the max',
+  version: '0.0.1',
+}, {
+  name: 'module-two',
+  description: 'another description larger than the max',
+  version: '0.2.0',
+})
+
+console.log(columns)
+```
+```
+NAME       DESCRIPTION                    VERSION
+mod1       some description which happens 0.0.1
+           to be far larger than the max
+module-two another description larger     0.2.0
+           than the max
+```
+
+### Truncated Columns
+
+You can disable wrapping and instead truncate content at the maximum
+column width. Truncation respects word boundaries.  A truncation marker,
+`…` will appear next to the last word in any truncated line.
+
+```js
+var columns = columnify(data, {
+  truncate: true,
+  config: {
+    description: {
+      maxWidth: 20
+    }
+  }
+})
+
+console.log(columns)
+```
+
+```
+NAME       DESCRIPTION          VERSION
+mod1       some description…    0.0.1  
+module-two another description… 0.2.0  
+```
+
+
+### Custom Truncation Marker
+
+You can change the truncation marker to something other than the default
+`…`.
+
+```js
+var columns = columnify(data, {
+  truncate: true,
+  truncateMarker: '>',
+  widths: {
+    description: {
+      maxWidth: 20
+    }
+  }
+})
+
+console.log(columns)
+```
+
+```
+NAME       DESCRIPTION          VERSION
+mod1       some description>    0.0.1  
+module-two another description> 0.2.0  
+```
+
+### Custom Column Splitter
+
+If your columns need some bling, you can split columns with custom
+characters.
+
+```js
+
+var columns = columnify(data, {
+  columnSplitter: ' | '
+})
+
+console.log(columns)
+```
+```
+NAME       | DESCRIPTION                                                  | VERSION
+mod1       | some description which happens to be far larger than the max | 0.0.1
+module-two | another description larger than the max                      | 0.2.0
+```
+
+### Filtering & Ordering Columns
+
+By default, all properties are converted into columns, whether or not
+they exist on every object or not.
+
+To explicitly specify which columns to include, and in which order,
+supply an "include" array:
+
+```js
+var data = [{
+  name: 'module1',
+  description: 'some description',
+  version: '0.0.1',
+}, {
+  name: 'module2',
+  description: 'another description',
+  version: '0.2.0',
+}]
+
+var columns = columnify(data, {
+  include: ['name', 'version'] // note description not included
+})
+
+console.log(columns)
+```
+
+```
+NAME    VERSION
+module1 0.0.1
+module2 0.2.0
+```
+## License
+
+MIT

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/index.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/index.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/index.js
new file mode 100644
index 0000000..462c291
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/index.js
@@ -0,0 +1,210 @@
+"use strict"
+
+var utils = require('./utils')
+var padRight = utils.padRight
+var splitIntoLines = utils.splitIntoLines
+var splitLongWords = utils.splitLongWords
+
+var DEFAULTS = {
+  maxWidth: Infinity,
+  minWidth: 0,
+  columnSplitter: ' ',
+  truncate: false,
+  truncateMarker: '…',
+  headingTransform: function(key) {
+    return key.toUpperCase()
+  },
+  dataTransform: function(cell, column, index) {
+    return cell
+  }
+}
+
+module.exports = function(items, options) {
+
+  options = options || {}
+
+  var columnConfigs = options.config || {}
+  delete options.config // remove config so doesn't appear on every column.
+
+  // Option defaults inheritance:
+  // options.config[columnName] => options => DEFAULTS
+  options = mixin(options, DEFAULTS)
+  options.config = options.config || Object.create(null)
+
+  options.spacing = options.spacing || '\n' // probably useless
+
+  var columnNames = options.include || [] // optional user-supplied columns to include
+
+  // if not suppled column names, automatically determine columns from data keys
+  if (!columnNames.length) {
+    items.forEach(function(item) {
+      for (var columnName in item) {
+        if (columnNames.indexOf(columnName) === -1) columnNames.push(columnName)
+      }
+    })
+  }
+
+  // initialize column defaults (each column inherits from options.config)
+  var columns = columnNames.reduce(function(columns, columnName) {
+    var column = Object.create(options)
+    columns[columnName] = mixin(column, columnConfigs[columnName])
+    return columns
+  }, Object.create(null))
+
+  // sanitize column settings
+  columnNames.forEach(function(columnName) {
+    var column = columns[columnName]
+    column.maxWidth = Math.ceil(column.maxWidth)
+    column.minWidth = Math.ceil(column.minWidth)
+    column.truncate = !!column.truncate
+  })
+
+  // sanitize data
+  items = items.map(function(item) {
+    var result = Object.create(null)
+    columnNames.forEach(function(columnName) {
+      // null/undefined -> ''
+      result[columnName] = item[columnName] != null ? item[columnName] : ''
+      // toString everything
+      result[columnName] = '' + result[columnName]
+      // remove funky chars
+      result[columnName] = result[columnName].replace(/\s+/g, " ")
+    })
+    return result
+  })
+
+  // transform data cells
+  columnNames.forEach(function(columnName) {
+    var column = columns[columnName]
+    items = items.map(function(item, index) {
+      item[columnName] = column.dataTransform(item[columnName], column, index)
+      return item
+    })
+  })
+
+  // add headers
+  var headers = {}
+  columnNames.forEach(function(columnName) {
+    var column = columns[columnName]
+    headers[columnName] = column.headingTransform(columnName)
+  })
+  items.unshift(headers)
+
+  // get actual max-width between min & max
+  // based on length of data in columns
+  columnNames.forEach(function(columnName) {
+    var column = columns[columnName]
+    column.width = items.map(function(item) {
+      return item[columnName]
+    }).reduce(function(min, cur) {
+      return Math.max(min, Math.min(column.maxWidth, Math.max(column.minWidth, cur.length)))
+    }, 0)
+  })
+
+  // split long words so they can break onto multiple lines
+  columnNames.forEach(function(columnName) {
+    var column = columns[columnName]
+    items = items.map(function(item) {
+      item[columnName] = splitLongWords(item[columnName], column.width, column.truncateMarker)
+      return item
+    })
+  })
+
+  // wrap long lines. each item is now an array of lines.
+  columnNames.forEach(function(columnName) {
+    var column = columns[columnName]
+    items = items.map(function(item, index) {
+      var cell = item[columnName]
+      item[columnName] = splitIntoLines(cell, column.width)
+
+      // if truncating required, only include first line + add truncation char
+      if (column.truncate && item[columnName].length > 1) {
+          item[columnName] = splitIntoLines(cell, column.width - column.truncateMarker.length)
+          var firstLine = item[columnName][0]
+          if (!endsWith(firstLine, column.truncateMarker)) item[columnName][0] += column.truncateMarker
+          item[columnName] = item[columnName].slice(0, 1)
+      }
+      return item
+    })
+  })
+
+  // recalculate column widths from truncated output/lines
+  columnNames.forEach(function(columnName) {
+    var column = columns[columnName]
+    column.width = items.map(function(item) {
+      return item[columnName].reduce(function(min, cur) {
+        return Math.max(min, Math.min(column.maxWidth, Math.max(column.minWidth, cur.length)))
+      }, 0)
+    }).reduce(function(min, cur) {
+      return Math.max(min, Math.min(column.maxWidth, Math.max(column.minWidth, cur)))
+    }, 0)
+  })
+
+  var rows = createRows(items, columns, columnNames) // merge lines into rows
+
+  // conceive output
+  return rows.reduce(function(output, row) {
+    return output.concat(row.reduce(function(rowOut, line) {
+      return rowOut.concat(line.join(options.columnSplitter))
+    }, []))
+  }, []).join(options.spacing)
+}
+
+/**
+ * Convert wrapped lines into rows with padded values.
+ *
+ * @param Array items data to process
+ * @param Array columns column width settings for wrapping
+ * @param Array columnNames column ordering
+ * @return Array items wrapped in arrays, corresponding to lines
+ */
+
+function createRows(items, columns, columnNames) {
+  return items.map(function(item) {
+    var row = []
+    var numLines = 0
+    columnNames.forEach(function(columnName) {
+      numLines = Math.max(numLines, item[columnName].length)
+    })
+    // combine matching lines of each rows
+    for (var i = 0; i < numLines; i++) {
+      row[i] = row[i] || []
+      columnNames.forEach(function(columnName) {
+        var column = columns[columnName]
+        var val = item[columnName][i] || '' // || '' ensures empty columns get padded
+        row[i].push(padRight(val, column.width))
+      })
+    }
+    return row
+  })
+}
+
+/**
+ * Generic source->target mixin.
+ * Copy properties from `source` into `target` if target doesn't have them.
+ * Destructive. Modifies `target`.
+ *
+ * @param target Object target for mixin properties.
+ * @param source Object source of mixin properties.
+ * @return Object `target` after mixin applied.
+ */
+
+function mixin(target, source) {
+  source = source || {}
+  for (var key in source) {
+    if (target.hasOwnProperty(key)) continue
+    target[key] = source[key]
+  }
+  return target
+}
+
+/**
+ * Adapted from String.prototype.endsWith polyfill.
+ */
+
+function endsWith(target, searchString, position) {
+  position = position || target.length;
+  position = position - searchString.length;
+  var lastIndex = target.lastIndexOf(searchString);
+  return lastIndex !== -1 && lastIndex === position;
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/package.json
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/package.json b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/package.json
new file mode 100644
index 0000000..f4fa2cb
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/package.json
@@ -0,0 +1,42 @@
+{
+  "name": "columnify",
+  "version": "0.1.2",
+  "description": "Render data in text columns, supports in-column text-wrap.",
+  "main": "index.js",
+  "scripts": {
+    "test": "tap test"
+  },
+  "author": {
+    "name": "Tim Oxley"
+  },
+  "license": "MIT",
+  "devDependencies": {
+    "tape": "~2.3.0",
+    "tap": "~0.4.6"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/timoxley/columnify.git"
+  },
+  "keywords": [
+    "column",
+    "text",
+    "ansi",
+    "console",
+    "terminal",
+    "wrap",
+    "table"
+  ],
+  "bugs": {
+    "url": "https://github.com/timoxley/columnify/issues"
+  },
+  "homepage": "https://github.com/timoxley/columnify",
+  "readme": "# columnify\n\n[![Build Status](https://travis-ci.org/timoxley/columnify.png?branch=master)](https://travis-ci.org/timoxley/columnify)\n\nCreate text-based columns suitable for console output. \nSupports minimum and maximum column widths via truncation and text wrapping.\n\nDesigned to [handle sensible wrapping in npm search results](https://github.com/isaacs/npm/pull/2328).\n\n`npm search` before & after integrating columnify:\n\n![npm-tidy-search](https://f.cloud.github.com/assets/43438/1848959/ae02ad04-76a1-11e3-8255-4781debffc26.gif)\n\n## Installation & Update\n\n```\n$ npm install --save columnify@latest\n```\n\n## Usage\n\n```js\nvar columnify = require('columnify')\nvar columns = columnify(data, options)\nconsole.log(columns)\n```\n\n## Examples\n\n### Simple Columns\n\nText is aligned under column headings. Columns are automatically resized\nto fit the content of the largest cell.  Each cell will be padded with\nspaces to fill the available space and ensure col
 umn contents are\nleft-aligned.\n\n```js\nvar columnify = require('columnify')\n\nvar columns = columnify([{\n  name: 'mod1',\n  version: '0.0.1'\n}, {\n  name: 'module2',\n  version: '0.2.0'\n}])\n\nconsole.log(columns)\n```\n```\nNAME    VERSION\nmod1    0.0.1  \nmodule2 0.2.0  \n```\n\n### Wrapping Column Cells\n\nYou can define the maximum width before wrapping for individual cells in\ncolumns. Minimum width is also supported. Wrapping will happen at word\nboundaries. Empty cells or those which do not fill the max/min width\nwill be padded with spaces.\n\n```js\nvar columnify = require('columnify')\n\nvar columns = columnify([{\n  name: 'mod1',\n  description: 'some description which happens to be far larger than the max',\n  version: '0.0.1',\n}, {\n  name: 'module-two',\n  description: 'another description larger than the max',\n  version: '0.2.0',\n})\n\nconsole.log(columns)\n```\n```\nNAME       DESCRIPTION                    VERSION\nmod1       some description which happen
 s 0.0.1\n           to be far larger than the max\nmodule-two another description larger     0.2.0\n           than the max\n```\n\n### Truncated Columns\n\nYou can disable wrapping and instead truncate content at the maximum\ncolumn width. Truncation respects word boundaries.  A truncation marker,\n`…` will appear next to the last word in any truncated line.\n\n```js\nvar columns = columnify(data, {\n  truncate: true,\n  config: {\n    description: {\n      maxWidth: 20\n    }\n  }\n})\n\nconsole.log(columns)\n```\n\n```\nNAME       DESCRIPTION          VERSION\nmod1       some description…    0.0.1  \nmodule-two another description… 0.2.0  \n```\n\n\n### Custom Truncation Marker\n\nYou can change the truncation marker to something other than the default\n`…`.\n\n```js\nvar columns = columnify(data, {\n  truncate: true,\n  truncateMarker: '>',\n  widths: {\n    description: {\n      maxWidth: 20\n    }\n  }\n})\n\nconsole.log(columns)\n```\n\n```\nNAME       DESCRIPTION    
       VERSION\nmod1       some description>    0.0.1  \nmodule-two another description> 0.2.0  \n```\n\n### Custom Column Splitter\n\nIf your columns need some bling, you can split columns with custom\ncharacters.\n\n```js\n\nvar columns = columnify(data, {\n  columnSplitter: ' | '\n})\n\nconsole.log(columns)\n```\n```\nNAME       | DESCRIPTION                                                  | VERSION\nmod1       | some description which happens to be far larger than the max | 0.0.1\nmodule-two | another description larger than the max                      | 0.2.0\n```\n\n### Filtering & Ordering Columns\n\nBy default, all properties are converted into columns, whether or not\nthey exist on every object or not.\n\nTo explicitly specify which columns to include, and in which order,\nsupply an \"include\" array:\n\n```js\nvar data = [{\n  name: 'module1',\n  description: 'some description',\n  version: '0.0.1',\n}, {\n  name: 'module2',\n  description: 'another description',\n  versi
 on: '0.2.0',\n}]\n\nvar columns = columnify(data, {\n  include: ['name', 'version'] // note description not included\n})\n\nconsole.log(columns)\n```\n\n```\nNAME    VERSION\nmodule1 0.0.1\nmodule2 0.2.0\n```\n## License\n\nMIT\n",
+  "readmeFilename": "Readme.md",
+  "_id": "columnify@0.1.2",
+  "dist": {
+    "shasum": "ab1a1f1e37b26ba4b87c6920fb717fe51c827042"
+  },
+  "_from": "columnify@0.1.2",
+  "_resolved": "https://registry.npmjs.org/columnify/-/columnify-0.1.2.tgz"
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/utils.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/utils.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/utils.js
new file mode 100644
index 0000000..bd7641d
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/columnify/utils.js
@@ -0,0 +1,76 @@
+/**
+ * Pad `str` up to total length `max` with `chr`.
+ * If `str` is longer than `max`, padRight will return `str` unaltered.
+ *
+ * @param String str string to pad
+ * @param Number max total length of output string
+ * @param String chr optional. Character to pad with. default: ' '
+ * @return String padded str
+ */
+
+function padRight(str, max, chr) {
+  str = str != null ? str : ''
+  str = String(str)
+  var length = 1 + max - str.length
+  if (length <= 0) return str
+  return str + Array.apply(null, {length: length})
+  .join(chr || ' ')
+}
+
+/**
+ * Split a String `str` into lines of maxiumum length `max`.
+ * Splits on word boundaries.
+ *
+ * @param String str string to split
+ * @param Number max length of each line
+ * @return Array Array containing lines.
+ */
+
+function splitIntoLines(str, max) {
+  return str.trim().split(' ').reduce(function(lines, word) {
+    var line = lines[lines.length - 1]
+    if (line && line.join(' ').length + word.length < max) {
+      lines[lines.length - 1].push(word) // add to line
+    }
+    else lines.push([word]) // new line
+    return lines
+  }, []).map(function(l) {
+    return l.join(' ')
+  })
+}
+
+/**
+ * Add spaces and `truncationChar` between words of
+ * `str` which are longer than `max`.
+ *
+ * @param String str string to split
+ * @param Number max length of each line
+ * @param Number truncationChar character to append to split words
+ * @return String
+ */
+
+function splitLongWords(str, max, truncationChar, result) {
+  str = str.trim()
+  result = result || []
+  if (!str) return result.join(' ') || ''
+  var words = str.split(' ')
+  var word = words.shift() || str
+
+  if (word.length > max) {
+    var remainder = word.slice(max - truncationChar.length) // get remainder
+    words.unshift(remainder) // save remainder for next loop
+
+    word = word.slice(0, max - truncationChar.length) // grab truncated word
+    word += truncationChar // add trailing … or whatever
+  }
+  result.push(word)
+  return splitLongWords(words.join(' '), max, truncationChar, result)
+}
+
+/**
+ * Exports
+ */
+
+module.exports.padRight = padRight
+module.exports.splitIntoLines = splitIntoLines
+module.exports.splitLongWords = splitLongWords

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/LICENSE
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/LICENSE b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/LICENSE
new file mode 100644
index 0000000..ee27ba4
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/README.markdown
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/README.markdown b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/README.markdown
new file mode 100644
index 0000000..c1121ca
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/README.markdown
@@ -0,0 +1,54 @@
+editor
+======
+
+Launch $EDITOR in your program.
+
+example
+=======
+
+``` js
+var editor = require('editor');
+editor('beep.json', function (code, sig) {
+    console.log('finished editing with code ' + code);
+});
+```
+
+***
+
+```
+$ node edit.js
+```
+
+![editor](http://substack.net/images/screenshots/editor.png)
+
+```
+finished editing with code 0
+```
+
+methods
+=======
+
+``` js
+var editor = require('editor')
+```
+
+editor(file, opts={}, cb)
+-------------------------
+
+Launch the `$EDITOR` (or `opts.editor`) for `file`.
+
+When the editor exits, `cb(code, sig)` fires.
+
+install
+=======
+
+With [npm](http://npmjs.org) do:
+
+```
+npm install editor
+```
+
+license
+=======
+
+MIT

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/beep.json
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/beep.json b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/beep.json
new file mode 100644
index 0000000..ac07d2d
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/beep.json
@@ -0,0 +1,5 @@
+{
+  "a" : 3,
+  "b" : 4,
+  "c" : 5
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/edit.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/edit.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/edit.js
new file mode 100644
index 0000000..ee11728
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/example/edit.js
@@ -0,0 +1,4 @@
+var editor = require('../');
+editor(__dirname + '/beep.json', function (code, sig) {
+    console.log('finished editing with code ' + code);
+});

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/index.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/index.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/index.js
new file mode 100644
index 0000000..8f1a3eb
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/editor/index.js
@@ -0,0 +1,26 @@
+var spawn = require('child_process').spawn;
+
+module.exports = function (file, opts, cb) {
+    if (typeof opts === 'function') {
+        cb = opts;
+        opts = {};
+    }
+    if (!opts) opts = {};
+    
+    var ed = /^win/.test(process.platform) ? 'notepad' : 'vim';
+    var editor = opts.editor || process.env.VISUAL || process.env.EDITOR || ed;
+    
+    setRaw(true);
+    var ps = spawn(editor, [ file ], { customFds : [ 0, 1, 2 ] });
+    
+    ps.on('exit', function (code, sig) {
+        setRaw(false);
+        process.stdin.pause();
+        if (typeof cb === 'function') cb(code, sig)
+    });
+};
+
+var tty = require('tty');
+function setRaw (mode) {
+    process.stdin.setRawMode ? process.stdin.setRawMode(mode) : tty.setRawMode(mode);
+}