You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by js...@apache.org on 2014/07/07 23:43:07 UTC

[01/51] [partial] CB-7087 Retire blackberry10/ directory

Repository: cordova-blackberry
Updated Branches:
  refs/heads/master d8c924135 -> a6733a833


http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/node_modules/sax/examples/example.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/node_modules/sax/examples/example.js b/blackberry10/node_modules/xml2js/node_modules/sax/examples/example.js
deleted file mode 100644
index 7b0246e..0000000
--- a/blackberry10/node_modules/xml2js/node_modules/sax/examples/example.js
+++ /dev/null
@@ -1,29 +0,0 @@
-
-var fs = require("fs"),
-  util = require("util"),
-  path = require("path"),
-  xml = fs.readFileSync(path.join(__dirname, "test.xml"), "utf8"),
-  sax = require("../lib/sax"),
-  strict = sax.parser(true),
-  loose = sax.parser(false, {trim:true}),
-  inspector = function (ev) { return function (data) {
-    console.error("%s %s %j", this.line+":"+this.column, ev, data);
-  }};
-
-sax.EVENTS.forEach(function (ev) {
-  loose["on"+ev] = inspector(ev);
-});
-loose.onend = function () {
-  console.error("end");
-  console.error(loose);
-};
-
-// do this in random bits at a time to verify that it works.
-(function () {
-  if (xml) {
-    var c = Math.ceil(Math.random() * 1000)
-    loose.write(xml.substr(0,c));
-    xml = xml.substr(c);
-    process.nextTick(arguments.callee);
-  } else loose.close();
-})();


[24/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/package.json b/blackberry10/node_modules/elementtree/node_modules/sax/package.json
deleted file mode 100644
index 0b6cf3b..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "name": "sax",
-  "description": "An evented streaming XML parser in JavaScript",
-  "author": {
-    "name": "Isaac Z. Schlueter",
-    "email": "i@izs.me",
-    "url": "http://blog.izs.me/"
-  },
-  "version": "0.3.5",
-  "main": "lib/sax.js",
-  "license": {
-    "type": "MIT",
-    "url": "https://raw.github.com/isaacs/sax-js/master/LICENSE"
-  },
-  "scripts": {
-    "test": "node test/index.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/sax-js.git"
-  },
-  "contributors": [
-    {
-      "name": "Isaac Z. Schlueter",
-      "email": "i@izs.me"
-    },
-    {
-      "name": "Stein Martin Hustad",
-      "email": "stein@hustad.com"
-    },
-    {
-      "name": "Mikeal Rogers",
-      "email": "mikeal.rogers@gmail.com"
-    },
-    {
-      "name": "Laurie Harper",
-      "email": "laurie@holoweb.net"
-    },
-    {
-      "name": "Jann Horn",
-      "email": "jann@Jann-PC.fritz.box"
-    },
-    {
-      "name": "Elijah Insua",
-      "email": "tmpvar@gmail.com"
-    },
-    {
-      "name": "Henry Rawas",
-      "email": "henryr@schakra.com"
-    },
-    {
-      "name": "Justin Makeig",
-      "email": "jmpublic@makeig.com"
-    }
-  ],
-  "readme": "# sax js\n\nA sax-style parser for XML and HTML.\n\nDesigned with [node](http://nodejs.org/) in mind, but should work fine in\nthe browser or other CommonJS implementations.\n\n## What This Is\n\n* A very simple tool to parse through an XML string.\n* A stepping stone to a streaming HTML parser.\n* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML \n  docs.\n\n## What This Is (probably) Not\n\n* An HTML Parser - That's a fine goal, but this isn't it.  It's just\n  XML.\n* A DOM Builder - You can use it to build an object model out of XML,\n  but it doesn't do that out of the box.\n* XSLT - No DOM = no querying.\n* 100% Compliant with (some other SAX implementation) - Most SAX\n  implementations are in Java and do a lot more than this does.\n* An XML Validator - It does a little validation when in strict mode, but\n  not much.\n* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic \n  masochism.\n* A DTD-aware Thing - Fetching DTDs is a 
 much bigger job.\n\n## Regarding `<!DOCTYPE`s and `<!ENTITY`s\n\nThe parser will handle the basic XML entities in text nodes and attribute\nvalues: `&amp; &lt; &gt; &apos; &quot;`. It's possible to define additional\nentities in XML by putting them in the DTD. This parser doesn't do anything\nwith that. If you want to listen to the `ondoctype` event, and then fetch\nthe doctypes, and read the entities and add them to `parser.ENTITIES`, then\nbe my guest.\n\nUnknown entities will fail in strict mode, and in loose mode, will pass\nthrough unmolested.\n\n## Usage\n\n    var sax = require(\"./lib/sax\"),\n      strict = true, // set to false for html-mode\n      parser = sax.parser(strict);\n\n    parser.onerror = function (e) {\n      // an error happened.\n    };\n    parser.ontext = function (t) {\n      // got some text.  t is the string of text.\n    };\n    parser.onopentag = function (node) {\n      // opened a tag.  node has \"name\" and \"attributes\"\n    };\n    parser.onattr
 ibute = function (attr) {\n      // an attribute.  attr has \"name\" and \"value\"\n    };\n    parser.onend = function () {\n      // parser stream is done, and ready to have more stuff written to it.\n    };\n\n    parser.write('<xml>Hello, <who name=\"world\">world</who>!</xml>').close();\n\n    // stream usage\n    // takes the same options as the parser\n    var saxStream = require(\"sax\").createStream(strict, options)\n    saxStream.on(\"error\", function (e) {\n      // unhandled errors will throw, since this is a proper node\n      // event emitter.\n      console.error(\"error!\", e)\n      // clear the error\n      this._parser.error = null\n      this._parser.resume()\n    })\n    saxStream.on(\"opentag\", function (node) {\n      // same object as above\n    })\n    // pipe is supported, and it's readable/writable\n    // same chunks coming in also go out.\n    fs.createReadStream(\"file.xml\")\n      .pipe(saxStream)\n      .pipe(fs.createReadStream(\"file-copy.xml\"))
 \n\n\n\n## Arguments\n\nPass the following arguments to the parser function.  All are optional.\n\n`strict` - Boolean. Whether or not to be a jerk. Default: `false`.\n\n`opt` - Object bag of settings regarding string formatting.  All default to `false`.\n\nSettings supported:\n\n* `trim` - Boolean. Whether or not to trim text and comment nodes.\n* `normalize` - Boolean. If true, then turn any whitespace into a single\n  space.\n* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, \n  rather than uppercasing them.\n* `xmlns` - Boolean. If true, then namespaces are supported.\n\n## Methods\n\n`write` - Write bytes onto the stream. You don't have to do this all at\nonce. You can keep writing as much as you want.\n\n`close` - Close the stream. Once closed, no more data may be written until\nit is done processing the buffer, which is signaled by the `end` event.\n\n`resume` - To gracefully handle errors, assign a listener to the `error`\nevent. Then, when the error is
  taken care of, you can call `resume` to\ncontinue parsing. Otherwise, the parser will not continue while in an error\nstate.\n\n## Members\n\nAt all times, the parser object will have the following members:\n\n`line`, `column`, `position` - Indications of the position in the XML\ndocument where the parser currently is looking.\n\n`startTagPosition` - Indicates the position where the current tag starts.\n\n`closed` - Boolean indicating whether or not the parser can be written to.\nIf it's `true`, then wait for the `ready` event to write again.\n\n`strict` - Boolean indicating whether or not the parser is a jerk.\n\n`opt` - Any options passed into the constructor.\n\n`tag` - The current tag being dealt with.\n\nAnd a bunch of other stuff that you probably shouldn't touch.\n\n## Events\n\nAll events emit with a single argument. To listen to an event, assign a\nfunction to `on<eventname>`. Functions get executed in the this-context of\nthe parser object. The list of supported events ar
 e also in the exported\n`EVENTS` array.\n\nWhen using the stream interface, assign handlers using the EventEmitter\n`on` function in the normal fashion.\n\n`error` - Indication that something bad happened. The error will be hanging\nout on `parser.error`, and must be deleted before parsing can continue. By\nlistening to this event, you can keep an eye on that kind of stuff. Note:\nthis happens *much* more in strict mode. Argument: instance of `Error`.\n\n`text` - Text node. Argument: string of text.\n\n`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.\n\n`processinginstruction` - Stuff like `<?xml foo=\"blerg\" ?>`. Argument:\nobject with `name` and `body` members. Attributes are not parsed, as\nprocessing instructions have implementation dependent semantics.\n\n`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`\nwould trigger this kind of event. This is a weird thing to support, so it\nmight go away at some point. SAX isn't intended to be used t
 o parse SGML,\nafter all.\n\n`opentag` - An opening tag. Argument: object with `name` and `attributes`.\nIn non-strict mode, tag names are uppercased, unless the `lowercasetags`\noption is set.  If the `xmlns` option is set, then it will contain\nnamespace binding information on the `ns` member, and will have a\n`local`, `prefix`, and `uri` member.\n\n`closetag` - A closing tag. In loose mode, tags are auto-closed if their\nparent closes. In strict mode, well-formedness is enforced. Note that\nself-closing tags will have `closeTag` emitted immediately after `openTag`.\nArgument: tag name.\n\n`attribute` - An attribute node.  Argument: object with `name` and `value`,\nand also namespace information if the `xmlns` option flag is set.\n\n`comment` - A comment node.  Argument: the string of the comment.\n\n`opencdata` - The opening tag of a `<![CDATA[` block.\n\n`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get\nquite large, this event may fire multiple times f
 or a single block, if it\nis broken up into multiple `write()`s. Argument: the string of random\ncharacter data.\n\n`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.\n\n`opennamespace` - If the `xmlns` option is set, then this event will\nsignal the start of a new namespace binding.\n\n`closenamespace` - If the `xmlns` option is set, then this event will\nsignal the end of a namespace binding.\n\n`end` - Indication that the closed stream has ended.\n\n`ready` - Indication that the stream has reset, and is ready to be written\nto.\n\n`noscript` - In non-strict mode, `<script>` tags trigger a `\"script\"`\nevent, and their contents are not checked for special xml characters.\nIf you pass `noscript: true`, then this behavior is suppressed.\n\n## Reporting Problems\n\nIt's best to write a failing test if you find an issue.  I will always\naccept pull requests with failing tests if they demonstrate intended\nbehavior, but it is very hard to figure out what issue you're descr
 ibing\nwithout a test.  Writing a test is also the best way for you yourself\nto figure out if you really understand the issue you think you have with\nsax-js.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/isaacs/sax-js/issues"
-  },
-  "_id": "sax@0.3.5",
-  "_from": "sax@0.3.5"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/buffer-overrun.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/buffer-overrun.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/buffer-overrun.js
deleted file mode 100644
index 8d12fac..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/buffer-overrun.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// set this really low so that I don't have to put 64 MB of xml in here.
-var sax = require("../lib/sax")
-var bl = sax.MAX_BUFFER_LENGTH
-sax.MAX_BUFFER_LENGTH = 5;
-
-require(__dirname).test({
-  expect : [
-    ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 15\nChar: "],
-    ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 30\nChar: "],
-    ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 45\nChar: "],
-    ["opentag", {
-     "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ",
-     "attributes": {}
-    }],
-    ["text", "yo"],
-    ["closetag", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"]
-  ]
-}).write("<abcdefghijklmn")
-  .write("opqrstuvwxyzABC")
-  .write("DEFGHIJKLMNOPQR")
-  .write("STUVWXYZ>")
-  .write("yo")
-  .write("</abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>")
-  .close();
-sax.MAX_BUFFER_LENGTH = bl

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-chunked.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-chunked.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-chunked.js
deleted file mode 100644
index ccd5ee6..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-chunked.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-require(__dirname).test({
-  expect : [
-    ["opentag", {"name": "R","attributes": {}}],
-    ["opencdata", undefined],
-    ["cdata", " this is character data  "],
-    ["closecdata", undefined],
-    ["closetag", "R"]
-  ]
-}).write("<r><![CDATA[ this is ").write("character data  ").write("]]></r>").close();
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-end-split.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-end-split.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-end-split.js
deleted file mode 100644
index b41bd00..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-end-split.js
+++ /dev/null
@@ -1,15 +0,0 @@
-
-require(__dirname).test({
-  expect : [
-    ["opentag", {"name": "R","attributes": {}}],
-    ["opencdata", undefined],
-    ["cdata", " this is "],
-    ["closecdata", undefined],
-    ["closetag", "R"]
-  ]
-})
-  .write("<r><![CDATA[ this is ]")
-  .write("]>")
-  .write("</r>")
-  .close();
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-fake-end.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-fake-end.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-fake-end.js
deleted file mode 100644
index 07aeac4..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-fake-end.js
+++ /dev/null
@@ -1,28 +0,0 @@
-
-var p = require(__dirname).test({
-  expect : [
-    ["opentag", {"name": "R","attributes": {}}],
-    ["opencdata", undefined],
-    ["cdata", "[[[[[[[[]]]]]]]]"],
-    ["closecdata", undefined],
-    ["closetag", "R"]
-  ]
-})
-var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
-for (var i = 0; i < x.length ; i ++) {
-  p.write(x.charAt(i))
-}
-p.close();
-
-
-var p2 = require(__dirname).test({
-  expect : [
-    ["opentag", {"name": "R","attributes": {}}],
-    ["opencdata", undefined],
-    ["cdata", "[[[[[[[[]]]]]]]]"],
-    ["closecdata", undefined],
-    ["closetag", "R"]
-  ]
-})
-var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
-p2.write(x).close();

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-multiple.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-multiple.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-multiple.js
deleted file mode 100644
index dab2015..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata-multiple.js
+++ /dev/null
@@ -1,15 +0,0 @@
-
-require(__dirname).test({
-  expect : [
-    ["opentag", {"name": "R","attributes": {}}],
-    ["opencdata", undefined],
-    ["cdata", " this is "],
-    ["closecdata", undefined],
-    ["opencdata", undefined],
-    ["cdata", "character data  "],
-    ["closecdata", undefined],
-    ["closetag", "R"]
-  ]
-}).write("<r><![CDATA[ this is ]]>").write("<![CDA").write("T").write("A[")
-  .write("character data  ").write("]]></r>").close();
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata.js
deleted file mode 100644
index 0f09cce..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/cdata.js
+++ /dev/null
@@ -1,10 +0,0 @@
-require(__dirname).test({
-  xml : "<r><![CDATA[ this is character data  ]]></r>",
-  expect : [
-    ["opentag", {"name": "R","attributes": {}}],
-    ["opencdata", undefined],
-    ["cdata", " this is character data  "],
-    ["closecdata", undefined],
-    ["closetag", "R"]
-  ]
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/index.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/index.js
deleted file mode 100644
index d4e1ef4..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-var globalsBefore = JSON.stringify(Object.keys(global))
-  , util = require("util")
-  , assert = require("assert")
-  , fs = require("fs")
-  , path = require("path")
-  , sax = require("../lib/sax")
-
-exports.sax = sax
-
-// handy way to do simple unit tests
-// if the options contains an xml string, it'll be written and the parser closed.
-// otherwise, it's assumed that the test will write and close.
-exports.test = function test (options) {
-  var xml = options.xml
-    , parser = sax.parser(options.strict, options.opt)
-    , expect = options.expect
-    , e = 0
-  sax.EVENTS.forEach(function (ev) {
-    parser["on" + ev] = function (n) {
-      if (process.env.DEBUG) {
-        console.error({ expect: expect[e]
-                      , actual: [ev, n] })
-      }
-      if (e >= expect.length && (ev === "end" || ev === "ready")) return
-      assert.ok( e < expect.length,
-        "expectation #"+e+" "+util.inspect(expect[e])+"\n"+
-        "Unexpected event: "+ev+" "+(n ? util.inspect(n) : ""))
-      var inspected = n instanceof Error ? "\n"+ n.message : util.inspect(n)
-      assert.equal(ev, expect[e][0],
-        "expectation #"+e+"\n"+
-        "Didn't get expected event\n"+
-        "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+
-        "actual: "+ev+" "+inspected+"\n")
-      if (ev === "error") assert.equal(n.message, expect[e][1])
-      else assert.deepEqual(n, expect[e][1],
-        "expectation #"+e+"\n"+
-        "Didn't get expected argument\n"+
-        "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+
-        "actual: "+ev+" "+inspected+"\n")
-      e++
-      if (ev === "error") parser.resume()
-    }
-  })
-  if (xml) parser.write(xml).close()
-  return parser
-}
-
-if (module === require.main) {
-  var running = true
-    , failures = 0
-
-  function fail (file, er) {
-    util.error("Failed: "+file)
-    util.error(er.stack || er.message)
-    failures ++
-  }
-
-  fs.readdir(__dirname, function (error, files) {
-    files = files.filter(function (file) {
-      return (/\.js$/.exec(file) && file !== 'index.js')
-    })
-    var n = files.length
-      , i = 0
-    console.log("0.." + n)
-    files.forEach(function (file) {
-      // run this test.
-      try {
-        require(path.resolve(__dirname, file))
-        var globalsAfter = JSON.stringify(Object.keys(global))
-        if (globalsAfter !== globalsBefore) {
-          var er = new Error("new globals introduced\n"+
-                             "expected: "+globalsBefore+"\n"+
-                             "actual:   "+globalsAfter)
-          globalsBefore = globalsAfter
-          throw er
-        }
-        console.log("ok " + (++i) + " - " + file)
-      } catch (er) {
-        console.log("not ok "+ (++i) + " - " + file)
-        fail(file, er)
-      }
-    })
-    if (!failures) return console.log("#all pass")
-    else return console.error(failures + " failure" + (failures > 1 ? "s" : ""))
-  })
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-23.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-23.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-23.js
deleted file mode 100644
index e7991b2..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-23.js
+++ /dev/null
@@ -1,43 +0,0 @@
-
-require(__dirname).test
-  ( { xml :
-      "<compileClassesResponse>"+
-        "<result>"+
-          "<bodyCrc>653724009</bodyCrc>"+
-          "<column>-1</column>"+
-          "<id>01pG0000002KoSUIA0</id>"+
-          "<line>-1</line>"+
-          "<name>CalendarController</name>"+
-          "<success>true</success>"+
-        "</result>"+
-      "</compileClassesResponse>"
-
-    , expect :
-      [ [ "opentag", { name: "COMPILECLASSESRESPONSE", attributes: {} } ]
-      , [ "opentag", { name : "RESULT", attributes: {} } ]
-      , [ "opentag", { name: "BODYCRC", attributes: {} } ]
-      , [ "text", "653724009" ]
-      , [ "closetag", "BODYCRC" ]
-      , [ "opentag", { name: "COLUMN", attributes: {} } ]
-      , [ "text", "-1" ]
-      , [ "closetag", "COLUMN" ]
-      , [ "opentag", { name: "ID", attributes: {} } ]
-      , [ "text", "01pG0000002KoSUIA0" ]
-      , [ "closetag", "ID" ]
-      , [ "opentag", {name: "LINE", attributes: {} } ]
-      , [ "text", "-1" ]
-      , [ "closetag", "LINE" ]
-      , [ "opentag", {name: "NAME", attributes: {} } ]
-      , [ "text", "CalendarController" ]
-      , [ "closetag", "NAME" ]
-      , [ "opentag", {name: "SUCCESS", attributes: {} } ]
-      , [ "text", "true" ]
-      , [ "closetag", "SUCCESS" ]
-      , [ "closetag", "RESULT" ]
-      , [ "closetag", "COMPILECLASSESRESPONSE" ]
-      ]
-    , strict : false
-    , opt : {}
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-30.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-30.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-30.js
deleted file mode 100644
index c2cc809..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-30.js
+++ /dev/null
@@ -1,24 +0,0 @@
-// https://github.com/isaacs/sax-js/issues/33
-require(__dirname).test
-  ( { xml : "<xml>\n"+
-            "<!-- \n"+
-            "  comment with a single dash- in it\n"+
-            "-->\n"+
-            "<data/>\n"+
-            "</xml>"
-
-    , expect :
-      [ [ "opentag", { name: "xml", attributes: {} } ]
-      , [ "text", "\n" ]
-      , [ "comment", " \n  comment with a single dash- in it\n" ]
-      , [ "text", "\n" ]
-      , [ "opentag", { name: "data", attributes: {} } ]
-      , [ "closetag", "data" ]
-      , [ "text", "\n" ]
-      , [ "closetag", "xml" ]
-      ]
-    , strict : true
-    , opt : {}
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-35.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-35.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-35.js
deleted file mode 100644
index 7c521c5..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-35.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// https://github.com/isaacs/sax-js/issues/35
-require(__dirname).test
-  ( { xml : "<xml>&#Xd;&#X0d;\n"+
-            "</xml>"
-
-    , expect :
-      [ [ "opentag", { name: "xml", attributes: {} } ]
-      , [ "text", "\r\r\n" ]
-      , [ "closetag", "xml" ]
-      ]
-    , strict : true
-    , opt : {}
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-47.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-47.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-47.js
deleted file mode 100644
index 911c7d0..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-47.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// https://github.com/isaacs/sax-js/issues/47
-require(__dirname).test
-  ( { xml : '<a href="query.svc?x=1&y=2&z=3"/>'
-    , expect : [ 
-        [ "attribute", { name:'href', value:"query.svc?x=1&y=2&z=3"} ],
-        [ "opentag", { name: "a", attributes: { href:"query.svc?x=1&y=2&z=3"} } ],
-        [ "closetag", "a" ]
-      ]
-    , strict : true
-    , opt : {}
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-49.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-49.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-49.js
deleted file mode 100644
index 2964325..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/issue-49.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// https://github.com/isaacs/sax-js/issues/49
-require(__dirname).test
-  ( { xml : "<xml><script>hello world</script></xml>"
-    , expect :
-      [ [ "opentag", { name: "xml", attributes: {} } ]
-      , [ "opentag", { name: "script", attributes: {} } ]
-      , [ "text", "hello world" ]
-      , [ "closetag", "script" ]
-      , [ "closetag", "xml" ]
-      ]
-    , strict : false
-    , opt : { lowercasetags: true, noscript: true }
-    }
-  )
-
-require(__dirname).test
-  ( { xml : "<xml><script><![CDATA[hello world]]></script></xml>"
-    , expect :
-      [ [ "opentag", { name: "xml", attributes: {} } ]
-      , [ "opentag", { name: "script", attributes: {} } ]
-      , [ "opencdata", undefined ]
-      , [ "cdata", "hello world" ]
-      , [ "closecdata", undefined ]
-      , [ "closetag", "script" ]
-      , [ "closetag", "xml" ]
-      ]
-    , strict : false
-    , opt : { lowercasetags: true, noscript: true }
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/parser-position.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/parser-position.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/parser-position.js
deleted file mode 100644
index e4a68b1..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/parser-position.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var sax = require("../lib/sax"),
-    assert = require("assert")
-
-function testPosition(chunks, expectedEvents) {
-  var parser = sax.parser();
-  expectedEvents.forEach(function(expectation) {
-    parser['on' + expectation[0]] = function() {
-      for (var prop in expectation[1]) {
-        assert.equal(parser[prop], expectation[1][prop]);
-      }
-    }
-  });
-  chunks.forEach(function(chunk) {
-    parser.write(chunk);
-  });
-};
-
-testPosition(['<div>abcdefgh</div>'],
-             [ ['opentag',  { position:  5, startTagPosition:  1 }]
-             , ['text',     { position: 19, startTagPosition: 14 }]
-             , ['closetag', { position: 19, startTagPosition: 14 }]
-             ]);
-
-testPosition(['<div>abcde','fgh</div>'],
-             [ ['opentag',  { position:  5, startTagPosition:  1 }]
-             , ['text',     { position: 19, startTagPosition: 14 }]
-             , ['closetag', { position: 19, startTagPosition: 14 }]
-             ]);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/script.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/script.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/script.js
deleted file mode 100644
index 464c051..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/script.js
+++ /dev/null
@@ -1,12 +0,0 @@
-require(__dirname).test({
-  xml : "<html><head><script>if (1 < 0) { console.log('elo there'); }</script></head></html>",
-  expect : [
-    ["opentag", {"name": "HTML","attributes": {}}],
-    ["opentag", {"name": "HEAD","attributes": {}}],
-    ["opentag", {"name": "SCRIPT","attributes": {}}],
-    ["script", "if (1 < 0) { console.log('elo there'); }"],
-    ["closetag", "SCRIPT"],
-    ["closetag", "HEAD"],
-    ["closetag", "HTML"]
-  ]
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child-strict.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child-strict.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child-strict.js
deleted file mode 100644
index ce9c045..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child-strict.js
+++ /dev/null
@@ -1,40 +0,0 @@
-
-require(__dirname).test({
-  xml :
-  "<root>"+
-    "<child>" +
-      "<haha />" +
-    "</child>" +
-    "<monkey>" +
-      "=(|)" +
-    "</monkey>" +
-  "</root>",
-  expect : [
-    ["opentag", {
-     "name": "root",
-     "attributes": {}
-    }],
-    ["opentag", {
-     "name": "child",
-     "attributes": {}
-    }],
-    ["opentag", {
-     "name": "haha",
-     "attributes": {}
-    }],
-    ["closetag", "haha"],
-    ["closetag", "child"],
-    ["opentag", {
-     "name": "monkey",
-     "attributes": {}
-    }],
-    ["text", "=(|)"],
-    ["closetag", "monkey"],
-    ["closetag", "root"],
-    ["end"],
-    ["ready"]
-  ],
-  strict : true,
-  opt : {}
-});
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child.js
deleted file mode 100644
index bc6b52b..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-child.js
+++ /dev/null
@@ -1,40 +0,0 @@
-
-require(__dirname).test({
-  xml :
-  "<root>"+
-    "<child>" +
-      "<haha />" +
-    "</child>" +
-    "<monkey>" +
-      "=(|)" +
-    "</monkey>" +
-  "</root>",
-  expect : [
-    ["opentag", {
-     "name": "ROOT",
-     "attributes": {}
-    }],
-    ["opentag", {
-     "name": "CHILD",
-     "attributes": {}
-    }],
-    ["opentag", {
-     "name": "HAHA",
-     "attributes": {}
-    }],
-    ["closetag", "HAHA"],
-    ["closetag", "CHILD"],
-    ["opentag", {
-     "name": "MONKEY",
-     "attributes": {}
-    }],
-    ["text", "=(|)"],
-    ["closetag", "MONKEY"],
-    ["closetag", "ROOT"],
-    ["end"],
-    ["ready"]
-  ],
-  strict : false,
-  opt : {}
-});
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-tag.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-tag.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-tag.js
deleted file mode 100644
index b2c5736..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/self-closing-tag.js
+++ /dev/null
@@ -1,25 +0,0 @@
-
-require(__dirname).test({
-  xml :
-  "<root>   "+
-    "<haha /> "+
-    "<haha/>  "+
-    "<monkey> "+
-      "=(|)     "+
-    "</monkey>"+
-  "</root>  ",
-  expect : [
-    ["opentag", {name:"ROOT", attributes:{}}],
-    ["opentag", {name:"HAHA", attributes:{}}],
-    ["closetag", "HAHA"],
-    ["opentag", {name:"HAHA", attributes:{}}],
-    ["closetag", "HAHA"],
-    // ["opentag", {name:"HAHA", attributes:{}}],
-    // ["closetag", "HAHA"],
-    ["opentag", {name:"MONKEY", attributes:{}}],
-    ["text", "=(|)"],
-    ["closetag", "MONKEY"],
-    ["closetag", "ROOT"]
-  ],
-  opt : { trim : true }
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/stray-ending.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/stray-ending.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/stray-ending.js
deleted file mode 100644
index 6b0aa7f..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/stray-ending.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// stray ending tags should just be ignored in non-strict mode.
-// https://github.com/isaacs/sax-js/issues/32
-require(__dirname).test
-  ( { xml :
-      "<a><b></c></b></a>"
-    , expect :
-      [ [ "opentag", { name: "A", attributes: {} } ]
-      , [ "opentag", { name: "B", attributes: {} } ]
-      , [ "text", "</c>" ]
-      , [ "closetag", "B" ]
-      , [ "closetag", "A" ]
-      ]
-    , strict : false
-    , opt : {}
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/trailing-non-whitespace.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/trailing-non-whitespace.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/trailing-non-whitespace.js
deleted file mode 100644
index 3e1fb2e..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/trailing-non-whitespace.js
+++ /dev/null
@@ -1,17 +0,0 @@
-
-require(__dirname).test({
-  xml : "<span>Welcome,</span> to monkey land",
-  expect : [
-    ["opentag", {
-     "name": "SPAN",
-     "attributes": {}
-    }],
-    ["text", "Welcome,"],
-    ["closetag", "SPAN"],
-    ["text", " to monkey land"],
-    ["end"],
-    ["ready"]
-  ],
-  strict : false,
-  opt : {}
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/unquoted.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/unquoted.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/unquoted.js
deleted file mode 100644
index 79f1d0b..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/unquoted.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// unquoted attributes should be ok in non-strict mode
-// https://github.com/isaacs/sax-js/issues/31
-require(__dirname).test
-  ( { xml :
-      "<span class=test hello=world></span>"
-    , expect :
-      [ [ "attribute", { name: "class", value: "test" } ]
-      , [ "attribute", { name: "hello", value: "world" } ]
-      , [ "opentag", { name: "SPAN",
-                       attributes: { class: "test", hello: "world" } } ]
-      , [ "closetag", "SPAN" ]
-      ]
-    , strict : false
-    , opt : {}
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-issue-41.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-issue-41.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-issue-41.js
deleted file mode 100644
index 596d82b..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-issue-41.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var t = require(__dirname)
-
-  , xmls = // should be the same both ways.
-    [ "<parent xmlns:a='http://ATTRIBUTE' a:attr='value' />"
-    , "<parent a:attr='value' xmlns:a='http://ATTRIBUTE' />" ]
-
-  , ex1 =
-    [ [ "opennamespace"
-      , { prefix: "a"
-        , uri: "http://ATTRIBUTE"
-        }
-      ]
-    , [ "attribute"
-      , { name: "xmlns:a"
-        , value: "http://ATTRIBUTE"
-        , prefix: "xmlns"
-        , local: "a"
-        , uri: "http://www.w3.org/2000/xmlns/"
-        }
-      ]
-    , [ "attribute"
-      , { name: "a:attr"
-        , local: "attr"
-        , prefix: "a"
-        , uri: "http://ATTRIBUTE"
-        , value: "value"
-        }
-      ]
-    , [ "opentag"
-      , { name: "parent"
-        , uri: ""
-        , prefix: ""
-        , local: "parent"
-        , attributes:
-          { "a:attr":
-            { name: "a:attr"
-            , local: "attr"
-            , prefix: "a"
-            , uri: "http://ATTRIBUTE"
-            , value: "value"
-            }
-          , "xmlns:a":
-            { name: "xmlns:a"
-            , local: "a"
-            , prefix: "xmlns"
-            , uri: "http://www.w3.org/2000/xmlns/"
-            , value: "http://ATTRIBUTE"
-            }
-          }
-        , ns: {"a": "http://ATTRIBUTE"}
-        }
-      ]
-    , ["closetag", "parent"]
-    , ["closenamespace", { prefix: "a", uri: "http://ATTRIBUTE" }]
-    ]
-
-  // swap the order of elements 2 and 1
-  , ex2 = [ex1[0], ex1[2], ex1[1]].concat(ex1.slice(3))
-  , expected = [ex1, ex2]
-
-xmls.forEach(function (x, i) {
-  t.test({ xml: x
-         , expect: expected[i]
-         , strict: true
-         , opt: { xmlns: true }
-         })
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-rebinding.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-rebinding.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-rebinding.js
deleted file mode 100644
index f464876..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-rebinding.js
+++ /dev/null
@@ -1,59 +0,0 @@
-
-require(__dirname).test
-  ( { xml :
-      "<root xmlns:x='x1' xmlns:y='y1' x:a='x1' y:a='y1'>"+
-        "<rebind xmlns:x='x2'>"+
-          "<check x:a='x2' y:a='y1'/>"+
-        "</rebind>"+
-        "<check x:a='x1' y:a='y1'/>"+
-      "</root>"
-
-    , expect :
-      [ [ "opennamespace", { prefix: "x", uri: "x1" } ]
-      , [ "opennamespace", { prefix: "y", uri: "y1" } ]
-      , [ "attribute", { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
-      , [ "attribute", { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } ]
-      , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
-      , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
-      , [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
-            attributes: { "xmlns:x": { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" }
-                        , "xmlns:y": { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" }
-                        , "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
-                        , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
-            ns: { x: 'x1', y: 'y1' } } ]
-
-      , [ "opennamespace", { prefix: "x", uri: "x2" } ]
-      , [ "attribute", { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
-      , [ "opentag", { name: "rebind", uri: "", prefix: "", local: "rebind",
-            attributes: { "xmlns:x": { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } },
-            ns: { x: 'x2' } } ]
-
-      , [ "attribute", { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } ]
-      , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
-      , [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
-            attributes: { "x:a": { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" }
-                        , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
-            ns: { x: 'x2' } } ]
-
-      , [ "closetag", "check" ]
-
-      , [ "closetag", "rebind" ]
-      , [ "closenamespace", { prefix: "x", uri: "x2" } ]
-
-      , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
-      , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
-      , [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
-            attributes: { "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
-                        , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
-            ns: { x: 'x1', y: 'y1' } } ]
-      , [ "closetag", "check" ]
-
-      , [ "closetag", "root" ]
-      , [ "closenamespace", { prefix: "x", uri: "x1" } ]
-      , [ "closenamespace", { prefix: "y", uri: "y1" } ]
-      ]
-    , strict : true
-    , opt : { xmlns: true }
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-strict.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-strict.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-strict.js
deleted file mode 100644
index 4ad615b..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-strict.js
+++ /dev/null
@@ -1,71 +0,0 @@
-
-require(__dirname).test
-  ( { xml :
-      "<root>"+
-        "<plain attr='normal'/>"+
-        "<ns1 xmlns='uri:default'>"+
-          "<plain attr='normal'/>"+
-        "</ns1>"+
-        "<ns2 xmlns:a='uri:nsa'>"+
-          "<plain attr='normal'/>"+
-          "<a:ns a:attr='namespaced'/>"+
-        "</ns2>"+
-      "</root>"
-
-    , expect :
-      [ [ "opentag", { name: "root", prefix: "", local: "root", uri: "",
-            attributes: {}, ns: {} } ]
-
-      , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
-      , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
-            attributes: { "attr": { name: "attr", value: "normal", uri: "", prefix: "", local: "attr", uri: "" } },
-            ns: {} } ]
-      , [ "closetag", "plain" ]
-
-      , [ "opennamespace", { prefix: "", uri: "uri:default" } ]
-
-      , [ "attribute", { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } ]
-      , [ "opentag", { name: "ns1", prefix: "", local: "ns1", uri: "uri:default",
-            attributes: { "xmlns": { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } },
-            ns: { "": "uri:default" } } ]
-
-      , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } ]
-      , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "uri:default", ns: { '': 'uri:default' },
-            attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } } } ]
-      , [ "closetag", "plain" ]
-
-      , [ "closetag", "ns1" ]
-
-      , [ "closenamespace", { prefix: "", uri: "uri:default" } ]
-
-      , [ "opennamespace", { prefix: "a", uri: "uri:nsa" } ]
-
-      , [ "attribute", { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } ]
-
-      , [ "opentag", { name: "ns2", prefix: "", local: "ns2", uri: "",
-            attributes: { "xmlns:a": { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } },
-            ns: { a: "uri:nsa" } } ]
-
-      , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
-      , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
-            attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } },
-            ns: { a: 'uri:nsa' } } ]
-      , [ "closetag", "plain" ]
-
-      , [ "attribute", { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } ]
-      , [ "opentag", { name: "a:ns", prefix: "a", local: "ns", uri: "uri:nsa",
-            attributes: { "a:attr": { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } },
-            ns: { a: 'uri:nsa' } } ]
-      , [ "closetag", "a:ns" ]
-
-      , [ "closetag", "ns2" ]
-
-      , [ "closenamespace", { prefix: "a", uri: "uri:nsa" } ]
-
-      , [ "closetag", "root" ]
-      ]
-    , strict : true
-    , opt : { xmlns: true }
-    }
-  )
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-unbound.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-unbound.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-unbound.js
deleted file mode 100644
index 2944b87..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-unbound.js
+++ /dev/null
@@ -1,15 +0,0 @@
-
-require(__dirname).test(
-  { strict : true
-  , opt : { xmlns: true }
-  , expect :
-    [ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"]
-
-    , [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ]
-    , [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
-          attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } },
-          ns: {} } ]
-    , [ "closetag", "root" ]
-    ]
-  }
-).write("<root unbound:attr='value'/>")

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js
deleted file mode 100644
index 16da771..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js
+++ /dev/null
@@ -1,35 +0,0 @@
-require(__dirname).test(
-  { xml : "<root xml:lang='en'/>"
-  , expect :
-    [ [ "attribute"
-      , { name: "xml:lang"
-        , local: "lang"
-        , prefix: "xml"
-        , uri: "http://www.w3.org/XML/1998/namespace"
-        , value: "en"
-        }
-      ]
-    , [ "opentag"
-      , { name: "root"
-        , uri: ""
-        , prefix: ""
-        , local: "root"
-        , attributes:
-          { "xml:lang":
-            { name: "xml:lang"
-            , local: "lang"
-            , prefix: "xml"
-            , uri: "http://www.w3.org/XML/1998/namespace"
-            , value: "en"
-            }
-          }
-        , ns: {}
-        }
-      ]
-    , ["closetag", "root"]
-    ]
-  , strict : true
-  , opt : { xmlns: true }
-  }
-)
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix.js
deleted file mode 100644
index 9a1ce1b..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-prefix.js
+++ /dev/null
@@ -1,20 +0,0 @@
-require(__dirname).test(
-  { xml : "<xml:root/>"
-  , expect :
-    [
-      [ "opentag"
-      , { name: "xml:root"
-        , uri: "http://www.w3.org/XML/1998/namespace"
-        , prefix: "xml"
-        , local: "root"
-        , attributes: {}
-        , ns: {}
-        }
-      ]
-    , ["closetag", "xml:root"]
-    ]
-  , strict : true
-  , opt : { xmlns: true }
-  }
-)
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-redefine.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-redefine.js b/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-redefine.js
deleted file mode 100644
index 1eba9c7..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/test/xmlns-xml-default-redefine.js
+++ /dev/null
@@ -1,40 +0,0 @@
-require(__dirname).test(
-  { xml : "<xml:root xmlns:xml='ERROR'/>"
-  , expect :
-    [ ["error"
-      , "xml: prefix must be bound to http://www.w3.org/XML/1998/namespace\n"
-                        + "Actual: ERROR\n"
-      + "Line: 0\nColumn: 27\nChar: '"
-      ]
-    , [ "attribute"
-      , { name: "xmlns:xml"
-        , local: "xml"
-        , prefix: "xmlns"
-        , uri: "http://www.w3.org/2000/xmlns/"
-        , value: "ERROR"
-        }
-      ]
-    , [ "opentag"
-      , { name: "xml:root"
-        , uri: "http://www.w3.org/XML/1998/namespace"
-        , prefix: "xml"
-        , local: "root"
-        , attributes:
-          { "xmlns:xml":
-            { name: "xmlns:xml"
-            , local: "xml"
-            , prefix: "xmlns"
-            , uri: "http://www.w3.org/2000/xmlns/"
-            , value: "ERROR"
-            }
-          }
-        , ns: {}
-        }
-      ]
-    , ["closetag", "xml:root"]
-    ]
-  , strict : true
-  , opt : { xmlns: true }
-  }
-)
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/package.json b/blackberry10/node_modules/elementtree/package.json
deleted file mode 100644
index 749a8d7..0000000
--- a/blackberry10/node_modules/elementtree/package.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "author": {
-    "name": "Rackspace US, Inc."
-  },
-  "contributors": [
-    {
-      "name": "Paul Querna",
-      "email": "paul.querna@rackspace.com"
-    },
-    {
-      "name": "Tomaz Muraus",
-      "email": "tomaz.muraus@rackspace.com"
-    }
-  ],
-  "name": "elementtree",
-  "description": "XML Serialization and Parsing module based on Python's ElementTree.",
-  "version": "0.1.5",
-  "keywords": [
-    "xml",
-    "sax",
-    "parser",
-    "seralization",
-    "elementtree"
-  ],
-  "homepage": "https://github.com/racker/node-elementtree",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/racker/node-elementtree.git"
-  },
-  "main": "lib/elementtree.js",
-  "directories": {
-    "lib": "lib"
-  },
-  "scripts": {
-    "test": "make test"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
-  },
-  "dependencies": {
-    "sax": "0.3.5"
-  },
-  "devDependencies": {
-    "whiskey": "0.6.8"
-  },
-  "licenses": [
-    {
-      "type": "Apache",
-      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
-    }
-  ],
-  "readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n    $ npm install elementtree\n    \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nBuild status\n====================\n\n[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\
 n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/racker/node-elementtree/issues"
-  },
-  "_id": "elementtree@0.1.5",
-  "_from": "elementtree@0.1.5"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/tests/data/xml1.xml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/tests/data/xml1.xml b/blackberry10/node_modules/elementtree/tests/data/xml1.xml
deleted file mode 100644
index 72c33ae..0000000
--- a/blackberry10/node_modules/elementtree/tests/data/xml1.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<container name="test_container_1" xmlns:android="http://schemas.android.com/apk/res/android">
-  <object>dd
-    <name>test_object_1</name>
-    <hash>4281c348eaf83e70ddce0e07221c3d28</hash>
-    <bytes android:type="cool">14</bytes>
-    <content_type>application/octetstream</content_type>
-    <last_modified>2009-02-03T05:26:32.612278</last_modified>
-  </object>
-  <object>
-    <name>test_object_2</name>
-    <hash>b039efe731ad111bc1b0ef221c3849d0</hash>
-    <bytes android:type="lame">64</bytes>
-    <content_type>application/octetstream</content_type>
-    <last_modified>2009-02-03T05:26:32.612278</last_modified>
-  </object>
-</container>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/tests/data/xml2.xml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/tests/data/xml2.xml b/blackberry10/node_modules/elementtree/tests/data/xml2.xml
deleted file mode 100644
index 5f94bbd..0000000
--- a/blackberry10/node_modules/elementtree/tests/data/xml2.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-<object>
-    <title>
-        Hello World
-    </title>
-    <children>
-        <object id="obj1" />
-        <object id="obj2" />
-        <object id="obj3" />
-    </children>
-    <text><![CDATA[
-        Test & Test & Test
-    ]]></text>
-</object>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/tests/test-simple.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/tests/test-simple.js b/blackberry10/node_modules/elementtree/tests/test-simple.js
deleted file mode 100644
index 2ab0b7b..0000000
--- a/blackberry10/node_modules/elementtree/tests/test-simple.js
+++ /dev/null
@@ -1,299 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var fs = require('fs');
-var path = require('path');
-
-var sprintf = require('./../lib/sprintf').sprintf;
-var et = require('elementtree');
-var XML = et.XML;
-var ElementTree = et.ElementTree;
-var Element = et.Element;
-var SubElement = et.SubElement;
-var SyntaxError = require('./../lib/errors').SyntaxError;
-
-function readFile(name) {
-  return fs.readFileSync(path.join(__dirname, '/data/', name), 'utf8');
-}
-
-exports['test_simplest'] = function(test, assert) {
-  /* Ported from <https://github.com/lxml/lxml/blob/master/src/lxml/tests/test_elementtree.py> */
-  var Element = et.Element;
-  var root = Element('root');
-  root.append(Element('one'));
-  root.append(Element('two'));
-  root.append(Element('three'));
-  assert.equal(3, root.len());
-  assert.equal('one', root.getItem(0).tag);
-  assert.equal('two', root.getItem(1).tag);
-  assert.equal('three', root.getItem(2).tag);
-  test.finish();
-};
-
-
-exports['test_attribute_values'] = function(test, assert) {
-  var XML = et.XML;
-  var root = XML('<doc alpha="Alpha" beta="Beta" gamma="Gamma"/>');
-  assert.equal('Alpha', root.attrib['alpha']);
-  assert.equal('Beta', root.attrib['beta']);
-  assert.equal('Gamma', root.attrib['gamma']);
-  test.finish();
-};
-
-
-exports['test_findall'] = function(test, assert) {
-  var XML = et.XML;
-  var root = XML('<a><b><c/></b><b/><c><b/></c></a>');
-
-  assert.equal(root.findall("c").length, 1);
-  assert.equal(root.findall(".//c").length, 2);
-  assert.equal(root.findall(".//b").length, 3);
-  assert.equal(root.findall(".//b")[0]._children.length, 1);
-  assert.equal(root.findall(".//b")[1]._children.length, 0);
-  assert.equal(root.findall(".//b")[2]._children.length, 0);
-  assert.deepEqual(root.findall('.//b')[0], root.getchildren()[0]);
-
-  test.finish();
-};
-
-exports['test_find'] = function(test, assert) {
-  var a = Element('a');
-  var b = SubElement(a, 'b');
-  var c = SubElement(a, 'c');
-
-  assert.deepEqual(a.find('./b/..'), a);
-  test.finish();
-};
-
-exports['test_elementtree_find_qname'] = function(test, assert) {
-  var tree = new et.ElementTree(XML('<a><b><c/></b><b/><c><b/></c></a>'));
-  assert.deepEqual(tree.find(new et.QName('c')), tree.getroot()._children[2]);
-  test.finish();
-};
-
-exports['test_attrib_ns_clear'] = function(test, assert) {
-  var attribNS = '{http://foo/bar}x';
-
-  var par = Element('par');
-  par.set(attribNS, 'a');
-  var child = SubElement(par, 'child');
-  child.set(attribNS, 'b');
-
-  assert.equal('a', par.get(attribNS));
-  assert.equal('b', child.get(attribNS));
-
-  par.clear();
-  assert.equal(null, par.get(attribNS));
-  assert.equal('b', child.get(attribNS));
-  test.finish();
-};
-
-exports['test_create_tree_and_parse_simple'] = function(test, assert) {
-  var i = 0;
-  var e = new Element('bar', {});
-  var expected = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<bar><blah a="11" /><blah a="12" /><gag a="13" b="abc">ponies</gag></bar>';
-
-  SubElement(e, "blah", {a: 11});
-  SubElement(e, "blah", {a: 12});
-  var se = et.SubElement(e, "gag", {a: '13', b: 'abc'});
-  se.text = 'ponies';
-
-  se.itertext(function(text) {
-    assert.equal(text, 'ponies');
-    i++;
-  });
-
-  assert.equal(i, 1);
-  var etree = new ElementTree(e);
-  var xml = etree.write();
-  assert.equal(xml, expected);
-  test.finish();
-};
-
-exports['test_write_with_options'] = function(test, assert) {
-  var i = 0;
-  var e = new Element('bar', {});
-  var expected1 = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<bar>\n' +
-    '    <blah a="11">\n' +
-    '        <baz d="11">test</baz>\n' +
-    '    </blah>\n' +
-    '    <blah a="12" />\n' +
-    '    <gag a="13" b="abc">ponies</gag>\n' +
-    '</bar>\n';
-    var expected2 = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<bar>\n' +
-    '  <blah a="11">\n' +
-    '    <baz d="11">test</baz>\n' +
-    '  </blah>\n' +
-    '  <blah a="12" />\n' +
-    '  <gag a="13" b="abc">ponies</gag>\n' +
-    '</bar>\n';
-
-    var expected3 = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<object>\n' +
-    '    <title>\n' +
-    '        Hello World\n' +
-    '    </title>\n' +
-    '    <children>\n' +
-    '        <object id="obj1" />\n' +
-    '        <object id="obj2" />\n' +
-    '        <object id="obj3" />\n' +
-    '    </children>\n' +
-    '    <text>\n' +
-    '        Test &amp; Test &amp; Test\n' +
-    '    </text>\n' +
-    '</object>\n';
-
-  var se1 = SubElement(e, "blah", {a: 11});
-  var se2 = SubElement(se1, "baz", {d: 11});
-  se2.text = 'test';
-  SubElement(e, "blah", {a: 12});
-  var se = et.SubElement(e, "gag", {a: '13', b: 'abc'});
-  se.text = 'ponies';
-
-  se.itertext(function(text) {
-    assert.equal(text, 'ponies');
-    i++;
-  });
-
-  assert.equal(i, 1);
-  var etree = new ElementTree(e);
-  var xml1 = etree.write({'indent': 4});
-  var xml2 = etree.write({'indent': 2});
-  assert.equal(xml1, expected1);
-  assert.equal(xml2, expected2);
-
-  var file = readFile('xml2.xml');
-  var etree2 = et.parse(file);
-  var xml3 = etree2.write({'indent': 4});
-  assert.equal(xml3, expected3);
-  test.finish();
-};
-
-exports['test_parse_and_find_2'] = function(test, assert) {
-  var data = readFile('xml1.xml');
-  var etree = et.parse(data);
-
-  assert.equal(etree.findall('./object').length, 2);
-  assert.equal(etree.findall('[@name]').length, 1);
-  assert.equal(etree.findall('[@name="test_container_1"]').length, 1);
-  assert.equal(etree.findall('[@name=\'test_container_1\']').length, 1);
-  assert.equal(etree.findall('./object')[0].findtext('name'), 'test_object_1');
-  assert.equal(etree.findtext('./object/name'), 'test_object_1');
-  assert.equal(etree.findall('.//bytes').length, 2);
-  assert.equal(etree.findall('*/bytes').length, 2);
-  assert.equal(etree.findall('*/foobar').length, 0);
-
-  test.finish();
-};
-
-exports['test_namespaced_attribute'] = function(test, assert) {
-  var data = readFile('xml1.xml');
-  var etree = et.parse(data);
-
-  assert.equal(etree.findall('*/bytes[@android:type="cool"]').length, 1);
-
-  test.finish();
-}
-
-exports['test_syntax_errors'] = function(test, assert) {
-  var expressions = [ './/@bar', '[@bar', '[@foo=bar]', '[@', '/bar' ];
-  var errCount = 0;
-  var data = readFile('xml1.xml');
-  var etree = et.parse(data);
-
-  expressions.forEach(function(expression) {
-    try {
-      etree.findall(expression);
-    }
-    catch (err) {
-      errCount++;
-    }
-  });
-
-  assert.equal(errCount, expressions.length);
-  test.finish();
-};
-
-exports['test_register_namespace'] = function(test, assert){
-  var prefix = 'TESTPREFIX';
-  var namespace = 'http://seriously.unknown/namespace/URI';
-  var errCount = 0;
-
-  var etree = Element(sprintf('{%s}test', namespace));
-  assert.equal(et.tostring(etree, { 'xml_declaration': false}),
-               sprintf('<ns0:test xmlns:ns0="%s" />', namespace));
-
-  et.register_namespace(prefix, namespace);
-  var etree = Element(sprintf('{%s}test', namespace));
-  assert.equal(et.tostring(etree, { 'xml_declaration': false}),
-               sprintf('<%s:test xmlns:%s="%s" />', prefix, prefix, namespace));
-
-  try {
-    et.register_namespace('ns25', namespace);
-  }
-  catch (err) {
-    errCount++;
-  }
-
-  assert.equal(errCount, 1, 'Reserved prefix used, but exception was not thrown');
-  test.finish();
-};
-
-exports['test_tostring'] = function(test, assert) {
-  var a = Element('a');
-  var b = SubElement(a, 'b');
-  var c = SubElement(a, 'c');
-  c.text = 543;
-
-  assert.equal(et.tostring(a, { 'xml_declaration': false }), '<a><b /><c>543</c></a>');
-  assert.equal(et.tostring(c, { 'xml_declaration': false }), '<c>543</c>');
-  test.finish();
-};
-
-exports['test_escape'] = function(test, assert) {
-  var a = Element('a');
-  var b = SubElement(a, 'b');
-  b.text = '&&&&<>"\n\r';
-
-  assert.equal(et.tostring(a, { 'xml_declaration': false }), '<a><b>&amp;&amp;&amp;&amp;&lt;&gt;\"\n\r</b></a>');
-  test.finish();
-};
-
-exports['test_find_null'] = function(test, assert) {
-  var root = Element('root');
-  var node = SubElement(root, 'node');
-  var leaf  = SubElement(node, 'leaf');
-  leaf.text = 'ipsum';
-
-  assert.equal(root.find('node/leaf'), leaf);
-  assert.equal(root.find('no-such-node/leaf'), null);
-  test.finish();
-};
-
-exports['test_findtext_null'] = function(test, assert) {
-  var root = Element('root');
-  var node = SubElement(root, 'node');
-  var leaf  = SubElement(node, 'leaf');
-  leaf.text = 'ipsum';
-
-  assert.equal(root.findtext('node/leaf'), 'ipsum');
-  assert.equal(root.findtext('no-such-node/leaf'), null);
-  test.finish();
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/.jshintrc
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/.jshintrc b/blackberry10/node_modules/exit/.jshintrc
deleted file mode 100644
index 2b7e39b..0000000
--- a/blackberry10/node_modules/exit/.jshintrc
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "curly": true,
-  "eqeqeq": true,
-  "immed": true,
-  "latedef": "nofunc",
-  "newcap": true,
-  "noarg": true,
-  "sub": true,
-  "undef": true,
-  "unused": true,
-  "boss": true,
-  "eqnull": true,
-  "node": true
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/.npmignore b/blackberry10/node_modules/exit/.npmignore
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/.travis.yml b/blackberry10/node_modules/exit/.travis.yml
deleted file mode 100644
index 42d4302..0000000
--- a/blackberry10/node_modules/exit/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-node_js:
-  - 0.8
-  - '0.10'
-before_script:
-  - npm install -g grunt-cli

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/Gruntfile.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/Gruntfile.js b/blackberry10/node_modules/exit/Gruntfile.js
deleted file mode 100644
index ff37751..0000000
--- a/blackberry10/node_modules/exit/Gruntfile.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-module.exports = function(grunt) {
-
-  // Project configuration.
-  grunt.initConfig({
-    nodeunit: {
-      files: ['test/**/*_test.js'],
-    },
-    jshint: {
-      options: {
-        jshintrc: '.jshintrc'
-      },
-      gruntfile: {
-        src: 'Gruntfile.js'
-      },
-      lib: {
-        src: ['lib/**/*.js']
-      },
-      test: {
-        src: ['test/**/*.js']
-      },
-    },
-    watch: {
-      gruntfile: {
-        files: '<%= jshint.gruntfile.src %>',
-        tasks: ['jshint:gruntfile']
-      },
-      lib: {
-        files: '<%= jshint.lib.src %>',
-        tasks: ['jshint:lib', 'nodeunit']
-      },
-      test: {
-        files: '<%= jshint.test.src %>',
-        tasks: ['jshint:test', 'nodeunit']
-      },
-    },
-  });
-
-  // These plugins provide necessary tasks.
-  grunt.loadNpmTasks('grunt-contrib-nodeunit');
-  grunt.loadNpmTasks('grunt-contrib-jshint');
-  grunt.loadNpmTasks('grunt-contrib-watch');
-
-  // Default task.
-  grunt.registerTask('default', ['jshint', 'nodeunit']);
-
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/LICENSE-MIT
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/LICENSE-MIT b/blackberry10/node_modules/exit/LICENSE-MIT
deleted file mode 100644
index bb2aad6..0000000
--- a/blackberry10/node_modules/exit/LICENSE-MIT
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2013 "Cowboy" Ben Alman
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/README.md b/blackberry10/node_modules/exit/README.md
deleted file mode 100644
index a022301..0000000
--- a/blackberry10/node_modules/exit/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# exit [![Build Status](https://secure.travis-ci.org/cowboy/node-exit.png?branch=master)](http://travis-ci.org/cowboy/node-exit)
-
-A replacement for process.exit that ensures stdio are fully drained before exiting.
-
-To make a long story short, if `process.exit` is called on Windows, script output is often truncated when pipe-redirecting `stdout` or `stderr`. This module attempts to work around this issue by waiting until those streams have been completely drained before actually calling `process.exit`.
-
-See [Node.js issue #3584](https://github.com/joyent/node/issues/3584) for further reference.
-
-Tested in OS X 10.8, Windows 7 on Node.js 0.8.25 and 0.10.18.
-
-Based on some code by [@vladikoff](https://github.com/vladikoff).
-
-## Getting Started
-Install the module with: `npm install exit`
-
-```javascript
-var exit = require('exit');
-
-// These lines should appear in the output, EVEN ON WINDOWS.
-console.log("omg");
-console.error("yay");
-
-// process.exit(5);
-exit(5);
-
-// These lines shouldn't appear in the output.
-console.log("wtf");
-console.error("bro");
-```
-
-## Don't believe me? Try it for yourself.
-
-In Windows, clone the repo and cd to the `test\fixtures` directory. The only difference between [log.js](test/fixtures/log.js) and [log-broken.js](test/fixtures/log-broken.js) is that the former uses `exit` while the latter calls `process.exit` directly.
-
-This test was done using cmd.exe, but you can see the same results using `| grep "std"` in either PowerShell or git-bash.
-
-```
-C:\node-exit\test\fixtures>node log.js 0 10 stdout stderr 2>&1 | find "std"
-stdout 0
-stderr 0
-stdout 1
-stderr 1
-stdout 2
-stderr 2
-stdout 3
-stderr 3
-stdout 4
-stderr 4
-stdout 5
-stderr 5
-stdout 6
-stderr 6
-stdout 7
-stderr 7
-stdout 8
-stderr 8
-stdout 9
-stderr 9
-
-C:\node-exit\test\fixtures>node log-broken.js 0 10 stdout stderr 2>&1 | find "std"
-
-C:\node-exit\test\fixtures>
-```
-
-## Contributing
-In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).
-
-## Release History
-2013-09-26 - v0.1.1 - Fixed some bugs. It seems to actually work now!  
-2013-09-20 - v0.1.0 - Initial release.
-
-## License
-Copyright (c) 2013 "Cowboy" Ben Alman  
-Licensed under the MIT license.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/lib/exit.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/lib/exit.js b/blackberry10/node_modules/exit/lib/exit.js
deleted file mode 100644
index 3c411ed..0000000
--- a/blackberry10/node_modules/exit/lib/exit.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * exit
- * https://github.com/cowboy/node-exit
- *
- * Copyright (c) 2013 "Cowboy" Ben Alman
- * Licensed under the MIT license.
- */
-
-'use strict';
-
-module.exports = function exit(exitCode, streams) {
-  if (!streams) { streams = [process.stdout, process.stderr]; }
-  var drainCount = 0;
-  // Actually exit if all streams are drained.
-  function tryToExit() {
-    if (drainCount === streams.length) {
-      process.exit(exitCode);
-    }
-  }
-  streams.forEach(function(stream) {
-    // Prevent further writing.
-    stream.write = function() {};
-    // Count drained streams now, but monitor non-drained streams.
-    if (stream.bufferSize === 0) {
-      drainCount++;
-    } else {
-      stream.once('drain', function() {
-        drainCount++;
-        tryToExit();
-      });
-    }
-  });
-  // If all streams were already drained, exit now.
-  tryToExit();
-  // In Windows, when run as a Node.js child process, a script utilizing
-  // this library might just exit with a 0 exit code, regardless. This code,
-  // despite the fact that it looks a bit crazy, appears to fix that.
-  process.on('exit', function() {
-    process.exit(exitCode);
-  });
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/package.json b/blackberry10/node_modules/exit/package.json
deleted file mode 100644
index 0c6977a..0000000
--- a/blackberry10/node_modules/exit/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "name": "exit",
-  "description": "A replacement for process.exit that ensures stdio are fully drained before exiting.",
-  "version": "0.1.1",
-  "homepage": "https://github.com/cowboy/node-exit",
-  "author": {
-    "name": "\"Cowboy\" Ben Alman",
-    "url": "http://benalman.com/"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/cowboy/node-exit.git"
-  },
-  "bugs": {
-    "url": "https://github.com/cowboy/node-exit/issues"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "https://github.com/cowboy/node-exit/blob/master/LICENSE-MIT"
-    }
-  ],
-  "main": "lib/exit",
-  "engines": {
-    "node": ">= 0.8.0"
-  },
-  "scripts": {
-    "test": "grunt nodeunit"
-  },
-  "devDependencies": {
-    "grunt-contrib-jshint": "~0.6.4",
-    "grunt-contrib-nodeunit": "~0.2.0",
-    "grunt-contrib-watch": "~0.5.3",
-    "grunt": "~0.4.1",
-    "which": "~1.0.5"
-  },
-  "keywords": [
-    "exit",
-    "process",
-    "stdio",
-    "stdout",
-    "stderr",
-    "drain",
-    "flush",
-    "3584"
-  ],
-  "readme": "# exit [![Build Status](https://secure.travis-ci.org/cowboy/node-exit.png?branch=master)](http://travis-ci.org/cowboy/node-exit)\n\nA replacement for process.exit that ensures stdio are fully drained before exiting.\n\nTo make a long story short, if `process.exit` is called on Windows, script output is often truncated when pipe-redirecting `stdout` or `stderr`. This module attempts to work around this issue by waiting until those streams have been completely drained before actually calling `process.exit`.\n\nSee [Node.js issue #3584](https://github.com/joyent/node/issues/3584) for further reference.\n\nTested in OS X 10.8, Windows 7 on Node.js 0.8.25 and 0.10.18.\n\nBased on some code by [@vladikoff](https://github.com/vladikoff).\n\n## Getting Started\nInstall the module with: `npm install exit`\n\n```javascript\nvar exit = require('exit');\n\n// These lines should appear in the output, EVEN ON WINDOWS.\nconsole.log(\"omg\");\nconsole.error(\"yay\");\n\n// process.exit
 (5);\nexit(5);\n\n// These lines shouldn't appear in the output.\nconsole.log(\"wtf\");\nconsole.error(\"bro\");\n```\n\n## Don't believe me? Try it for yourself.\n\nIn Windows, clone the repo and cd to the `test\\fixtures` directory. The only difference between [log.js](test/fixtures/log.js) and [log-broken.js](test/fixtures/log-broken.js) is that the former uses `exit` while the latter calls `process.exit` directly.\n\nThis test was done using cmd.exe, but you can see the same results using `| grep \"std\"` in either PowerShell or git-bash.\n\n```\nC:\\node-exit\\test\\fixtures>node log.js 0 10 stdout stderr 2>&1 | find \"std\"\nstdout 0\nstderr 0\nstdout 1\nstderr 1\nstdout 2\nstderr 2\nstdout 3\nstderr 3\nstdout 4\nstderr 4\nstdout 5\nstderr 5\nstdout 6\nstderr 6\nstdout 7\nstderr 7\nstdout 8\nstderr 8\nstdout 9\nstderr 9\n\nC:\\node-exit\\test\\fixtures>node log-broken.js 0 10 stdout stderr 2>&1 | find \"std\"\n\nC:\\node-exit\\test\\fixtures>\n```\n\n## Contributing\nIn lieu o
 f a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n2013-09-26 - v0.1.1 - Fixed some bugs. It seems to actually work now!  \n2013-09-20 - v0.1.0 - Initial release.\n\n## License\nCopyright (c) 2013 \"Cowboy\" Ben Alman  \nLicensed under the MIT license.\n",
-  "readmeFilename": "README.md",
-  "_id": "exit@0.1.1",
-  "_from": "exit@0.1.1"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/exit_test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/exit_test.js b/blackberry10/node_modules/exit/test/exit_test.js
deleted file mode 100644
index a91afb9..0000000
--- a/blackberry10/node_modules/exit/test/exit_test.js
+++ /dev/null
@@ -1,121 +0,0 @@
-'use strict';
-
-/*
-  ======== A Handy Little Nodeunit Reference ========
-  https://github.com/caolan/nodeunit
-
-  Test methods:
-    test.expect(numAssertions)
-    test.done()
-  Test assertions:
-    test.ok(value, [message])
-    test.equal(actual, expected, [message])
-    test.notEqual(actual, expected, [message])
-    test.deepEqual(actual, expected, [message])
-    test.notDeepEqual(actual, expected, [message])
-    test.strictEqual(actual, expected, [message])
-    test.notStrictEqual(actual, expected, [message])
-    test.throws(block, [error], [message])
-    test.doesNotThrow(block, [error], [message])
-    test.ifError(value)
-*/
-
-var fs = require('fs');
-var exec = require('child_process').exec;
-
-var _which = require('which').sync;
-function which(command) {
-  try {
-    _which(command);
-    return command;
-  } catch (err) {
-    return false;
-  }
-}
-
-// Look for grep first (any OS). If not found (but on Windows) look for find,
-// which is Windows' horribly crippled grep alternative.
-var grep = which('grep') || process.platform === 'win32' && which('find');
-
-exports['exit'] = {
-  setUp: function(done) {
-    this.origCwd = process.cwd();
-    process.chdir('test/fixtures');
-    done();
-  },
-  tearDown: function(done) {
-    process.chdir(this.origCwd);
-    done();
-  },
-  'grep': function(test) {
-    test.expect(1);
-    // Many unit tests depend on this.
-    test.ok(grep, 'A suitable "grep" or "find" program was not found in the PATH.');
-    test.done();
-  },
-  // The rest of the tests are built dynamically, to keep things sane.
-};
-
-// A few helper functions.
-function normalizeLineEndings(s) {
-  return s.replace(/\r?\n/g, '\n');
-}
-
-// Capture command output, normalizing captured stdout to unix file endings.
-function run(command, callback) {
-  exec(command, function(error, stdout) {
-    callback(error ? error.code : 0, normalizeLineEndings(stdout));
-  });
-}
-
-// Read a fixture file, normalizing file contents to unix file endings.
-function fixture(filename) {
-  return normalizeLineEndings(String(fs.readFileSync(filename)));
-}
-
-function buildTests() {
-  // Build individual unit tests for command output.
-  var counts = [10, 100, 1000];
-  var outputs = [' stdout stderr', ' stdout', ' stderr'];
-  var pipes = ['', ' | ' + grep + ' "std"'];
-  counts.forEach(function(count) {
-    outputs.forEach(function(output) {
-      pipes.forEach(function(pipe) {
-        var command = 'node log.js 0 ' + count + output + ' 2>&1' + pipe;
-        exports['exit']['output (' + command + ')'] = function(test) {
-          test.expect(2);
-          run(command, function(code, actual) {
-            var expected = fixture(count + output.replace(/ /g, '-') + '.txt');
-            // Sometimes, the actual file lines are out of order on Windows.
-            // But since the point of this lib is to drain the buffer and not
-            // guarantee output order, we only test the length.
-            test.equal(actual.length, expected.length, 'should be the same length.');
-            // The "fail" lines in log.js should NOT be output!
-            test.ok(actual.indexOf('fail') === -1, 'should not output after exit is called.');
-            test.done();
-          });
-        };
-      });
-    });
-  });
-
-  // Build individual unit tests for exit codes.
-  var codes = [0, 1, 123];
-  codes.forEach(function(code) {
-    var command = 'node log.js ' + code + ' 10 stdout stderr';
-    exports['exit']['exit code (' + command + ')'] = function(test) {
-      test.expect(1);
-      run(command, function(actual) {
-        // The specified exit code should be passed through.
-        test.equal(actual, code, 'should exit with ' + code + ' error code.');
-        test.done();
-      });
-    };
-  });
-}
-
-// Don't bother building tests if grep wasn't found, otherwise everything will
-// fail and the error will get lost.
-if (grep) {
-  buildTests();
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/10-stderr.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/10-stderr.txt b/blackberry10/node_modules/exit/test/fixtures/10-stderr.txt
deleted file mode 100644
index 2859200..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/10-stderr.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-stderr 0
-stderr 1
-stderr 2
-stderr 3
-stderr 4
-stderr 5
-stderr 6
-stderr 7
-stderr 8
-stderr 9

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/10-stdout-stderr.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/10-stdout-stderr.txt b/blackberry10/node_modules/exit/test/fixtures/10-stdout-stderr.txt
deleted file mode 100644
index 9de8616..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/10-stdout-stderr.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-stdout 0
-stderr 0
-stdout 1
-stdout 2
-stderr 1
-stdout 3
-stderr 2
-stderr 3
-stdout 4
-stderr 4
-stdout 5
-stderr 5
-stdout 6
-stderr 6
-stdout 7
-stderr 7
-stdout 8
-stderr 8
-stdout 9
-stderr 9

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/10-stdout.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/10-stdout.txt b/blackberry10/node_modules/exit/test/fixtures/10-stdout.txt
deleted file mode 100644
index 1ce90dc..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/10-stdout.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-stdout 0
-stdout 1
-stdout 2
-stdout 3
-stdout 4
-stdout 5
-stdout 6
-stdout 7
-stdout 8
-stdout 9

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/100-stderr.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/100-stderr.txt b/blackberry10/node_modules/exit/test/fixtures/100-stderr.txt
deleted file mode 100644
index 3a78c85..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/100-stderr.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-stderr 0
-stderr 1
-stderr 2
-stderr 3
-stderr 4
-stderr 5
-stderr 6
-stderr 7
-stderr 8
-stderr 9
-stderr 10
-stderr 11
-stderr 12
-stderr 13
-stderr 14
-stderr 15
-stderr 16
-stderr 17
-stderr 18
-stderr 19
-stderr 20
-stderr 21
-stderr 22
-stderr 23
-stderr 24
-stderr 25
-stderr 26
-stderr 27
-stderr 28
-stderr 29
-stderr 30
-stderr 31
-stderr 32
-stderr 33
-stderr 34
-stderr 35
-stderr 36
-stderr 37
-stderr 38
-stderr 39
-stderr 40
-stderr 41
-stderr 42
-stderr 43
-stderr 44
-stderr 45
-stderr 46
-stderr 47
-stderr 48
-stderr 49
-stderr 50
-stderr 51
-stderr 52
-stderr 53
-stderr 54
-stderr 55
-stderr 56
-stderr 57
-stderr 58
-stderr 59
-stderr 60
-stderr 61
-stderr 62
-stderr 63
-stderr 64
-stderr 65
-stderr 66
-stderr 67
-stderr 68
-stderr 69
-stderr 70
-stderr 71
-stderr 72
-stderr 73
-stderr 74
-stderr 75
-stderr 76
-stderr 77
-stderr 78
-stderr 79
-stderr 80
-stderr 81
-stderr 82
-stderr 83
-stderr 84
-stderr 85
-stderr 86
-stderr 87
-stderr 88
-stderr 89
-stderr 90
-stderr 91
-stderr 92
-stderr 93
-stderr 94
-stderr 95
-stderr 96
-stderr 97
-stderr 98
-stderr 99

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/100-stdout-stderr.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/100-stdout-stderr.txt b/blackberry10/node_modules/exit/test/fixtures/100-stdout-stderr.txt
deleted file mode 100644
index 65f35f4..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/100-stdout-stderr.txt
+++ /dev/null
@@ -1,200 +0,0 @@
-stdout 0
-stderr 0
-stdout 1
-stderr 1
-stdout 2
-stderr 2
-stdout 3
-stderr 3
-stdout 4
-stderr 4
-stdout 5
-stderr 5
-stdout 6
-stderr 6
-stdout 7
-stderr 7
-stdout 8
-stderr 8
-stdout 9
-stderr 9
-stdout 10
-stderr 10
-stdout 11
-stderr 11
-stdout 12
-stderr 12
-stdout 13
-stderr 13
-stdout 14
-stderr 14
-stdout 15
-stderr 15
-stdout 16
-stderr 16
-stdout 17
-stderr 17
-stdout 18
-stderr 18
-stdout 19
-stderr 19
-stdout 20
-stderr 20
-stdout 21
-stderr 21
-stdout 22
-stderr 22
-stdout 23
-stderr 23
-stdout 24
-stderr 24
-stdout 25
-stderr 25
-stdout 26
-stderr 26
-stdout 27
-stderr 27
-stdout 28
-stderr 28
-stdout 29
-stderr 29
-stdout 30
-stderr 30
-stdout 31
-stderr 31
-stdout 32
-stderr 32
-stdout 33
-stderr 33
-stdout 34
-stderr 34
-stdout 35
-stderr 35
-stdout 36
-stderr 36
-stdout 37
-stderr 37
-stdout 38
-stderr 38
-stdout 39
-stderr 39
-stdout 40
-stderr 40
-stdout 41
-stderr 41
-stdout 42
-stderr 42
-stdout 43
-stderr 43
-stdout 44
-stderr 44
-stdout 45
-stderr 45
-stdout 46
-stderr 46
-stdout 47
-stderr 47
-stdout 48
-stderr 48
-stdout 49
-stderr 49
-stdout 50
-stderr 50
-stdout 51
-stderr 51
-stdout 52
-stderr 52
-stdout 53
-stderr 53
-stdout 54
-stderr 54
-stdout 55
-stderr 55
-stdout 56
-stderr 56
-stdout 57
-stderr 57
-stdout 58
-stderr 58
-stdout 59
-stderr 59
-stdout 60
-stderr 60
-stdout 61
-stderr 61
-stdout 62
-stderr 62
-stdout 63
-stderr 63
-stdout 64
-stderr 64
-stdout 65
-stderr 65
-stdout 66
-stderr 66
-stdout 67
-stderr 67
-stdout 68
-stderr 68
-stdout 69
-stderr 69
-stdout 70
-stderr 70
-stdout 71
-stderr 71
-stdout 72
-stderr 72
-stdout 73
-stderr 73
-stdout 74
-stderr 74
-stdout 75
-stderr 75
-stdout 76
-stderr 76
-stdout 77
-stderr 77
-stdout 78
-stderr 78
-stdout 79
-stderr 79
-stdout 80
-stderr 80
-stdout 81
-stderr 81
-stdout 82
-stderr 82
-stdout 83
-stderr 83
-stdout 84
-stderr 84
-stdout 85
-stderr 85
-stdout 86
-stderr 86
-stdout 87
-stderr 87
-stdout 88
-stderr 88
-stdout 89
-stderr 89
-stdout 90
-stderr 90
-stdout 91
-stderr 91
-stdout 92
-stderr 92
-stdout 93
-stderr 93
-stdout 94
-stderr 94
-stdout 95
-stderr 95
-stdout 96
-stderr 96
-stdout 97
-stderr 97
-stdout 98
-stderr 98
-stdout 99
-stderr 99

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/100-stdout.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/100-stdout.txt b/blackberry10/node_modules/exit/test/fixtures/100-stdout.txt
deleted file mode 100644
index 5d9cac2..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/100-stdout.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-stdout 0
-stdout 1
-stdout 2
-stdout 3
-stdout 4
-stdout 5
-stdout 6
-stdout 7
-stdout 8
-stdout 9
-stdout 10
-stdout 11
-stdout 12
-stdout 13
-stdout 14
-stdout 15
-stdout 16
-stdout 17
-stdout 18
-stdout 19
-stdout 20
-stdout 21
-stdout 22
-stdout 23
-stdout 24
-stdout 25
-stdout 26
-stdout 27
-stdout 28
-stdout 29
-stdout 30
-stdout 31
-stdout 32
-stdout 33
-stdout 34
-stdout 35
-stdout 36
-stdout 37
-stdout 38
-stdout 39
-stdout 40
-stdout 41
-stdout 42
-stdout 43
-stdout 44
-stdout 45
-stdout 46
-stdout 47
-stdout 48
-stdout 49
-stdout 50
-stdout 51
-stdout 52
-stdout 53
-stdout 54
-stdout 55
-stdout 56
-stdout 57
-stdout 58
-stdout 59
-stdout 60
-stdout 61
-stdout 62
-stdout 63
-stdout 64
-stdout 65
-stdout 66
-stdout 67
-stdout 68
-stdout 69
-stdout 70
-stdout 71
-stdout 72
-stdout 73
-stdout 74
-stdout 75
-stdout 76
-stdout 77
-stdout 78
-stdout 79
-stdout 80
-stdout 81
-stdout 82
-stdout 83
-stdout 84
-stdout 85
-stdout 86
-stdout 87
-stdout 88
-stdout 89
-stdout 90
-stdout 91
-stdout 92
-stdout 93
-stdout 94
-stdout 95
-stdout 96
-stdout 97
-stdout 98
-stdout 99


[32/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/async/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/async/README.md b/blackberry10/node_modules/async/README.md
deleted file mode 100644
index 9ff1acf..0000000
--- a/blackberry10/node_modules/async/README.md
+++ /dev/null
@@ -1,1414 +0,0 @@
-# Async.js
-
-Async is a utility module which provides straight-forward, powerful functions
-for working with asynchronous JavaScript. Although originally designed for
-use with [node.js](http://nodejs.org), it can also be used directly in the
-browser. Also supports [component](https://github.com/component/component).
-
-Async provides around 20 functions that include the usual 'functional'
-suspects (map, reduce, filter, each…) as well as some common patterns
-for asynchronous control flow (parallel, series, waterfall…). All these
-functions assume you follow the node.js convention of providing a single
-callback as the last argument of your async function.
-
-
-## Quick Examples
-
-```javascript
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
-    // results is now an array of stats for each file
-});
-
-async.filter(['file1','file2','file3'], fs.exists, function(results){
-    // results now equals an array of the existing files
-});
-
-async.parallel([
-    function(){ ... },
-    function(){ ... }
-], callback);
-
-async.series([
-    function(){ ... },
-    function(){ ... }
-]);
-```
-
-There are many more functions available so take a look at the docs below for a
-full list. This module aims to be comprehensive, so if you feel anything is
-missing please create a GitHub issue for it.
-
-## Common Pitfalls
-
-### Binding a context to an iterator
-
-This section is really about bind, not about async. If you are wondering how to
-make async execute your iterators in a given context, or are confused as to why
-a method of another library isn't working as an iterator, study this example:
-
-```js
-// Here is a simple object with an (unnecessarily roundabout) squaring method
-var AsyncSquaringLibrary = {
-  squareExponent: 2,
-  square: function(number, callback){ 
-    var result = Math.pow(number, this.squareExponent);
-    setTimeout(function(){
-      callback(null, result);
-    }, 200);
-  }
-};
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){
-  // result is [NaN, NaN, NaN]
-  // This fails because the `this.squareExponent` expression in the square
-  // function is not evaluated in the context of AsyncSquaringLibrary, and is
-  // therefore undefined.
-});
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){
-  // result is [1, 4, 9]
-  // With the help of bind we can attach a context to the iterator before
-  // passing it to async. Now the square function will be executed in its 
-  // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`
-  // will be as expected.
-});
-```
-
-## Download
-
-The source is available for download from
-[GitHub](http://github.com/caolan/async).
-Alternatively, you can install using Node Package Manager (npm):
-
-    npm install async
-
-__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed
-
-## In the Browser
-
-So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:
-
-```html
-<script type="text/javascript" src="async.js"></script>
-<script type="text/javascript">
-
-    async.map(data, asyncProcess, function(err, results){
-        alert(results);
-    });
-
-</script>
-```
-
-## Documentation
-
-### Collections
-
-* [each](#each)
-* [map](#map)
-* [filter](#filter)
-* [reject](#reject)
-* [reduce](#reduce)
-* [detect](#detect)
-* [sortBy](#sortBy)
-* [some](#some)
-* [every](#every)
-* [concat](#concat)
-
-### Control Flow
-
-* [series](#series)
-* [parallel](#parallel)
-* [whilst](#whilst)
-* [doWhilst](#doWhilst)
-* [until](#until)
-* [doUntil](#doUntil)
-* [forever](#forever)
-* [waterfall](#waterfall)
-* [compose](#compose)
-* [applyEach](#applyEach)
-* [queue](#queue)
-* [cargo](#cargo)
-* [auto](#auto)
-* [iterator](#iterator)
-* [apply](#apply)
-* [nextTick](#nextTick)
-* [times](#times)
-* [timesSeries](#timesSeries)
-
-### Utils
-
-* [memoize](#memoize)
-* [unmemoize](#unmemoize)
-* [log](#log)
-* [dir](#dir)
-* [noConflict](#noConflict)
-
-
-## Collections
-
-<a name="forEach" />
-<a name="each" />
-### each(arr, iterator, callback)
-
-Applies an iterator function to each item in an array, in parallel.
-The iterator is called with an item from the list and a callback for when it
-has finished. If the iterator passes an error to this callback, the main
-callback for the each function is immediately called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err) which must be called once it has 
-  completed. If no error has occured, the callback should be run without 
-  arguments or with an explicit null argument.
-* callback(err) - A callback which is called after all the iterator functions
-  have finished, or an error has occurred.
-
-__Example__
-
-```js
-// assuming openFiles is an array of file names and saveFile is a function
-// to save the modified contents of that file:
-
-async.each(openFiles, saveFile, function(err){
-    // if any of the saves produced an error, err would equal that error
-});
-```
-
----------------------------------------
-
-<a name="forEachSeries" />
-<a name="eachSeries" />
-### eachSeries(arr, iterator, callback)
-
-The same as each only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. This means the iterator functions will complete in order.
-
-
----------------------------------------
-
-<a name="forEachLimit" />
-<a name="eachLimit" />
-### eachLimit(arr, limit, iterator, callback)
-
-The same as each only no more than "limit" iterators will be simultaneously 
-running at any time.
-
-Note that the items are not processed in batches, so there is no guarantee that
- the first "limit" iterator functions will complete before any others are 
-started.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* limit - The maximum number of iterators to run at any time.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err) which must be called once it has 
-  completed. If no error has occured, the callback should be run without 
-  arguments or with an explicit null argument.
-* callback(err) - A callback which is called after all the iterator functions
-  have finished, or an error has occurred.
-
-__Example__
-
-```js
-// Assume documents is an array of JSON objects and requestApi is a
-// function that interacts with a rate-limited REST api.
-
-async.eachLimit(documents, 20, requestApi, function(err){
-    // if any of the saves produced an error, err would equal that error
-});
-```
-
----------------------------------------
-
-<a name="map" />
-### map(arr, iterator, callback)
-
-Produces a new array of values by mapping each value in the given array through
-the iterator function. The iterator is called with an item from the array and a
-callback for when it has finished processing. The callback takes 2 arguments, 
-an error and the transformed item from the array. If the iterator passes an
-error to this callback, the main callback for the map function is immediately
-called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order, however
-the results array will be in the same order as the original array.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, transformed) which must be called once 
-  it has completed with an error (which can be null) and a transformed item.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array of the
-  transformed items from the original array.
-
-__Example__
-
-```js
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
-    // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-<a name="mapSeries" />
-### mapSeries(arr, iterator, callback)
-
-The same as map only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
-
----------------------------------------
-
-<a name="mapLimit" />
-### mapLimit(arr, limit, iterator, callback)
-
-The same as map only no more than "limit" iterators will be simultaneously 
-running at any time.
-
-Note that the items are not processed in batches, so there is no guarantee that
- the first "limit" iterator functions will complete before any others are 
-started.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* limit - The maximum number of iterators to run at any time.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, transformed) which must be called once 
-  it has completed with an error (which can be null) and a transformed item.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array of the
-  transformed items from the original array.
-
-__Example__
-
-```js
-async.map(['file1','file2','file3'], 1, fs.stat, function(err, results){
-    // results is now an array of stats for each file
-});
-```
-
----------------------------------------
-
-<a name="filter" />
-### filter(arr, iterator, callback)
-
-__Alias:__ select
-
-Returns a new array of all the values which pass an async truth test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists. This operation is
-performed in parallel, but the results array will be in the same order as the
-original.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(results) - A callback which is called after all the iterator
-  functions have finished.
-
-__Example__
-
-```js
-async.filter(['file1','file2','file3'], fs.exists, function(results){
-    // results now equals an array of the existing files
-});
-```
-
----------------------------------------
-
-<a name="filterSeries" />
-### filterSeries(arr, iterator, callback)
-
-__alias:__ selectSeries
-
-The same as filter only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
----------------------------------------
-
-<a name="reject" />
-### reject(arr, iterator, callback)
-
-The opposite of filter. Removes values that pass an async truth test.
-
----------------------------------------
-
-<a name="rejectSeries" />
-### rejectSeries(arr, iterator, callback)
-
-The same as reject, only the iterator is applied to each item in the array
-in series.
-
-
----------------------------------------
-
-<a name="reduce" />
-### reduce(arr, memo, iterator, callback)
-
-__aliases:__ inject, foldl
-
-Reduces a list of values into a single value using an async iterator to return
-each successive step. Memo is the initial state of the reduction. This
-function only operates in series. For performance reasons, it may make sense to
-split a call to this function into a parallel map, then use the normal
-Array.prototype.reduce on the results. This function is for situations where
-each step in the reduction needs to be async, if you can get the data before
-reducing it then it's probably a good idea to do so.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* memo - The initial state of the reduction.
-* iterator(memo, item, callback) - A function applied to each item in the
-  array to produce the next step in the reduction. The iterator is passed a
-  callback(err, reduction) which accepts an optional error as its first 
-  argument, and the state of the reduction as the second. If an error is 
-  passed to the callback, the reduction is stopped and the main callback is 
-  immediately called with the error.
-* callback(err, result) - A callback which is called after all the iterator
-  functions have finished. Result is the reduced value.
-
-__Example__
-
-```js
-async.reduce([1,2,3], 0, function(memo, item, callback){
-    // pointless async:
-    process.nextTick(function(){
-        callback(null, memo + item)
-    });
-}, function(err, result){
-    // result is now equal to the last value of memo, which is 6
-});
-```
-
----------------------------------------
-
-<a name="reduceRight" />
-### reduceRight(arr, memo, iterator, callback)
-
-__Alias:__ foldr
-
-Same as reduce, only operates on the items in the array in reverse order.
-
-
----------------------------------------
-
-<a name="detect" />
-### detect(arr, iterator, callback)
-
-Returns the first value in a list that passes an async truth test. The
-iterator is applied in parallel, meaning the first iterator to return true will
-fire the detect callback with that result. That means the result might not be
-the first item in the original array (in terms of order) that passes the test.
-
-If order within the original array is important then look at detectSeries.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
-  true, or after all the iterator functions have finished. Result will be
-  the first item in the array that passes the truth test (iterator) or the
-  value undefined if none passed.
-
-__Example__
-
-```js
-async.detect(['file1','file2','file3'], fs.exists, function(result){
-    // result now equals the first file in the list that exists
-});
-```
-
----------------------------------------
-
-<a name="detectSeries" />
-### detectSeries(arr, iterator, callback)
-
-The same as detect, only the iterator is applied to each item in the array
-in series. This means the result is always the first in the original array (in
-terms of array order) that passes the truth test.
-
-
----------------------------------------
-
-<a name="sortBy" />
-### sortBy(arr, iterator, callback)
-
-Sorts a list by the results of running each value through an async iterator.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, sortValue) which must be called once it
-  has completed with an error (which can be null) and a value to use as the sort
-  criteria.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is the items from
-  the original array sorted by the values returned by the iterator calls.
-
-__Example__
-
-```js
-async.sortBy(['file1','file2','file3'], function(file, callback){
-    fs.stat(file, function(err, stats){
-        callback(err, stats.mtime);
-    });
-}, function(err, results){
-    // results is now the original array of files sorted by
-    // modified date
-});
-```
-
----------------------------------------
-
-<a name="some" />
-### some(arr, iterator, callback)
-
-__Alias:__ any
-
-Returns true if at least one element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists. Once any iterator
-call returns true, the main callback is immediately called.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
-  true, or after all the iterator functions have finished. Result will be
-  either true or false depending on the values of the async tests.
-
-__Example__
-
-```js
-async.some(['file1','file2','file3'], fs.exists, function(result){
-    // if result is true then at least one of the files exists
-});
-```
-
----------------------------------------
-
-<a name="every" />
-### every(arr, iterator, callback)
-
-__Alias:__ all
-
-Returns true if every element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like fs.exists.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback(truthValue) which must be called with a 
-  boolean argument once it has completed.
-* callback(result) - A callback which is called after all the iterator
-  functions have finished. Result will be either true or false depending on
-  the values of the async tests.
-
-__Example__
-
-```js
-async.every(['file1','file2','file3'], fs.exists, function(result){
-    // if result is true then every file exists
-});
-```
-
----------------------------------------
-
-<a name="concat" />
-### concat(arr, iterator, callback)
-
-Applies an iterator to each item in a list, concatenating the results. Returns the
-concatenated list. The iterators are called in parallel, and the results are
-concatenated as they return. There is no guarantee that the results array will
-be returned in the original order of the arguments passed to the iterator function.
-
-__Arguments__
-
-* arr - An array to iterate over
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback(err, results) which must be called once it 
-  has completed with an error (which can be null) and an array of results.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array containing
-  the concatenated results of the iterator function.
-
-__Example__
-
-```js
-async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
-    // files is now a list of filenames that exist in the 3 directories
-});
-```
-
----------------------------------------
-
-<a name="concatSeries" />
-### concatSeries(arr, iterator, callback)
-
-Same as async.concat, but executes in series instead of parallel.
-
-
-## Control Flow
-
-<a name="series" />
-### series(tasks, [callback])
-
-Run an array of functions in series, each one running once the previous
-function has completed. If any functions in the series pass an error to its
-callback, no more functions are run and the callback for the series is
-immediately called with the value of the error. Once the tasks have completed,
-the results are passed to the final callback as an array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.series.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed
-  a callback(err, result) it must call on completion with an error (which can
-  be null) and an optional result value.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets a results array (or object) containing all 
-  the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.series([
-    function(callback){
-        // do some stuff ...
-        callback(null, 'one');
-    },
-    function(callback){
-        // do some more stuff ...
-        callback(null, 'two');
-    }
-],
-// optional callback
-function(err, results){
-    // results is now equal to ['one', 'two']
-});
-
-
-// an example using an object instead of an array
-async.series({
-    one: function(callback){
-        setTimeout(function(){
-            callback(null, 1);
-        }, 200);
-    },
-    two: function(callback){
-        setTimeout(function(){
-            callback(null, 2);
-        }, 100);
-    }
-},
-function(err, results) {
-    // results is now equal to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-<a name="parallel" />
-### parallel(tasks, [callback])
-
-Run an array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its
-callback, the main callback is immediately called with the value of the error.
-Once the tasks have completed, the results are passed to the final callback as an
-array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.parallel.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed 
-  a callback(err, result) it must call on completion with an error (which can
-  be null) and an optional result value.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets a results array (or object) containing all 
-  the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.parallel([
-    function(callback){
-        setTimeout(function(){
-            callback(null, 'one');
-        }, 200);
-    },
-    function(callback){
-        setTimeout(function(){
-            callback(null, 'two');
-        }, 100);
-    }
-],
-// optional callback
-function(err, results){
-    // the results array will equal ['one','two'] even though
-    // the second function had a shorter timeout.
-});
-
-
-// an example using an object instead of an array
-async.parallel({
-    one: function(callback){
-        setTimeout(function(){
-            callback(null, 1);
-        }, 200);
-    },
-    two: function(callback){
-        setTimeout(function(){
-            callback(null, 2);
-        }, 100);
-    }
-},
-function(err, results) {
-    // results is now equals to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-<a name="parallel" />
-### parallelLimit(tasks, limit, [callback])
-
-The same as parallel only the tasks are executed in parallel with a maximum of "limit" 
-tasks executing at any time.
-
-Note that the tasks are not executed in batches, so there is no guarantee that 
-the first "limit" tasks will complete before any others are started.
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed 
-  a callback(err, result) it must call on completion with an error (which can
-  be null) and an optional result value.
-* limit - The maximum number of tasks to run at any time.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets a results array (or object) containing all 
-  the result arguments passed to the task callbacks.
-
----------------------------------------
-
-<a name="whilst" />
-### whilst(test, fn, callback)
-
-Repeatedly call fn, while test returns true. Calls the callback when stopped,
-or an error occurs.
-
-__Arguments__
-
-* test() - synchronous truth test to perform before each execution of fn.
-* fn(callback) - A function to call each time the test passes. The function is
-  passed a callback(err) which must be called once it has completed with an 
-  optional error argument.
-* callback(err) - A callback which is called after the test fails and repeated
-  execution of fn has stopped.
-
-__Example__
-
-```js
-var count = 0;
-
-async.whilst(
-    function () { return count < 5; },
-    function (callback) {
-        count++;
-        setTimeout(callback, 1000);
-    },
-    function (err) {
-        // 5 seconds have passed
-    }
-);
-```
-
----------------------------------------
-
-<a name="doWhilst" />
-### doWhilst(fn, test, callback)
-
-The post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
-
----------------------------------------
-
-<a name="until" />
-### until(test, fn, callback)
-
-Repeatedly call fn, until test returns true. Calls the callback when stopped,
-or an error occurs.
-
-The inverse of async.whilst.
-
----------------------------------------
-
-<a name="doUntil" />
-### doUntil(fn, test, callback)
-
-Like doWhilst except the test is inverted. Note the argument ordering differs from `until`.
-
----------------------------------------
-
-<a name="forever" />
-### forever(fn, callback)
-
-Calls the asynchronous function 'fn' repeatedly, in series, indefinitely.
-If an error is passed to fn's callback then 'callback' is called with the
-error, otherwise it will never be called.
-
----------------------------------------
-
-<a name="waterfall" />
-### waterfall(tasks, [callback])
-
-Runs an array of functions in series, each passing their results to the next in
-the array. However, if any of the functions pass an error to the callback, the
-next function is not executed and the main callback is immediately called with
-the error.
-
-__Arguments__
-
-* tasks - An array of functions to run, each function is passed a 
-  callback(err, result1, result2, ...) it must call on completion. The first
-  argument is an error (which can be null) and any further arguments will be 
-  passed as arguments in order to the next task.
-* callback(err, [results]) - An optional callback to run once all the functions
-  have completed. This will be passed the results of the last task's callback.
-
-
-
-__Example__
-
-```js
-async.waterfall([
-    function(callback){
-        callback(null, 'one', 'two');
-    },
-    function(arg1, arg2, callback){
-        callback(null, 'three');
-    },
-    function(arg1, callback){
-        // arg1 now equals 'three'
-        callback(null, 'done');
-    }
-], function (err, result) {
-   // result now equals 'done'    
-});
-```
-
----------------------------------------
-<a name="compose" />
-### compose(fn1, fn2...)
-
-Creates a function which is a composition of the passed asynchronous
-functions. Each function consumes the return value of the function that
-follows. Composing functions f(), g() and h() would produce the result of
-f(g(h())), only this version uses callbacks to obtain the return values.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* functions... - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-function add1(n, callback) {
-    setTimeout(function () {
-        callback(null, n + 1);
-    }, 10);
-}
-
-function mul3(n, callback) {
-    setTimeout(function () {
-        callback(null, n * 3);
-    }, 10);
-}
-
-var add1mul3 = async.compose(mul3, add1);
-
-add1mul3(4, function (err, result) {
-   // result now equals 15
-});
-```
-
----------------------------------------
-<a name="applyEach" />
-### applyEach(fns, args..., callback)
-
-Applies the provided arguments to each function in the array, calling the
-callback after all functions have completed. If you only provide the first
-argument then it will return a function which lets you pass in the
-arguments as if it were a single function call.
-
-__Arguments__
-
-* fns - the asynchronous functions to all call with the same arguments
-* args... - any number of separate arguments to pass to the function
-* callback - the final argument should be the callback, called when all
-  functions have completed processing
-
-
-__Example__
-
-```js
-async.applyEach([enableSearch, updateSchema], 'bucket', callback);
-
-// partial application example:
-async.each(
-    buckets,
-    async.applyEach([enableSearch, updateSchema]),
-    callback
-);
-```
-
----------------------------------------
-
-<a name="applyEachSeries" />
-### applyEachSeries(arr, iterator, callback)
-
-The same as applyEach only the functions are applied in series.
-
----------------------------------------
-
-<a name="queue" />
-### queue(worker, concurrency)
-
-Creates a queue object with the specified concurrency. Tasks added to the
-queue will be processed in parallel (up to the concurrency limit). If all
-workers are in progress, the task is queued until one is available. Once
-a worker has completed a task, the task's callback is called.
-
-__Arguments__
-
-* worker(task, callback) - An asynchronous function for processing a queued
-  task, which must call its callback(err) argument when finished, with an 
-  optional error as an argument.
-* concurrency - An integer for determining how many worker functions should be
-  run in parallel.
-
-__Queue objects__
-
-The queue object returned by this function has the following properties and
-methods:
-
-* length() - a function returning the number of items waiting to be processed.
-* concurrency - an integer for determining how many worker functions should be
-  run in parallel. This property can be changed after a queue is created to
-  alter the concurrency on-the-fly.
-* push(task, [callback]) - add a new task to the queue, the callback is called
-  once the worker has finished processing the task.
-  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
-* unshift(task, [callback]) - add a new task to the front of the queue.
-* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
-* empty - a callback that is called when the last item from the queue is given to a worker
-* drain - a callback that is called when the last item from the queue has returned from the worker
-
-__Example__
-
-```js
-// create a queue object with concurrency 2
-
-var q = async.queue(function (task, callback) {
-    console.log('hello ' + task.name);
-    callback();
-}, 2);
-
-
-// assign a callback
-q.drain = function() {
-    console.log('all items have been processed');
-}
-
-// add some items to the queue
-
-q.push({name: 'foo'}, function (err) {
-    console.log('finished processing foo');
-});
-q.push({name: 'bar'}, function (err) {
-    console.log('finished processing bar');
-});
-
-// add some items to the queue (batch-wise)
-
-q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
-    console.log('finished processing bar');
-});
-
-// add some items to the front of the queue
-
-q.unshift({name: 'bar'}, function (err) {
-    console.log('finished processing bar');
-});
-```
-
----------------------------------------
-
-<a name="cargo" />
-### cargo(worker, [payload])
-
-Creates a cargo object with the specified payload. Tasks added to the
-cargo will be processed altogether (up to the payload limit). If the
-worker is in progress, the task is queued until it is available. Once
-the worker has completed some tasks, each callback of those tasks is called.
-
-__Arguments__
-
-* worker(tasks, callback) - An asynchronous function for processing an array of
-  queued tasks, which must call its callback(err) argument when finished, with 
-  an optional error as an argument.
-* payload - An optional integer for determining how many tasks should be
-  processed per round; if omitted, the default is unlimited.
-
-__Cargo objects__
-
-The cargo object returned by this function has the following properties and
-methods:
-
-* length() - a function returning the number of items waiting to be processed.
-* payload - an integer for determining how many tasks should be
-  process per round. This property can be changed after a cargo is created to
-  alter the payload on-the-fly.
-* push(task, [callback]) - add a new task to the queue, the callback is called
-  once the worker has finished processing the task.
-  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
-* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
-* empty - a callback that is called when the last item from the queue is given to a worker
-* drain - a callback that is called when the last item from the queue has returned from the worker
-
-__Example__
-
-```js
-// create a cargo object with payload 2
-
-var cargo = async.cargo(function (tasks, callback) {
-    for(var i=0; i<tasks.length; i++){
-      console.log('hello ' + tasks[i].name);
-    }
-    callback();
-}, 2);
-
-
-// add some items
-
-cargo.push({name: 'foo'}, function (err) {
-    console.log('finished processing foo');
-});
-cargo.push({name: 'bar'}, function (err) {
-    console.log('finished processing bar');
-});
-cargo.push({name: 'baz'}, function (err) {
-    console.log('finished processing baz');
-});
-```
-
----------------------------------------
-
-<a name="auto" />
-### auto(tasks, [callback])
-
-Determines the best order for running functions based on their requirements.
-Each function can optionally depend on other functions being completed first,
-and each function is run as soon as its requirements are satisfied. If any of
-the functions pass an error to their callback, that function will not complete
-(so any other functions depending on it will not run) and the main callback
-will be called immediately with the error. Functions also receive an object
-containing the results of functions which have completed so far.
-
-Note, all functions are called with a results object as a second argument, 
-so it is unsafe to pass functions in the tasks object which cannot handle the
-extra argument. For example, this snippet of code:
-
-```js
-async.auto({
-  readData: async.apply(fs.readFile, 'data.txt', 'utf-8');
-}, callback);
-```
-
-will have the effect of calling readFile with the results object as the last
-argument, which will fail:
-
-```js
-fs.readFile('data.txt', 'utf-8', cb, {});
-```
-
-Instead, wrap the call to readFile in a function which does not forward the 
-results object:
-
-```js
-async.auto({
-  readData: function(cb, results){
-    fs.readFile('data.txt', 'utf-8', cb);
-  }
-}, callback);
-```
-
-__Arguments__
-
-* tasks - An object literal containing named functions or an array of
-  requirements, with the function itself the last item in the array. The key
-  used for each function or array is used when specifying requirements. The 
-  function receives two arguments: (1) a callback(err, result) which must be 
-  called when finished, passing an error (which can be null) and the result of 
-  the function's execution, and (2) a results object, containing the results of
-  the previously executed functions.
-* callback(err, results) - An optional callback which is called when all the
-  tasks have been completed. The callback will receive an error as an argument
-  if any tasks pass an error to their callback. Results will always be passed
-	but if an error occurred, no other tasks will be performed, and the results
-	object will only contain partial results.
-  
-
-__Example__
-
-```js
-async.auto({
-    get_data: function(callback){
-        // async code to get some data
-    },
-    make_folder: function(callback){
-        // async code to create a directory to store a file in
-        // this is run at the same time as getting the data
-    },
-    write_file: ['get_data', 'make_folder', function(callback){
-        // once there is some data and the directory exists,
-        // write the data to a file in the directory
-        callback(null, filename);
-    }],
-    email_link: ['write_file', function(callback, results){
-        // once the file is written let's email a link to it...
-        // results.write_file contains the filename returned by write_file.
-    }]
-});
-```
-
-This is a fairly trivial example, but to do this using the basic parallel and
-series functions would look like this:
-
-```js
-async.parallel([
-    function(callback){
-        // async code to get some data
-    },
-    function(callback){
-        // async code to create a directory to store a file in
-        // this is run at the same time as getting the data
-    }
-],
-function(err, results){
-    async.series([
-        function(callback){
-            // once there is some data and the directory exists,
-            // write the data to a file in the directory
-        },
-        function(callback){
-            // once the file is written let's email a link to it...
-        }
-    ]);
-});
-```
-
-For a complicated series of async tasks using the auto function makes adding
-new tasks much easier and makes the code more readable.
-
-
----------------------------------------
-
-<a name="iterator" />
-### iterator(tasks)
-
-Creates an iterator function which calls the next function in the array,
-returning a continuation to call the next one after that. It's also possible to
-'peek' the next iterator by doing iterator.next().
-
-This function is used internally by the async module but can be useful when
-you want to manually control the flow of functions in series.
-
-__Arguments__
-
-* tasks - An array of functions to run.
-
-__Example__
-
-```js
-var iterator = async.iterator([
-    function(){ sys.p('one'); },
-    function(){ sys.p('two'); },
-    function(){ sys.p('three'); }
-]);
-
-node> var iterator2 = iterator();
-'one'
-node> var iterator3 = iterator2();
-'two'
-node> iterator3();
-'three'
-node> var nextfn = iterator2.next();
-node> nextfn();
-'three'
-```
-
----------------------------------------
-
-<a name="apply" />
-### apply(function, arguments..)
-
-Creates a continuation function with some arguments already applied, a useful
-shorthand when combined with other control flow functions. Any arguments
-passed to the returned function are added to the arguments originally passed
-to apply.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to automatically apply when the
-  continuation is called.
-
-__Example__
-
-```js
-// using apply
-
-async.parallel([
-    async.apply(fs.writeFile, 'testfile1', 'test1'),
-    async.apply(fs.writeFile, 'testfile2', 'test2'),
-]);
-
-
-// the same process without using apply
-
-async.parallel([
-    function(callback){
-        fs.writeFile('testfile1', 'test1', callback);
-    },
-    function(callback){
-        fs.writeFile('testfile2', 'test2', callback);
-    }
-]);
-```
-
-It's possible to pass any number of additional arguments when calling the
-continuation:
-
-```js
-node> var fn = async.apply(sys.puts, 'one');
-node> fn('two', 'three');
-one
-two
-three
-```
-
----------------------------------------
-
-<a name="nextTick" />
-### nextTick(callback)
-
-Calls the callback on a later loop around the event loop. In node.js this just
-calls process.nextTick, in the browser it falls back to setImmediate(callback)
-if available, otherwise setTimeout(callback, 0), which means other higher priority
-events may precede the execution of the callback.
-
-This is used internally for browser-compatibility purposes.
-
-__Arguments__
-
-* callback - The function to call on a later loop around the event loop.
-
-__Example__
-
-```js
-var call_order = [];
-async.nextTick(function(){
-    call_order.push('two');
-    // call_order now equals ['one','two']
-});
-call_order.push('one')
-```
-
-<a name="times" />
-### times(n, callback)
-
-Calls the callback n times and accumulates results in the same manner
-you would use with async.map.
-
-__Arguments__
-
-* n - The number of times to run the function.
-* callback - The function to call n times.
-
-__Example__
-
-```js
-// Pretend this is some complicated async factory
-var createUser = function(id, callback) {
-  callback(null, {
-    id: 'user' + id
-  })
-}
-// generate 5 users
-async.times(5, function(n, next){
-    createUser(n, function(err, user) {
-      next(err, user)
-    })
-}, function(err, users) {
-  // we should now have 5 users
-});
-```
-
-<a name="timesSeries" />
-### timesSeries(n, callback)
-
-The same as times only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
-
-## Utils
-
-<a name="memoize" />
-### memoize(fn, [hasher])
-
-Caches the results of an async function. When creating a hash to store function
-results against, the callback is omitted from the hash and an optional hash
-function can be used.
-
-The cache of results is exposed as the `memo` property of the function returned
-by `memoize`.
-
-__Arguments__
-
-* fn - the function you to proxy and cache results from.
-* hasher - an optional function for generating a custom hash for storing
-  results, it has all the arguments applied to it apart from the callback, and
-  must be synchronous.
-
-__Example__
-
-```js
-var slow_fn = function (name, callback) {
-    // do something
-    callback(null, result);
-};
-var fn = async.memoize(slow_fn);
-
-// fn can now be used as if it were slow_fn
-fn('some name', function () {
-    // callback
-});
-```
-
-<a name="unmemoize" />
-### unmemoize(fn)
-
-Undoes a memoized function, reverting it to the original, unmemoized
-form. Comes handy in tests.
-
-__Arguments__
-
-* fn - the memoized function
-
-<a name="log" />
-### log(function, arguments)
-
-Logs the result of an async function to the console. Only works in node.js or
-in browsers that support console.log and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.log is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
-    setTimeout(function(){
-        callback(null, 'hello ' + name);
-    }, 1000);
-};
-```
-```js
-node> async.log(hello, 'world');
-'hello world'
-```
-
----------------------------------------
-
-<a name="dir" />
-### dir(function, arguments)
-
-Logs the result of an async function to the console using console.dir to
-display the properties of the resulting object. Only works in node.js or
-in browsers that support console.dir and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.dir is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
-    setTimeout(function(){
-        callback(null, {hello: name});
-    }, 1000);
-};
-```
-```js
-node> async.dir(hello, 'world');
-{hello: 'world'}
-```
-
----------------------------------------
-
-<a name="noConflict" />
-### noConflict()
-
-Changes the value of async back to its original value, returning a reference to the
-async object.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/async/component.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/async/component.json b/blackberry10/node_modules/async/component.json
deleted file mode 100644
index bbb0115..0000000
--- a/blackberry10/node_modules/async/component.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "name": "async",
-  "repo": "caolan/async",
-  "description": "Higher-order functions and common patterns for asynchronous code",
-  "version": "0.1.23",
-  "keywords": [],
-  "dependencies": {},
-  "development": {},
-  "main": "lib/async.js",
-  "scripts": [ "lib/async.js" ]
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/async/lib/async.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/async/lib/async.js b/blackberry10/node_modules/async/lib/async.js
deleted file mode 100755
index cb6320d..0000000
--- a/blackberry10/node_modules/async/lib/async.js
+++ /dev/null
@@ -1,955 +0,0 @@
-/*global setImmediate: false, setTimeout: false, console: false */
-(function () {
-
-    var async = {};
-
-    // global on the server, window in the browser
-    var root, previous_async;
-
-    root = this;
-    if (root != null) {
-      previous_async = root.async;
-    }
-
-    async.noConflict = function () {
-        root.async = previous_async;
-        return async;
-    };
-
-    function only_once(fn) {
-        var called = false;
-        return function() {
-            if (called) throw new Error("Callback was already called.");
-            called = true;
-            fn.apply(root, arguments);
-        }
-    }
-
-    //// cross-browser compatiblity functions ////
-
-    var _each = function (arr, iterator) {
-        if (arr.forEach) {
-            return arr.forEach(iterator);
-        }
-        for (var i = 0; i < arr.length; i += 1) {
-            iterator(arr[i], i, arr);
-        }
-    };
-
-    var _map = function (arr, iterator) {
-        if (arr.map) {
-            return arr.map(iterator);
-        }
-        var results = [];
-        _each(arr, function (x, i, a) {
-            results.push(iterator(x, i, a));
-        });
-        return results;
-    };
-
-    var _reduce = function (arr, iterator, memo) {
-        if (arr.reduce) {
-            return arr.reduce(iterator, memo);
-        }
-        _each(arr, function (x, i, a) {
-            memo = iterator(memo, x, i, a);
-        });
-        return memo;
-    };
-
-    var _keys = function (obj) {
-        if (Object.keys) {
-            return Object.keys(obj);
-        }
-        var keys = [];
-        for (var k in obj) {
-            if (obj.hasOwnProperty(k)) {
-                keys.push(k);
-            }
-        }
-        return keys;
-    };
-
-    //// exported async module functions ////
-
-    //// nextTick implementation with browser-compatible fallback ////
-    if (typeof process === 'undefined' || !(process.nextTick)) {
-        if (typeof setImmediate === 'function') {
-            async.nextTick = function (fn) {
-                // not a direct alias for IE10 compatibility
-                setImmediate(fn);
-            };
-            async.setImmediate = async.nextTick;
-        }
-        else {
-            async.nextTick = function (fn) {
-                setTimeout(fn, 0);
-            };
-            async.setImmediate = async.nextTick;
-        }
-    }
-    else {
-        async.nextTick = process.nextTick;
-        if (typeof setImmediate !== 'undefined') {
-            async.setImmediate = setImmediate;
-        }
-        else {
-            async.setImmediate = async.nextTick;
-        }
-    }
-
-    async.each = function (arr, iterator, callback) {
-        callback = callback || function () {};
-        if (!arr.length) {
-            return callback();
-        }
-        var completed = 0;
-        _each(arr, function (x) {
-            iterator(x, only_once(function (err) {
-                if (err) {
-                    callback(err);
-                    callback = function () {};
-                }
-                else {
-                    completed += 1;
-                    if (completed >= arr.length) {
-                        callback(null);
-                    }
-                }
-            }));
-        });
-    };
-    async.forEach = async.each;
-
-    async.eachSeries = function (arr, iterator, callback) {
-        callback = callback || function () {};
-        if (!arr.length) {
-            return callback();
-        }
-        var completed = 0;
-        var iterate = function () {
-            iterator(arr[completed], function (err) {
-                if (err) {
-                    callback(err);
-                    callback = function () {};
-                }
-                else {
-                    completed += 1;
-                    if (completed >= arr.length) {
-                        callback(null);
-                    }
-                    else {
-                        iterate();
-                    }
-                }
-            });
-        };
-        iterate();
-    };
-    async.forEachSeries = async.eachSeries;
-
-    async.eachLimit = function (arr, limit, iterator, callback) {
-        var fn = _eachLimit(limit);
-        fn.apply(null, [arr, iterator, callback]);
-    };
-    async.forEachLimit = async.eachLimit;
-
-    var _eachLimit = function (limit) {
-
-        return function (arr, iterator, callback) {
-            callback = callback || function () {};
-            if (!arr.length || limit <= 0) {
-                return callback();
-            }
-            var completed = 0;
-            var started = 0;
-            var running = 0;
-
-            (function replenish () {
-                if (completed >= arr.length) {
-                    return callback();
-                }
-
-                while (running < limit && started < arr.length) {
-                    started += 1;
-                    running += 1;
-                    iterator(arr[started - 1], function (err) {
-                        if (err) {
-                            callback(err);
-                            callback = function () {};
-                        }
-                        else {
-                            completed += 1;
-                            running -= 1;
-                            if (completed >= arr.length) {
-                                callback();
-                            }
-                            else {
-                                replenish();
-                            }
-                        }
-                    });
-                }
-            })();
-        };
-    };
-
-
-    var doParallel = function (fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [async.each].concat(args));
-        };
-    };
-    var doParallelLimit = function(limit, fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [_eachLimit(limit)].concat(args));
-        };
-    };
-    var doSeries = function (fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [async.eachSeries].concat(args));
-        };
-    };
-
-
-    var _asyncMap = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (err, v) {
-                results[x.index] = v;
-                callback(err);
-            });
-        }, function (err) {
-            callback(err, results);
-        });
-    };
-    async.map = doParallel(_asyncMap);
-    async.mapSeries = doSeries(_asyncMap);
-    async.mapLimit = function (arr, limit, iterator, callback) {
-        return _mapLimit(limit)(arr, iterator, callback);
-    };
-
-    var _mapLimit = function(limit) {
-        return doParallelLimit(limit, _asyncMap);
-    };
-
-    // reduce only has a series version, as doing reduce in parallel won't
-    // work in many situations.
-    async.reduce = function (arr, memo, iterator, callback) {
-        async.eachSeries(arr, function (x, callback) {
-            iterator(memo, x, function (err, v) {
-                memo = v;
-                callback(err);
-            });
-        }, function (err) {
-            callback(err, memo);
-        });
-    };
-    // inject alias
-    async.inject = async.reduce;
-    // foldl alias
-    async.foldl = async.reduce;
-
-    async.reduceRight = function (arr, memo, iterator, callback) {
-        var reversed = _map(arr, function (x) {
-            return x;
-        }).reverse();
-        async.reduce(reversed, memo, iterator, callback);
-    };
-    // foldr alias
-    async.foldr = async.reduceRight;
-
-    var _filter = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (v) {
-                if (v) {
-                    results.push(x);
-                }
-                callback();
-            });
-        }, function (err) {
-            callback(_map(results.sort(function (a, b) {
-                return a.index - b.index;
-            }), function (x) {
-                return x.value;
-            }));
-        });
-    };
-    async.filter = doParallel(_filter);
-    async.filterSeries = doSeries(_filter);
-    // select alias
-    async.select = async.filter;
-    async.selectSeries = async.filterSeries;
-
-    var _reject = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (v) {
-                if (!v) {
-                    results.push(x);
-                }
-                callback();
-            });
-        }, function (err) {
-            callback(_map(results.sort(function (a, b) {
-                return a.index - b.index;
-            }), function (x) {
-                return x.value;
-            }));
-        });
-    };
-    async.reject = doParallel(_reject);
-    async.rejectSeries = doSeries(_reject);
-
-    var _detect = function (eachfn, arr, iterator, main_callback) {
-        eachfn(arr, function (x, callback) {
-            iterator(x, function (result) {
-                if (result) {
-                    main_callback(x);
-                    main_callback = function () {};
-                }
-                else {
-                    callback();
-                }
-            });
-        }, function (err) {
-            main_callback();
-        });
-    };
-    async.detect = doParallel(_detect);
-    async.detectSeries = doSeries(_detect);
-
-    async.some = function (arr, iterator, main_callback) {
-        async.each(arr, function (x, callback) {
-            iterator(x, function (v) {
-                if (v) {
-                    main_callback(true);
-                    main_callback = function () {};
-                }
-                callback();
-            });
-        }, function (err) {
-            main_callback(false);
-        });
-    };
-    // any alias
-    async.any = async.some;
-
-    async.every = function (arr, iterator, main_callback) {
-        async.each(arr, function (x, callback) {
-            iterator(x, function (v) {
-                if (!v) {
-                    main_callback(false);
-                    main_callback = function () {};
-                }
-                callback();
-            });
-        }, function (err) {
-            main_callback(true);
-        });
-    };
-    // all alias
-    async.all = async.every;
-
-    async.sortBy = function (arr, iterator, callback) {
-        async.map(arr, function (x, callback) {
-            iterator(x, function (err, criteria) {
-                if (err) {
-                    callback(err);
-                }
-                else {
-                    callback(null, {value: x, criteria: criteria});
-                }
-            });
-        }, function (err, results) {
-            if (err) {
-                return callback(err);
-            }
-            else {
-                var fn = function (left, right) {
-                    var a = left.criteria, b = right.criteria;
-                    return a < b ? -1 : a > b ? 1 : 0;
-                };
-                callback(null, _map(results.sort(fn), function (x) {
-                    return x.value;
-                }));
-            }
-        });
-    };
-
-    async.auto = function (tasks, callback) {
-        callback = callback || function () {};
-        var keys = _keys(tasks);
-        if (!keys.length) {
-            return callback(null);
-        }
-
-        var results = {};
-
-        var listeners = [];
-        var addListener = function (fn) {
-            listeners.unshift(fn);
-        };
-        var removeListener = function (fn) {
-            for (var i = 0; i < listeners.length; i += 1) {
-                if (listeners[i] === fn) {
-                    listeners.splice(i, 1);
-                    return;
-                }
-            }
-        };
-        var taskComplete = function () {
-            _each(listeners.slice(0), function (fn) {
-                fn();
-            });
-        };
-
-        addListener(function () {
-            if (_keys(results).length === keys.length) {
-                callback(null, results);
-                callback = function () {};
-            }
-        });
-
-        _each(keys, function (k) {
-            var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k];
-            var taskCallback = function (err) {
-                var args = Array.prototype.slice.call(arguments, 1);
-                if (args.length <= 1) {
-                    args = args[0];
-                }
-                if (err) {
-                    var safeResults = {};
-                    _each(_keys(results), function(rkey) {
-                        safeResults[rkey] = results[rkey];
-                    });
-                    safeResults[k] = args;
-                    callback(err, safeResults);
-                    // stop subsequent errors hitting callback multiple times
-                    callback = function () {};
-                }
-                else {
-                    results[k] = args;
-                    async.setImmediate(taskComplete);
-                }
-            };
-            var requires = task.slice(0, Math.abs(task.length - 1)) || [];
-            var ready = function () {
-                return _reduce(requires, function (a, x) {
-                    return (a && results.hasOwnProperty(x));
-                }, true) && !results.hasOwnProperty(k);
-            };
-            if (ready()) {
-                task[task.length - 1](taskCallback, results);
-            }
-            else {
-                var listener = function () {
-                    if (ready()) {
-                        removeListener(listener);
-                        task[task.length - 1](taskCallback, results);
-                    }
-                };
-                addListener(listener);
-            }
-        });
-    };
-
-    async.waterfall = function (tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor !== Array) {
-          var err = new Error('First argument to waterfall must be an array of functions');
-          return callback(err);
-        }
-        if (!tasks.length) {
-            return callback();
-        }
-        var wrapIterator = function (iterator) {
-            return function (err) {
-                if (err) {
-                    callback.apply(null, arguments);
-                    callback = function () {};
-                }
-                else {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    var next = iterator.next();
-                    if (next) {
-                        args.push(wrapIterator(next));
-                    }
-                    else {
-                        args.push(callback);
-                    }
-                    async.setImmediate(function () {
-                        iterator.apply(null, args);
-                    });
-                }
-            };
-        };
-        wrapIterator(async.iterator(tasks))();
-    };
-
-    var _parallel = function(eachfn, tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor === Array) {
-            eachfn.map(tasks, function (fn, callback) {
-                if (fn) {
-                    fn(function (err) {
-                        var args = Array.prototype.slice.call(arguments, 1);
-                        if (args.length <= 1) {
-                            args = args[0];
-                        }
-                        callback.call(null, err, args);
-                    });
-                }
-            }, callback);
-        }
-        else {
-            var results = {};
-            eachfn.each(_keys(tasks), function (k, callback) {
-                tasks[k](function (err) {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    if (args.length <= 1) {
-                        args = args[0];
-                    }
-                    results[k] = args;
-                    callback(err);
-                });
-            }, function (err) {
-                callback(err, results);
-            });
-        }
-    };
-
-    async.parallel = function (tasks, callback) {
-        _parallel({ map: async.map, each: async.each }, tasks, callback);
-    };
-
-    async.parallelLimit = function(tasks, limit, callback) {
-        _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback);
-    };
-
-    async.series = function (tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor === Array) {
-            async.mapSeries(tasks, function (fn, callback) {
-                if (fn) {
-                    fn(function (err) {
-                        var args = Array.prototype.slice.call(arguments, 1);
-                        if (args.length <= 1) {
-                            args = args[0];
-                        }
-                        callback.call(null, err, args);
-                    });
-                }
-            }, callback);
-        }
-        else {
-            var results = {};
-            async.eachSeries(_keys(tasks), function (k, callback) {
-                tasks[k](function (err) {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    if (args.length <= 1) {
-                        args = args[0];
-                    }
-                    results[k] = args;
-                    callback(err);
-                });
-            }, function (err) {
-                callback(err, results);
-            });
-        }
-    };
-
-    async.iterator = function (tasks) {
-        var makeCallback = function (index) {
-            var fn = function () {
-                if (tasks.length) {
-                    tasks[index].apply(null, arguments);
-                }
-                return fn.next();
-            };
-            fn.next = function () {
-                return (index < tasks.length - 1) ? makeCallback(index + 1): null;
-            };
-            return fn;
-        };
-        return makeCallback(0);
-    };
-
-    async.apply = function (fn) {
-        var args = Array.prototype.slice.call(arguments, 1);
-        return function () {
-            return fn.apply(
-                null, args.concat(Array.prototype.slice.call(arguments))
-            );
-        };
-    };
-
-    var _concat = function (eachfn, arr, fn, callback) {
-        var r = [];
-        eachfn(arr, function (x, cb) {
-            fn(x, function (err, y) {
-                r = r.concat(y || []);
-                cb(err);
-            });
-        }, function (err) {
-            callback(err, r);
-        });
-    };
-    async.concat = doParallel(_concat);
-    async.concatSeries = doSeries(_concat);
-
-    async.whilst = function (test, iterator, callback) {
-        if (test()) {
-            iterator(function (err) {
-                if (err) {
-                    return callback(err);
-                }
-                async.whilst(test, iterator, callback);
-            });
-        }
-        else {
-            callback();
-        }
-    };
-
-    async.doWhilst = function (iterator, test, callback) {
-        iterator(function (err) {
-            if (err) {
-                return callback(err);
-            }
-            if (test()) {
-                async.doWhilst(iterator, test, callback);
-            }
-            else {
-                callback();
-            }
-        });
-    };
-
-    async.until = function (test, iterator, callback) {
-        if (!test()) {
-            iterator(function (err) {
-                if (err) {
-                    return callback(err);
-                }
-                async.until(test, iterator, callback);
-            });
-        }
-        else {
-            callback();
-        }
-    };
-
-    async.doUntil = function (iterator, test, callback) {
-        iterator(function (err) {
-            if (err) {
-                return callback(err);
-            }
-            if (!test()) {
-                async.doUntil(iterator, test, callback);
-            }
-            else {
-                callback();
-            }
-        });
-    };
-
-    async.queue = function (worker, concurrency) {
-        if (concurrency === undefined) {
-            concurrency = 1;
-        }
-        function _insert(q, data, pos, callback) {
-          if(data.constructor !== Array) {
-              data = [data];
-          }
-          _each(data, function(task) {
-              var item = {
-                  data: task,
-                  callback: typeof callback === 'function' ? callback : null
-              };
-
-              if (pos) {
-                q.tasks.unshift(item);
-              } else {
-                q.tasks.push(item);
-              }
-
-              if (q.saturated && q.tasks.length === concurrency) {
-                  q.saturated();
-              }
-              async.setImmediate(q.process);
-          });
-        }
-
-        var workers = 0;
-        var q = {
-            tasks: [],
-            concurrency: concurrency,
-            saturated: null,
-            empty: null,
-            drain: null,
-            push: function (data, callback) {
-              _insert(q, data, false, callback);
-            },
-            unshift: function (data, callback) {
-              _insert(q, data, true, callback);
-            },
-            process: function () {
-                if (workers < q.concurrency && q.tasks.length) {
-                    var task = q.tasks.shift();
-                    if (q.empty && q.tasks.length === 0) {
-                        q.empty();
-                    }
-                    workers += 1;
-                    var next = function () {
-                        workers -= 1;
-                        if (task.callback) {
-                            task.callback.apply(task, arguments);
-                        }
-                        if (q.drain && q.tasks.length + workers === 0) {
-                            q.drain();
-                        }
-                        q.process();
-                    };
-                    var cb = only_once(next);
-                    worker(task.data, cb);
-                }
-            },
-            length: function () {
-                return q.tasks.length;
-            },
-            running: function () {
-                return workers;
-            }
-        };
-        return q;
-    };
-
-    async.cargo = function (worker, payload) {
-        var working     = false,
-            tasks       = [];
-
-        var cargo = {
-            tasks: tasks,
-            payload: payload,
-            saturated: null,
-            empty: null,
-            drain: null,
-            push: function (data, callback) {
-                if(data.constructor !== Array) {
-                    data = [data];
-                }
-                _each(data, function(task) {
-                    tasks.push({
-                        data: task,
-                        callback: typeof callback === 'function' ? callback : null
-                    });
-                    if (cargo.saturated && tasks.length === payload) {
-                        cargo.saturated();
-                    }
-                });
-                async.setImmediate(cargo.process);
-            },
-            process: function process() {
-                if (working) return;
-                if (tasks.length === 0) {
-                    if(cargo.drain) cargo.drain();
-                    return;
-                }
-
-                var ts = typeof payload === 'number'
-                            ? tasks.splice(0, payload)
-                            : tasks.splice(0);
-
-                var ds = _map(ts, function (task) {
-                    return task.data;
-                });
-
-                if(cargo.empty) cargo.empty();
-                working = true;
-                worker(ds, function () {
-                    working = false;
-
-                    var args = arguments;
-                    _each(ts, function (data) {
-                        if (data.callback) {
-                            data.callback.apply(null, args);
-                        }
-                    });
-
-                    process();
-                });
-            },
-            length: function () {
-                return tasks.length;
-            },
-            running: function () {
-                return working;
-            }
-        };
-        return cargo;
-    };
-
-    var _console_fn = function (name) {
-        return function (fn) {
-            var args = Array.prototype.slice.call(arguments, 1);
-            fn.apply(null, args.concat([function (err) {
-                var args = Array.prototype.slice.call(arguments, 1);
-                if (typeof console !== 'undefined') {
-                    if (err) {
-                        if (console.error) {
-                            console.error(err);
-                        }
-                    }
-                    else if (console[name]) {
-                        _each(args, function (x) {
-                            console[name](x);
-                        });
-                    }
-                }
-            }]));
-        };
-    };
-    async.log = _console_fn('log');
-    async.dir = _console_fn('dir');
-    /*async.info = _console_fn('info');
-    async.warn = _console_fn('warn');
-    async.error = _console_fn('error');*/
-
-    async.memoize = function (fn, hasher) {
-        var memo = {};
-        var queues = {};
-        hasher = hasher || function (x) {
-            return x;
-        };
-        var memoized = function () {
-            var args = Array.prototype.slice.call(arguments);
-            var callback = args.pop();
-            var key = hasher.apply(null, args);
-            if (key in memo) {
-                callback.apply(null, memo[key]);
-            }
-            else if (key in queues) {
-                queues[key].push(callback);
-            }
-            else {
-                queues[key] = [callback];
-                fn.apply(null, args.concat([function () {
-                    memo[key] = arguments;
-                    var q = queues[key];
-                    delete queues[key];
-                    for (var i = 0, l = q.length; i < l; i++) {
-                      q[i].apply(null, arguments);
-                    }
-                }]));
-            }
-        };
-        memoized.memo = memo;
-        memoized.unmemoized = fn;
-        return memoized;
-    };
-
-    async.unmemoize = function (fn) {
-      return function () {
-        return (fn.unmemoized || fn).apply(null, arguments);
-      };
-    };
-
-    async.times = function (count, iterator, callback) {
-        var counter = [];
-        for (var i = 0; i < count; i++) {
-            counter.push(i);
-        }
-        return async.map(counter, iterator, callback);
-    };
-
-    async.timesSeries = function (count, iterator, callback) {
-        var counter = [];
-        for (var i = 0; i < count; i++) {
-            counter.push(i);
-        }
-        return async.mapSeries(counter, iterator, callback);
-    };
-
-    async.compose = function (/* functions... */) {
-        var fns = Array.prototype.reverse.call(arguments);
-        return function () {
-            var that = this;
-            var args = Array.prototype.slice.call(arguments);
-            var callback = args.pop();
-            async.reduce(fns, args, function (newargs, fn, cb) {
-                fn.apply(that, newargs.concat([function () {
-                    var err = arguments[0];
-                    var nextargs = Array.prototype.slice.call(arguments, 1);
-                    cb(err, nextargs);
-                }]))
-            },
-            function (err, results) {
-                callback.apply(that, [err].concat(results));
-            });
-        };
-    };
-
-    var _applyEach = function (eachfn, fns /*args...*/) {
-        var go = function () {
-            var that = this;
-            var args = Array.prototype.slice.call(arguments);
-            var callback = args.pop();
-            return eachfn(fns, function (fn, cb) {
-                fn.apply(that, args.concat([cb]));
-            },
-            callback);
-        };
-        if (arguments.length > 2) {
-            var args = Array.prototype.slice.call(arguments, 2);
-            return go.apply(this, args);
-        }
-        else {
-            return go;
-        }
-    };
-    async.applyEach = doParallel(_applyEach);
-    async.applyEachSeries = doSeries(_applyEach);
-
-    async.forever = function (fn, callback) {
-        function next(err) {
-            if (err) {
-                if (callback) {
-                    return callback(err);
-                }
-                throw err;
-            }
-            fn(next);
-        }
-        next();
-    };
-
-    // AMD / RequireJS
-    if (typeof define !== 'undefined' && define.amd) {
-        define([], function () {
-            return async;
-        });
-    }
-    // Node.js
-    else if (typeof module !== 'undefined' && module.exports) {
-        module.exports = async;
-    }
-    // included directly via <script> tag
-    else {
-        root.async = async;
-    }
-
-}());


[27/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/shopping.xml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/shopping.xml b/blackberry10/node_modules/elementtree/node_modules/sax/examples/shopping.xml
deleted file mode 100644
index 223c6c6..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/shopping.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<GeneralSearchResponse xmlns="urn:types.partner.api.shopping.com"><serverDetail><apiEnv>sandbox</apiEnv><apiVersion>3.1 r31.Kadu4DC.phase3</apiVersion><buildNumber>5778</buildNumber><buildTimestamp>2011.10.06 15:37:23 PST</buildTimestamp><requestId>p2.a121bc2aaf029435dce6</requestId><timestamp>2011-10-21T18:38:45.982-04:00</timestamp><responseTime>P0Y0M0DT0H0M0.169S</responseTime></serverDetail><exceptions exceptionCount="1"><exception type="warning"><code>1112</code><message>You are currently using the SDC API sandbox environment!  No clicks to merchant URLs from this response will be paid.  Please change the host of your API requests to 'publisher.api.shopping.com' when you have finished development and testing</message></exception></exceptions><clientTracking height="19" type="logo" width="106"><sourceURL>http://statTest.dealtime.com/pixel/noscript?PV_EvnTyp=APPV&amp;APPV_APITSP=10%2F21%2F11_06%3A38%3A45_PM&amp;APPV_DSPRQSID=p2.a121bc2aaf029435dce6&amp;APPV_IMGURL=http://img.shop
 ping.com/sc/glb/sdc_logo_106x19.gif&amp;APPV_LI_LNKINID=7000610&amp;APPV_LI_SBMKYW=nikon&amp;APPV_MTCTYP=1000&amp;APPV_PRTID=2002&amp;APPV_BrnID=14804</sourceURL><hrefURL>http://www.shopping.com/digital-cameras/products</hrefURL><titleText>Digital Cameras</titleText><altText>Digital Cameras</altText></clientTracking><searchHistory><categorySelection id="3"><name>Electronics</name><categoryURL>http://www.shopping.com/xCH-electronics-nikon~linkin_id-7000610?oq=nikon</categoryURL></categorySelection><categorySelection id="449"><name>Cameras and Photography</name><categoryURL>http://www.shopping.com/xCH-cameras_and_photography-nikon~linkin_id-7000610?oq=nikon</categoryURL></categorySelection><categorySelection id="7185"><name>Digital Cameras</name><categoryURL>http://www.shopping.com/digital-cameras/nikon/products?oq=nikon&amp;linkin_id=7000610</categoryURL></categorySelection><dynamicNavigationHistory><keywordSearch dropped="false" modified="false"><originalKeyword>nikon</originalKeywo
 rd><resultKeyword>nikon</resultKeyword></keywordSearch></dynamicNavigationHistory></searchHistory><categories matchedCategoryCount="1" returnedCategoryCount="1"><category id="7185"><name>Digital Cameras</name><categoryURL>http://www.shopping.com/digital-cameras/nikon/products?oq=nikon&amp;linkin_id=7000610</categoryURL><items matchedItemCount="322" pageNumber="1" returnedItemCount="5"><product id="101677489"><name>Nikon D3100 Digital Camera</name><shortDescription>14.2 Megapixel, SLR Camera, 3 in. LCD Screen, With High Definition Video, Weight: 1 lb.</shortDescription><fullDescription>The Nikon D3100 digital SLR camera speaks to the growing ranks of enthusiastic D-SLR users and aspiring photographers by providing an easy-to-use and affordable entrance to the world of Nikon D-SLR’s. The 14.2-megapixel D3100 has powerful features, such as the enhanced Guide Mode that makes it easy to unleash creative potential and capture memories with still images and full HD video. Like having a p
 ersonal photo tutor at your fingertips, this unique feature provides a simple graphical interface on the camera’s LCD that guides users by suggesting and/or adjusting camera settings to achieve the desired end result images. The D3100 is also the world’s first D-SLR to introduce full time auto focus (AF) in Live View and D-Movie mode to effortlessly achieve the critical focus needed when shooting Full HD 1080p video.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/i
 mages/pi/93/bc/04/101677489-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="500" width="606"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-606x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image></images><rating><reviewCount>9</reviewCount><rating>4.56</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_4.5.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/Nikon-D3100/reviews~linkin_id-7000610</reviewURL></rating><minPrice>429.00</minPrice><maxPrice>1360.00</maxPrice><productOffersURL>http://www.shopping.com/Nikon-D310
 0/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/Nikon-D3100/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="64" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="-ZW6BMZqz6fbS-aULwga_g==" smartBuy="false" used="false"><name>Nikon D3100 Digital SLR Camera with 18-55mm NIKKOR VR Lens</name><description>The Nikon D3100 Digital SLR Camera is an affordable  compact  and lightweight photographic power-house. It features the all-purpose 18-55mm VR lens  a high-resolution 14.2 MP CMOS sensor along with a feature set that's comprehensive yet easy to navigate - the intuitive onboard learn-as-you grow guide mode allows the photographer to understand what the 3100 can do quickly and easily. Capture beautiful pictures and amazing Full HD 1080p movies with sound and full-time autofocus.  Availabilty: In Stock!</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" heigh
 t="100" width="100"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" he
 ight="350" width="350"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Free Shipping with Any Purchase!</storeNotes><basePrice currency="USD">529.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">799.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=475674&amp;crawler_id=475674&amp;dealId=-ZW6BMZqz6fbS-aULwga_g%3D%3D&amp;url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F343.5%2Fshopping-com%3F&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+D3100+Digital+SLR+Camera+with+18-55mm+NIKKOR+VR+Lens&amp;dlprc=529.0&amp;crn=&amp;istrsm
 rc=1&amp;isathrsl=0&amp;AR=1&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=101677489&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=1&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=1&amp;SL=1&amp;FS=1&amp;code=&amp;acode=658&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="475674" trusted="true"><name>FumFie</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/475674.gif</sourceURL></logo><phoneNumber>866 666 9198</phoneNumber><ratingInfo><reviewCount>560</reviewCount><rating>4.27</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610</reviewURL></ratingInfo><
 countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>F343C5</sku></offer><offer featured="false" id="md1e9lD8vdOu4FHQfJqKng==" smartBuy="false" used="false"><name>Nikon Nikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR, Cameras</name><description>Nikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&am
 p;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="352" width="385"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-385x352-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">549.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></tot
 alPrice><originalPrice currency="USD">549.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=779&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=305814&amp;crawler_id=305814&amp;dealId=md1e9lD8vdOu4FHQfJqKng%3D%3D&amp;url=http%3A%2F%2Fwww.electronics-expo.com%2Findex.php%3Fpage%3Ditem%26id%3DNIKD3100%26source%3DSideCar%26scpid%3D8%26scid%3Dscsho318727%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+Nikon+D3100+14.2MP+Digital+SLR+Camera+with+18-55mm+f%2F3.5-5.6+AF-S+DX+VR%2C+Cameras&amp;dlprc=549.0&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=9&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=101677489&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=9&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=771&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=
 &amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="305814" trusted="true"><name>Electronics Expo</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/305814.gif</sourceURL></logo><phoneNumber>1-888-707-EXPO</phoneNumber><ratingInfo><reviewCount>371</reviewCount><rating>3.90</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_4.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_electronics_expo~MRD-305814~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>NIKD3100</sku></offer><offer featured="false" id="yYuaXnDFtCY7rDUjkY2aaw==" smartBuy="false" used="false"><name>Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, Black</name><description>
 Split-second shutter response captures shots other cameras may have missed Helps eliminate the frustration of shutter delay! 14.2-megapixels for enlargements worth framing and hanging. Takes breathtaking 1080p HD movies. ISO sensitivity from 100-1600 for bright or dimly lit settings. 3.0in. color LCD for beautiful, wide-angle framing and viewing. In-camera image editing lets you retouch with no PC. Automatic scene modes include Child, Sports, Night Portrait and more. Accepts SDHC memory cards. Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, Black is one of many Digital SLR Cameras available through Office Depot. Made by Nikon.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</so
 urceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="250" width="250"><sourceURL>http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-250x250-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image></imageList><stockStatus>in-s
 tock</stockStatus><basePrice currency="USD">549.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">699.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=698&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=467671&amp;crawler_id=467671&amp;dealId=yYuaXnDFtCY7rDUjkY2aaw%3D%3D&amp;url=http%3A%2F%2Flink.mercent.com%2Fredirect.ashx%3Fmr%3AmerchantID%3DOfficeDepot%26mr%3AtrackingCode%3DCEC9669E-6ABC-E011-9F24-0019B9C043EB%26mr%3AtargetUrl%3Dhttp%3A%2F%2Fwww.officedepot.com%2Fa%2Fproducts%2F486292%2FNikon-D3100-142-Megapixel-Digital-SLR%2F%253fcm_mmc%253dMercent-_-Shopping-_-Cameras_and_Camcorders-_-486292&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+D3100+14.2-Megapixel+Digital+SLR+Camera+With+18-55mm+Zoom-Nikkor+Lens%2C+Black&amp;dlprc=549.99&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=10&amp;N
 G=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=101677489&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=10&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=1&amp;SL=1&amp;FS=1&amp;code=&amp;acode=690&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="467671" trusted="true"><name>Office Depot</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/467671.gif</sourceURL></logo><phoneNumber>1-800-GO-DEPOT</phoneNumber><ratingInfo><reviewCount>135</reviewCount><rating>2.37</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_office_depot_4158555~MRD-467671~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag
  height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>486292</sku></offer><offer featured="false" id="Rl56U7CuiTYsH4MGZ02lxQ==" smartBuy="false" used="false"><name>Nikon® D3100™ 14.2MP Digital SLR with 18-55mm Lens</name><description>The Nikon D3100 DSLR will surprise you with its simplicity and impress you with superb results.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=11
 1021183845&amp;r=4</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">549.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">549.99</originalPrice><offerUR
 L>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=332477&amp;crawler_id=332477&amp;dealId=Rl56U7CuiTYsH4MGZ02lxQ%3D%3D&amp;url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D903483107%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon%C2%AE+D3100%E2%84%A2+14.2MP+Digital+SLR+with+18-55mm+Lens&amp;dlprc=549.99&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=11&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=101677489&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=11&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=0&amp;code=&amp;acode=496&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="332477" trusted="false"><name>RadioShack</name><lo
 go available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>9614867</sku></offer><offer featured="false" id="huS6xZKDKaKMTMP71eI6DA==" smartBuy="false" used="false"><name>Nikon D3100 SLR w/Nikon 18-55mm VR &amp; 55-200mm VR Lenses</name><description>14.2 Megapixels3" LCDLive ViewHD 1080p Video w/ Sound &amp; Autofocus11-point Autofocus3 Frames per Second ShootingISO 100 to 3200 (Expand to 12800-Hi2)Self Cleaning SensorEXPEED 2, Image Processing EngineScene Recognition S
 ystem</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a
 121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="345" width="345"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-345x345-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">695.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">695.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=487342&amp;crawler_id=487342&amp;dealId=huS6xZKDKaKMTMP71eI6DA%3D%3D&amp;url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D32983%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;Dea
 lName=Nikon+D3100+SLR+w%2FNikon+18-55mm+VR+%26+55-200mm+VR+Lenses&amp;dlprc=695.0&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=15&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=101677489&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=15&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=379&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="487342" trusted="false"><name>RytherCamera.com</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/487342.gif</sourceURL></logo><phoneNumber>1-877-644-7593</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countr
 yCode></countryFlag></store><sku>32983</sku></offer></offers></product><product id="95397883"><name>Nikon COOLPIX S203 Digital Camera</name><shortDescription>10 Megapixel, Ultra-Compact Camera, 2.5 in. LCD Screen, 3x Optical Zoom, With Video Capability, Weight: 0.23 lb.</shortDescription><fullDescription>With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-200x200-0-0.jp
 g?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="499" width="500"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-500x499-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image></images><rating><reviewCount>0</reviewCount></rating><minPrice>139.00</minPrice><maxPrice>139.00</maxPrice><productOffersURL>http://www.shopping.com/Nikon-Coolpix-S203/prices~linkin_id-7000610</productO
 ffersURL><productSpecsURL>http://www.shopping.com/Nikon-Coolpix-S203/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="1" pageNumber="1" returnedOfferCount="1"><offer featured="false" id="sBd2JnIEPM-A_lBAM1RZgQ==" smartBuy="false" used="false"><name>Nikon Coolpix S203 Digital Camera (Red)</name><description>With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image avail
 able="true" height="200" width="200"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=1
 11021183845&amp;r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Fantastic prices with ease &amp; comfort of Amazon.com!</storeNotes><basePrice currency="USD">139.00</basePrice><shippingCost currency="USD">9.50</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=301531&amp;crawler_id=1903313&amp;dealId=sBd2JnIEPM-A_lBAM1RZgQ%3D%3D&amp;url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB002T964IM%2Fref%3Dasc_df_B002T964IM1751618%3Fsmid%3DA22UHVNXG98FAT%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB002T964IM&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+Coolpix+S203+Digital+Camera+%28Red%29&amp;dlprc=139.0&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=63&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdc
 prod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=95397883&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=63&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=0&amp;code=&amp;acode=518&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="301531" trusted="false"><name>Amazon Marketplace</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/301531.gif</sourceURL></logo><ratingInfo><reviewCount>213</reviewCount><rating>2.73</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif
 </sourceURL><countryCode>US</countryCode></countryFlag></store><sku>B002T964IM</sku></offer></offers></product><product id="106834268"><name>Nikon S3100 Digital Camera</name><shortDescription>14.5 Megapixel, Compact Camera, 2.7 in. LCD Screen, 5x Optical Zoom, With High Definition Video, Weight: 0.23 lb.</shortDescription><fullDescription>This digital camera features a wide-angle optical Zoom-NIKKOR glass lens that allows you to capture anything from landscapes to portraits to action shots. The high-definition movie mode with one-touch recording makes it easy to capture video clips.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-200x200-0-0.jpg?p=p2.a121bc2aaf029435d
 ce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="387" width="507"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-507x387-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image></images><rating><reviewCount>1</reviewCount><rating>2.00</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_2.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/ni
 kon-s3100/reviews~linkin_id-7000610</reviewURL></rating><minPrice>99.95</minPrice><maxPrice>134.95</maxPrice><productOffersURL>http://www.shopping.com/nikon-s3100/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/nikon-s3100/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="67" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="UUyGoqV8r0-xrkn-rnGNbg==" smartBuy="false" used="false"><name>CoolPix S3100 14 Megapixel Compact Digital Camera- Red</name><description>Nikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - red</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></im
 age><image available="true" height="200" width="200"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">119.95</basePrice><tax checkSite="true"></tax><shippingCost currency=
 "USD">6.95</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=485615&amp;crawler_id=485615&amp;dealId=UUyGoqV8r0-xrkn-rnGNbg%3D%3D&amp;url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJ3Yx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmDAJeU1oyGG0GcBdhGwUGCAVqYF9SO0xSN1sZdmA7dmMdBQAJB24qX1NbQxI6AjA2ME5dVFULPDsGPFcQTTdaLTA6SR0OFlQvPAwMDxYcYlxIVkcoLTcCDA%3D%3D%26nAID%3D13736960%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=CoolPix+S3100+14+Megapixel+Compact+Digital+Camera-+Red&amp;dlprc=119.95&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=28&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=106834268&amp;brnId=14804&amp;IsFtr=0&a
 mp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=28&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=1&amp;FS=0&amp;code=&amp;acode=583&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</sourceURL></logo><phoneNumber>1-800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00337013000</sku></offer>
 <offer featured="false" id="X87AwXlW1dXoMXk4QQDToQ==" smartBuy="false" used="false"><name>COOLPIX S3100 Pink</name><description>Nikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - pink</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144
 546f51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">119.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.95</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=485615&amp;crawler_id=485615&amp;dealId=X87AwXlW1dXoMXk4QQDToQ%3D%3D&amp;url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJxYx0CTAIC
 I2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGsPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=COOLPIX+S3100+Pink&amp;dlprc=119.95&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=31&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=106834268&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=31&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=1&amp;FS=0&amp;code=&amp;acode=583&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</
 sourceURL></logo><phoneNumber>1-800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00337015000</sku></offer><offer featured="false" id="nvFwnpfA4rlA1Dbksdsa0w==" smartBuy="false" used="false"><name>Nikon Coolpix S3100 14.0 MP Digital Camera - Silver</name><description>Nikon Coolpix S3100 14.0 MP Digital Camera - Silver</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-100x100-0-0.jpg
 ?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="270" width="270"><sourceURL>http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-270x270-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&am
 p;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">109.97</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">109.97</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=803&amp;BEFID=7185&amp;aon=%5E&amp;MerchantID=475774&amp;crawler_id=475774&amp;dealId=nvFwnpfA4rlA1Dbksdsa0w%3D%3D&amp;url=http%3A%2F%2Fwww.thewiz.com%2Fcatalog%2Fproduct.jsp%3FmodelNo%3DS3100SILVER%26gdftrk%3DgdfV2677_a_7c996_a_7c4049_a_7c26262&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+Coolpix+S3100+14.0+MP+Digital+Camera+-+Silver&amp;dlprc=109.97&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=33&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=106834268&amp;brnId=14804&amp;Is
 Ftr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=33&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=797&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="475774" trusted="false"><name>TheWiz.com</name><logo available="false" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/475774.gif</sourceURL></logo><phoneNumber>877-542-6988</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>26262</sku></offer><offer featured="false" id="5GtaN2NeryKwps-Se2l-4g==" smartBuy="false" used="false"><name>Nikon� COOLPIX� S3100 14MP Digital Camera (Silver)</name><description>The Nikon COOLPIX S3100 is the easy way to share your life and stay c
 onnected.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=70
 00610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">119.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">119.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=332477&amp;crawler_id=332477&amp;dealId=5GtaN2NeryKwps-Se2l-4g%3D%3D&amp;url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D848064082%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon%C3%AF%C2%BF%C2%BD+COOLPIX%C3%AF%C2%BF%C2%BD+S3100+14MP+Di
 gital+Camera+%28Silver%29&amp;dlprc=119.99&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=37&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=106834268&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=37&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=0&amp;code=&amp;acode=509&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="332477" trusted="false"><name>RadioShack</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linki
 n_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>10101095</sku></offer><offer featured="false" id="a43m0RXulX38zCnQjU59jw==" smartBuy="false" used="false"><name>COOLPIX S3100 Yellow</name><description>Nikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - yellow</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-200x200-0-0.jpg?p=p2.a121bc2aaf0294
 35dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">119.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.95</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?b
 m=578&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=485615&amp;crawler_id=485615&amp;dealId=a43m0RXulX38zCnQjU59jw%3D%3D&amp;url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJwYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGoPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=COOLPIX+S3100+Yellow&amp;dlprc=119.95&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=38&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=106834268&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=38&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=1&amp;FS=0&amp;code=&amp;acode=583&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR
 =&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</sourceURL></logo><phoneNumber>1-800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00337014000</sku></offer></offers></product><product id="99671132"><name>Nikon D90 Digital Camera</name><shortDescription>12.3 Megapixel, Point and Shoot Camera, 3 in. LCD Screen, With Video Capability, Weight: 1.36 lb.</shortDescription><fullDescription>Untitle
 d Document Nikon D90 SLR Digital Camera With 28-80mm 75-300mm Lens Kit The Nikon D90 SLR Digital Camera, with its 12.3-megapixel DX-format CMOS, 3" High resolution LCD display, Scene Recognition System, Picture Control, Active D-Lighting, and one-button Live View, provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shoppin
 g.com/images/pi/52/fb/d3/99671132-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="255" width="499"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-499x255-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image></images><rating><reviewCount>7</reviewCount><rating>5.00</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_5.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/reviews~linkin_id-7000610</reviewURL></rating><minPrice>689.00</minPrice><maxPrice>2299.00</maxPrice><productOffersURL>http://www.shop
 ping.com/Nikon-D90-with-18-270mm-Lens/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="43" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="GU5JJkpUAxe5HujB7fkwAA==" smartBuy="false" used="false"><name>Nikon® D90 12.3MP Digital SLR Camera (Body Only)</name><description>The Nikon D90 will make you rethink what a digital SLR camera can achieve.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-200x200-0-
 0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">1015.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></
 totalPrice><originalPrice currency="USD">1015.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=332477&amp;crawler_id=332477&amp;dealId=GU5JJkpUAxe5HujB7fkwAA%3D%3D&amp;url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D851830266%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&amp;dlprc=1015.99&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=14&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=99671132&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=14&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=0&amp;code=&amp;acode=496&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedResel
 ler="false" id="332477" trusted="false"><name>RadioShack</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>10148659</sku></offer><offer featured="false" id="XhURuSC-spBbTIDfo4qfzQ==" smartBuy="false" used="false"><name>Nikon D90 SLR Digital Camera (Camera Body)</name><description>The Nikon D90 SLR Digital Camera  with its 12.3-megapixel DX-format CCD  3" High resolution LCD display  Scene Recognition System  Picture Control  Active D-Lighting  and one
 -button Live View  provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera. In addition  the D90 introduces the D-Movie mode  allowing for the first time  an interchangeable lens SLR camera that is capable of recording 720p HD movie clips.  Availabilty: In Stock</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image avai
 lable="true" height="300" width="300"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="350" width="350"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Free Shipping with Any Purchase!</storeNotes><basePrice currency="USD">689.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><ori
 ginalPrice currency="USD">900.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=475674&amp;crawler_id=475674&amp;dealId=XhURuSC-spBbTIDfo4qfzQ%3D%3D&amp;url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F169.5%2Fshopping-com%3F&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+D90+SLR+Digital+Camera+%28Camera+Body%29&amp;dlprc=689.0&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=16&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=99671132&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=16&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=1&amp;SL=1&amp;FS=1&amp;code=&amp;acode=658&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="475674" trusted="true">
 <name>FumFie</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/475674.gif</sourceURL></logo><phoneNumber>866 666 9198</phoneNumber><ratingInfo><reviewCount>560</reviewCount><rating>4.27</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>F169C5</sku></offer><offer featured="false" id="o0Px_XLWDbrxAYRy3rCmyQ==" smartBuy="false" used="false"><name>Nikon D90 SLR w/Nikon 18-105mm VR &amp; 55-200mm VR Lenses</name><description>12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing</description><c
 ategoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d
 7951-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">1189.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1189.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=487342&amp;crawler_id=487342&amp;dealId=o0Px_XLWDbrxAYRy3rCmyQ%3D%3D&amp;url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30619%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2
 .a121bc2aaf029435dce6&amp;DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+%26+55-200mm+VR+Lenses&amp;dlprc=1189.0&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=20&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=99671132&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=20&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=379&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="487342" trusted="false"><name>RytherCamera.com</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/487342.gif</sourceURL></logo><phoneNumber>1-877-644-7593</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourc
 eURL><countryCode>US</countryCode></countryFlag></store><sku>30619</sku></offer><offer featured="false" id="4HgbWJSJ8ssgIf8B0MXIwA==" smartBuy="false" used="false"><name>Nikon D90 12.3 Megapixel Digital SLR Camera (Body Only)</name><description>Fusing 12.3 megapixel image quality and a cinematic 24fps D-Movie Mode, the Nikon D90 exceeds the demands of passionate photographers. Coupled with Nikon's EXPEED image processing technologies and NIKKOR optics, breathtaking image fidelity is assured. Combined with fast 0.15ms power-up and split-second 65ms shooting lag, dramatic action and decisive moments are captured easily. Effective 4-frequency, ultrasonic sensor cleaning frees image degrading dust particles from the sensor's optical low pass filter.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-100x100-0-
 0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>FREE FEDEX 2-3 DAY DELIVERY</storeNotes><basePrice currency="USD">899.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">899.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/Dea
 lFrame.cmp?bm=269&amp;BEFID=7185&amp;aon=%5E&amp;MerchantID=9296&amp;crawler_id=811558&amp;dealId=4HgbWJSJ8ssgIf8B0MXIwA%3D%3D&amp;url=http%3A%2F%2Fwww.pcnation.com%2Foptics-gallery%2Fdetails.asp%3Faffid%3D305%26item%3D2N145P&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+D90+12.3+Megapixel+Digital+SLR+Camera+%28Body+Only%29&amp;dlprc=899.95&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=21&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=99671132&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=21&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=257&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="9296" trusted="true"><name>PCNation</name><logo available="true" height="31" width="8
 8"><sourceURL>http://img.shopping.com/cctool/merch_logos/9296.gif</sourceURL></logo><phoneNumber>800-470-7079</phoneNumber><ratingInfo><reviewCount>1622</reviewCount><rating>4.43</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_pcnation_9689~MRD-9296~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>2N145P</sku></offer><offer featured="false" id="UNDa3uMDZXOnvD_7sTILYg==" smartBuy="false" used="false"><name>Nikon D90 12.3MP Digital SLR Camera (Body Only)</name><description>Fusing 12.3-megapixel image quality inherited from the award-winning D300 with groundbreaking features, the D90's breathtaking, low-noise image quality is further advanced with EXPEED image processing. Split-second shutter response and contin
 uous shooting at up to 4.5 frames-per-second provide the power to capture fast action and precise moments perfectly, while Nikon's exclusive Scene Recognition System contributes to faster 11-area autofocus performance, finer white balance detection and more. The D90 delivers the control passionate photographers demand, utilizing comprehensive exposure functions and the intelligence of 3D Color Matrix Metering II. Stunning results come to life on a 3-inch 920,000-dot color LCD monitor, providing accurate image review, Live View composition and brilliant playback of the D90's cinematic-quality 24-fps HD D-Movie mode.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" h
 eight="200" width="200"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&a
 mp;r=5</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Fantastic prices with ease &amp; comfort of Amazon.com!</storeNotes><basePrice currency="USD">780.00</basePrice><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">780.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=301531&amp;crawler_id=1903313&amp;dealId=UNDa3uMDZXOnvD_7sTILYg%3D%3D&amp;url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB001ET5U92%2Fref%3Dasc_df_B001ET5U921751618%3Fsmid%3DAHF4SYKP09WBH%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB001ET5U92&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&amp;dlprc=780.0&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=29&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&a
 mp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=99671132&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=29&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=520&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="301531" trusted="false"><name>Amazon Marketplace</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/301531.gif</sourceURL></logo><ratingInfo><reviewCount>213</reviewCount><rating>2.73</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sour
 ceURL><countryCode>US</countryCode></countryFlag></store><sku>B001ET5U92</sku></offer></offers></product><product id="70621646"><name>Nikon D90 Digital Camera with 18-105mm lens</name><shortDescription>12.9 Megapixel, SLR Camera, 3 in. LCD Screen, 5.8x Optical Zoom, With Video Capability, Weight: 2.3 lb.</shortDescription><fullDescription>Its 12.3 megapixel DX-format CMOS image sensor and EXPEED image processing system offer outstanding image quality across a wide ISO light sensitivity range. Live View mode lets you compose and shoot via the high-resolution 3-inch LCD monitor, and an advanced Scene Recognition System and autofocus performance help capture images with astounding accuracy. Movies can be shot in Motion JPEG format using the D-Movie function. The camera’s large image sensor ensures exceptional movie image quality and you can create dramatic effects by shooting with a wide range of interchangeable NIKKOR lenses, from wide-angle to macro to fisheye, or by adjusting the 
 lens aperture and experimenting with depth-of-field. The D90 – designed to fuel your passion for photography.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&
 amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image><image available="true" height="489" width="490"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-490x489-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=2&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=5</sourceURL></image></images><rating><reviewCount>32</reviewCount><rating>4.81</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_5.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/Nikon-D90-with-18-105mm-lens/reviews~linkin_id-7000610</reviewURL></rating><minPrice>849.95</minPrice><maxPrice>1599.95</maxPrice><productOffersURL>http://www.shopping.com/Nikon-D90-with-18-105mm-lens/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/Nikon-D90-with-18-105mm-lens/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="25" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="3o5e1VghgJPfhLvT1JFKTA==" smartBu
 y="false" used="false"><name>Nikon D90 18-105mm VR Lens</name><description>The Nikon D90 SLR Digital Camera  with its 12.3-megapixel DX-format CMOS  3" High resolution LCD display  Scene Recognition System  Picture Control  Active D-Lighting  and one-button Live View  prov</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?
 p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image><image available="true" height="260" width="260"><sourceURL>http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-260x260-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">849.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">849.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=419&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=9390&amp;crawler_id=1905054&amp;dealId=3o5e1V
 ghgJPfhLvT1JFKTA%3D%3D&amp;url=http%3A%2F%2Fwww.ajrichard.com%2FNikon-D90-18-105mm-VR-Lens%2Fp-292%3Frefid%3DShopping%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+D90+18-105mm+VR+Lens&amp;dlprc=849.95&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=2&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=70621646&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=2&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=425&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="9390" trusted="false"><name>AJRichard</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/9390.gif</sourceURL></logo><phoneNumber>1-888-871-1256</phoneNumber><ratingInfo><
 reviewCount>3124</reviewCount><rating>4.48</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_ajrichard~MRD-9390~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>292</sku></offer><offer featured="false" id="_lYWj_jbwfsSkfcwUcDuww==" smartBuy="false" used="false"><name>Nikon D90 SLR w/Nikon 18-105mm VR Lens</name><description>12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-100x1
 00-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di108.shopping.com/images/di/5f
 /6c/59/576a5f6a62776673536b666377556344757777-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">909.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">909.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=487342&amp;crawler_id=487342&amp;dealId=_lYWj_jbwfsSkfcwUcDuww%3D%3D&amp;url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30971%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+Lens&amp;dlprc=909.0&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=3&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=
 DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=70621646&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=3&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=1&amp;code=&amp;acode=379&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="487342" trusted="false"><name>RytherCamera.com</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/487342.gif</sourceURL></logo><phoneNumber>1-877-644-7593</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>30971</sku></offer><offer featured="false" id="1KCclCGuWvty2XKU9skadg==" smartBuy="false" used="false"><name>25448/D90 12.3 Megapixel Digital Camera 18-105mm Zoom Lens w/ 3" Screen - 
 Black</name><description>Nikon D90 - Digital camera - SLR - 12.3 Mpix - Nikon AF-S DX 18-105mm lens - optical zoom: 5.8 x - supported memory: SD, SDHC</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&
 amp;r=3</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=3</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">1199.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">8.20</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1199.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=485615&amp;crawler_id=485615&amp;dealId=1KCclCGuWvty2XKU9skadg%3D%3D&amp;url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBRtFXpzYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcVlhCGGkPc3QDEkFZVQ0W
 FhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=25448%2FD90+12.3+Megapixel+Digital+Camera+18-105mm+Zoom+Lens+w%2F+3%22+Screen+-+Black&amp;dlprc=1199.0&amp;crn=&amp;istrsmrc=1&amp;isathrsl=0&amp;AR=4&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=70621646&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1&amp;RR=4&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=0&amp;code=&amp;acode=586&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</sourceURL></logo><phoneNumber>1-
 800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00353197000</sku></offer><offer featured="false" id="3-VOSfVV5Jo7HlA4kJtanA==" smartBuy="false" used="false"><name>Nikon® D90 12.3MP Digital SLR with 18-105mm Lens</name><description>The Nikon D90 will make you rethink what a digital SLR camera can achieve.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-100x100-0-0.jpg?p=p2.a121b
 c2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610&amp;t=111021183845&amp;r=4</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&amp;a=1&amp;c=1&amp;l=7000610
 &amp;t=111021183845&amp;r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">1350.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1350.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&amp;BEFID=7185&amp;aon=%5E1&amp;MerchantID=332477&amp;crawler_id=332477&amp;dealId=3-VOSfVV5Jo7HlA4kJtanA%3D%3D&amp;url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D982673361%26&amp;linkin_id=7000610&amp;Issdt=111021183845&amp;searchID=p2.a121bc2aaf029435dce6&amp;DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+with+18-105mm+Lens&amp;dlprc=1350.99&amp;crn=&amp;istrsmrc=0&amp;isathrsl=0&amp;AR=5&amp;NG=20&amp;NDP=200&amp;PN=1&amp;ST=7&amp;DB=sdcprod&amp;MT=phx-pkadudc2&amp;FPT=DSP&amp;NDS=&amp;NMS=&amp;MRS=&amp;PD=70621646&amp;brnId=14804&amp;IsFtr=0&amp;IsSmart=0&amp;DMT=&amp;op=&amp;CM=&amp;DlLng=1
 &amp;RR=5&amp;cid=&amp;semid1=&amp;semid2=&amp;IsLps=0&amp;CC=0&amp;SL=0&amp;FS=0&amp;code=&amp;acode=496&amp;category=&amp;HasLink=&amp;frameId=&amp;ND=&amp;MN=&amp;PT=&amp;prjID=&amp;GR=&amp;lnkId=&amp;VK=</offerURL><store authorizedReseller="false" id="332477" trusted="false"><name>RadioShack</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>11148905</sku></offer><offer featured="false" id="kQnB6rS4AjN5dx5h2_631g==" smartBuy="false" used="false"><n
 ame>Nikon D90 Kit 12.3-megapixel Digital SLR with 18-105mm VR Lens</name><description>Photographers, take your passion further!Now is the time for new creativity, and to rethink what a digital SLR camera can achieve. It's time for the D90, a camera with everything you would expect from Nikon's next-generation D-SLRs, and some unexpected surprises, as well. The stunning image quality is inherited from the D300, Nikon's DX-format flagship. The D90 also has Nikon's unmatched ergonomics and high performance, and now takes high-quality movies with beautifully cinematic results. The world of photography has changed, and with the D90 in your hands, it's time to make your own rules.AF-S DX NIKKOR 18-105mm f/3.5-5.6G ED VR LensWide-ratio 5.8x zoom Compact, versatile and ideal for a broad range of shooting situations, ranging from interiors and landscapes to beautiful portraits� a perfect everyday zoom. Nikon VR (Vibration Reduction) image stabilization Vibration Reduction is engineered 
 specifically for each VR NIKKOR lens and enables handheld shooting at up to 3 shutter speeds slower than would</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" heig

<TRUNCATED>

[39/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js b/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js
deleted file mode 100644
index 0d1c857..0000000
--- a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js
+++ /dev/null
@@ -1,2529 +0,0 @@
-var isCommonJS = typeof window == "undefined";
-
-/**
- * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework.
- *
- * @namespace
- */
-var jasmine = {};
-if (isCommonJS) exports.jasmine = jasmine;
-/**
- * @private
- */
-jasmine.unimplementedMethod_ = function() {
-  throw new Error("unimplemented method");
-};
-
-/**
- * Use <code>jasmine.undefined</code> instead of <code>undefined</code>, since <code>undefined</code> is just
- * a plain old variable and may be redefined by somebody else.
- *
- * @private
- */
-jasmine.undefined = jasmine.___undefined___;
-
-/**
- * Show diagnostic messages in the console if set to true
- *
- */
-jasmine.VERBOSE = false;
-
-/**
- * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed.
- *
- */
-jasmine.DEFAULT_UPDATE_INTERVAL = 250;
-
-/**
- * Default timeout interval in milliseconds for waitsFor() blocks.
- */
-jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000;
-
-jasmine.getGlobal = function() {
-  function getGlobal() {
-    return this;
-  }
-
-  return getGlobal();
-};
-
-/**
- * Allows for bound functions to be compared.  Internal use only.
- *
- * @ignore
- * @private
- * @param base {Object} bound 'this' for the function
- * @param name {Function} function to find
- */
-jasmine.bindOriginal_ = function(base, name) {
-  var original = base[name];
-  if (original.apply) {
-    return function() {
-      return original.apply(base, arguments);
-    };
-  } else {
-    // IE support
-    return jasmine.getGlobal()[name];
-  }
-};
-
-jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout');
-jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout');
-jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval');
-jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval');
-
-jasmine.MessageResult = function(values) {
-  this.type = 'log';
-  this.values = values;
-  this.trace = new Error(); // todo: test better
-};
-
-jasmine.MessageResult.prototype.toString = function() {
-  var text = "";
-  for (var i = 0; i < this.values.length; i++) {
-    if (i > 0) text += " ";
-    if (jasmine.isString_(this.values[i])) {
-      text += this.values[i];
-    } else {
-      text += jasmine.pp(this.values[i]);
-    }
-  }
-  return text;
-};
-
-jasmine.ExpectationResult = function(params) {
-  this.type = 'expect';
-  this.matcherName = params.matcherName;
-  this.passed_ = params.passed;
-  this.expected = params.expected;
-  this.actual = params.actual;
-  this.message = this.passed_ ? 'Passed.' : params.message;
-
-  var trace = (params.trace || new Error(this.message));
-  this.trace = this.passed_ ? '' : trace;
-};
-
-jasmine.ExpectationResult.prototype.toString = function () {
-  return this.message;
-};
-
-jasmine.ExpectationResult.prototype.passed = function () {
-  return this.passed_;
-};
-
-/**
- * Getter for the Jasmine environment. Ensures one gets created
- */
-jasmine.getEnv = function() {
-  var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env();
-  return env;
-};
-
-/**
- * @ignore
- * @private
- * @param value
- * @returns {Boolean}
- */
-jasmine.isArray_ = function(value) {
-  return jasmine.isA_("Array", value);
-};
-
-/**
- * @ignore
- * @private
- * @param value
- * @returns {Boolean}
- */
-jasmine.isString_ = function(value) {
-  return jasmine.isA_("String", value);
-};
-
-/**
- * @ignore
- * @private
- * @param value
- * @returns {Boolean}
- */
-jasmine.isNumber_ = function(value) {
-  return jasmine.isA_("Number", value);
-};
-
-/**
- * @ignore
- * @private
- * @param {String} typeName
- * @param value
- * @returns {Boolean}
- */
-jasmine.isA_ = function(typeName, value) {
-  return Object.prototype.toString.apply(value) === '[object ' + typeName + ']';
-};
-
-/**
- * Pretty printer for expectations.  Takes any object and turns it into a human-readable string.
- *
- * @param value {Object} an object to be outputted
- * @returns {String}
- */
-jasmine.pp = function(value) {
-  var stringPrettyPrinter = new jasmine.StringPrettyPrinter();
-  stringPrettyPrinter.format(value);
-  return stringPrettyPrinter.string;
-};
-
-/**
- * Returns true if the object is a DOM Node.
- *
- * @param {Object} obj object to check
- * @returns {Boolean}
- */
-jasmine.isDomNode = function(obj) {
-  return obj.nodeType > 0;
-};
-
-/**
- * Returns a matchable 'generic' object of the class type.  For use in expectations of type when values don't matter.
- *
- * @example
- * // don't care about which function is passed in, as long as it's a function
- * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function));
- *
- * @param {Class} clazz
- * @returns matchable object of the type clazz
- */
-jasmine.any = function(clazz) {
-  return new jasmine.Matchers.Any(clazz);
-};
-
-/**
- * Returns a matchable subset of a JSON object. For use in expectations when you don't care about all of the
- * attributes on the object.
- *
- * @example
- * // don't care about any other attributes than foo.
- * expect(mySpy).toHaveBeenCalledWith(jasmine.objectContaining({foo: "bar"});
- *
- * @param sample {Object} sample
- * @returns matchable object for the sample
- */
-jasmine.objectContaining = function (sample) {
-    return new jasmine.Matchers.ObjectContaining(sample);
-};
-
-/**
- * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expectation, mocks.
- *
- * Spies should be created in test setup, before expectations.  They can then be checked, using the standard Jasmine
- * expectation syntax. Spies can be checked if they were called or not and what the calling params were.
- *
- * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs).
- *
- * Spies are torn down at the end of every spec.
- *
- * Note: Do <b>not</b> call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj.
- *
- * @example
- * // a stub
- * var myStub = jasmine.createSpy('myStub');  // can be used anywhere
- *
- * // spy example
- * var foo = {
- *   not: function(bool) { return !bool; }
- * }
- *
- * // actual foo.not will not be called, execution stops
- * spyOn(foo, 'not');
-
- // foo.not spied upon, execution will continue to implementation
- * spyOn(foo, 'not').andCallThrough();
- *
- * // fake example
- * var foo = {
- *   not: function(bool) { return !bool; }
- * }
- *
- * // foo.not(val) will return val
- * spyOn(foo, 'not').andCallFake(function(value) {return value;});
- *
- * // mock example
- * foo.not(7 == 7);
- * expect(foo.not).toHaveBeenCalled();
- * expect(foo.not).toHaveBeenCalledWith(true);
- *
- * @constructor
- * @see spyOn, jasmine.createSpy, jasmine.createSpyObj
- * @param {String} name
- */
-jasmine.Spy = function(name) {
-  /**
-   * The name of the spy, if provided.
-   */
-  this.identity = name || 'unknown';
-  /**
-   *  Is this Object a spy?
-   */
-  this.isSpy = true;
-  /**
-   * The actual function this spy stubs.
-   */
-  this.plan = function() {
-  };
-  /**
-   * Tracking of the most recent call to the spy.
-   * @example
-   * var mySpy = jasmine.createSpy('foo');
-   * mySpy(1, 2);
-   * mySpy.mostRecentCall.args = [1, 2];
-   */
-  this.mostRecentCall = {};
-
-  /**
-   * Holds arguments for each call to the spy, indexed by call count
-   * @example
-   * var mySpy = jasmine.createSpy('foo');
-   * mySpy(1, 2);
-   * mySpy(7, 8);
-   * mySpy.mostRecentCall.args = [7, 8];
-   * mySpy.argsForCall[0] = [1, 2];
-   * mySpy.argsForCall[1] = [7, 8];
-   */
-  this.argsForCall = [];
-  this.calls = [];
-};
-
-/**
- * Tells a spy to call through to the actual implementation.
- *
- * @example
- * var foo = {
- *   bar: function() { // do some stuff }
- * }
- *
- * // defining a spy on an existing property: foo.bar
- * spyOn(foo, 'bar').andCallThrough();
- */
-jasmine.Spy.prototype.andCallThrough = function() {
-  this.plan = this.originalValue;
-  return this;
-};
-
-/**
- * For setting the return value of a spy.
- *
- * @example
- * // defining a spy from scratch: foo() returns 'baz'
- * var foo = jasmine.createSpy('spy on foo').andReturn('baz');
- *
- * // defining a spy on an existing property: foo.bar() returns 'baz'
- * spyOn(foo, 'bar').andReturn('baz');
- *
- * @param {Object} value
- */
-jasmine.Spy.prototype.andReturn = function(value) {
-  this.plan = function() {
-    return value;
-  };
-  return this;
-};
-
-/**
- * For throwing an exception when a spy is called.
- *
- * @example
- * // defining a spy from scratch: foo() throws an exception w/ message 'ouch'
- * var foo = jasmine.createSpy('spy on foo').andThrow('baz');
- *
- * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch'
- * spyOn(foo, 'bar').andThrow('baz');
- *
- * @param {String} exceptionMsg
- */
-jasmine.Spy.prototype.andThrow = function(exceptionMsg) {
-  this.plan = function() {
-    throw exceptionMsg;
-  };
-  return this;
-};
-
-/**
- * Calls an alternate implementation when a spy is called.
- *
- * @example
- * var baz = function() {
- *   // do some stuff, return something
- * }
- * // defining a spy from scratch: foo() calls the function baz
- * var foo = jasmine.createSpy('spy on foo').andCall(baz);
- *
- * // defining a spy on an existing property: foo.bar() calls an anonymous function
- * spyOn(foo, 'bar').andCall(function() { return 'baz';} );
- *
- * @param {Function} fakeFunc
- */
-jasmine.Spy.prototype.andCallFake = function(fakeFunc) {
-  this.plan = fakeFunc;
-  return this;
-};
-
-/**
- * Resets all of a spy's the tracking variables so that it can be used again.
- *
- * @example
- * spyOn(foo, 'bar');
- *
- * foo.bar();
- *
- * expect(foo.bar.callCount).toEqual(1);
- *
- * foo.bar.reset();
- *
- * expect(foo.bar.callCount).toEqual(0);
- */
-jasmine.Spy.prototype.reset = function() {
-  this.wasCalled = false;
-  this.callCount = 0;
-  this.argsForCall = [];
-  this.calls = [];
-  this.mostRecentCall = {};
-};
-
-jasmine.createSpy = function(name) {
-
-  var spyObj = function() {
-    spyObj.wasCalled = true;
-    spyObj.callCount++;
-    var args = jasmine.util.argsToArray(arguments);
-    spyObj.mostRecentCall.object = this;
-    spyObj.mostRecentCall.args = args;
-    spyObj.argsForCall.push(args);
-    spyObj.calls.push({object: this, args: args});
-    return spyObj.plan.apply(this, arguments);
-  };
-
-  var spy = new jasmine.Spy(name);
-
-  for (var prop in spy) {
-    spyObj[prop] = spy[prop];
-  }
-
-  spyObj.reset();
-
-  return spyObj;
-};
-
-/**
- * Determines whether an object is a spy.
- *
- * @param {jasmine.Spy|Object} putativeSpy
- * @returns {Boolean}
- */
-jasmine.isSpy = function(putativeSpy) {
-  return putativeSpy && putativeSpy.isSpy;
-};
-
-/**
- * Creates a more complicated spy: an Object that has every property a function that is a spy.  Used for stubbing something
- * large in one call.
- *
- * @param {String} baseName name of spy class
- * @param {Array} methodNames array of names of methods to make spies
- */
-jasmine.createSpyObj = function(baseName, methodNames) {
-  if (!jasmine.isArray_(methodNames) || methodNames.length === 0) {
-    throw new Error('createSpyObj requires a non-empty array of method names to create spies for');
-  }
-  var obj = {};
-  for (var i = 0; i < methodNames.length; i++) {
-    obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]);
-  }
-  return obj;
-};
-
-/**
- * All parameters are pretty-printed and concatenated together, then written to the current spec's output.
- *
- * Be careful not to leave calls to <code>jasmine.log</code> in production code.
- */
-jasmine.log = function() {
-  var spec = jasmine.getEnv().currentSpec;
-  spec.log.apply(spec, arguments);
-};
-
-/**
- * Function that installs a spy on an existing object's method name.  Used within a Spec to create a spy.
- *
- * @example
- * // spy example
- * var foo = {
- *   not: function(bool) { return !bool; }
- * }
- * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops
- *
- * @see jasmine.createSpy
- * @param obj
- * @param methodName
- * @returns a Jasmine spy that can be chained with all spy methods
- */
-var spyOn = function(obj, methodName) {
-  return jasmine.getEnv().currentSpec.spyOn(obj, methodName);
-};
-if (isCommonJS) exports.spyOn = spyOn;
-
-/**
- * Creates a Jasmine spec that will be added to the current suite.
- *
- * // TODO: pending tests
- *
- * @example
- * it('should be true', function() {
- *   expect(true).toEqual(true);
- * });
- *
- * @param {String} desc description of this specification
- * @param {Function} func defines the preconditions and expectations of the spec
- */
-var it = function(desc, func) {
-  return jasmine.getEnv().it(desc, func);
-};
-if (isCommonJS) exports.it = it;
-
-/**
- * Creates a <em>disabled</em> Jasmine spec.
- *
- * A convenience method that allows existing specs to be disabled temporarily during development.
- *
- * @param {String} desc description of this specification
- * @param {Function} func defines the preconditions and expectations of the spec
- */
-var xit = function(desc, func) {
-  return jasmine.getEnv().xit(desc, func);
-};
-if (isCommonJS) exports.xit = xit;
-
-/**
- * Starts a chain for a Jasmine expectation.
- *
- * It is passed an Object that is the actual value and should chain to one of the many
- * jasmine.Matchers functions.
- *
- * @param {Object} actual Actual value to test against and expected value
- */
-var expect = function(actual) {
-  return jasmine.getEnv().currentSpec.expect(actual);
-};
-if (isCommonJS) exports.expect = expect;
-
-/**
- * Defines part of a jasmine spec.  Used in combination with waits or waitsFor in asynchronous specs.
- *
- * @param {Function} func Function that defines part of a jasmine spec.
- */
-var runs = function(func) {
-  jasmine.getEnv().currentSpec.runs(func);
-};
-if (isCommonJS) exports.runs = runs;
-
-/**
- * Waits a fixed time period before moving to the next block.
- *
- * @deprecated Use waitsFor() instead
- * @param {Number} timeout milliseconds to wait
- */
-var waits = function(timeout) {
-  jasmine.getEnv().currentSpec.waits(timeout);
-};
-if (isCommonJS) exports.waits = waits;
-
-/**
- * Waits for the latchFunction to return true before proceeding to the next block.
- *
- * @param {Function} latchFunction
- * @param {String} optional_timeoutMessage
- * @param {Number} optional_timeout
- */
-var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) {
-  jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments);
-};
-if (isCommonJS) exports.waitsFor = waitsFor;
-
-/**
- * A function that is called before each spec in a suite.
- *
- * Used for spec setup, including validating assumptions.
- *
- * @param {Function} beforeEachFunction
- */
-var beforeEach = function(beforeEachFunction) {
-  jasmine.getEnv().beforeEach(beforeEachFunction);
-};
-if (isCommonJS) exports.beforeEach = beforeEach;
-
-/**
- * A function that is called after each spec in a suite.
- *
- * Used for restoring any state that is hijacked during spec execution.
- *
- * @param {Function} afterEachFunction
- */
-var afterEach = function(afterEachFunction) {
-  jasmine.getEnv().afterEach(afterEachFunction);
-};
-if (isCommonJS) exports.afterEach = afterEach;
-
-/**
- * Defines a suite of specifications.
- *
- * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared
- * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization
- * of setup in some tests.
- *
- * @example
- * // TODO: a simple suite
- *
- * // TODO: a simple suite with a nested describe block
- *
- * @param {String} description A string, usually the class under test.
- * @param {Function} specDefinitions function that defines several specs.
- */
-var describe = function(description, specDefinitions) {
-  return jasmine.getEnv().describe(description, specDefinitions);
-};
-if (isCommonJS) exports.describe = describe;
-
-/**
- * Disables a suite of specifications.  Used to disable some suites in a file, or files, temporarily during development.
- *
- * @param {String} description A string, usually the class under test.
- * @param {Function} specDefinitions function that defines several specs.
- */
-var xdescribe = function(description, specDefinitions) {
-  return jasmine.getEnv().xdescribe(description, specDefinitions);
-};
-if (isCommonJS) exports.xdescribe = xdescribe;
-
-
-// Provide the XMLHttpRequest class for IE 5.x-6.x:
-jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() {
-  function tryIt(f) {
-    try {
-      return f();
-    } catch(e) {
-    }
-    return null;
-  }
-
-  var xhr = tryIt(function() {
-    return new ActiveXObject("Msxml2.XMLHTTP.6.0");
-  }) ||
-    tryIt(function() {
-      return new ActiveXObject("Msxml2.XMLHTTP.3.0");
-    }) ||
-    tryIt(function() {
-      return new ActiveXObject("Msxml2.XMLHTTP");
-    }) ||
-    tryIt(function() {
-      return new ActiveXObject("Microsoft.XMLHTTP");
-    });
-
-  if (!xhr) throw new Error("This browser does not support XMLHttpRequest.");
-
-  return xhr;
-} : XMLHttpRequest;
-/**
- * @namespace
- */
-jasmine.util = {};
-
-/**
- * Declare that a child class inherit it's prototype from the parent class.
- *
- * @private
- * @param {Function} childClass
- * @param {Function} parentClass
- */
-jasmine.util.inherit = function(childClass, parentClass) {
-  /**
-   * @private
-   */
-  var subclass = function() {
-  };
-  subclass.prototype = parentClass.prototype;
-  childClass.prototype = new subclass();
-};
-
-jasmine.util.formatException = function(e) {
-  var lineNumber;
-  if (e.line) {
-    lineNumber = e.line;
-  }
-  else if (e.lineNumber) {
-    lineNumber = e.lineNumber;
-  }
-
-  var file;
-
-  if (e.sourceURL) {
-    file = e.sourceURL;
-  }
-  else if (e.fileName) {
-    file = e.fileName;
-  }
-
-  var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString();
-
-  if (file && lineNumber) {
-    message += ' in ' + file + ' (line ' + lineNumber + ')';
-  }
-
-  return message;
-};
-
-jasmine.util.htmlEscape = function(str) {
-  if (!str) return str;
-  return str.replace(/&/g, '&amp;')
-    .replace(/</g, '&lt;')
-    .replace(/>/g, '&gt;');
-};
-
-jasmine.util.argsToArray = function(args) {
-  var arrayOfArgs = [];
-  for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
-  return arrayOfArgs;
-};
-
-jasmine.util.extend = function(destination, source) {
-  for (var property in source) destination[property] = source[property];
-  return destination;
-};
-
-/**
- * Environment for Jasmine
- *
- * @constructor
- */
-jasmine.Env = function() {
-  this.currentSpec = null;
-  this.currentSuite = null;
-  this.currentRunner_ = new jasmine.Runner(this);
-
-  this.reporter = new jasmine.MultiReporter();
-
-  this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL;
-  this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL;
-  this.lastUpdate = 0;
-  this.specFilter = function() {
-    return true;
-  };
-
-  this.nextSpecId_ = 0;
-  this.nextSuiteId_ = 0;
-  this.equalityTesters_ = [];
-
-  // wrap matchers
-  this.matchersClass = function() {
-    jasmine.Matchers.apply(this, arguments);
-  };
-  jasmine.util.inherit(this.matchersClass, jasmine.Matchers);
-
-  jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass);
-};
-
-
-jasmine.Env.prototype.setTimeout = jasmine.setTimeout;
-jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout;
-jasmine.Env.prototype.setInterval = jasmine.setInterval;
-jasmine.Env.prototype.clearInterval = jasmine.clearInterval;
-
-/**
- * @returns an object containing jasmine version build info, if set.
- */
-jasmine.Env.prototype.version = function () {
-  if (jasmine.version_) {
-    return jasmine.version_;
-  } else {
-    throw new Error('Version not set');
-  }
-};
-
-/**
- * @returns string containing jasmine version build info, if set.
- */
-jasmine.Env.prototype.versionString = function() {
-  if (!jasmine.version_) {
-    return "version unknown";
-  }
-
-  var version = this.version();
-  var versionString = version.major + "." + version.minor + "." + version.build;
-  if (version.release_candidate) {
-    versionString += ".rc" + version.release_candidate;
-  }
-  versionString += " revision " + version.revision;
-  return versionString;
-};
-
-/**
- * @returns a sequential integer starting at 0
- */
-jasmine.Env.prototype.nextSpecId = function () {
-  return this.nextSpecId_++;
-};
-
-/**
- * @returns a sequential integer starting at 0
- */
-jasmine.Env.prototype.nextSuiteId = function () {
-  return this.nextSuiteId_++;
-};
-
-/**
- * Register a reporter to receive status updates from Jasmine.
- * @param {jasmine.Reporter} reporter An object which will receive status updates.
- */
-jasmine.Env.prototype.addReporter = function(reporter) {
-  this.reporter.addReporter(reporter);
-};
-
-jasmine.Env.prototype.execute = function() {
-  this.currentRunner_.execute();
-};
-
-jasmine.Env.prototype.describe = function(description, specDefinitions) {
-  var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite);
-
-  var parentSuite = this.currentSuite;
-  if (parentSuite) {
-    parentSuite.add(suite);
-  } else {
-    this.currentRunner_.add(suite);
-  }
-
-  this.currentSuite = suite;
-
-  var declarationError = null;
-  try {
-    specDefinitions.call(suite);
-  } catch(e) {
-    declarationError = e;
-  }
-
-  if (declarationError) {
-    this.it("encountered a declaration exception", function() {
-      throw declarationError;
-    });
-  }
-
-  this.currentSuite = parentSuite;
-
-  return suite;
-};
-
-jasmine.Env.prototype.beforeEach = function(beforeEachFunction) {
-  if (this.currentSuite) {
-    this.currentSuite.beforeEach(beforeEachFunction);
-  } else {
-    this.currentRunner_.beforeEach(beforeEachFunction);
-  }
-};
-
-jasmine.Env.prototype.currentRunner = function () {
-  return this.currentRunner_;
-};
-
-jasmine.Env.prototype.afterEach = function(afterEachFunction) {
-  if (this.currentSuite) {
-    this.currentSuite.afterEach(afterEachFunction);
-  } else {
-    this.currentRunner_.afterEach(afterEachFunction);
-  }
-
-};
-
-jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) {
-  return {
-    execute: function() {
-    }
-  };
-};
-
-jasmine.Env.prototype.it = function(description, func) {
-  var spec = new jasmine.Spec(this, this.currentSuite, description);
-  this.currentSuite.add(spec);
-  this.currentSpec = spec;
-
-  if (func) {
-    spec.runs(func);
-  }
-
-  return spec;
-};
-
-jasmine.Env.prototype.xit = function(desc, func) {
-  return {
-    id: this.nextSpecId(),
-    runs: function() {
-    }
-  };
-};
-
-jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) {
-  if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) {
-    return true;
-  }
-
-  a.__Jasmine_been_here_before__ = b;
-  b.__Jasmine_been_here_before__ = a;
-
-  var hasKey = function(obj, keyName) {
-    return obj !== null && obj[keyName] !== jasmine.undefined;
-  };
-
-  for (var property in b) {
-    if (!hasKey(a, property) && hasKey(b, property)) {
-      mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
-    }
-  }
-  for (property in a) {
-    if (!hasKey(b, property) && hasKey(a, property)) {
-      mismatchKeys.push("expected missing key '" + property + "', but present in actual.");
-    }
-  }
-  for (property in b) {
-    if (property == '__Jasmine_been_here_before__') continue;
-    if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) {
-      mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual.");
-    }
-  }
-
-  if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) {
-    mismatchValues.push("arrays were not the same length");
-  }
-
-  delete a.__Jasmine_been_here_before__;
-  delete b.__Jasmine_been_here_before__;
-  return (mismatchKeys.length === 0 && mismatchValues.length === 0);
-};
-
-jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) {
-  mismatchKeys = mismatchKeys || [];
-  mismatchValues = mismatchValues || [];
-
-  for (var i = 0; i < this.equalityTesters_.length; i++) {
-    var equalityTester = this.equalityTesters_[i];
-    var result = equalityTester(a, b, this, mismatchKeys, mismatchValues);
-    if (result !== jasmine.undefined) return result;
-  }
-
-  if (a === b) return true;
-
-  if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) {
-    return (a == jasmine.undefined && b == jasmine.undefined);
-  }
-
-  if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) {
-    return a === b;
-  }
-
-  if (a instanceof Date && b instanceof Date) {
-    return a.getTime() == b.getTime();
-  }
-
-  if (a.jasmineMatches) {
-    return a.jasmineMatches(b);
-  }
-
-  if (b.jasmineMatches) {
-    return b.jasmineMatches(a);
-  }
-
-  if (a instanceof jasmine.Matchers.ObjectContaining) {
-    return a.matches(b);
-  }
-
-  if (b instanceof jasmine.Matchers.ObjectContaining) {
-    return b.matches(a);
-  }
-
-  if (jasmine.isString_(a) && jasmine.isString_(b)) {
-    return (a == b);
-  }
-
-  if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) {
-    return (a == b);
-  }
-
-  if (typeof a === "object" && typeof b === "object") {
-    return this.compareObjects_(a, b, mismatchKeys, mismatchValues);
-  }
-
-  //Straight check
-  return (a === b);
-};
-
-jasmine.Env.prototype.contains_ = function(haystack, needle) {
-  if (jasmine.isArray_(haystack)) {
-    for (var i = 0; i < haystack.length; i++) {
-      if (this.equals_(haystack[i], needle)) return true;
-    }
-    return false;
-  }
-  return haystack.indexOf(needle) >= 0;
-};
-
-jasmine.Env.prototype.addEqualityTester = function(equalityTester) {
-  this.equalityTesters_.push(equalityTester);
-};
-/** No-op base class for Jasmine reporters.
- *
- * @constructor
- */
-jasmine.Reporter = function() {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportRunnerStarting = function(runner) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportRunnerResults = function(runner) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportSuiteResults = function(suite) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportSpecStarting = function(spec) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.reportSpecResults = function(spec) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.Reporter.prototype.log = function(str) {
-};
-
-/**
- * Blocks are functions with executable code that make up a spec.
- *
- * @constructor
- * @param {jasmine.Env} env
- * @param {Function} func
- * @param {jasmine.Spec} spec
- */
-jasmine.Block = function(env, func, spec) {
-  this.env = env;
-  this.func = func;
-  this.spec = spec;
-};
-
-jasmine.Block.prototype.execute = function(onComplete) {  
-  try {
-    this.func.apply(this.spec);
-  } catch (e) {
-    this.spec.fail(e);
-  }
-  onComplete();
-};
-/** JavaScript API reporter.
- *
- * @constructor
- */
-jasmine.JsApiReporter = function() {
-  this.started = false;
-  this.finished = false;
-  this.suites_ = [];
-  this.results_ = {};
-};
-
-jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) {
-  this.started = true;
-  var suites = runner.topLevelSuites();
-  for (var i = 0; i < suites.length; i++) {
-    var suite = suites[i];
-    this.suites_.push(this.summarize_(suite));
-  }
-};
-
-jasmine.JsApiReporter.prototype.suites = function() {
-  return this.suites_;
-};
-
-jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) {
-  var isSuite = suiteOrSpec instanceof jasmine.Suite;
-  var summary = {
-    id: suiteOrSpec.id,
-    name: suiteOrSpec.description,
-    type: isSuite ? 'suite' : 'spec',
-    children: []
-  };
-  
-  if (isSuite) {
-    var children = suiteOrSpec.children();
-    for (var i = 0; i < children.length; i++) {
-      summary.children.push(this.summarize_(children[i]));
-    }
-  }
-  return summary;
-};
-
-jasmine.JsApiReporter.prototype.results = function() {
-  return this.results_;
-};
-
-jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) {
-  return this.results_[specId];
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) {
-  this.finished = true;
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) {
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) {
-  this.results_[spec.id] = {
-    messages: spec.results().getItems(),
-    result: spec.results().failedCount > 0 ? "failed" : "passed"
-  };
-};
-
-//noinspection JSUnusedLocalSymbols
-jasmine.JsApiReporter.prototype.log = function(str) {
-};
-
-jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){
-  var results = {};
-  for (var i = 0; i < specIds.length; i++) {
-    var specId = specIds[i];
-    results[specId] = this.summarizeResult_(this.results_[specId]);
-  }
-  return results;
-};
-
-jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){
-  var summaryMessages = [];
-  var messagesLength = result.messages.length;
-  for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) {
-    var resultMessage = result.messages[messageIndex];
-    summaryMessages.push({
-      text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined,
-      passed: resultMessage.passed ? resultMessage.passed() : true,
-      type: resultMessage.type,
-      message: resultMessage.message,
-      trace: {
-        stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined
-      }
-    });
-  }
-
-  return {
-    result : result.result,
-    messages : summaryMessages
-  };
-};
-
-/**
- * @constructor
- * @param {jasmine.Env} env
- * @param actual
- * @param {jasmine.Spec} spec
- */
-jasmine.Matchers = function(env, actual, spec, opt_isNot) {
-  this.env = env;
-  this.actual = actual;
-  this.spec = spec;
-  this.isNot = opt_isNot || false;
-  this.reportWasCalled_ = false;
-};
-
-// todo: @deprecated as of Jasmine 0.11, remove soon [xw]
-jasmine.Matchers.pp = function(str) {
-  throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!");
-};
-
-// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw]
-jasmine.Matchers.prototype.report = function(result, failing_message, details) {
-  throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs");
-};
-
-jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) {
-  for (var methodName in prototype) {
-    if (methodName == 'report') continue;
-    var orig = prototype[methodName];
-    matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig);
-  }
-};
-
-jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) {
-  return function() {
-    var matcherArgs = jasmine.util.argsToArray(arguments);
-    var result = matcherFunction.apply(this, arguments);
-
-    if (this.isNot) {
-      result = !result;
-    }
-
-    if (this.reportWasCalled_) return result;
-
-    var message;
-    if (!result) {
-      if (this.message) {
-        message = this.message.apply(this, arguments);
-        if (jasmine.isArray_(message)) {
-          message = message[this.isNot ? 1 : 0];
-        }
-      } else {
-        var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); });
-        message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate;
-        if (matcherArgs.length > 0) {
-          for (var i = 0; i < matcherArgs.length; i++) {
-            if (i > 0) message += ",";
-            message += " " + jasmine.pp(matcherArgs[i]);
-          }
-        }
-        message += ".";
-      }
-    }
-    var expectationResult = new jasmine.ExpectationResult({
-      matcherName: matcherName,
-      passed: result,
-      expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0],
-      actual: this.actual,
-      message: message
-    });
-    this.spec.addMatcherResult(expectationResult);
-    return jasmine.undefined;
-  };
-};
-
-
-
-
-/**
- * toBe: compares the actual to the expected using ===
- * @param expected
- */
-jasmine.Matchers.prototype.toBe = function(expected) {
-  return this.actual === expected;
-};
-
-/**
- * toNotBe: compares the actual to the expected using !==
- * @param expected
- * @deprecated as of 1.0. Use not.toBe() instead.
- */
-jasmine.Matchers.prototype.toNotBe = function(expected) {
-  return this.actual !== expected;
-};
-
-/**
- * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc.
- *
- * @param expected
- */
-jasmine.Matchers.prototype.toEqual = function(expected) {
-  return this.env.equals_(this.actual, expected);
-};
-
-/**
- * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual
- * @param expected
- * @deprecated as of 1.0. Use not.toEqual() instead.
- */
-jasmine.Matchers.prototype.toNotEqual = function(expected) {
-  return !this.env.equals_(this.actual, expected);
-};
-
-/**
- * Matcher that compares the actual to the expected using a regular expression.  Constructs a RegExp, so takes
- * a pattern or a String.
- *
- * @param expected
- */
-jasmine.Matchers.prototype.toMatch = function(expected) {
-  return new RegExp(expected).test(this.actual);
-};
-
-/**
- * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch
- * @param expected
- * @deprecated as of 1.0. Use not.toMatch() instead.
- */
-jasmine.Matchers.prototype.toNotMatch = function(expected) {
-  return !(new RegExp(expected).test(this.actual));
-};
-
-/**
- * Matcher that compares the actual to jasmine.undefined.
- */
-jasmine.Matchers.prototype.toBeDefined = function() {
-  return (this.actual !== jasmine.undefined);
-};
-
-/**
- * Matcher that compares the actual to jasmine.undefined.
- */
-jasmine.Matchers.prototype.toBeUndefined = function() {
-  return (this.actual === jasmine.undefined);
-};
-
-/**
- * Matcher that compares the actual to null.
- */
-jasmine.Matchers.prototype.toBeNull = function() {
-  return (this.actual === null);
-};
-
-/**
- * Matcher that boolean not-nots the actual.
- */
-jasmine.Matchers.prototype.toBeTruthy = function() {
-  return !!this.actual;
-};
-
-
-/**
- * Matcher that boolean nots the actual.
- */
-jasmine.Matchers.prototype.toBeFalsy = function() {
-  return !this.actual;
-};
-
-
-/**
- * Matcher that checks to see if the actual, a Jasmine spy, was called.
- */
-jasmine.Matchers.prototype.toHaveBeenCalled = function() {
-  if (arguments.length > 0) {
-    throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith');
-  }
-
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-
-  this.message = function() {
-    return [
-      "Expected spy " + this.actual.identity + " to have been called.",
-      "Expected spy " + this.actual.identity + " not to have been called."
-    ];
-  };
-
-  return this.actual.wasCalled;
-};
-
-/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */
-jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled;
-
-/**
- * Matcher that checks to see if the actual, a Jasmine spy, was not called.
- *
- * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead
- */
-jasmine.Matchers.prototype.wasNotCalled = function() {
-  if (arguments.length > 0) {
-    throw new Error('wasNotCalled does not take arguments');
-  }
-
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-
-  this.message = function() {
-    return [
-      "Expected spy " + this.actual.identity + " to not have been called.",
-      "Expected spy " + this.actual.identity + " to have been called."
-    ];
-  };
-
-  return !this.actual.wasCalled;
-};
-
-/**
- * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters.
- *
- * @example
- *
- */
-jasmine.Matchers.prototype.toHaveBeenCalledWith = function() {
-  var expectedArgs = jasmine.util.argsToArray(arguments);
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-  this.message = function() {
-    if (this.actual.callCount === 0) {
-      // todo: what should the failure message for .not.toHaveBeenCalledWith() be? is this right? test better. [xw]
-      return [
-        "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called.",
-        "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was."
-      ];
-    } else {
-      return [
-        "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall),
-        "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall)
-      ];
-    }
-  };
-
-  return this.env.contains_(this.actual.argsForCall, expectedArgs);
-};
-
-/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */
-jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith;
-
-/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */
-jasmine.Matchers.prototype.wasNotCalledWith = function() {
-  var expectedArgs = jasmine.util.argsToArray(arguments);
-  if (!jasmine.isSpy(this.actual)) {
-    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
-  }
-
-  this.message = function() {
-    return [
-      "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was",
-      "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was"
-    ];
-  };
-
-  return !this.env.contains_(this.actual.argsForCall, expectedArgs);
-};
-
-/**
- * Matcher that checks that the expected item is an element in the actual Array.
- *
- * @param {Object} expected
- */
-jasmine.Matchers.prototype.toContain = function(expected) {
-  return this.env.contains_(this.actual, expected);
-};
-
-/**
- * Matcher that checks that the expected item is NOT an element in the actual Array.
- *
- * @param {Object} expected
- * @deprecated as of 1.0. Use not.toContain() instead.
- */
-jasmine.Matchers.prototype.toNotContain = function(expected) {
-  return !this.env.contains_(this.actual, expected);
-};
-
-jasmine.Matchers.prototype.toBeLessThan = function(expected) {
-  return this.actual < expected;
-};
-
-jasmine.Matchers.prototype.toBeGreaterThan = function(expected) {
-  return this.actual > expected;
-};
-
-/**
- * Matcher that checks that the expected item is equal to the actual item
- * up to a given level of decimal precision (default 2).
- *
- * @param {Number} expected
- * @param {Number} precision
- */
-jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) {
-  if (!(precision === 0)) {
-    precision = precision || 2;
-  }
-  var multiplier = Math.pow(10, precision);
-  var actual = Math.round(this.actual * multiplier);
-  expected = Math.round(expected * multiplier);
-  return expected == actual;
-};
-
-/**
- * Matcher that checks that the expected exception was thrown by the actual.
- *
- * @param {String} expected
- */
-jasmine.Matchers.prototype.toThrow = function(expected) {
-  var result = false;
-  var exception;
-  if (typeof this.actual != 'function') {
-    throw new Error('Actual is not a function');
-  }
-  try {
-    this.actual();
-  } catch (e) {
-    exception = e;
-  }
-  if (exception) {
-    result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected));
-  }
-
-  var not = this.isNot ? "not " : "";
-
-  this.message = function() {
-    if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) {
-      return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' ');
-    } else {
-      return "Expected function to throw an exception.";
-    }
-  };
-
-  return result;
-};
-
-jasmine.Matchers.Any = function(expectedClass) {
-  this.expectedClass = expectedClass;
-};
-
-jasmine.Matchers.Any.prototype.jasmineMatches = function(other) {
-  if (this.expectedClass == String) {
-    return typeof other == 'string' || other instanceof String;
-  }
-
-  if (this.expectedClass == Number) {
-    return typeof other == 'number' || other instanceof Number;
-  }
-
-  if (this.expectedClass == Function) {
-    return typeof other == 'function' || other instanceof Function;
-  }
-
-  if (this.expectedClass == Object) {
-    return typeof other == 'object';
-  }
-
-  return other instanceof this.expectedClass;
-};
-
-jasmine.Matchers.Any.prototype.jasmineToString = function() {
-  return '<jasmine.any(' + this.expectedClass + ')>';
-};
-
-jasmine.Matchers.ObjectContaining = function (sample) {
-  this.sample = sample;
-};
-
-jasmine.Matchers.ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) {
-  mismatchKeys = mismatchKeys || [];
-  mismatchValues = mismatchValues || [];
-
-  var env = jasmine.getEnv();
-
-  var hasKey = function(obj, keyName) {
-    return obj != null && obj[keyName] !== jasmine.undefined;
-  };
-
-  for (var property in this.sample) {
-    if (!hasKey(other, property) && hasKey(this.sample, property)) {
-      mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
-    }
-    else if (!env.equals_(this.sample[property], other[property], mismatchKeys, mismatchValues)) {
-      mismatchValues.push("'" + property + "' was '" + (other[property] ? jasmine.util.htmlEscape(other[property].toString()) : other[property]) + "' in expected, but was '" + (this.sample[property] ? jasmine.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + "' in actual.");
-    }
-  }
-
-  return (mismatchKeys.length === 0 && mismatchValues.length === 0);
-};
-
-jasmine.Matchers.ObjectContaining.prototype.jasmineToString = function () {
-  return "<jasmine.objectContaining(" + jasmine.pp(this.sample) + ")>";
-};
-// Mock setTimeout, clearTimeout
-// Contributed by Pivotal Computer Systems, www.pivotalsf.com
-
-jasmine.FakeTimer = function() {
-  this.reset();
-
-  var self = this;
-  self.setTimeout = function(funcToCall, millis) {
-    self.timeoutsMade++;
-    self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false);
-    return self.timeoutsMade;
-  };
-
-  self.setInterval = function(funcToCall, millis) {
-    self.timeoutsMade++;
-    self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true);
-    return self.timeoutsMade;
-  };
-
-  self.clearTimeout = function(timeoutKey) {
-    self.scheduledFunctions[timeoutKey] = jasmine.undefined;
-  };
-
-  self.clearInterval = function(timeoutKey) {
-    self.scheduledFunctions[timeoutKey] = jasmine.undefined;
-  };
-
-};
-
-jasmine.FakeTimer.prototype.reset = function() {
-  this.timeoutsMade = 0;
-  this.scheduledFunctions = {};
-  this.nowMillis = 0;
-};
-
-jasmine.FakeTimer.prototype.tick = function(millis) {
-  var oldMillis = this.nowMillis;
-  var newMillis = oldMillis + millis;
-  this.runFunctionsWithinRange(oldMillis, newMillis);
-  this.nowMillis = newMillis;
-};
-
-jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) {
-  var scheduledFunc;
-  var funcsToRun = [];
-  for (var timeoutKey in this.scheduledFunctions) {
-    scheduledFunc = this.scheduledFunctions[timeoutKey];
-    if (scheduledFunc != jasmine.undefined &&
-        scheduledFunc.runAtMillis >= oldMillis &&
-        scheduledFunc.runAtMillis <= nowMillis) {
-      funcsToRun.push(scheduledFunc);
-      this.scheduledFunctions[timeoutKey] = jasmine.undefined;
-    }
-  }
-
-  if (funcsToRun.length > 0) {
-    funcsToRun.sort(function(a, b) {
-      return a.runAtMillis - b.runAtMillis;
-    });
-    for (var i = 0; i < funcsToRun.length; ++i) {
-      try {
-        var funcToRun = funcsToRun[i];
-        this.nowMillis = funcToRun.runAtMillis;
-        funcToRun.funcToCall();
-        if (funcToRun.recurring) {
-          this.scheduleFunction(funcToRun.timeoutKey,
-              funcToRun.funcToCall,
-              funcToRun.millis,
-              true);
-        }
-      } catch(e) {
-      }
-    }
-    this.runFunctionsWithinRange(oldMillis, nowMillis);
-  }
-};
-
-jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) {
-  this.scheduledFunctions[timeoutKey] = {
-    runAtMillis: this.nowMillis + millis,
-    funcToCall: funcToCall,
-    recurring: recurring,
-    timeoutKey: timeoutKey,
-    millis: millis
-  };
-};
-
-/**
- * @namespace
- */
-jasmine.Clock = {
-  defaultFakeTimer: new jasmine.FakeTimer(),
-
-  reset: function() {
-    jasmine.Clock.assertInstalled();
-    jasmine.Clock.defaultFakeTimer.reset();
-  },
-
-  tick: function(millis) {
-    jasmine.Clock.assertInstalled();
-    jasmine.Clock.defaultFakeTimer.tick(millis);
-  },
-
-  runFunctionsWithinRange: function(oldMillis, nowMillis) {
-    jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis);
-  },
-
-  scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) {
-    jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring);
-  },
-
-  useMock: function() {
-    if (!jasmine.Clock.isInstalled()) {
-      var spec = jasmine.getEnv().currentSpec;
-      spec.after(jasmine.Clock.uninstallMock);
-
-      jasmine.Clock.installMock();
-    }
-  },
-
-  installMock: function() {
-    jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer;
-  },
-
-  uninstallMock: function() {
-    jasmine.Clock.assertInstalled();
-    jasmine.Clock.installed = jasmine.Clock.real;
-  },
-
-  real: {
-    setTimeout: jasmine.getGlobal().setTimeout,
-    clearTimeout: jasmine.getGlobal().clearTimeout,
-    setInterval: jasmine.getGlobal().setInterval,
-    clearInterval: jasmine.getGlobal().clearInterval
-  },
-
-  assertInstalled: function() {
-    if (!jasmine.Clock.isInstalled()) {
-      throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()");
-    }
-  },
-
-  isInstalled: function() {
-    return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
-  },
-
-  installed: null
-};
-jasmine.Clock.installed = jasmine.Clock.real;
-
-//else for IE support
-jasmine.getGlobal().setTimeout = function(funcToCall, millis) {
-  if (jasmine.Clock.installed.setTimeout.apply) {
-    return jasmine.Clock.installed.setTimeout.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.setTimeout(funcToCall, millis);
-  }
-};
-
-jasmine.getGlobal().setInterval = function(funcToCall, millis) {
-  if (jasmine.Clock.installed.setInterval.apply) {
-    return jasmine.Clock.installed.setInterval.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.setInterval(funcToCall, millis);
-  }
-};
-
-jasmine.getGlobal().clearTimeout = function(timeoutKey) {
-  if (jasmine.Clock.installed.clearTimeout.apply) {
-    return jasmine.Clock.installed.clearTimeout.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.clearTimeout(timeoutKey);
-  }
-};
-
-jasmine.getGlobal().clearInterval = function(timeoutKey) {
-  if (jasmine.Clock.installed.clearTimeout.apply) {
-    return jasmine.Clock.installed.clearInterval.apply(this, arguments);
-  } else {
-    return jasmine.Clock.installed.clearInterval(timeoutKey);
-  }
-};
-
-/**
- * @constructor
- */
-jasmine.MultiReporter = function() {
-  this.subReporters_ = [];
-};
-jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter);
-
-jasmine.MultiReporter.prototype.addReporter = function(reporter) {
-  this.subReporters_.push(reporter);
-};
-
-(function() {
-  var functionNames = [
-    "reportRunnerStarting",
-    "reportRunnerResults",
-    "reportSuiteResults",
-    "reportSpecStarting",
-    "reportSpecResults",
-    "log"
-  ];
-  for (var i = 0; i < functionNames.length; i++) {
-    var functionName = functionNames[i];
-    jasmine.MultiReporter.prototype[functionName] = (function(functionName) {
-      return function() {
-        for (var j = 0; j < this.subReporters_.length; j++) {
-          var subReporter = this.subReporters_[j];
-          if (subReporter[functionName]) {
-            subReporter[functionName].apply(subReporter, arguments);
-          }
-        }
-      };
-    })(functionName);
-  }
-})();
-/**
- * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults
- *
- * @constructor
- */
-jasmine.NestedResults = function() {
-  /**
-   * The total count of results
-   */
-  this.totalCount = 0;
-  /**
-   * Number of passed results
-   */
-  this.passedCount = 0;
-  /**
-   * Number of failed results
-   */
-  this.failedCount = 0;
-  /**
-   * Was this suite/spec skipped?
-   */
-  this.skipped = false;
-  /**
-   * @ignore
-   */
-  this.items_ = [];
-};
-
-/**
- * Roll up the result counts.
- *
- * @param result
- */
-jasmine.NestedResults.prototype.rollupCounts = function(result) {
-  this.totalCount += result.totalCount;
-  this.passedCount += result.passedCount;
-  this.failedCount += result.failedCount;
-};
-
-/**
- * Adds a log message.
- * @param values Array of message parts which will be concatenated later.
- */
-jasmine.NestedResults.prototype.log = function(values) {
-  this.items_.push(new jasmine.MessageResult(values));
-};
-
-/**
- * Getter for the results: message & results.
- */
-jasmine.NestedResults.prototype.getItems = function() {
-  return this.items_;
-};
-
-/**
- * Adds a result, tracking counts (total, passed, & failed)
- * @param {jasmine.ExpectationResult|jasmine.NestedResults} result
- */
-jasmine.NestedResults.prototype.addResult = function(result) {
-  if (result.type != 'log') {
-    if (result.items_) {
-      this.rollupCounts(result);
-    } else {
-      this.totalCount++;
-      if (result.passed()) {
-        this.passedCount++;
-      } else {
-        this.failedCount++;
-      }
-    }
-  }
-  this.items_.push(result);
-};
-
-/**
- * @returns {Boolean} True if <b>everything</b> below passed
- */
-jasmine.NestedResults.prototype.passed = function() {
-  return this.passedCount === this.totalCount;
-};
-/**
- * Base class for pretty printing for expectation results.
- */
-jasmine.PrettyPrinter = function() {
-  this.ppNestLevel_ = 0;
-};
-
-/**
- * Formats a value in a nice, human-readable string.
- *
- * @param value
- */
-jasmine.PrettyPrinter.prototype.format = function(value) {
-  if (this.ppNestLevel_ > 40) {
-    throw new Error('jasmine.PrettyPrinter: format() nested too deeply!');
-  }
-
-  this.ppNestLevel_++;
-  try {
-    if (value === jasmine.undefined) {
-      this.emitScalar('undefined');
-    } else if (value === null) {
-      this.emitScalar('null');
-    } else if (value === jasmine.getGlobal()) {
-      this.emitScalar('<global>');
-    } else if (value.jasmineToString) {
-      this.emitScalar(value.jasmineToString());
-    } else if (typeof value === 'string') {
-      this.emitString(value);
-    } else if (jasmine.isSpy(value)) {
-      this.emitScalar("spy on " + value.identity);
-    } else if (value instanceof RegExp) {
-      this.emitScalar(value.toString());
-    } else if (typeof value === 'function') {
-      this.emitScalar('Function');
-    } else if (typeof value.nodeType === 'number') {
-      this.emitScalar('HTMLNode');
-    } else if (value instanceof Date) {
-      this.emitScalar('Date(' + value + ')');
-    } else if (value.__Jasmine_been_here_before__) {
-      this.emitScalar('<circular reference: ' + (jasmine.isArray_(value) ? 'Array' : 'Object') + '>');
-    } else if (jasmine.isArray_(value) || typeof value == 'object') {
-      value.__Jasmine_been_here_before__ = true;
-      if (jasmine.isArray_(value)) {
-        this.emitArray(value);
-      } else {
-        this.emitObject(value);
-      }
-      delete value.__Jasmine_been_here_before__;
-    } else {
-      this.emitScalar(value.toString());
-    }
-  } finally {
-    this.ppNestLevel_--;
-  }
-};
-
-jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) {
-  for (var property in obj) {
-    if (property == '__Jasmine_been_here_before__') continue;
-    fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && 
-                                         obj.__lookupGetter__(property) !== null) : false);
-  }
-};
-
-jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_;
-jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_;
-jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_;
-jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_;
-
-jasmine.StringPrettyPrinter = function() {
-  jasmine.PrettyPrinter.call(this);
-
-  this.string = '';
-};
-jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter);
-
-jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) {
-  this.append(value);
-};
-
-jasmine.StringPrettyPrinter.prototype.emitString = function(value) {
-  this.append("'" + value + "'");
-};
-
-jasmine.StringPrettyPrinter.prototype.emitArray = function(array) {
-  this.append('[ ');
-  for (var i = 0; i < array.length; i++) {
-    if (i > 0) {
-      this.append(', ');
-    }
-    this.format(array[i]);
-  }
-  this.append(' ]');
-};
-
-jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) {
-  var self = this;
-  this.append('{ ');
-  var first = true;
-
-  this.iterateObject(obj, function(property, isGetter) {
-    if (first) {
-      first = false;
-    } else {
-      self.append(', ');
-    }
-
-    self.append(property);
-    self.append(' : ');
-    if (isGetter) {
-      self.append('<getter>');
-    } else {
-      self.format(obj[property]);
-    }
-  });
-
-  this.append(' }');
-};
-
-jasmine.StringPrettyPrinter.prototype.append = function(value) {
-  this.string += value;
-};
-jasmine.Queue = function(env) {
-  this.env = env;
-  this.blocks = [];
-  this.running = false;
-  this.index = 0;
-  this.offset = 0;
-  this.abort = false;
-};
-
-jasmine.Queue.prototype.addBefore = function(block) {
-  this.blocks.unshift(block);
-};
-
-jasmine.Queue.prototype.add = function(block) {
-  this.blocks.push(block);
-};
-
-jasmine.Queue.prototype.insertNext = function(block) {
-  this.blocks.splice((this.index + this.offset + 1), 0, block);
-  this.offset++;
-};
-
-jasmine.Queue.prototype.start = function(onComplete) {
-  this.running = true;
-  this.onComplete = onComplete;
-  this.next_();
-};
-
-jasmine.Queue.prototype.isRunning = function() {
-  return this.running;
-};
-
-jasmine.Queue.LOOP_DONT_RECURSE = true;
-
-jasmine.Queue.prototype.next_ = function() {
-  var self = this;
-  var goAgain = true;
-
-  while (goAgain) {
-    goAgain = false;
-    
-    if (self.index < self.blocks.length && !this.abort) {
-      var calledSynchronously = true;
-      var completedSynchronously = false;
-
-      var onComplete = function () {
-        if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) {
-          completedSynchronously = true;
-          return;
-        }
-
-        if (self.blocks[self.index].abort) {
-          self.abort = true;
-        }
-
-        self.offset = 0;
-        self.index++;
-
-        var now = new Date().getTime();
-        if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) {
-          self.env.lastUpdate = now;
-          self.env.setTimeout(function() {
-            self.next_();
-          }, 0);
-        } else {
-          if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) {
-            goAgain = true;
-          } else {
-            self.next_();
-          }
-        }
-      };
-      self.blocks[self.index].execute(onComplete);
-
-      calledSynchronously = false;
-      if (completedSynchronously) {
-        onComplete();
-      }
-      
-    } else {
-      self.running = false;
-      if (self.onComplete) {
-        self.onComplete();
-      }
-    }
-  }
-};
-
-jasmine.Queue.prototype.results = function() {
-  var results = new jasmine.NestedResults();
-  for (var i = 0; i < this.blocks.length; i++) {
-    if (this.blocks[i].results) {
-      results.addResult(this.blocks[i].results());
-    }
-  }
-  return results;
-};
-
-
-/**
- * Runner
- *
- * @constructor
- * @param {jasmine.Env} env
- */
-jasmine.Runner = function(env) {
-  var self = this;
-  self.env = env;
-  self.queue = new jasmine.Queue(env);
-  self.before_ = [];
-  self.after_ = [];
-  self.suites_ = [];
-};
-
-jasmine.Runner.prototype.execute = function() {
-  var self = this;
-  if (self.env.reporter.reportRunnerStarting) {
-    self.env.reporter.reportRunnerStarting(this);
-  }
-  self.queue.start(function () {
-    self.finishCallback();
-  });
-};
-
-jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) {
-  beforeEachFunction.typeName = 'beforeEach';
-  this.before_.splice(0,0,beforeEachFunction);
-};
-
-jasmine.Runner.prototype.afterEach = function(afterEachFunction) {
-  afterEachFunction.typeName = 'afterEach';
-  this.after_.splice(0,0,afterEachFunction);
-};
-
-
-jasmine.Runner.prototype.finishCallback = function() {
-  this.env.reporter.reportRunnerResults(this);
-};
-
-jasmine.Runner.prototype.addSuite = function(suite) {
-  this.suites_.push(suite);
-};
-
-jasmine.Runner.prototype.add = function(block) {
-  if (block instanceof jasmine.Suite) {
-    this.addSuite(block);
-  }
-  this.queue.add(block);
-};
-
-jasmine.Runner.prototype.specs = function () {
-  var suites = this.suites();
-  var specs = [];
-  for (var i = 0; i < suites.length; i++) {
-    specs = specs.concat(suites[i].specs());
-  }
-  return specs;
-};
-
-jasmine.Runner.prototype.suites = function() {
-  return this.suites_;
-};
-
-jasmine.Runner.prototype.topLevelSuites = function() {
-  var topLevelSuites = [];
-  for (var i = 0; i < this.suites_.length; i++) {
-    if (!this.suites_[i].parentSuite) {
-      topLevelSuites.push(this.suites_[i]);
-    }
-  }
-  return topLevelSuites;
-};
-
-jasmine.Runner.prototype.results = function() {
-  return this.queue.results();
-};
-/**
- * Internal representation of a Jasmine specification, or test.
- *
- * @constructor
- * @param {jasmine.Env} env
- * @param {jasmine.Suite} suite
- * @param {String} description
- */
-jasmine.Spec = function(env, suite, description) {
-  if (!env) {
-    throw new Error('jasmine.Env() required');
-  }
-  if (!suite) {
-    throw new Error('jasmine.Suite() required');
-  }
-  var spec = this;
-  spec.id = env.nextSpecId ? env.nextSpecId() : null;
-  spec.env = env;
-  spec.suite = suite;
-  spec.description = description;
-  spec.queue = new jasmine.Queue(env);
-
-  spec.afterCallbacks = [];
-  spec.spies_ = [];
-
-  spec.results_ = new jasmine.NestedResults();
-  spec.results_.description = description;
-  spec.matchersClass = null;
-};
-
-jasmine.Spec.prototype.getFullName = function() {
-  return this.suite.getFullName() + ' ' + this.description + '.';
-};
-
-
-jasmine.Spec.prototype.results = function() {
-  return this.results_;
-};
-
-/**
- * All parameters are pretty-printed and concatenated together, then written to the spec's output.
- *
- * Be careful not to leave calls to <code>jasmine.log</code> in production code.
- */
-jasmine.Spec.prototype.log = function() {
-  return this.results_.log(arguments);
-};
-
-jasmine.Spec.prototype.runs = function (func) {
-  var block = new jasmine.Block(this.env, func, this);
-  this.addToQueue(block);
-  return this;
-};
-
-jasmine.Spec.prototype.addToQueue = function (block) {
-  if (this.queue.isRunning()) {
-    this.queue.insertNext(block);
-  } else {
-    this.queue.add(block);
-  }
-};
-
-/**
- * @param {jasmine.ExpectationResult} result
- */
-jasmine.Spec.prototype.addMatcherResult = function(result) {
-  this.results_.addResult(result);
-};
-
-jasmine.Spec.prototype.expect = function(actual) {
-  var positive = new (this.getMatchersClass_())(this.env, actual, this);
-  positive.not = new (this.getMatchersClass_())(this.env, actual, this, true);
-  return positive;
-};
-
-/**
- * Waits a fixed time period before moving to the next block.
- *
- * @deprecated Use waitsFor() instead
- * @param {Number} timeout milliseconds to wait
- */
-jasmine.Spec.prototype.waits = function(timeout) {
-  var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this);
-  this.addToQueue(waitsFunc);
-  return this;
-};
-
-/**
- * Waits for the latchFunction to return true before proceeding to the next block.
- *
- * @param {Function} latchFunction
- * @param {String} optional_timeoutMessage
- * @param {Number} optional_timeout
- */
-jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) {
-  var latchFunction_ = null;
-  var optional_timeoutMessage_ = null;
-  var optional_timeout_ = null;
-
-  for (var i = 0; i < arguments.length; i++) {
-    var arg = arguments[i];
-    switch (typeof arg) {
-      case 'function':
-        latchFunction_ = arg;
-        break;
-      case 'string':
-        optional_timeoutMessage_ = arg;
-        break;
-      case 'number':
-        optional_timeout_ = arg;
-        break;
-    }
-  }
-
-  var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this);
-  this.addToQueue(waitsForFunc);
-  return this;
-};
-
-jasmine.Spec.prototype.fail = function (e) {
-  var expectationResult = new jasmine.ExpectationResult({
-    passed: false,
-    message: e ? jasmine.util.formatException(e) : 'Exception',
-    trace: { stack: e.stack }
-  });
-  this.results_.addResult(expectationResult);
-};
-
-jasmine.Spec.prototype.getMatchersClass_ = function() {
-  return this.matchersClass || this.env.matchersClass;
-};
-
-jasmine.Spec.prototype.addMatchers = function(matchersPrototype) {
-  var parent = this.getMatchersClass_();
-  var newMatchersClass = function() {
-    parent.apply(this, arguments);
-  };
-  jasmine.util.inherit(newMatchersClass, parent);
-  jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass);
-  this.matchersClass = newMatchersClass;
-};
-
-jasmine.Spec.prototype.finishCallback = function() {
-  this.env.reporter.reportSpecResults(this);
-};
-
-jasmine.Spec.prototype.finish = function(onComplete) {
-  this.removeAllSpies();
-  this.finishCallback();
-  if (onComplete) {
-    onComplete();
-  }
-};
-
-jasmine.Spec.prototype.after = function(doAfter) {
-  if (this.queue.isRunning()) {
-    this.queue.add(new jasmine.Block(this.env, doAfter, this));
-  } else {
-    this.afterCallbacks.unshift(doAfter);
-  }
-};
-
-jasmine.Spec.prototype.execute = function(onComplete) {
-  var spec = this;
-  if (!spec.env.specFilter(spec)) {
-    spec.results_.skipped = true;
-    spec.finish(onComplete);
-    return;
-  }
-
-  this.env.reporter.reportSpecStarting(this);
-
-  spec.env.currentSpec = spec;
-
-  spec.addBeforesAndAftersToQueue();
-
-  spec.queue.start(function () {
-    spec.finish(onComplete);
-  });
-};
-
-jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() {
-  var runner = this.env.currentRunner();
-  var i;
-
-  for (var suite = this.suite; suite; suite = suite.parentSuite) {
-    for (i = 0; i < suite.before_.length; i++) {
-      this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this));
-    }
-  }
-  for (i = 0; i < runner.before_.length; i++) {
-    this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this));
-  }
-  for (i = 0; i < this.afterCallbacks.length; i++) {
-    this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this));
-  }
-  for (suite = this.suite; suite; suite = suite.parentSuite) {
-    for (i = 0; i < suite.after_.length; i++) {
-      this.queue.add(new jasmine.Block(this.env, suite.after_[i], this));
-    }
-  }
-  for (i = 0; i < runner.after_.length; i++) {
-    this.queue.add(new jasmine.Block(this.env, runner.after_[i], this));
-  }
-};
-
-jasmine.Spec.prototype.explodes = function() {
-  throw 'explodes function should not have been called';
-};
-
-jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) {
-  if (obj == jasmine.undefined) {
-    throw "spyOn could not find an object to spy upon for " + methodName + "()";
-  }
-
-  if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) {
-    throw methodName + '() method does not exist';
-  }
-
-  if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) {
-    throw new Error(methodName + ' has already been spied upon');
-  }
-
-  var spyObj = jasmine.createSpy(methodName);
-
-  this.spies_.push(spyObj);
-  spyObj.baseObj = obj;
-  spyObj.methodName = methodName;
-  spyObj.originalValue = obj[methodName];
-
-  obj[methodName] = spyObj;
-
-  return spyObj;
-};
-
-jasmine.Spec.prototype.removeAllSpies = function() {
-  for (var i = 0; i < this.spies_.length; i++) {
-    var spy = this.spies_[i];
-    spy.baseObj[spy.methodName] = spy.originalValue;
-  }
-  this.spies_ = [];
-};
-
-/**
- * Internal representation of a Jasmine suite.
- *
- * @constructor
- * @param {jasmine.Env} env
- * @param {String} description
- * @param {Function} specDefinitions
- * @param {jasmine.Suite} parentSuite
- */
-jasmine.Suite = function(env, description, specDefinitions, parentSuite) {
-  var self = this;
-  self.id = env.nextSuiteId ? env.nextSuiteId() : null;
-  self.description = description;
-  self.queue = new jasmine.Queue(env);
-  self.parentSuite = parentSuite;
-  self.env = env;
-  self.before_ = [];
-  self.after_ = [];
-  self.children_ = [];
-  self.suites_ = [];
-  self.specs_ = [];
-};
-
-jasmine.Suite.prototype.getFullName = function() {
-  var fullName = this.description;
-  for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) {
-    fullName = parentSuite.description + ' ' + fullName;
-  }
-  return fullName;
-};
-
-jasmine.Suite.prototype.finish = function(onComplete) {
-  this.env.reporter.reportSuiteResults(this);
-  this.finished = true;
-  if (typeof(onComplete) == 'function') {
-    onComplete();
-  }
-};
-
-jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) {
-  beforeEachFunction.typeName = 'beforeEach';
-  this.before_.unshift(beforeEachFunction);
-};
-
-jasmine.Suite.prototype.afterEach = function(afterEachFunction) {
-  afterEachFunction.typeName = 'afterEach';
-  this.after_.unshift(afterEachFunction);
-};
-
-jasmine.Suite.prototype.results = function() {
-  return this.queue.results();
-};
-
-jasmine.Suite.prototype.add = function(suiteOrSpec) {
-  this.children_.push(suiteOrSpec);
-  if (suiteOrSpec instanceof jasmine.Suite) {
-    this.suites_.push(suiteOrSpec);
-    this.env.currentRunner().addSuite(suiteOrSpec);
-  } else {
-    this.specs_.push(suiteOrSpec);
-  }
-  this.queue.add(suiteOrSpec);
-};
-
-jasmine.Suite.prototype.specs = function() {
-  return this.specs_;
-};
-
-jasmine.Suite.prototype.suites = function() {
-  return this.suites_;
-};
-
-jasmine.Suite.prototype.children = function() {
-  return this.children_;
-};
-
-jasmine.Suite.prototype.execute = function(onComplete) {
-  var self = this;
-  this.queue.start(function () {
-    self.finish(onComplete);
-  });
-};
-jasmine.WaitsBlock = function(env, timeout, spec) {
-  this.timeout = timeout;
-  jasmine.Block.call(this, env, null, spec);
-};
-
-jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block);
-
-jasmine.WaitsBlock.prototype.execute = function (onComplete) {
-  if (jasmine.VERBOSE) {
-    this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...');
-  }
-  this.env.setTimeout(function () {
-    onComplete();
-  }, this.timeout);
-};
-/**
- * A block which waits for some condition to become true, with timeout.
- *
- * @constructor
- * @extends jasmine.Block
- * @param {jasmine.Env} env The Jasmine environment.
- * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true.
- * @param {Function} latchFunction A function which returns true when the desired condition has been met.
- * @param {String} message The message to display if the desired condition hasn't been met within the given time period.
- * @param {jasmine.Spec} spec The Jasmine spec.
- */
-jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) {
-  this.timeout = timeout || env.defaultTimeoutInterval;
-  this.latchFunction = latchFunction;
-  this.message = message;
-  this.totalTimeSpentWaitingForLatch = 0;
-  jasmine.Block.call(this, env, null, spec);
-};
-jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block);
-
-jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10;
-
-jasmine.WaitsForBlock.prototype.execute = function(onComplete) {
-  if (jasmine.VERBOSE) {
-    this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen'));
-  }
-  var latchFunctionResult;
-  try {
-    latchFunctionResult = this.latchFunction.apply(this.spec);
-  } catch (e) {
-    this.spec.fail(e);
-    onComplete();
-    return;
-  }
-
-  if (latchFunctionResult) {
-    onComplete();
-  } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) {
-    var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen');
-    this.spec.fail({
-      name: 'timeout',
-      message: message
-    });
-
-    this.abort = true;
-    onComplete();
-  } else {
-    this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT;
-    var self = this;
-    this.env.setTimeout(function() {
-      self.execute(onComplete);
-    }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT);
-  }
-};
-
-jasmine.version_= {
-  "major": 1,
-  "minor": 2,
-  "build": 0,
-  "revision": 1337005947
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/integration/create.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/integration/create.js b/blackberry10/bin/test/cordova/integration/create.js
deleted file mode 100644
index b308f0e..0000000
--- a/blackberry10/bin/test/cordova/integration/create.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-*/
-
-var childProcess = require('child_process'),
-    tempFolder = '.tmp/',
-    appFolder = tempFolder + 'tempCordovaApp/',
-    wrench = require('wrench'),
-    utils = require('../../../templates/project/cordova/lib/utils'),
-    path = require('path'),
-    fs = require('fs'),
-    shell = require("shelljs"),
-    _output = "",
-    CREATE_COMMAND = path.normalize(__dirname + "/../../../create") + (utils.isWindows() ? ".bat" : "");
-
-function executeScript(shellCommand, args, shouldError) {
-    var strCommand = "\"" + shellCommand + "\" " + args.join(" "),
-        result;
-
-    //console.log("CREATE About to execute ", strCommand, (new Date()), "\n\n\n");
-    result = shell.exec(strCommand, {silent: true, async: false});
-    //console.log(result.output, "\n\n\n");
-    //console.log("Finished executing  with code ", result.code, " at ", (new Date()), "\n\n\n");
-    _output = result.output;
-}
-
-describe("create tests", function () {
-    it("creates project", function () {
-        var appIdRegExp = /id="default\.app\.id"/g;
-        if (fs.existsSync(tempFolder)) {
-            wrench.rmdirSyncRecursive(tempFolder);
-        }
-        executeScript(CREATE_COMMAND, [appFolder]);
-        expect(appIdRegExp.test(fs.readFileSync(appFolder + "www/config.xml", "utf-8"))).toEqual(true);
-        expect(fs.existsSync(appFolder)).toEqual(true);
-        expect(fs.existsSync(appFolder + "/cordova")).toEqual(true);
-        expect(fs.existsSync(appFolder + "/cordova/node_modules")).toEqual(true);
-        expect(fs.existsSync(appFolder + "/cordova/lib")).toEqual(true);
-        expect(fs.existsSync(appFolder + "/cordova/third_party")).toEqual(true);
-        expect(fs.existsSync(appFolder + "/www")).toEqual(true);
-        expect(fs.existsSync("./build")).toEqual(false);
-        this.after(function () {
-            wrench.rmdirSyncRecursive(tempFolder);
-        });
-    });
-
-    it("sets appId", function () {
-        var configEt,
-            appIdRegExp = /id="com\.example\.bb10app"/g;
-
-        executeScript(CREATE_COMMAND, [appFolder, "com.example.bb10app"]);
-        expect(appIdRegExp.test(fs.readFileSync(appFolder + "www/config.xml", "utf-8"))).toEqual(true);
-        this.after(function () {
-            wrench.rmdirSyncRecursive(tempFolder);
-        });
-    });
-
-    it("sets appId and barName", function () {
-        var appIdRegExp = /id="com\.example\.bb10app"/g;
-        executeScript(CREATE_COMMAND, [appFolder, "com.example.bb10app", "bb10appV1"]);
-        expect(appIdRegExp.test(fs.readFileSync(appFolder + "www/config.xml", "utf-8"))).toEqual(true);
-        this.after(function () {
-            wrench.rmdirSyncRecursive(tempFolder);
-        });
-    });
-
-    it("No args", function () {
-        executeScript(CREATE_COMMAND, [], true);
-        expect(_output).toContain("You must give a project PATH");
-    });
-
-    it("Empty dir error", function () {
-        wrench.mkdirSyncRecursive(tempFolder);
-        executeScript(CREATE_COMMAND, [tempFolder], true);
-        expect(_output).toContain("The project path must be an empty directory");
-        this.after(function () {
-            wrench.rmdirSyncRecursive(tempFolder);
-        });
-
-    });
-
-    it("Invalid appId error", function () {
-        executeScript(CREATE_COMMAND, [appFolder, "23.21#$"], true);
-        expect(_output).toContain("App ID must be sequence of alpha-numeric (optionally separated by '.') characters, no longer than 50 characters");
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/integration/target.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/integration/target.js b/blackberry10/bin/test/cordova/integration/target.js
deleted file mode 100644
index 5da16a3..0000000
--- a/blackberry10/bin/test/cordova/integration/target.js
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-*/
-
-var childProcess = require('child_process'),
-    tempFolder = '.tmp/',
-    appFolder = tempFolder + 'tempCordovaApp/',
-    wrench = require('wrench'),
-    utils = require('../../../templates/project/cordova/lib/utils'),
-    fs = require('fs'),
-    path = require('path'),
-    shell = require("shelljs"),
-    configPath = utils.getPropertiesFilePath(),
-    testAppCreated = false,
-    _output = "",
-    _code,
-    CREATE_COMMAND = path.normalize(__dirname + "/../../../create") + (utils.isWindows() ? ".bat" : ""),
-    TARGET_COMMAND = path.normalize(appFolder + "cordova/target") + (utils.isWindows() ? ".bat" : "");
-
-function executeScript(shellCommand, args, shouldFail) {
-    var strCommand = "\"" + shellCommand + "\" " + args.join(" "),
-        result;
-
-    //console.log("CREATE About to execute ", strCommand, (new Date()), "\n\n\n");
-    result = shell.exec(strCommand, {silent: true, async: false});
-    //console.log(result.output, "\n\n\n");
-    //console.log("Finished executing  with code ", result.code, " at ", (new Date()), "\n\n\n");
-    _output = result.output;
-    _code = result.code;
-}
-
-describe("cordova/target tests", function () {
-    beforeEach(function () {
-        utils.copyFile(configPath, path.join(utils.getCordovaDir(), "bb10bak"));
-        fs.unlinkSync(configPath);
-        if (!testAppCreated) {
-            executeScript(CREATE_COMMAND, [appFolder]);
-            testAppCreated = true;
-        }
-    });
-
-    afterEach(function () {
-        utils.copyFile(path.join(utils.getCordovaDir(), "bb10bak", utils.getPropertiesFileName()), path.join(utils.getCordovaDir()));
-        wrench.rmdirSyncRecursive(path.join(utils.getCordovaDir(), "bb10bak"));
-    });
-
-    it("should add a target", function () {
-        var project,
-            target;
-
-        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "-p", "pass", "--pin", "DEADBEEF"]);
-        project = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
-        expect(Object.keys(project.targets).length).toEqual(1);
-        target = project.targets.z10;
-        expect(target.ip).toEqual("169.254.0.1");
-        expect(target.type).toEqual("device");
-        expect(target.password).toEqual("pass");
-        expect(target.pin).toEqual("DEADBEEF");
-        expect(_code).toEqual(0);
-    });
-
-    it("should remove a target", function () {
-        var project;
-
-        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "-p", "pass", "--pin", "DEADBEEF"]);
-        executeScript(TARGET_COMMAND, ["remove", "z10"]);
-        project = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
-        expect(Object.keys(project.targets).length).toEqual(0);
-    });
-
-    it("should list targets", function () {
-        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "-p", "pass", "--pin", "DEADBEEF"]);
-        executeScript(TARGET_COMMAND, ["add", "q10", "169.254.0.2", "-t", "device", "-p", "p455w02D", "--pin", "FACEFACE"]);
-        executeScript(TARGET_COMMAND, []);
-        expect(_output).toContain("z10\nq10");
-    });
-
-    it("should require name for add/remove", function () {
-        executeScript(TARGET_COMMAND, ["add"], true);
-        expect(_output).toContain("Target details not specified");
-    });
-
-    it("should require host for add", function () {
-        executeScript(TARGET_COMMAND, ["add", "z10"], true);
-        expect(_output).toContain("host is required");
-    });
-
-    it("should warn unrecognized command", function () {
-        executeScript(TARGET_COMMAND, ["bleh"], true);
-        expect(_output).toContain("Unrecognized command");
-    });
-
-    it("should warn invalid type", function () {
-        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "bleh"], true);
-        expect(_output).toContain("Invalid target type: bleh");
-    });
-
-    it("should warn invalid pin", function () {
-
-        //keep this in last test to remove test app
-        this.after(function () {
-            wrench.rmdirSyncRecursive(tempFolder);
-        });
-
-        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "--pin", "NOTAPIN!"], true);
-        expect(_output).toContain("Invalid PIN: NOTAPIN!");
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/config-bare-minimum.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/config-bare-minimum.xml b/blackberry10/bin/test/cordova/unit/config-bare-minimum.xml
deleted file mode 100644
index 90572f4..0000000
--- a/blackberry10/bin/test/cordova/unit/config-bare-minimum.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<widget xmlns=" http://www.w3.org/ns/widgets"
-        xmlns:rim="http://www.blackberry.com/ns/widgets"
-        version="1.0.0"
-        id="myID">
-    <name>Demo</name>
-    <content src="local:///startPage.html"/>
-    <author>Research In Motion Ltd.</author>
-    <license href="http://www.apache.org/licenses/LICENSE-2.0">
-        Licensed under the Apache License, Version 2.0 (the "License");
-        #you may not use this file except in compliance with the License.
-        #You may obtain a copy of the License at
-        #
-        #http://www.apache.org/licenses/LICENSE-2.0
-        #
-        #Unless required by applicable law or agreed to in writing, software
-        #distributed under the License is distributed on an "AS IS" BASIS,
-        #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-        #See the License for the specific language governing permissions and limitations under the License.
-    </license>
-</widget>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/config-license.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/config-license.xml b/blackberry10/bin/test/cordova/unit/config-license.xml
deleted file mode 100644
index ac4ffe9..0000000
--- a/blackberry10/bin/test/cordova/unit/config-license.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<widget xmlns=" http://www.w3.org/ns/widgets"
-        xmlns:rim="http://www.blackberry.com/ns/widgets"
-        version="1.0.0"
-        id="myID">
-    <name>Demo</name>
-    <content src="local:///startPage.html"/>
-    <author>Research In Motion Ltd.</author>
-    <license href="http://www.apache.org/licenses/LICENSE-2.0"></license>
-</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/config.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/config.xml b/blackberry10/bin/test/cordova/unit/config.xml
deleted file mode 100644
index 33e3586..0000000
--- a/blackberry10/bin/test/cordova/unit/config.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<widget xmlns=" http://www.w3.org/ns/widgets"
-        xmlns:rim="http://www.blackberry.com/ns/widgets"
-        version="1.0.0"
-        id="My WidgetId"
-        rim:header="RIM-Widget:rim/widget"
-        rim:userAgent="A Test-User-Agent/(Blackberry-Agent)">
-    <name>Demo</name>
-    <content src="local:///startPage.html"/>
-    <author rim:copyright="No Copyright"
-            href="http://www.rim.com/"
-            email = "author@rim.com">Research In Motion Ltd.</author>
-    <description>This app does everything.</description>
-    <license href="http://www.apache.org/licenses/LICENSE-2.0">My License</license>
-    <icon src="test.png" />
-    <rim:permissions>
-        <rim:permit>access_shared</rim:permit>
-        <rim:permit>read_geolocation</rim:permit>
-        <rim:permit>use_camera</rim:permit>
-    </rim:permissions>
-    <feature id="blackberry.app.orientation">
-        <param name="mode" value="portrait" />
-        <param name="other" value="portrait" />
-      </feature>
-    <feature id="blackberry.app" required="true" version="1.0.0.0" />
-    <feature id="blackberry.system" required="true" version="1.0.0.3"/>
-    <access origin="http://www.somedomain1.com" subdomains="true">
-        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
-        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
-    </access>
-    <rim:invoke-target id="com.domain.subdomain.appname.app1">
-	<type>APPLICATION</type>
-        <require-source-permissions>invoke_across_perimeters,access_shared</require-source-permissions>
-        <filter>
-            <action>bb.action.OPEN</action>
-            <action>bb.action.SET</action>
-            <action>bb.action.VIEW</action>
-            <mime-type>image/*</mime-type>
-            <mime-type>text/*</mime-type>
-            <property var="uris" value="ftp://" />
-            <property var="uris" value="http://" />
-            <property var="uris" value="https://" />
-            <property var="exts" value="jpg" />
-            <property var="exts" value="png" />
-            <property var="exts" value="txt" />
-            <property var="exts" value="doc" />
-        </filter>
-    </rim:invoke-target>
-
-    <preference name="backgroundColor" value="0xffffff" />
-    <preference name="childBrowser" value="disable" />
-    <preference name="HideKeyboardFormAccessoryBar" value="disable" />
-</widget>


[31/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/async/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/async/package.json b/blackberry10/node_modules/async/package.json
deleted file mode 100644
index 2d2361d..0000000
--- a/blackberry10/node_modules/async/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "name": "async",
-  "description": "Higher-order functions and common patterns for asynchronous code",
-  "main": "./lib/async",
-  "author": {
-    "name": "Caolan McMahon"
-  },
-  "version": "0.2.9",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/caolan/async.git"
-  },
-  "bugs": {
-    "url": "https://github.com/caolan/async/issues"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "https://github.com/caolan/async/raw/master/LICENSE"
-    }
-  ],
-  "devDependencies": {
-    "nodeunit": ">0.0.0",
-    "uglify-js": "1.2.x",
-    "nodelint": ">0.0.0"
-  },
-  "jam": {
-    "main": "lib/async.js",
-    "include": [
-      "lib/async.js",
-      "README.md",
-      "LICENSE"
-    ]
-  },
-  "scripts": {
-    "test": "nodeunit test/test-async.js"
-  },
-  "readme": "# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, each…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n\nas
 ync.parallel([\n    function(){ ... },\n    function(){ ... }\n], callback);\n\nasync.series([\n    function(){ ... },\n    function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about bind, not about async. If you are wondering how to\nmake async execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n  squareExponent: 2,\n  square: function(number, callback){ \n    var result = Math.pow(number, this.squareExponent);\n    setTimeout(function(){\n      callback(null, result);\n    }, 200);\n  }\n};\n\nasync.map([1,
  2, 3], AsyncSquaringLibrary.square, function(err, result){\n  // result is [NaN, NaN, NaN]\n  // This fails because the `this.squareExponent` expression in the square\n  // function is not evaluated in the context of AsyncSquaringLibrary, and is\n  // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n  // result is [1, 4, 9]\n  // With the help of bind we can attach a context to the iterator before\n  // passing it to async. Now the square function will be executed in its \n  // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n  // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n    npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Bro
 wser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n```html\n<script type=\"text/javascript\" src=\"async.js\"></script>\n<script type=\"text/javascript\">\n\n    async.map(data, asyncProcess, function(err, results){\n        alert(results);\n    });\n\n</script>\n```\n\n## Documentation\n\n### Collections\n\n* [each](#each)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\n\n### Utils\n\n* [memoize](#memoiz
 e)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n<a name=\"each\" />\n### each(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the each function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callbac
 k which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n<a name=\"eachSeries\" />\n### eachSeries(arr, iterator, callback)\n\nThe same as each only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n<a name=\"eachLimit\" />\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as each only no more than \"limit\" iterators will be simultaneously \nrunning at any time
 .\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------
 ------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which c
 an be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"mapLimit\" />\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as map only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not proce
 ssed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], 1, fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a n
 ew array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(results) - A callback which is called after all the iterator\n  functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr,
  iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name=\"reject\" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as reject, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. F
 or performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then it's probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n  array to produce the next step in the reduction. The iterator is passed a\n  callback(err, reduction) which accepts an optional error as its first \n  argument, and the state of the reduction as the second. If an error is \n  passed to the callback, the reduction is stopped and the main callback is \n  immediately called with the error.\n* callback(err, result) - A callback which is called after all the iterator\n  functions have finished. Result is the reduced value.\n\n__Example__\n\n`
 ``js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n    // pointless async:\n    process.nextTick(function(){\n        callback(null, memo + item)\n    });\n}, function(err, result){\n    // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Argu
 ments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  the first item in the array that passes the truth test (iterator) or the\n  value undefined if none passed.\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n    // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the tr
 uth test.\n\n\n---------------------------------------\n\n<a name=\"sortBy\" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, sortValue) which must be called once it\n  has completed with an error (which can be null) and a value to use as the sort\n  criteria.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is the items from\n  the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n    fs.stat(file, function(err, stats){\n        callback(err, stats.mtime);\n    });\n}, function(err, results){\n    // results is now the original array of files so
 rted by\n    // modified date\n});\n```\n\n---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  either true or false depending on the values of the 
 async tests.\n\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called after all the iterator\n  functions have finished. Result will be either true or false depending on\n  the 
 values of the async tests.\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, results) which must be called once it \n  has completed with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have f
 inished, or an error has occurred. Results is an array containing\n  the concatenated results of the iterator function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n    // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each proper
 ty will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.series([\n    function(callback){\n        // do some stuff ...\n        callback(null, 'one');\n    },\n    function(callback){\n        // do some more stuff ...\n        callback(null, 'two');\n    }\n],\n// optional callback\nfunction(err, results){\n    // results is now equal to ['one', 'two']\n});\n\n\n// an example using an ob
 ject instead of an array\nasync.series({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a mo
 re readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'one');\n        }, 200);\n    },\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'two');\n        }, 100);\n    }\n],\n// optional callback\nfunction(err, results){\n    // the results array will equal ['one','two'] even though\n    // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an 
 array\nasync.parallel({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of \"limit\" \ntasks executing at any time.\n\nNote that the tasks are not executed in batches, so there is no guarantee that \nthe first \"limit\" tasks will complete before any others are started.\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* limit - The maximum num
 ber of tasks to run at any time.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n  passed a callback(err) which must be called once it has completed with an \n  optional error argument.\n* callback(err) - A callback which is called after the test fails and repeated\n  execution of fn has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n    function () { return count < 5; },\n    function (callback) {\n        count++;\n        setT
 imeout(callback, 1000);\n    },\n    function (err) {\n        // 5 seconds have passed\n    }\n);\n```\n\n---------------------------------------\n\n<a name=\"doWhilst\" />\n### doWhilst(fn, test, callback)\n\nThe post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n---------------------------------------\n\n<a name=\"doUntil\" />\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name=\"forever\" />\n### forever(fn, callback)\n\nCalls the asynchronous function 'fn' repeatedly, in seri
 es, indefinitely.\nIf an error is passed to fn's callback then 'callback' is called with the\nerror, otherwise it will never be called.\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a \n  callback(err, result1, result2, ...) it must call on completion. The first\n  argument is an error (which can be null) and any further arguments will be \n  passed as arguments in order to the next task.\n* callback(err, [results]) - An optional callback to run once all the functions\n  have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([
 \n    function(callback){\n        callback(null, 'one', 'two');\n    },\n    function(arg1, arg2, callback){\n        callback(null, 'three');\n    },\n    function(arg1, callback){\n        // arg1 now equals 'three'\n        callback(null, 'done');\n    }\n], function (err, result) {\n   // result now equals 'done'    \n});\n```\n\n---------------------------------------\n<a name=\"compose\" />\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions f(), g() and h() would produce the result of\nf(g(h())), only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n    setTimeout(function () {\n        callback(null, n + 1);\n   
  }, 10);\n}\n\nfunction mul3(n, callback) {\n    setTimeout(function () {\n        callback(null, n * 3);\n    }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n   // result now equals 15\n});\n```\n\n---------------------------------------\n<a name=\"applyEach\" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback after all functions have completed. If you only provide the first\nargument then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* fns - the asynchronous functions to all call with the same arguments\n* args... - any number of separate arguments to pass to the function\n* callback - the final argument should be the callback, called when all\n  functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// p
 artial application example:\nasync.each(\n    buckets,\n    async.applyEach([enableSearch, updateSchema]),\n    callback\n);\n```\n\n---------------------------------------\n\n<a name=\"applyEachSeries\" />\n### applyEachSeries(arr, iterator, callback)\n\nThe same as applyEach only the functions are applied in series.\n\n---------------------------------------\n\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n  task, which must call its callback(err) argument when finished, with an \n  optional error as an argument.\n* concurrency - An integer for determining how many worker functions should be\n  
 run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n  run in parallel. This property can be changed after a queue is created to\n  alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* unshift(task, [callback]) - add a new task to the front of the queue.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last ite
 m from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n    console.log('hello ' + task.name);\n    callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n    console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n```\n\n---------------------------------------\n\n<a name=\"cargo\" />\n### cargo(worker, [payload])\n\nCreates a cargo object with th
 e specified payload. Tasks added to the\ncargo will be processed altogether (up to the payload limit). If the\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\n\n__Arguments__\n\n* worker(tasks, callback) - An asynchronous function for processing an array of\n  queued tasks, which must call its callback(err) argument when finished, with \n  an optional error as an argument.\n* payload - An optional integer for determining how many tasks should be\n  processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe cargo object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* payload - an integer for determining how many tasks should be\n  process per round. This property can be changed after a cargo is created to\n  alter the payload on-the-fly.\n* push(task, [
 callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n    for(var i=0; i<tasks.length; i++){\n      console.log('hello ' + tasks[i].name);\n    }\n    callback();\n}, 2);\n\n\n// add some items\n\ncargo.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\ncargo.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar')
 ;\n});\ncargo.push({name: 'baz'}, function (err) {\n    console.log('finished processing baz');\n});\n```\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\nNote, all functions are called with a results object as a second argument, \nso it is unsafe to pass functions in the tasks object which cannot handle the\nextra argument. For example, this snippet of code:\n\n```js\nasync.auto({\n  readData: async.apply(
 fs.readFile, 'data.txt', 'utf-8');\n}, callback);\n```\n\nwill have the effect of calling readFile with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to readFile in a function which does not forward the \nresults object:\n\n```js\nasync.auto({\n  readData: function(cb, results){\n    fs.readFile('data.txt', 'utf-8', cb);\n  }\n}, callback);\n```\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n  requirements, with the function itself the last item in the array. The key\n  used for each function or array is used when specifying requirements. The \n  function receives two arguments: (1) a callback(err, result) which must be \n  called when finished, passing an error (which can be null) and the result of \n  the function's execution, and (2) a results object, containing the results of\n  the previously executed functions.\n* callback(err, results) - 
 An optional callback which is called when all the\n  tasks have been completed. The callback will receive an error as an argument\n  if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n  \n\n__Example__\n\n```js\nasync.auto({\n    get_data: function(callback){\n        // async code to get some data\n    },\n    make_folder: function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    },\n    write_file: ['get_data', 'make_folder', function(callback){\n        // once there is some data and the directory exists,\n        // write the data to a file in the directory\n        callback(null, filename);\n    }],\n    email_link: ['write_file', function(callback, results){\n        // once the file is written let's email a link to it...\n        // resul
 ts.write_file contains the filename returned by write_file.\n    }]\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n    function(callback){\n        // async code to get some data\n    },\n    function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    }\n],\nfunction(err, results){\n    async.series([\n        function(callback){\n            // once there is some data and the directory exists,\n            // write the data to a file in the directory\n        },\n        function(callback){\n            // once the file is written let's email a link to it...\n        }\n    ]);\n});\n```\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iter
 ator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. It's also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n    function(){ sys.p('one'); },\n    function(){ sys.p('two'); },\n    function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n<a name=\"apply\" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combine
 d with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n  continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n    async.apply(fs.writeFile, 'testfile1', 'test1'),\n    async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n    function(callback){\n        fs.writeFile('testfile1', 'test1', callback);\n    },\n    function(callback){\n        fs.writeFile('testfile2', 'test2', callback);\n    }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n
 \n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setImmediate(callback)\nif available, otherwise setTimeout(callback, 0), which means other higher priority\nevents may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n    call_order.push('two');\n    // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n<a name=\"times\" />\n### times(n, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\n\n__Example__\n\n```js\n// Pretend this is some c
 omplicated async factory\nvar createUser = function(id, callback) {\n  callback(null, {\n    id: 'user' + id\n  })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n    createUser(n, function(err, user) {\n      next(err, user)\n    })\n}, function(err, users) {\n  // we should now have 5 users\n});\n```\n\n<a name=\"timesSeries\" />\n### timesSeries(n, callback)\n\nThe same as times only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n## Utils\n\n<a name=\"memoize\" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* fn - the function you
  to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n  results, it has all the arguments applied to it apart from the callback, and\n  must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n    // do something\n    callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n    // callback\n});\n```\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n<a name=\"log\" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n
 __Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, 'hello ' + name);\n    }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n<a name=\"dir\" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js
 \nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, {hello: name});\n    }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n<a name=\"noConflict\" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n",
-  "readmeFilename": "README.md",
-  "_id": "async@0.2.9",
-  "dist": {
-    "shasum": "1d805cdf65c236e4b351b9265610066e4ae4185c"
-  },
-  "_from": "async@0.2.9",
-  "_resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/.npmignore b/blackberry10/node_modules/commander/.npmignore
deleted file mode 100644
index f1250e5..0000000
--- a/blackberry10/node_modules/commander/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-support
-test
-examples
-*.sock

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/.travis.yml b/blackberry10/node_modules/commander/.travis.yml
deleted file mode 100644
index f1d0f13..0000000
--- a/blackberry10/node_modules/commander/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - 0.4
-  - 0.6

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/History.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/History.md b/blackberry10/node_modules/commander/History.md
deleted file mode 100644
index 4961d2e..0000000
--- a/blackberry10/node_modules/commander/History.md
+++ /dev/null
@@ -1,107 +0,0 @@
-
-0.6.1 / 2012-06-01 
-==================
-
-  * Added: append (yes or no) on confirmation
-  * Added: allow node.js v0.7.x
-
-0.6.0 / 2012-04-10 
-==================
-
-  * Added `.prompt(obj, callback)` support. Closes #49
-  * Added default support to .choose(). Closes #41
-  * Fixed the choice example
-
-0.5.1 / 2011-12-20 
-==================
-
-  * Fixed `password()` for recent nodes. Closes #36
-
-0.5.0 / 2011-12-04 
-==================
-
-  * Added sub-command option support [itay]
-
-0.4.3 / 2011-12-04 
-==================
-
-  * Fixed custom help ordering. Closes #32
-
-0.4.2 / 2011-11-24 
-==================
-
-  * Added travis support
-  * Fixed: line-buffered input automatically trimmed. Closes #31
-
-0.4.1 / 2011-11-18 
-==================
-
-  * Removed listening for "close" on --help
-
-0.4.0 / 2011-11-15 
-==================
-
-  * Added support for `--`. Closes #24
-
-0.3.3 / 2011-11-14 
-==================
-
-  * Fixed: wait for close event when writing help info [Jerry Hamlet]
-
-0.3.2 / 2011-11-01 
-==================
-
-  * Fixed long flag definitions with values [felixge]
-
-0.3.1 / 2011-10-31 
-==================
-
-  * Changed `--version` short flag to `-V` from `-v`
-  * Changed `.version()` so it's configurable [felixge]
-
-0.3.0 / 2011-10-31 
-==================
-
-  * Added support for long flags only. Closes #18
-
-0.2.1 / 2011-10-24 
-==================
-
-  * "node": ">= 0.4.x < 0.7.0". Closes #20
-
-0.2.0 / 2011-09-26 
-==================
-
-  * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs]
-
-0.1.0 / 2011-08-24 
-==================
-
-  * Added support for custom `--help` output
-
-0.0.5 / 2011-08-18 
-==================
-
-  * Changed: when the user enters nothing prompt for password again
-  * Fixed issue with passwords beginning with numbers [NuckChorris]
-
-0.0.4 / 2011-08-15 
-==================
-
-  * Fixed `Commander#args`
-
-0.0.3 / 2011-08-15 
-==================
-
-  * Added default option value support
-
-0.0.2 / 2011-08-15 
-==================
-
-  * Added mask support to `Command#password(str[, mask], fn)`
-  * Added `Command#password(str, fn)`
-
-0.0.1 / 2010-01-03
-==================
-
-  * Initial release

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/Makefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/Makefile b/blackberry10/node_modules/commander/Makefile
deleted file mode 100644
index 0074625..0000000
--- a/blackberry10/node_modules/commander/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-
-TESTS = $(shell find test/test.*.js)
-
-test:
-	@./test/run $(TESTS)
-
-.PHONY: test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/Readme.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/Readme.md b/blackberry10/node_modules/commander/Readme.md
deleted file mode 100644
index b8328c3..0000000
--- a/blackberry10/node_modules/commander/Readme.md
+++ /dev/null
@@ -1,262 +0,0 @@
-# Commander.js
-
-  The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).
-
- [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)
-
-## Installation
-
-    $ npm install commander
-
-## Option parsing
-
- Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.
-
-```js
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var program = require('commander');
-
-program
-  .version('0.0.1')
-  .option('-p, --peppers', 'Add peppers')
-  .option('-P, --pineapple', 'Add pineapple')
-  .option('-b, --bbq', 'Add bbq sauce')
-  .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
-  .parse(process.argv);
-
-console.log('you ordered a pizza with:');
-if (program.peppers) console.log('  - peppers');
-if (program.pineapple) console.log('  - pineappe');
-if (program.bbq) console.log('  - bbq');
-console.log('  - %s cheese', program.cheese);
-```
-
- Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc.
-
-## Automated --help
-
- The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:
-
-```  
- $ ./examples/pizza --help
-
-   Usage: pizza [options]
-
-   Options:
-
-     -V, --version        output the version number
-     -p, --peppers        Add peppers
-     -P, --pineapple      Add pineappe
-     -b, --bbq            Add bbq sauce
-     -c, --cheese <type>  Add the specified type of cheese [marble]
-     -h, --help           output usage information
-
-```
-
-## Coercion
-
-```js
-function range(val) {
-  return val.split('..').map(Number);
-}
-
-function list(val) {
-  return val.split(',');
-}
-
-program
-  .version('0.0.1')
-  .usage('[options] <file ...>')
-  .option('-i, --integer <n>', 'An integer argument', parseInt)
-  .option('-f, --float <n>', 'A float argument', parseFloat)
-  .option('-r, --range <a>..<b>', 'A range', range)
-  .option('-l, --list <items>', 'A list', list)
-  .option('-o, --optional [value]', 'An optional value')
-  .parse(process.argv);
-
-console.log(' int: %j', program.integer);
-console.log(' float: %j', program.float);
-console.log(' optional: %j', program.optional);
-program.range = program.range || [];
-console.log(' range: %j..%j', program.range[0], program.range[1]);
-console.log(' list: %j', program.list);
-console.log(' args: %j', program.args);
-```
-
-## Custom help
-
- You can display arbitrary `-h, --help` information
- by listening for "--help". Commander will automatically
- exit once you are done so that the remainder of your program
- does not execute causing undesired behaviours, for example
- in the following executable "stuff" will not output when
- `--help` is used.
-
-```js
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var program = require('../');
-
-function list(val) {
-  return val.split(',').map(Number);
-}
-
-program
-  .version('0.0.1')
-  .option('-f, --foo', 'enable some foo')
-  .option('-b, --bar', 'enable some bar')
-  .option('-B, --baz', 'enable some baz');
-
-// must be before .parse() since
-// node's emit() is immediate
-
-program.on('--help', function(){
-  console.log('  Examples:');
-  console.log('');
-  console.log('    $ custom-help --help');
-  console.log('    $ custom-help -h');
-  console.log('');
-});
-
-program.parse(process.argv);
-
-console.log('stuff');
-```
-
-yielding the following help output:
-
-```
-
-Usage: custom-help [options]
-
-Options:
-
-  -h, --help     output usage information
-  -V, --version  output the version number
-  -f, --foo      enable some foo
-  -b, --bar      enable some bar
-  -B, --baz      enable some baz
-
-Examples:
-
-  $ custom-help --help
-  $ custom-help -h
-
-```
-
-## .prompt(msg, fn)
-
- Single-line prompt:
-
-```js
-program.prompt('name: ', function(name){
-  console.log('hi %s', name);
-});
-```
-
- Multi-line prompt:
-
-```js
-program.prompt('description:', function(name){
-  console.log('hi %s', name);
-});
-```
-
- Coercion:
-
-```js
-program.prompt('Age: ', Number, function(age){
-  console.log('age: %j', age);
-});
-```
-
-```js
-program.prompt('Birthdate: ', Date, function(date){
-  console.log('date: %s', date);
-});
-```
-
-## .password(msg[, mask], fn)
-
-Prompt for password without echoing:
-
-```js
-program.password('Password: ', function(pass){
-  console.log('got "%s"', pass);
-  process.stdin.destroy();
-});
-```
-
-Prompt for password with mask char "*":
-
-```js
-program.password('Password: ', '*', function(pass){
-  console.log('got "%s"', pass);
-  process.stdin.destroy();
-});
-```
-
-## .confirm(msg, fn)
-
- Confirm with the given `msg`:
-
-```js
-program.confirm('continue? ', function(ok){
-  console.log(' got %j', ok);
-});
-```
-
-## .choose(list, fn)
-
- Let the user choose from a `list`:
-
-```js
-var list = ['tobi', 'loki', 'jane', 'manny', 'luna'];
-
-console.log('Choose the coolest pet:');
-program.choose(list, function(i){
-  console.log('you chose %d "%s"', i, list[i]);
-});
-```
-
-## Links
-
- - [API documentation](http://visionmedia.github.com/commander.js/)
- - [ascii tables](https://github.com/LearnBoost/cli-table)
- - [progress bars](https://github.com/visionmedia/node-progress)
- - [more progress bars](https://github.com/substack/node-multimeter)
- - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)
-
-## License 
-
-(The MIT License)
-
-Copyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
-
-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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/index.js b/blackberry10/node_modules/commander/index.js
deleted file mode 100644
index 06ec1e4..0000000
--- a/blackberry10/node_modules/commander/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-
-module.exports = require('./lib/commander');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/lib/commander.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/lib/commander.js b/blackberry10/node_modules/commander/lib/commander.js
deleted file mode 100644
index 5ba87eb..0000000
--- a/blackberry10/node_modules/commander/lib/commander.js
+++ /dev/null
@@ -1,1026 +0,0 @@
-
-/*!
- * commander
- * Copyright(c) 2011 TJ Holowaychuk <tj...@vision-media.ca>
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var EventEmitter = require('events').EventEmitter
-  , path = require('path')
-  , tty = require('tty')
-  , basename = path.basename;
-
-/**
- * Expose the root command.
- */
-
-exports = module.exports = new Command;
-
-/**
- * Expose `Command`.
- */
-
-exports.Command = Command;
-
-/**
- * Expose `Option`.
- */
-
-exports.Option = Option;
-
-/**
- * Initialize a new `Option` with the given `flags` and `description`.
- *
- * @param {String} flags
- * @param {String} description
- * @api public
- */
-
-function Option(flags, description) {
-  this.flags = flags;
-  this.required = ~flags.indexOf('<');
-  this.optional = ~flags.indexOf('[');
-  this.bool = !~flags.indexOf('-no-');
-  flags = flags.split(/[ ,|]+/);
-  if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();
-  this.long = flags.shift();
-  this.description = description;
-}
-
-/**
- * Return option name.
- *
- * @return {String}
- * @api private
- */
-
-Option.prototype.name = function(){
-  return this.long
-    .replace('--', '')
-    .replace('no-', '');
-};
-
-/**
- * Check if `arg` matches the short or long flag.
- *
- * @param {String} arg
- * @return {Boolean}
- * @api private
- */
-
-Option.prototype.is = function(arg){
-  return arg == this.short
-    || arg == this.long;
-};
-
-/**
- * Initialize a new `Command`.
- *
- * @param {String} name
- * @api public
- */
-
-function Command(name) {
-  this.commands = [];
-  this.options = [];
-  this.args = [];
-  this.name = name;
-}
-
-/**
- * Inherit from `EventEmitter.prototype`.
- */
-
-Command.prototype.__proto__ = EventEmitter.prototype;
-
-/**
- * Add command `name`.
- *
- * The `.action()` callback is invoked when the
- * command `name` is specified via __ARGV__,
- * and the remaining arguments are applied to the
- * function for access.
- *
- * When the `name` is "*" an un-matched command
- * will be passed as the first arg, followed by
- * the rest of __ARGV__ remaining.
- *
- * Examples:
- *
- *      program
- *        .version('0.0.1')
- *        .option('-C, --chdir <path>', 'change the working directory')
- *        .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
- *        .option('-T, --no-tests', 'ignore test hook')
- *     
- *      program
- *        .command('setup')
- *        .description('run remote setup commands')
- *        .action(function(){
- *          console.log('setup');
- *        });
- *     
- *      program
- *        .command('exec <cmd>')
- *        .description('run the given remote command')
- *        .action(function(cmd){
- *          console.log('exec "%s"', cmd);
- *        });
- *     
- *      program
- *        .command('*')
- *        .description('deploy the given env')
- *        .action(function(env){
- *          console.log('deploying "%s"', env);
- *        });
- *     
- *      program.parse(process.argv);
-  *
- * @param {String} name
- * @return {Command} the new command
- * @api public
- */
-
-Command.prototype.command = function(name){
-  var args = name.split(/ +/);
-  var cmd = new Command(args.shift());
-  this.commands.push(cmd);
-  cmd.parseExpectedArgs(args);
-  cmd.parent = this;
-  return cmd;
-};
-
-/**
- * Parse expected `args`.
- *
- * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`.
- *
- * @param {Array} args
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.parseExpectedArgs = function(args){
-  if (!args.length) return;
-  var self = this;
-  args.forEach(function(arg){
-    switch (arg[0]) {
-      case '<':
-        self.args.push({ required: true, name: arg.slice(1, -1) });
-        break;
-      case '[':
-        self.args.push({ required: false, name: arg.slice(1, -1) });
-        break;
-    }
-  });
-  return this;
-};
-
-/**
- * Register callback `fn` for the command.
- *
- * Examples:
- *
- *      program
- *        .command('help')
- *        .description('display verbose help')
- *        .action(function(){
- *           // output help here
- *        });
- *
- * @param {Function} fn
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.action = function(fn){
-  var self = this;
-  this.parent.on(this.name, function(args, unknown){    
-    // Parse any so-far unknown options
-    unknown = unknown || [];
-    var parsed = self.parseOptions(unknown);
-    
-    // Output help if necessary
-    outputHelpIfNecessary(self, parsed.unknown);
-    
-    // If there are still any unknown options, then we simply 
-    // die, unless someone asked for help, in which case we give it
-    // to them, and then we die.
-    if (parsed.unknown.length > 0) {      
-      self.unknownOption(parsed.unknown[0]);
-    }
-    
-    self.args.forEach(function(arg, i){
-      if (arg.required && null == args[i]) {
-        self.missingArgument(arg.name);
-      }
-    });
-    
-    // Always append ourselves to the end of the arguments,
-    // to make sure we match the number of arguments the user
-    // expects
-    if (self.args.length) {
-      args[self.args.length] = self;
-    } else {
-      args.push(self);
-    }
-    
-    fn.apply(this, args);
-  });
-  return this;
-};
-
-/**
- * Define option with `flags`, `description` and optional
- * coercion `fn`. 
- *
- * The `flags` string should contain both the short and long flags,
- * separated by comma, a pipe or space. The following are all valid
- * all will output this way when `--help` is used.
- *
- *    "-p, --pepper"
- *    "-p|--pepper"
- *    "-p --pepper"
- *
- * Examples:
- *
- *     // simple boolean defaulting to false
- *     program.option('-p, --pepper', 'add pepper');
- *
- *     --pepper
- *     program.pepper
- *     // => Boolean
- *
- *     // simple boolean defaulting to false
- *     program.option('-C, --no-cheese', 'remove cheese');
- *
- *     program.cheese
- *     // => true
- *
- *     --no-cheese
- *     program.cheese
- *     // => true
- *
- *     // required argument
- *     program.option('-C, --chdir <path>', 'change the working directory');
- *
- *     --chdir /tmp
- *     program.chdir
- *     // => "/tmp"
- *
- *     // optional argument
- *     program.option('-c, --cheese [type]', 'add cheese [marble]');
- *
- * @param {String} flags
- * @param {String} description
- * @param {Function|Mixed} fn or default
- * @param {Mixed} defaultValue
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.option = function(flags, description, fn, defaultValue){
-  var self = this
-    , option = new Option(flags, description)
-    , oname = option.name()
-    , name = camelcase(oname);
-
-  // default as 3rd arg
-  if ('function' != typeof fn) defaultValue = fn, fn = null;
-
-  // preassign default value only for --no-*, [optional], or <required>
-  if (false == option.bool || option.optional || option.required) {
-    // when --no-* we make sure default is true
-    if (false == option.bool) defaultValue = true;
-    // preassign only if we have a default
-    if (undefined !== defaultValue) self[name] = defaultValue;
-  }
-
-  // register the option
-  this.options.push(option);
-
-  // when it's passed assign the value
-  // and conditionally invoke the callback
-  this.on(oname, function(val){
-    // coercion
-    if (null != val && fn) val = fn(val);
-
-    // unassigned or bool
-    if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) {
-      // if no value, bool true, and we have a default, then use it!
-      if (null == val) {
-        self[name] = option.bool
-          ? defaultValue || true
-          : false;
-      } else {
-        self[name] = val;
-      }
-    } else if (null !== val) {
-      // reassign
-      self[name] = val;
-    }
-  });
-
-  return this;
-};
-
-/**
- * Parse `argv`, settings options and invoking commands when defined.
- *
- * @param {Array} argv
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.parse = function(argv){
-  // store raw args
-  this.rawArgs = argv;
-
-  // guess name
-  if (!this.name) this.name = basename(argv[1]);
-
-  // process argv
-  var parsed = this.parseOptions(this.normalize(argv.slice(2)));
-  this.args = parsed.args;
-  return this.parseArgs(this.args, parsed.unknown);
-};
-
-/**
- * Normalize `args`, splitting joined short flags. For example
- * the arg "-abc" is equivalent to "-a -b -c".
- *
- * @param {Array} args
- * @return {Array}
- * @api private
- */
-
-Command.prototype.normalize = function(args){
-  var ret = []
-    , arg;
-
-  for (var i = 0, len = args.length; i < len; ++i) {
-    arg = args[i];
-    if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) {
-      arg.slice(1).split('').forEach(function(c){
-        ret.push('-' + c);
-      });
-    } else {
-      ret.push(arg);
-    }
-  }
-
-  return ret;
-};
-
-/**
- * Parse command `args`.
- *
- * When listener(s) are available those
- * callbacks are invoked, otherwise the "*"
- * event is emitted and those actions are invoked.
- *
- * @param {Array} args
- * @return {Command} for chaining
- * @api private
- */
-
-Command.prototype.parseArgs = function(args, unknown){
-  var cmds = this.commands
-    , len = cmds.length
-    , name;
-
-  if (args.length) {
-    name = args[0];
-    if (this.listeners(name).length) {
-      this.emit(args.shift(), args, unknown);
-    } else {
-      this.emit('*', args);
-    }
-  } else {
-    outputHelpIfNecessary(this, unknown);
-    
-    // If there were no args and we have unknown options,
-    // then they are extraneous and we need to error.
-    if (unknown.length > 0) {      
-      this.unknownOption(unknown[0]);
-    }
-  }
-
-  return this;
-};
-
-/**
- * Return an option matching `arg` if any.
- *
- * @param {String} arg
- * @return {Option}
- * @api private
- */
-
-Command.prototype.optionFor = function(arg){
-  for (var i = 0, len = this.options.length; i < len; ++i) {
-    if (this.options[i].is(arg)) {
-      return this.options[i];
-    }
-  }
-};
-
-/**
- * Parse options from `argv` returning `argv`
- * void of these options.
- *
- * @param {Array} argv
- * @return {Array}
- * @api public
- */
-
-Command.prototype.parseOptions = function(argv){
-  var args = []
-    , len = argv.length
-    , literal
-    , option
-    , arg;
-
-  var unknownOptions = [];
-
-  // parse options
-  for (var i = 0; i < len; ++i) {
-    arg = argv[i];
-
-    // literal args after --
-    if ('--' == arg) {
-      literal = true;
-      continue;
-    }
-
-    if (literal) {
-      args.push(arg);
-      continue;
-    }
-
-    // find matching Option
-    option = this.optionFor(arg);
-
-    // option is defined
-    if (option) {
-      // requires arg
-      if (option.required) {
-        arg = argv[++i];
-        if (null == arg) return this.optionMissingArgument(option);
-        if ('-' == arg[0]) return this.optionMissingArgument(option, arg);
-        this.emit(option.name(), arg);
-      // optional arg
-      } else if (option.optional) {
-        arg = argv[i+1];
-        if (null == arg || '-' == arg[0]) {
-          arg = null;
-        } else {
-          ++i;
-        }
-        this.emit(option.name(), arg);
-      // bool
-      } else {
-        this.emit(option.name());
-      }
-      continue;
-    }
-    
-    // looks like an option
-    if (arg.length > 1 && '-' == arg[0]) {
-      unknownOptions.push(arg);
-      
-      // If the next argument looks like it might be
-      // an argument for this option, we pass it on.
-      // If it isn't, then it'll simply be ignored
-      if (argv[i+1] && '-' != argv[i+1][0]) {
-        unknownOptions.push(argv[++i]);
-      }
-      continue;
-    }
-    
-    // arg
-    args.push(arg);
-  }
-  
-  return { args: args, unknown: unknownOptions };
-};
-
-/**
- * Argument `name` is missing.
- *
- * @param {String} name
- * @api private
- */
-
-Command.prototype.missingArgument = function(name){
-  console.error();
-  console.error("  error: missing required argument `%s'", name);
-  console.error();
-  process.exit(1);
-};
-
-/**
- * `Option` is missing an argument, but received `flag` or nothing.
- *
- * @param {String} option
- * @param {String} flag
- * @api private
- */
-
-Command.prototype.optionMissingArgument = function(option, flag){
-  console.error();
-  if (flag) {
-    console.error("  error: option `%s' argument missing, got `%s'", option.flags, flag);
-  } else {
-    console.error("  error: option `%s' argument missing", option.flags);
-  }
-  console.error();
-  process.exit(1);
-};
-
-/**
- * Unknown option `flag`.
- *
- * @param {String} flag
- * @api private
- */
-
-Command.prototype.unknownOption = function(flag){
-  console.error();
-  console.error("  error: unknown option `%s'", flag);
-  console.error();
-  process.exit(1);
-};
-
-/**
- * Set the program version to `str`.
- *
- * This method auto-registers the "-V, --version" flag
- * which will print the version number when passed.
- *
- * @param {String} str
- * @param {String} flags
- * @return {Command} for chaining
- * @api public
- */
-
-Command.prototype.version = function(str, flags){
-  if (0 == arguments.length) return this._version;
-  this._version = str;
-  flags = flags || '-V, --version';
-  this.option(flags, 'output the version number');
-  this.on('version', function(){
-    console.log(str);
-    process.exit(0);
-  });
-  return this;
-};
-
-/**
- * Set the description `str`.
- *
- * @param {String} str
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.description = function(str){
-  if (0 == arguments.length) return this._description;
-  this._description = str;
-  return this;
-};
-
-/**
- * Set / get the command usage `str`.
- *
- * @param {String} str
- * @return {String|Command}
- * @api public
- */
-
-Command.prototype.usage = function(str){
-  var args = this.args.map(function(arg){
-    return arg.required
-      ? '<' + arg.name + '>'
-      : '[' + arg.name + ']';
-  });
-
-  var usage = '[options'
-    + (this.commands.length ? '] [command' : '')
-    + ']'
-    + (this.args.length ? ' ' + args : '');
-  if (0 == arguments.length) return this._usage || usage;
-  this._usage = str;
-
-  return this;
-};
-
-/**
- * Return the largest option length.
- *
- * @return {Number}
- * @api private
- */
-
-Command.prototype.largestOptionLength = function(){
-  return this.options.reduce(function(max, option){
-    return Math.max(max, option.flags.length);
-  }, 0);
-};
-
-/**
- * Return help for options.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.optionHelp = function(){
-  var width = this.largestOptionLength();
-  
-  // Prepend the help information
-  return [pad('-h, --help', width) + '  ' + 'output usage information']
-    .concat(this.options.map(function(option){
-      return pad(option.flags, width)
-        + '  ' + option.description;
-      }))
-    .join('\n');
-};
-
-/**
- * Return command help documentation.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.commandHelp = function(){
-  if (!this.commands.length) return '';
-  return [
-      ''
-    , '  Commands:'
-    , ''
-    , this.commands.map(function(cmd){
-      var args = cmd.args.map(function(arg){
-        return arg.required
-          ? '<' + arg.name + '>'
-          : '[' + arg.name + ']';
-      }).join(' ');
-
-      return cmd.name 
-        + (cmd.options.length 
-          ? ' [options]'
-          : '') + ' ' + args
-        + (cmd.description()
-          ? '\n' + cmd.description()
-          : '');
-    }).join('\n\n').replace(/^/gm, '    ')
-    , ''
-  ].join('\n');
-};
-
-/**
- * Return program help documentation.
- *
- * @return {String}
- * @api private
- */
-
-Command.prototype.helpInformation = function(){
-  return [
-      ''
-    , '  Usage: ' + this.name + ' ' + this.usage()
-    , '' + this.commandHelp()
-    , '  Options:'
-    , ''
-    , '' + this.optionHelp().replace(/^/gm, '    ')
-    , ''
-    , ''
-  ].join('\n');
-};
-
-/**
- * Prompt for a `Number`.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptForNumber = function(str, fn){
-  var self = this;
-  this.promptSingleLine(str, function parseNumber(val){
-    val = Number(val);
-    if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber);
-    fn(val);
-  });
-};
-
-/**
- * Prompt for a `Date`.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptForDate = function(str, fn){
-  var self = this;
-  this.promptSingleLine(str, function parseDate(val){
-    val = new Date(val);
-    if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate);
-    fn(val);
-  });
-};
-
-/**
- * Single-line prompt.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptSingleLine = function(str, fn){
-  if ('function' == typeof arguments[2]) {
-    return this['promptFor' + (fn.name || fn)](str, arguments[2]);
-  }
-
-  process.stdout.write(str);
-  process.stdin.setEncoding('utf8');
-  process.stdin.once('data', function(val){
-    fn(val.trim());
-  }).resume();
-};
-
-/**
- * Multi-line prompt.
- *
- * @param {String} str
- * @param {Function} fn
- * @api private
- */
-
-Command.prototype.promptMultiLine = function(str, fn){
-  var buf = [];
-  console.log(str);
-  process.stdin.setEncoding('utf8');
-  process.stdin.on('data', function(val){
-    if ('\n' == val || '\r\n' == val) {
-      process.stdin.removeAllListeners('data');
-      fn(buf.join('\n'));
-    } else {
-      buf.push(val.trimRight());
-    }
-  }).resume();
-};
-
-/**
- * Prompt `str` and callback `fn(val)`
- *
- * Commander supports single-line and multi-line prompts.
- * To issue a single-line prompt simply add white-space
- * to the end of `str`, something like "name: ", whereas
- * for a multi-line prompt omit this "description:".
- *
- *
- * Examples:
- *
- *     program.prompt('Username: ', function(name){
- *       console.log('hi %s', name);
- *     });
- *     
- *     program.prompt('Description:', function(desc){
- *       console.log('description was "%s"', desc.trim());
- *     });
- *
- * @param {String|Object} str
- * @param {Function} fn
- * @api public
- */
-
-Command.prototype.prompt = function(str, fn){
-  var self = this;
-
-  if ('string' == typeof str) {
-    if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments);
-    this.promptMultiLine(str, fn);
-  } else {
-    var keys = Object.keys(str)
-      , obj = {};
-
-    function next() {
-      var key = keys.shift()
-        , label = str[key];
-
-      if (!key) return fn(obj);
-      self.prompt(label, function(val){
-        obj[key] = val;
-        next();
-      });
-    }
-
-    next();
-  }
-};
-
-/**
- * Prompt for password with `str`, `mask` char and callback `fn(val)`.
- *
- * The mask string defaults to '', aka no output is
- * written while typing, you may want to use "*" etc.
- *
- * Examples:
- *
- *     program.password('Password: ', function(pass){
- *       console.log('got "%s"', pass);
- *       process.stdin.destroy();
- *     });
- *
- *     program.password('Password: ', '*', function(pass){
- *       console.log('got "%s"', pass);
- *       process.stdin.destroy();
- *     });
- *
- * @param {String} str
- * @param {String} mask
- * @param {Function} fn
- * @api public
- */
-
-Command.prototype.password = function(str, mask, fn){
-  var self = this
-    , buf = '';
-
-  // default mask
-  if ('function' == typeof mask) {
-    fn = mask;
-    mask = '';
-  }
-
-  process.stdin.resume();
-  tty.setRawMode(true);
-  process.stdout.write(str);
-
-  // keypress
-  process.stdin.on('keypress', function(c, key){
-    if (key && 'enter' == key.name) {
-      console.log();
-      process.stdin.removeAllListeners('keypress');
-      tty.setRawMode(false);
-      if (!buf.trim().length) return self.password(str, mask, fn);
-      fn(buf);
-      return;
-    }
-
-    if (key && key.ctrl && 'c' == key.name) {
-      console.log('%s', buf);
-      process.exit();
-    }
-
-    process.stdout.write(mask);
-    buf += c;
-  }).resume();
-};
-
-/**
- * Confirmation prompt with `str` and callback `fn(bool)`
- *
- * Examples:
- *
- *      program.confirm('continue? ', function(ok){
- *        console.log(' got %j', ok);
- *        process.stdin.destroy();
- *      });
- *
- * @param {String} str
- * @param {Function} fn
- * @api public
- */
-
-
-Command.prototype.confirm = function(str, fn, verbose){
-  var self = this;
-  this.prompt(str, function(ok){
-    if (!ok.trim()) {
-      if (!verbose) str += '(yes or no) ';
-      return self.confirm(str, fn, true);
-    }
-    fn(parseBool(ok));
-  });
-};
-
-/**
- * Choice prompt with `list` of items and callback `fn(index, item)`
- *
- * Examples:
- *
- *      var list = ['tobi', 'loki', 'jane', 'manny', 'luna'];
- *      
- *      console.log('Choose the coolest pet:');
- *      program.choose(list, function(i){
- *        console.log('you chose %d "%s"', i, list[i]);
- *        process.stdin.destroy();
- *      });
- *
- * @param {Array} list
- * @param {Number|Function} index or fn
- * @param {Function} fn
- * @api public
- */
-
-Command.prototype.choose = function(list, index, fn){
-  var self = this
-    , hasDefault = 'number' == typeof index;
-
-  if (!hasDefault) {
-    fn = index;
-    index = null;
-  }
-
-  list.forEach(function(item, i){
-    if (hasDefault && i == index) {
-      console.log('* %d) %s', i + 1, item);
-    } else {
-      console.log('  %d) %s', i + 1, item);
-    }
-  });
-
-  function again() {
-    self.prompt('  : ', function(val){
-      val = parseInt(val, 10) - 1;
-      if (hasDefault && isNaN(val)) val = index;
-
-      if (null == list[val]) {
-        again();
-      } else {
-        fn(val, list[val]);
-      }
-    });
-  }
-
-  again();
-};
-
-/**
- * Camel-case the given `flag`
- *
- * @param {String} flag
- * @return {String}
- * @api private
- */
-
-function camelcase(flag) {
-  return flag.split('-').reduce(function(str, word){
-    return str + word[0].toUpperCase() + word.slice(1);
-  });
-}
-
-/**
- * Parse a boolean `str`.
- *
- * @param {String} str
- * @return {Boolean}
- * @api private
- */
-
-function parseBool(str) {
-  return /^y|yes|ok|true$/i.test(str);
-}
-
-/**
- * Pad `str` to `width`.
- *
- * @param {String} str
- * @param {Number} width
- * @return {String}
- * @api private
- */
-
-function pad(str, width) {
-  var len = Math.max(0, width - str.length);
-  return str + Array(len + 1).join(' ');
-}
-
-/**
- * Output help information if necessary
- *
- * @param {Command} command to output help for
- * @param {Array} array of options to search for -h or --help
- * @api private
- */
-
-function outputHelpIfNecessary(cmd, options) {
-  options = options || [];
-  for (var i = 0; i < options.length; i++) {
-    if (options[i] == '--help' || options[i] == '-h') {
-      process.stdout.write(cmd.helpInformation());
-      cmd.emit('--help');
-      process.exit(0);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/commander/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/commander/package.json b/blackberry10/node_modules/commander/package.json
deleted file mode 100644
index 052b181..0000000
--- a/blackberry10/node_modules/commander/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "name": "commander",
-  "version": "0.5.2",
-  "description": "the complete solution for node.js command-line programs",
-  "keywords": [
-    "command",
-    "option",
-    "parser",
-    "prompt",
-    "stdin"
-  ],
-  "author": {
-    "name": "TJ Holowaychuk",
-    "email": "tj@vision-media.ca"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/visionmedia/commander.js.git"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "should": ">= 0.0.1"
-  },
-  "scripts": {
-    "test": "make test"
-  },
-  "main": "index",
-  "engines": {
-    "node": ">= 0.4.x"
-  },
-  "readme": "# Commander.js\n\n  The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n    $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n  .version('0.0.1')\n  .option('-p, --peppers', 'Add peppers')\n  .option('-P, --pineapple', 'Add pineapple')\n  .option('-b, --bbq', 'Add bbq sauce')\n  .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]'
 , 'marble')\n  .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log('  - peppers');\nif (program.pineapple) console.log('  - pineappe');\nif (program.bbq) console.log('  - bbq');\nconsole.log('  - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n```  \n $ ./examples/pizza --help\n\n   Usage: pizza [options]\n\n   Options:\n\n     -V, --version        output the version number\n     -p, --peppers        Add peppers\n     -P, --pineapple      Add pineappe\n     -b, --bbq            Add bbq sauce\n     -c, --cheese <type>  Add the specified type of cheese [marble]\n     -h, --he
 lp           output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n  return val.split('..').map(Number);\n}\n\nfunction list(val) {\n  return val.split(',');\n}\n\nprogram\n  .version('0.0.1')\n  .usage('[options] <file ...>')\n  .option('-i, --integer <n>', 'An integer argument', parseInt)\n  .option('-f, --float <n>', 'A float argument', parseFloat)\n  .option('-r, --range <a>..<b>', 'A range', range)\n  .option('-l, --list <items>', 'A list', list)\n  .option('-o, --optional [value]', 'An optional value')\n  .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\"
 . Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n  return val.split(',').map(Number);\n}\n\nprogram\n  .version('0.0.1')\n  .option('-f, --foo', 'enable some foo')\n  .option('-b, --bar', 'enable some bar')\n  .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n  console.log('  Examples:');\n  console.log('');\n  console.log('    $ custom-help --help');\n  console.log('    $ custom-help -h');\n  console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n  -h, --help    
  output usage information\n  -V, --version  output the version number\n  -f, --foo      enable some foo\n  -b, --bar      enable some bar\n  -B, --baz      enable some baz\n\nExamples:\n\n  $ custom-help --help\n  $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n  console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n  console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n  console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n  console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n  console.log('got \"%s\"', pass);\n  process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Pas
 sword: ', '*', function(pass){\n  console.log('got \"%s\"', pass);\n  process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n  console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n  console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission
  is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR
  OTHER DEALINGS IN THE SOFTWARE.",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/visionmedia/commander.js/issues"
-  },
-  "_id": "commander@0.5.2",
-  "_from": "commander@0.5.2"
-}


[49/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/bar-builder.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/bar-builder.js b/bin/templates/project/cordova/lib/bar-builder.js
new file mode 100644
index 0000000..cfd029a
--- /dev/null
+++ b/bin/templates/project/cordova/lib/bar-builder.js
@@ -0,0 +1,103 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var jWorkflow = require("jWorkflow"),
+    wrench = require("wrench"),
+    nativePkgr = require("./native-packager"),
+    fileManager = require("./file-manager"),
+    localize = require("./localize"),
+    logger = require("./logger"),
+    signingHelper = require("./signing-helper"),
+    targetIdx = 0;
+
+function buildTarget(previous, baton) {
+    baton.take();
+
+    var target = this.session.targets[targetIdx++],
+        session = this.session,
+        config = this.config;
+
+    //Create output folder
+    wrench.mkdirSyncRecursive(session.outputDir + "/" + target);
+
+    //Copy resources (could be lost if copying assets from other project)
+    fileManager.copyNative(this.session, target);
+    //Generate user config here to overwrite default
+    fileManager.generateUserConfig(session, config);
+
+    if (config.packageCordovaJs) {
+        //Package cordova.js to chrome folder
+        fileManager.copyWebworks(this.session);
+    }
+
+    //Generate frameworkModules.js (this needs to be done AFTER all files have been copied)
+    fileManager.generateFrameworkModulesJS(session);
+
+    //Call native-packager module for target
+    nativePkgr.exec(session, target, config, function (code) {
+        if (code !== 0) {
+            logger.error(localize.translate("EXCEPTION_NATIVEPACKAGER"));
+            baton.pass(code);
+        } else {
+            if (target === "device" && session.isSigningRequired(config)) {
+                signingHelper.execSigner(session, target, function (error) {
+                    if (error && error.code) {
+                        baton.pass(error.code);
+                    } else {
+                        //Pass 0 to signify success
+                        baton.pass(0);
+                    }
+                });
+            } else {
+                baton.pass(code);
+            }
+        }
+    });
+}
+
+function buildWorkflow(session, context) {
+    if (session.targets && session.targets.length > 0) {
+        var order;
+
+        session.targets.forEach(function (target, idx) {
+            if (idx === 0) {
+                order = jWorkflow.order(buildTarget, context);
+            } else {
+                order = order.andThen(buildTarget, context);
+            }
+        });
+
+        return order;
+    } else {
+        logger.debug("NOTHING TO BUILD, NO TARGETS");
+    }
+}
+
+module.exports = {
+    build: function (session, config, callback) {
+        var context = {
+                session: session,
+                config: config
+            },
+            workflow = buildWorkflow(session, context);
+
+        if (workflow) {
+            workflow.start({
+                "callback": callback
+            });
+        }
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/bar-conf.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/bar-conf.js b/bin/templates/project/cordova/lib/bar-conf.js
new file mode 100644
index 0000000..857875b
--- /dev/null
+++ b/bin/templates/project/cordova/lib/bar-conf.js
@@ -0,0 +1,27 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var self = {};
+
+self.ROOT = "";
+self.CHROME = self.ROOT + "/chrome";
+self.LIB = self.CHROME + "/lib";
+self.EXT = self.CHROME + "/plugin";
+self.UI = self.ROOT + "/ui-resources";
+self.PLUGINS = self.ROOT + "/plugins";
+self.JNEXT_PLUGINS = self.ROOT + "/plugins/jnext";
+
+module.exports = self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/bb10-ndk-version.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/bb10-ndk-version.js b/bin/templates/project/cordova/lib/bb10-ndk-version.js
new file mode 100755
index 0000000..760ae70
--- /dev/null
+++ b/bin/templates/project/cordova/lib/bb10-ndk-version.js
@@ -0,0 +1,29 @@
+#!/usr/bin/env node
+
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+var bbtools = process.env.CORDOVA_BBTOOLS,
+    reg = /host_\d+_\d+/g,
+    results;
+
+if (reg.test(bbtools)) {
+    results = bbtools.match(reg);
+    console.log(results[0].split('host_')[1].replace('_', '.'));
+} else {
+    return new Error('Unable to find the blackberry ndk on your path.');
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/bbwpignore.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/bbwpignore.js b/bin/templates/project/cordova/lib/bbwpignore.js
new file mode 100755
index 0000000..29c6399
--- /dev/null
+++ b/bin/templates/project/cordova/lib/bbwpignore.js
@@ -0,0 +1,129 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var fs = require("fs"),
+    path = require("path"),
+    BBWPignore;
+
+function getDirectory(file) {
+    if (file.match("/$")) {
+        return file;
+    } else if (file.indexOf("/") === -1) {
+        return "";
+    } else {
+        return file.substring(0, file.lastIndexOf("/"));
+    }
+}
+
+function trim(str) {
+    return str.replace(/^\s+|\s+$/g, "");
+}
+
+BBWPignore = function (bbwpIgnoreFile, filesToMatch) {
+    var comments = [],
+        directories = [],
+        wildcardEntries = [],
+        files = [],
+        split,
+        matched = [],
+        i,
+        temparr,
+        tempFiles = [];
+    temparr = fs.readFileSync(bbwpIgnoreFile, "utf-8").split('\n');
+
+    //switch all the paths to relative, so if someone has passed absolute paths convert them to relative to .bbwpignore
+    filesToMatch.forEach(function (file) {
+        if (file === path.resolve(file)) { //if path is absolute
+            tempFiles.push(path.relative(path.dirname(bbwpIgnoreFile), file));
+        } else {
+            tempFiles.push(file);
+        }
+    });
+    filesToMatch = tempFiles;
+
+    //run through all the patterns in the bbwpignore and put them in appropriate arrays
+    for (i = 0; i < temparr.length; i++) {
+        temparr[i] = trim(temparr[i]);
+        if (temparr[i] !== "") {
+            if (temparr[i].match("^#")) {
+                comments.push(temparr[i]);
+            } else if (temparr[i].match("^/") && temparr[i].match("/$")) {
+                directories.push(temparr[i]);
+            } else if (temparr[i].indexOf("*") !== -1) {
+                split = temparr[i].split("/");
+                if (split[split.length - 1].indexOf("*") !== -1) { // only wildcards in the file name are supported, not in directory names
+                    wildcardEntries.push(temparr[i]);
+                } else {
+                    files.push(temparr[i]);
+                }
+            } else {
+                files.push(temparr[i]);
+            }
+        }
+    }
+
+    //run through all the files and check it against each of the patterns collected earlier
+    filesToMatch.forEach(function (fileToMatch) {
+        var directory,
+            dirOrig = getDirectory(fileToMatch),
+            isMatch = false;
+        //match directories
+        directory = "/" + dirOrig + "/";
+        if (directories.indexOf(directory) !== -1) {
+            matched.push(fileToMatch);
+            //add the directory to the list as well but only check
+            if (matched.indexOf("/" + dirOrig) === -1) {
+                matched.push("/" + dirOrig);
+            }
+            isMatch = true;
+        } else {
+            //handle special case when match patterns begin with /
+            //match wildCards
+            wildcardEntries.forEach(function (wildcard) {
+                if (wildcard.match("^/")) { // special case looking for exact match
+                    wildcard = "^" + wildcard.replace("*", "[^\/]*");
+                    if (("/" + fileToMatch).match(wildcard)) {
+                        matched.push(fileToMatch);
+                        isMatch = true;
+                    }
+                } else {
+                    wildcard = wildcard.replace("*", "[^\/]*");
+                    if (fileToMatch.match(wildcard)) {
+                        matched.push(fileToMatch);
+                        isMatch = true;
+                    }
+                }
+            });
+            if (!isMatch) { //must be a file
+                files.forEach(function (file) {
+                    if (file.match("^/")) { // special case looking for exact match
+                        if (file === ("/" + fileToMatch)) {
+                            matched.push(fileToMatch);
+                            isMatch = true;
+                        }
+                    } else if (fileToMatch.match(file)) {
+                        matched.push(fileToMatch);
+                        isMatch = true;
+                    }
+                });
+
+            }
+        }
+    });
+    this.matchedFiles = matched;
+};
+
+module.exports = BBWPignore;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/build.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/build.js b/bin/templates/project/cordova/lib/build.js
new file mode 100755
index 0000000..ab38964
--- /dev/null
+++ b/bin/templates/project/cordova/lib/build.js
@@ -0,0 +1,129 @@
+#!/usr/bin/env node
+
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    exit = require("exit"),
+    command = require("commander"),
+    os = require("os"),
+    utils = require("./utils"),
+    signingHelper = require("./signing-helper"),
+    bbProperties = utils.getProperties(),
+    bbwpArgv = [
+        process.argv[0],
+        path.resolve(path.join(__dirname, process.argv[1])),
+        path.resolve(path.join(__dirname, "..", "..", "www")),
+        "-o",
+        path.resolve(path.join(__dirname, "..", "..", "build"))
+    ],
+    async = require("async"),
+    childProcess = require("child_process"),
+    pkgrUtils = require("./packager-utils"),
+    session = require("./session"),
+    ERROR_VALUE = 2,
+    commandStr;
+
+function copyArgIfExists(arg) {
+    if (command[arg]) {
+        bbwpArgv.push("--" + arg);
+        bbwpArgv.push(command[arg]);
+    }
+}
+
+command
+    .usage('[--debug | --release] [--no-query] [-k | --keystorepass] [-b <number> | --buildId <number>] [-p <json> | --params <json>] [-l <level> | --loglevel <level>] [--web-inspector] [--no-signing]')
+    .option('--debug', 'build in debug mode.')
+    .option('--release', 'build in release mode. This will sign the resulting bar.')
+    .option('--no-query', 'fail if a password is needed and one isn\'t available')
+    .option('-k, --keystorepass <password>', 'signing key password')
+    .option('-b, --buildId <num>', 'specifies the build number for signing (typically incremented from previous signing).')
+    .option('-p, --params <params JSON file>', 'specifies additional parameters to pass to downstream tools.')
+    .option('-l, --loglevel <loglevel>', 'set the logging level (error, warn, verbose)')
+    .option('--web-inspector', 'enables webinspector. Enabled by default in debug mode.).')
+    .option('--no-signing', 'when building in release mode, this will skip signing');
+
+try {
+    command.parse(process.argv);
+
+    if (command.debug && command.release) {
+        console.error("Invalid build command: cannot specify both debug and release parameters.");
+        console.log(command.helpInformation());
+        exit(ERROR_VALUE);
+    }
+
+    signingHelper.warn();
+
+    utils.series(
+        [
+            function clean(done) {
+                var cmd = utils.isWindows() ? "clean" : "./clean",
+                    args = [],
+                    opts = { "cwd": path.normalize(__dirname + "/..") };
+
+                utils.exec(cmd, args, opts, done);
+            },
+            function releaseBuild(allDone) {
+                var childTasks = [],
+                    keystorepass = session.getKeyStorePass(command),
+                    err;
+
+                if (command.release) {
+                    copyArgIfExists("buildId");
+                    if (command.signing) {
+                        //Note: Packager refers to signing password as "password" not "keystorepass"
+                        bbwpArgv.push("--password");
+                        if (keystorepass) {
+                            bbwpArgv.push(keystorepass);
+                        } else if (command.query) {
+                            childTasks.push(utils.prompt.bind(this, {description: "Please enter your keystore password: ", hidden: true}));
+                            childTasks.push(function (password, done) {
+                                bbwpArgv.push(password);
+                                done();
+                            });
+                        } else {
+                            err = "No signing password provided. You can omit --no-query, use --no-signing, use --keystorepass, or enter a value for 'keystorepass' in " + pkgrUtils.homedir() + "/.cordova/blackberry10.json";
+                        }
+                    }
+                }
+
+                async.waterfall(childTasks, function (error) { allDone(error || err); });
+            },
+            function build(done) {
+                //enable webinspector in debug mode or if --webinspector was provided
+                if (!command.release || command.webInspector) {
+                    bbwpArgv.push("-d");
+                }
+
+                copyArgIfExists("params");
+                copyArgIfExists("loglevel");
+
+                //Overwrite process.argv, before calling packager
+                process.argv = bbwpArgv;
+
+                //Delete cached commander object. It will conflict with the packagers commander
+                delete require.cache[require.resolve("commander")];
+                delete require.cache[require.resolve("commander/lib/commander")];
+
+                require("./packager").start(done);
+            }
+        ]
+    );
+} catch (e) {
+    console.error(os.EOL + e);
+    exit(ERROR_VALUE);
+}
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/clean.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/clean.js b/bin/templates/project/cordova/lib/clean.js
new file mode 100644
index 0000000..c93cff1
--- /dev/null
+++ b/bin/templates/project/cordova/lib/clean.js
@@ -0,0 +1,23 @@
+#!/usr/bin/env node
+
+/*
+ *  Copyright 2013 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var wrench = require('wrench'),
+    path = require("path"),
+    buildPath = path.normalize(__dirname + "/../../build/");
+
+wrench.rmdirSyncRecursive(buildPath, true);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/cmdline.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/cmdline.js b/bin/templates/project/cordova/lib/cmdline.js
new file mode 100644
index 0000000..b05da0f
--- /dev/null
+++ b/bin/templates/project/cordova/lib/cmdline.js
@@ -0,0 +1,67 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var command = require("commander"),
+    logger = require("./logger"),
+    localize = require("./localize");
+
+command
+    .version('1.0.0.0')
+    .usage('[drive:][path]archive [-s [dir]] [[ -g genpassword] [-buildId num]] [-o dir] [-d] [-p paramsjsonfile]')
+    .option('-s, --source [dir]', 'Save source. The default behavior is to not save the source files. If dir is specified then creates dir\\src\\ directory structure. If no dir specified then the path of archive is assumed')
+    .option('-g, --password <password>', 'Signing key password')
+    .option('-buildId <num>', '[deprecated] Use --buildId.')
+    .option('-b, --buildId <num>', 'Specifies the build number for signing (typically incremented from previous signing).')
+    .option('-o, --output <dir>', 'Redirects output file location to dir. If both -o and dir are not specified then the path of archive is assumed')
+    .option('-d, --debug', 'Allows use of not signed build on device by utilizing debug token and enables Web Inspector.')
+    .option('-p, --params <params JSON file>', 'Specifies additional parameters to pass to downstream tools.')
+    .option('--appdesc <filepath>', 'Optionally specifies the path to the bar descriptor file (bar-descriptor.xml). For internal use only.')
+    .option('-v, --verbose', 'Turn on verbose messages')
+    .option('-l, --loglevel <loglevel>', 'set the logging level (error, warn, verbose)');
+
+function parseArgs(args) {
+    var option,
+        i;
+    if (!args[2]) {
+        //no args passed into [node bbwp.js], show the help information
+        args.push("-h");
+    }
+
+    //Handle deprecated option -buildId
+    for (i = 0; i < args.length; i++) {
+        if (args[i] === "-buildId") {
+            args[i] = "--buildId";
+        }
+    }
+    
+    command.parse(args);
+
+    //Check for any invalid command line args
+    for (i = 0; i < args.length; i++) {
+        //Remove leading dashes if any
+        option = args[i].substring(2);
+        if (args[i].indexOf("--") === 0 && !command[option]) {
+            throw localize.translate("EXCEPTION_CMDLINE_ARG_INVALID", args[i]);
+        }
+    }
+
+    return this;
+}
+
+module.exports = {
+    "commander": command,
+    "parse": parseArgs
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/conf.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/conf.js b/bin/templates/project/cordova/lib/conf.js
new file mode 100644
index 0000000..019a84e
--- /dev/null
+++ b/bin/templates/project/cordova/lib/conf.js
@@ -0,0 +1,48 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    utils = require("./utils"),
+    fs = require("fs");
+
+function getToolsDir() {
+    if (process.env && process.env.QNX_HOST) {
+        var bbndkDir = path.join(process.env.QNX_HOST, "usr");
+        if (fs.existsSync(bbndkDir)) {
+            //BBNDK exists on path, use its tools
+            return bbndkDir;
+        }
+    }
+}
+
+module.exports = {
+    ROOT: path.normalize(__dirname + "/../framework"),
+    PROJECT_ROOT: path.normalize(__dirname + "/../../"),
+    NATIVE: path.normalize(__dirname + "/../../native"),
+    JNEXT_AUTH: path.normalize(__dirname + "/../../native/plugins/jnext/auth.txt"),
+    BIN: path.normalize(__dirname + "/../framework/bin"),
+    LIB: path.normalize(__dirname + "/../framework/lib"),
+    EXT: path.normalize(__dirname + "/../../plugins"),
+    UI: path.normalize(__dirname + "/../framework/ui-resources"),
+    DEPENDENCIES: path.normalize(__dirname + "/../framework/dependencies"),
+    DEPENDENCIES_BOOTSTRAP: path.normalize(__dirname + "/../framework/bootstrap"),
+    DEPENDENCIES_TOOLS: getToolsDir(),
+    DEPENDENCIES_WWE: path.normalize(__dirname + "/../dependencies/%s-wwe"),
+    DEBUG_TOKEN: path.normalize(path.join(utils.getCordovaDir(), "blackberry10debugtoken.bar")),
+    DEFAULT_ICON: path.normalize(__dirname + "/../default-icon.png"),
+    BAR_DESCRIPTOR: "bar-descriptor.xml",
+    BBWP_IGNORE_FILENAME: ".bbwpignore"
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/config-parser.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/config-parser.js b/bin/templates/project/cordova/lib/config-parser.js
new file mode 100644
index 0000000..3fb87c8
--- /dev/null
+++ b/bin/templates/project/cordova/lib/config-parser.js
@@ -0,0 +1,696 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*jshint sub:true*/
+var fs = require("fs"),
+    util = require('util'),
+    xml2js = require('xml2js'),
+    packagerUtils = require('./packager-utils'),
+    check = require('validator').check,
+    sanitize = require('validator').sanitize,
+    localize = require("./localize"),
+    logger = require("./logger"),
+    fileManager = require("./file-manager"),
+    utils = require("./packager-utils"),
+    i18nMgr = require("./i18n-manager"),
+    et = require("elementtree"),
+    _config_doc,
+    _self,
+    _predefinedFeatures;
+
+//This function will convert a wc3 paramObj with a list of
+//<param name="" value=""> elements into a single object
+function processParamObj(paramObj) {
+    var processedObj = {},
+        attribs,
+        paramName,
+        paramValue;
+
+    if (paramObj) {
+        //Convert to array for single param entries where only an object is created
+        if (!Array.isArray(paramObj)) {
+            paramObj = [paramObj];
+        }
+
+        paramObj.forEach(function (param) {
+            attribs = param["@"];
+
+            if (attribs) {
+                paramName = attribs["name"];
+                paramValue = attribs["value"];
+
+                if (paramName && paramValue) {
+                    //Add the key/value pair to the processedObj
+                    processedObj[paramName] = paramValue;
+                }
+            }
+        });
+    }
+
+    return processedObj;
+}
+
+function processFeatures(featuresArray, widgetConfig, processPredefinedFeatures) {
+    var features = [],
+        attribs;
+    if (featuresArray) {
+        featuresArray.forEach(function (feature) {
+            attribs = feature["@"];
+            if (attribs) {
+                attribs.required = packagerUtils.toBoolean(attribs.required, true);
+
+                // We do NOT want to auto defer networking and JavaScript if the
+                // blackberry.push feature is being used
+                if (attribs.id === "blackberry.push") {
+                    widgetConfig.autoDeferNetworkingAndJavaScript = false;
+                }
+
+                if (_predefinedFeatures[attribs.id]) {
+                    //Handle features that do NOT contain an API namespace
+                    if (processPredefinedFeatures) {
+                        _predefinedFeatures[attribs.id](feature, widgetConfig);
+                    }
+                } else {
+                    features.push(attribs);
+                }
+            } else {
+                features.push(attribs);
+            }
+        });
+    }
+
+    return features;
+}
+
+function createAccessListObj(uriOrOrigin, allowSubDomain) {
+    return {
+        uri: uriOrOrigin,
+        allowSubDomain: allowSubDomain
+    };
+}
+
+function processVersion(widgetConfig) {
+    if (widgetConfig.version) {
+        var versionArray = widgetConfig.version.split(".");
+
+        //if 4rth number in version exists, extract for build id
+        if (versionArray.length > 3) {
+            widgetConfig.buildId = versionArray[3];
+            widgetConfig.version = widgetConfig.version.substring(0, widgetConfig.version.lastIndexOf('.'));
+        }
+    }
+}
+
+function processBuildID(widgetConfig, session) {
+    if (session.buildId) {
+        //user specified a build id (--buildId), override any previously set build id
+        widgetConfig.buildId = session.buildId;
+    }
+}
+
+function processWidgetData(data, widgetConfig, session) {
+    var attribs,
+        featureArray,
+        uriExist,
+        originExist,
+        header;
+
+    if (data["@"]) {
+        widgetConfig.version = data["@"].version;
+        widgetConfig.id = data["@"].id;
+
+        if (data["@"]["rim:header"]) {
+            widgetConfig.customHeaders = {};
+            header = data["@"]["rim:header"].split(":");
+            // Just set it for now, in the future we can append them
+            widgetConfig.customHeaders[header[0]] = header[1];
+        }
+
+        if (data["@"]["rim:userAgent"]) {
+            widgetConfig.userAgent = data["@"]["rim:userAgent"];
+        }
+    }
+
+    //Default values
+    widgetConfig.hasMultiAccess = false;
+    widgetConfig.accessList = [];
+    widgetConfig.enableFlash = false;
+    widgetConfig.autoOrientation = true;
+    widgetConfig.autoDeferNetworkingAndJavaScript = true;
+    widgetConfig.theme = "default";
+    widgetConfig.autoHideSplashScreen = "true";
+
+    //set locally available features to access list
+    if (data.feature) {
+        featureArray = packagerUtils.isArray(data.feature) ? data.feature : [data.feature];
+    }
+
+    //Handle features that do not have source code
+    featureArray = processFeatures(featureArray, widgetConfig, true);
+
+    //Push empty WIDGET_LOCAL access obj until whitelisting is cleaned up
+    widgetConfig.accessList.push(createAccessListObj("WIDGET_LOCAL", true));
+
+    //add whitelisted features to access list
+    if (data.access) {
+        //If there is only one access list element, it will be parsed as an object and not an array
+        if (!packagerUtils.isArray(data.access)) {
+            data.access = [data.access];
+        }
+
+        //check if uri and origin attributes are used
+        data.access.forEach(function (accessElement, accessIndex) {
+            attribs = accessElement["@"];
+
+            if (attribs) {
+                if (attribs.uri) {
+                    uriExist = true;
+                }
+                if (attribs.origin) {
+                    originExist = true;
+                }
+            }
+        });
+        if (uriExist === true && originExist === true) {
+            logger.warn(localize.translate("WARNING_URI_AND_ORIGIN_FOUND_IN_CONFIG"));
+        }
+
+        data.access.forEach(function (accessElement) {
+            attribs = accessElement["@"];
+
+            if (attribs) {
+                if (attribs.uri === "*" || attribs.origin === "*") {
+                    if (accessElement.feature) {
+                        throw localize.translate("EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN");
+                    }
+                    widgetConfig.hasMultiAccess = true;
+                } else {
+                    attribs.subdomains = packagerUtils.toBoolean(attribs.subdomains);
+                    if (attribs.uri || attribs.origin) {
+                        if (uriExist === true && originExist === true) {
+                            widgetConfig.accessList.push(createAccessListObj(attribs.uri, attribs.subdomains)); //using uri attribute by default
+                        } else {
+                            widgetConfig.accessList.push(createAccessListObj(attribs.uri || attribs.origin, attribs.subdomains));
+                        }
+                    }
+                }
+            }
+        });
+    }
+}
+
+function trim(obj) {
+    return (typeof obj === "string" ? obj.trim() : obj);
+}
+
+function processSplashScreenIconSrc(data, widgetConfig, key) {
+    if (data[key]) {
+        widgetConfig[key] = [];
+
+        if (!(data[key] instanceof Array)) {
+            data[key] = [data[key]];
+        }
+
+        data[key].forEach(function (obj) {
+            if (obj["@"]) {
+                widgetConfig[key].push(obj["@"].src);
+            } else {
+                widgetConfig[key].push(obj);
+            }
+        });
+    }
+}
+
+function processSplashScreenData(data, widgetConfig) {
+    //
+    // This takes config.xml markup in the form of:
+    //
+    // <rim:splash src="splash-1280x768.jpg" />
+    // <rim:splash src="splash-768x1280.jpg" />
+    // <rim:splash src="splash-1024x600.jpg" />
+    // <rim:splash src="splash-600x1024.jpg" />
+    //
+    // and turns it into:
+    //
+    // icon: ["splash-1280x768.jpg", "splash-768x1280.jpg", "splash-1024x600.jpg", "splash-600x1024.jpg"]
+    //
+    // Folder-based localization now done in i18n-manager
+    //
+    processSplashScreenIconSrc(data, widgetConfig, "rim:splash");
+}
+
+function processIconData(data, widgetConfig, session) {
+    //
+    // This takes config.xml markup in the form of:
+    //
+    // <icon src="icon-86.png" />
+    // <icon src="icon-150.png" />
+    //
+    // and turns it into:
+    //
+    // icon: ["icon-86.png", "icon-150.png"]
+    //
+    // Folder-based localization now done in i18n-manager
+    //
+    var default_icon_filename = "default-icon.png",
+        default_icon_src = session.conf.DEFAULT_ICON,
+        default_icon_dst = session.sourceDir;
+
+    processSplashScreenIconSrc(data, widgetConfig, "icon");
+
+    if (!widgetConfig.icon) {
+        packagerUtils.copyFile(default_icon_src, default_icon_dst);
+
+        widgetConfig["icon"] = [];
+        widgetConfig["icon"].push(default_icon_filename);
+    }
+}
+
+function validateSplashScreensIcon(widgetConfig, key) {
+    if (widgetConfig[key]) {
+        var msg = localize.translate(key === "icon" ? "EXCEPTION_INVALID_ICON_SRC" : "EXCEPTION_INVALID_SPLASH_SRC");
+
+        if (widgetConfig[key].length === 0) {
+            // element without src attribute
+            throw msg;
+        } else {
+            widgetConfig[key].forEach(function (src) {
+                var msg2 = localize.translate(key === "icon" ? "EXCEPTION_INVALID_ICON_SRC_LOCALES" : "EXCEPTION_INVALID_SPLASH_SRC_LOCALES");
+
+                // check that src attribute is specified and is not empty
+                check(src, msg).notNull();
+
+                // check that src attribute does not start with reserved locales folder
+                src = src.replace(/\\/g, "/");
+                check(src, msg2).notRegex("^" + i18nMgr.LOCALES_DIR + "\/");
+            });
+        }
+
+    }
+}
+
+function processAuthorData(data, widgetConfig) {
+    if (data.author) {
+        var attribs = data.author["@"];
+
+        if (!attribs && typeof data.author === "string") {
+            //do not sanitize empty objects {} (must be string)
+            widgetConfig.author = sanitize(data.author).trim();
+        } else if (data.author["#"]) {
+            widgetConfig.author = sanitize(data.author["#"]).trim();
+        }
+
+        if (attribs) {
+            widgetConfig.authorURL = attribs.href;
+            widgetConfig.copyright = attribs["rim:copyright"];
+            widgetConfig.authorEmail = attribs.email;
+        }
+    }
+}
+
+function processLicenseData(data, widgetConfig) {
+    if (data.license && data.license["#"]) {
+        widgetConfig.license = data.license["#"];
+    } else {
+        widgetConfig.license = "";
+    }
+
+    if (data.license && data.license["@"]) {
+        widgetConfig.licenseURL = data.license["@"].href;
+    } else {
+        widgetConfig.licenseURL = "";
+    }
+}
+
+function processContentData(data, widgetConfig) {
+    if (data.content) {
+        var attribs  = data.content["@"],
+            startPage;
+        if (attribs) {
+            widgetConfig.content = attribs.src;
+
+            startPage = packagerUtils.parseUri(attribs.src);
+
+            // if start page is local but does not start with local:///, will prepend it
+            // replace any backslash with forward slash
+            if (!packagerUtils.isAbsoluteURI(startPage) && !packagerUtils.isLocalURI(startPage)) {
+                if (!startPage.relative.match(/^\//)) {
+                    widgetConfig.content = "local:///" + startPage.relative.replace(/\\/g, "/");
+                } else {
+                    widgetConfig.content = "local://" + startPage.relative.replace(/\\/g, "/");
+                }
+            }
+
+            widgetConfig.foregroundSource = attribs.src;
+            widgetConfig.contentType = attribs.type;
+            widgetConfig.contentCharSet = attribs.charset;
+            widgetConfig.allowInvokeParams = attribs["rim:allowInvokeParams"];
+            //TODO content rim:background
+        }
+    }
+}
+
+function processPermissionsData(data, widgetConfig) {
+    if (data["rim:permissions"] && data["rim:permissions"]["rim:permit"]) {
+        var permissions = data["rim:permissions"]["rim:permit"];
+
+        if (permissions instanceof Array) {
+            widgetConfig.permissions = permissions;
+        } else {
+            //user entered one permission and it comes in as an object
+            widgetConfig.permissions = [permissions];
+        }
+    } else {
+        widgetConfig.permissions = [];
+    }
+
+    // We do NOT want to auto defer networking and JavaScript if the
+    // run_when_backgrounded permission is set
+    if (widgetConfig.permissions.indexOf("run_when_backgrounded") >= 0) {
+        widgetConfig.autoDeferNetworkingAndJavaScript = false;
+    }
+}
+
+function processInvokeTargetsData(data, widgetConfig) {
+
+    if (data["rim:invoke-target"]) {
+        widgetConfig["invoke-target"] = data["rim:invoke-target"];
+
+        //If invoke-target is not an array, wrap the invoke-target in an array
+        utils.wrapPropertyInArray(widgetConfig, "invoke-target");
+
+        widgetConfig["invoke-target"].forEach(function (invokeTarget) {
+            if (invokeTarget.type && !packagerUtils.isEmpty(invokeTarget.type)) {
+                invokeTarget.type = invokeTarget.type.toUpperCase();
+            }
+
+            if (invokeTarget.filter) {
+                utils.wrapPropertyInArray(invokeTarget, "filter");
+
+                invokeTarget.filter.forEach(function (filter) {
+
+                    if (filter["action"]) {
+                        utils.wrapPropertyInArray(filter, "action");
+                    }
+
+                    if (filter["mime-type"]) {
+                        utils.wrapPropertyInArray(filter, "mime-type");
+                    }
+
+                    if (filter["property"]) {
+                        utils.wrapPropertyInArray(filter, "property");
+                    }
+                });
+            }
+        });
+    }
+}
+
+function validateConfig(widgetConfig) {
+    check(widgetConfig.version, localize.translate("EXCEPTION_INVALID_VERSION"))
+        .notNull()
+        .regex("^[0-9]{1,3}([.][0-9]{1,3}){2,3}$");
+
+    for (var prop in widgetConfig.name) {
+        if (widgetConfig.name.hasOwnProperty(prop)) {
+            check(widgetConfig.name[prop], localize.translate("EXCEPTION_INVALID_NAME")).notEmpty();
+        }
+    }
+
+    check(widgetConfig.author, localize.translate("EXCEPTION_INVALID_AUTHOR")).notNull();
+    check(widgetConfig.id, localize.translate("EXCEPTION_INVALID_ID")).notNull().notEmpty();
+
+    validateSplashScreensIcon(widgetConfig, "rim:splash");
+
+    validateSplashScreensIcon(widgetConfig, "icon");
+
+    if (widgetConfig.accessList) {
+        widgetConfig.accessList.forEach(function (access) {
+            if (access.uri) {
+                if (access.uri !== "WIDGET_LOCAL") {
+                    check(access.uri, localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_PROTOCOL", access.uri))
+                        .regex("^[a-zA-Z]+:\/\/");
+                    check(access.uri, localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_URN", access.uri))
+                        .notRegex("^[a-zA-Z]+:\/\/$");
+                }
+            }
+
+            if (access.features) {
+                // Assert each feature has a proper ID and is not empty
+                access.features.forEach(function (feature) {
+                    if (!feature) {
+                        throw localize.translate("EXCEPTION_INVALID_FEATURE_ID");
+                    }
+                    check(feature.id, localize.translate("EXCEPTION_INVALID_FEATURE_ID")).notNull().notEmpty();
+                });
+            }
+
+        });
+    }
+
+    if (widgetConfig["invoke-target"]) {
+
+        widgetConfig["invoke-target"].forEach(function (invokeTarget) {
+
+            check(typeof invokeTarget["@"] === "undefined",
+                    localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_ID"))
+                .equals(false);
+            check(invokeTarget["@"].id, localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_ID"))
+                .notNull()
+                .notEmpty();
+            check(invokeTarget.type, localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_TYPE"))
+                .notNull()
+                .notEmpty();
+
+            if (invokeTarget.filter) {
+
+                invokeTarget.filter.forEach(function (filter) {
+
+                    check(filter["action"] && filter["action"] instanceof Array && filter["action"].length > 0,
+                            localize.translate("EXCEPTION_INVOKE_TARGET_ACTION_INVALID"))
+                        .equals(true);
+
+                    check(filter["mime-type"] && filter["mime-type"] instanceof Array && filter["mime-type"].length > 0,
+                            localize.translate("EXCEPTION_INVOKE_TARGET_MIME_TYPE_INVALID"))
+                        .equals(true);
+
+                    if (filter.property) {
+                        filter.property.forEach(function (property) {
+                            check(property["@"] && property["@"]["var"] && typeof property["@"]["var"] === "string",
+                                    localize.translate("EXCEPTION_INVOKE_TARGET_FILTER_PROPERTY_INVALID"))
+                                .equals(true);
+                        });
+                    }
+                });
+            }
+        });
+    }
+}
+
+function processLocalizedText(tag, data, widgetConfig) {
+    var tagData = data[tag],
+        DEFAULT = 'default';
+
+    function processLanguage(tagElement) {
+        var attribs = tagElement['@'],
+            language;
+
+        if (attribs) {
+            language = attribs['xml:lang'] || DEFAULT;
+            widgetConfig[tag][language.toLowerCase()] = tagElement['#'];
+        } else {
+            widgetConfig[tag][DEFAULT] = tagElement;
+        }
+    }
+
+    if (Array.isArray(tagData)) {
+        //i.e. <element xml:lang="en">english value</element>
+        //     <element xml:lang="fr">french value</element>
+        tagData.forEach(processLanguage);
+    } else if (tagData instanceof Object) {
+        //i.e. <element xml:lang="en">english value</element>
+        processLanguage(tagData);
+    } else {
+        //i.e <element>value</element>
+        widgetConfig[tag][DEFAULT] = tagData;
+    }
+}
+
+function processNameAndDescription(data, widgetConfig) {
+    widgetConfig.name = {};
+    widgetConfig.description = {};
+
+    processLocalizedText('name', data, widgetConfig);
+    processLocalizedText('description', data, widgetConfig);
+}
+
+function processCordovaPreferences(data, widgetConfig) {
+    if (data.preference) {
+        var preference = JSON.parse(JSON.stringify(processParamObj(data.preference)).toLowerCase()),
+            hideFormControl = preference.hidekeyboardformaccessorybar;
+
+        widgetConfig.packageCordovaJs = preference.packagecordovajs === "enable";
+        widgetConfig.autoHideSplashScreen = preference.autohidesplashscreen !== "false";
+
+        // <preference name="backgroundColor" value="hex" />
+        if (preference.backgroundcolor) {
+            widgetConfig.backgroundColor = processBgColor(preference.backgroundcolor);
+        }
+
+        // <preference name="childBrowser" value="enable or disable" />
+        if (preference.childbrowser) {
+            widgetConfig.enableChildWebView = (preference.childbrowser === 'disable') === false;
+        }
+
+        // <preference name="HideKeyboardFormAccessoryBar" value="enable/true or disable/false" />
+        if (preference.hidekeyboardformaccessorybar) {
+            widgetConfig.enableFormControl = (hideFormControl !== 'enable') && (hideFormControl !== 'true');
+        }
+
+        // <preference name="popupBlocker" value="enable or disable" />
+        if (preference.popupblocker) {
+            widgetConfig.enablePopupBlocker = (preference.popupblocker === 'enable') === true;
+        }
+
+        // <preference name="orientation" value="portrait, landscape, north, auto or default" />
+        if (preference.orientation) {
+            if (preference.orientation ===  "landscape" || preference.orientation === "portrait" || preference.orientation === "north") {
+                widgetConfig.autoOrientation = false;
+                widgetConfig.orientation = preference.orientation;
+            } else if (preference.orientation !== "auto" && preference.orientation !== "default") {
+                throw localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", preference.orientation);
+            }
+        }
+
+        // <preference name="theme" value="bright, dark, inherit or default" />
+        if (preference.theme && (typeof preference.theme === "string")) {
+            if (preference.theme ===  "bright" || preference.theme === "dark" || preference.theme === "inherit" || preference.theme ===  "default") {
+                widgetConfig.theme = preference.theme;
+            }
+        }
+
+        // <preference name="webSecurity" value="enable or disable" />
+        if (preference.websecurity && (typeof preference.websecurity === "string") && (preference.websecurity === "disable")) {
+            widgetConfig.enableWebSecurity = false;
+            logger.warn(localize.translate("WARNING_WEBSECURITY_DISABLED"));
+        }
+
+        // <preference name="diskCache" value="enable or disable" />
+        if (preference.diskcache) {
+            widgetConfig.enableDiskCache = (preference.diskcache === 'enable');
+        }
+    }
+}
+
+function processBgColor(bgColor) {
+    //convert bgColor to a number
+    var bgColorNum = parseInt(bgColor, 16);
+
+    if (isNaN(bgColorNum)) {
+        //bgColor is not a number, throw error
+        throw localize.translate("EXCEPTION_BGCOLOR_INVALID", bgColor);
+    } else {
+        return bgColorNum;
+    }
+}
+
+function processResult(data, session) {
+    var widgetConfig = {};
+
+    processWidgetData(data, widgetConfig, session);
+    processIconData(data, widgetConfig, session);
+    processAuthorData(data, widgetConfig);
+    processLicenseData(data, widgetConfig);
+    processContentData(data, widgetConfig);
+    processPermissionsData(data, widgetConfig);
+    processInvokeTargetsData(data, widgetConfig);
+    processSplashScreenData(data, widgetConfig);
+    processNameAndDescription(data, widgetConfig);
+    processCordovaPreferences(data, widgetConfig);
+
+    widgetConfig.configXML = "config.xml";
+
+    //validate the widgetConfig
+    validateConfig(widgetConfig);
+
+    //special handling for version and grabbing the buildId if specified (4rth number)
+    processVersion(widgetConfig);
+
+    //if --buildId was specified, it takes precedence
+    processBuildID(widgetConfig, session);
+
+    //store any config-file element injections
+    widgetConfig.configFileInjections = _config_doc.findall("config-file");
+
+    return widgetConfig;
+}
+
+function init() {
+    //Predefined features are features that do NOT contain an API namespace
+    _predefinedFeatures = {
+        "enable-flash" : function (feature, widgetConfig) {
+            widgetConfig.enableFlash = true;
+        },
+        "blackberry.app.orientation": function (feature, widgetConfig) {
+            if (feature) {
+                var params = processParamObj(feature.param),
+                    mode = params.mode;
+
+                if (!mode) {
+                    //No mode provided, throw error
+                    throw localize.translate("EXCEPTION_EMPTY_ORIENTATION_MODE", mode);
+                } else if (mode === "landscape" || mode === "portrait" || mode === "north") {
+                    widgetConfig.autoOrientation = false;//Overwrites default value
+                    widgetConfig.orientation = mode;
+                } else if (mode !== "auto") {
+                    //Mode invalid, throw error
+                    throw localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", mode);
+                }
+
+                // Throw a warning since this feature is deprecated
+                logger.warn(localize.translate("WARNING_ORIENTATION_DEPRECATED"));
+            }
+        }
+    };
+}
+
+_self = {
+    parse: function (xmlPath, session, callback) {
+        if (!fs.existsSync(xmlPath)) {
+            throw localize.translate("EXCEPTION_CONFIG_NOT_FOUND");
+        }
+
+        var fileData = fs.readFileSync(xmlPath),
+            xml = utils.bufferToString(fileData),
+            parser = new xml2js.Parser({trim: true, normalize: true, explicitRoot: false});
+
+        //Used for config-file injections
+        _config_doc = new et.ElementTree(et.XML(xml));
+
+        init();
+
+        //parse xml file data
+        parser.parseString(xml, function (err, result) {
+            if (err) {
+                logger.error(localize.translate("EXCEPTION_PARSING_XML"));
+                fileManager.cleanSource(session);
+            } else {
+                callback(processResult(result, session));
+            }
+        });
+    }
+};
+
+module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/debugtoken-helper.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/debugtoken-helper.js b/bin/templates/project/cordova/lib/debugtoken-helper.js
new file mode 100755
index 0000000..4916ba5
--- /dev/null
+++ b/bin/templates/project/cordova/lib/debugtoken-helper.js
@@ -0,0 +1,202 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var childProcess = require("child_process"),
+    fs = require("fs"),
+    path = require("path"),
+    conf = require("./conf"),
+    localize = require("./localize"),
+    logger = require("./logger"),
+    pkgrUtils = require("./packager-utils"),
+    utils = require("./utils"),
+    getParams = require("./params"),
+    workingDir = path.normalize(__dirname + "/.."),
+    debugTokenDir = path.normalize(path.join(utils.getCordovaDir(), "blackberry10debugtoken.bar")),
+    properties,
+    targets,
+    self = {};
+
+function isDebugTokenValid(pin, data) {
+    var manifests,
+        i,
+        l,
+        expiry = null,
+        devices = [],
+        line,
+        now = new Date();
+
+    if (!data) {
+        return false;
+    }
+
+    manifests = data.toString().replace(/[\r]/g, '').split('\n');
+
+    for (i = 0, l = manifests.length; i < l; i++) {
+        if (manifests[i].indexOf("Debug-Token-Expiry-Date: ") >= 0) {
+            // Parse the expiry date
+            line = manifests[i].substring("Debug-Token-Expiry-Date: ".length);
+            expiry = new Date(line.substring(0, line.indexOf("T")) + " " + line.substring(line.indexOf("T") + 1, line.length - 1) + " UTC");
+        } else if (manifests[i].indexOf("Debug-Token-Device-Id: ") >= 0) {
+            line = manifests[i].substring("Debug-Token-Device-Id: ".length);
+            devices = line.split(",");
+        }
+    }
+
+    if (expiry && expiry > now) {
+        for (i = 0, l = devices.length; i < l; i++) {
+            if (parseInt(devices[i]) === parseInt(pin, 16)) {
+                return true; // The debug token is valid if not expired and device pin is included
+            }
+        }
+    }
+
+    return false;
+}
+
+function generateCreateTokenOptions(pins, password) {
+    var options = [],
+        params = getParams("blackberry-debugtokenrequest") || {},
+        i;
+
+    params["-storepass"] = password;
+
+    Object.getOwnPropertyNames(params).forEach(function (p) {
+        options.push(p);
+
+        if (params[p]) {
+            options.push(params[p]);
+        }
+    });
+
+    pins.forEach(function(pin) {
+        options.push("-devicepin");
+        options.push(pin);
+    });
+
+    options.push(debugTokenDir);
+
+    return options;
+}
+
+function generateDeployTokenOptions(targetIp, targetPassword) {
+    var options = [],
+        params = getParams("blackberry-deploy") || {};
+
+    params["-installDebugToken"] = debugTokenDir;
+    params["-device"] = targetIp;
+
+    if (targetPassword) {
+        params["-password"] = targetPassword;
+    }
+
+    Object.getOwnPropertyNames(params).forEach(function (p) {
+        options.push(p);
+
+        if (params[p]) {
+            options.push(params[p]);
+        }
+    });
+
+    return options;
+}
+
+function execNativeScript(script, options, callback) {
+    var fullPath = path.join(process.env.CORDOVA_BBTOOLS, script);
+
+    utils.exec(fullPath, options, {
+        "cwd" : workingDir,
+        "env" : process.env
+    }, callback);
+}
+
+self.createToken = function (projectProperties, target, keystorepass, callback) {
+    var pins = [],
+        key;
+
+    // Store the global variable "properties"
+    properties = projectProperties;
+
+    // Gather PINs information from properties
+    if (target === "all") {
+        for (key in properties.targets) {
+            if (properties.targets.hasOwnProperty(key) && properties.targets[key].pin) {
+                pins.push(properties.targets[key].pin);
+            }
+        }
+    } else {
+        if (!target) {
+            target = properties.defaultTarget;
+        }
+
+        if (properties.targets.hasOwnProperty(target) && properties.targets[target].pin) {
+            pins.push(properties.targets[target].pin);
+        }
+    }
+
+    if (pins.length === 0) {
+        logger.warn(localize.translate("WARN_NO_DEVICE_PIN_FOUND"));
+        if (callback && typeof callback === "function") {
+            callback(-1);
+        }
+    } else if (!keystorepass) {
+        logger.warn(localize.translate("WARN_NO_SIGNING_PASSWORD_PROVIDED", pkgrUtils.homedir()));
+        if (callback && typeof callback === "function") {
+            callback(-1);
+        }
+    } else {
+        logger.info(localize.translate("PROGRESS_GENERATING_DEBUG_TOKEN"));
+        // Call "blackberry-debugtokenrequest" to generate debug token
+        execNativeScript("blackberry-debugtokenrequest",
+            generateCreateTokenOptions(pins, keystorepass),
+            callback
+        );
+    }
+};
+
+self.deployToken = function (target, targetIp, targetPassword, callback) {
+    logger.info(localize.translate("PROGRESS_DEPLOYING_DEBUG_TOKEN", target));
+    execNativeScript("blackberry-deploy",
+        generateDeployTokenOptions(targetIp, targetPassword),
+        callback
+    );
+};
+
+self.checkDebugToken = function (pin, callback) {
+    var script = path.normalize(path.join(process.env.CORDOVA_BBTOOLS, "blackberry-nativepackager")),
+        args = [
+            "-listManifest",
+            path.normalize(debugTokenDir)
+        ];
+
+    if (!callback || typeof callback !== "function") {
+        return;
+    }
+
+    if (!fs.existsSync(debugTokenDir)) {
+        callback(false);
+        return;
+    }
+
+    utils.exec(script, args, {
+        "cwd": workingDir,
+        "env": process.env,
+        _customOptions: { silent: true}
+    }, function (error, stdout, stderr) {
+        callback(isDebugTokenValid(pin, stdout));
+    });
+};
+
+module.exports = self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/file-manager.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/file-manager.js b/bin/templates/project/cordova/lib/file-manager.js
new file mode 100755
index 0000000..977ca2b
--- /dev/null
+++ b/bin/templates/project/cordova/lib/file-manager.js
@@ -0,0 +1,210 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    util = require("util"),
+    packagerUtils = require("./packager-utils"),
+    fs = require("fs"),
+    conf = require("./conf"),
+    BBWPignore = require('./bbwpignore'),
+    wrench = require("wrench"),
+    zip = require("zip"),
+    localize = require("./localize"),
+    logger = require("./logger"),
+    CLIENT_JS = "client.js",
+    SERVER_JS = "index.js",
+    VALID_EXTENSIONS = [".js", ".json"],
+    CORDOVA_JS_REGEX = /(cordova-.+js)|cordova\.js/,
+    MODULES_TO_KEEP = ["lib/utils.js", "lib/exception.js"];
+
+function unzip(from, to) {
+    var data, entries, p, parent;
+
+    if (fs.existsSync(from)) {
+        data = fs.readFileSync(from);
+        entries = zip.Reader(data).toObject();
+
+        if (!fs.existsSync(to)) {
+            wrench.mkdirSyncRecursive(to, "0755");
+        }
+
+        for (p in entries) {
+            if (entries.hasOwnProperty(p)) {
+                if (p.indexOf("__MACOSX") >= 0) {
+                    continue;
+                }
+
+                if (p.split("/").length > 1) {
+                    parent = p.split("/").slice(0, -1).join("/");
+                    wrench.mkdirSyncRecursive(to + "/" + parent, "0755");
+                }
+
+                fs.writeFileSync(to + "/" + p, entries[p]);
+            }
+        }
+    } else {
+        throw localize.translate("EXCEPTION_WIDGET_ARCHIVE_NOT_FOUND", from);
+    }
+}
+
+function copyDirContents(from, to) {
+    var files = wrench.readdirSyncRecursive(from),
+        bbwpignoreFile = path.join(from, conf.BBWP_IGNORE_FILENAME),
+        bbwpignore,
+        ignoreFiles = conf.BBWP_IGNORE_FILENAME;
+
+    if (fs.existsSync(bbwpignoreFile)) {
+        bbwpignore = new BBWPignore(bbwpignoreFile, files);
+        bbwpignore.matchedFiles.push(conf.BBWP_IGNORE_FILENAME); //add the .bbwpignore file to the ignore list
+        ignoreFiles = bbwpignore.matchedFiles.join("|");
+    }
+
+
+    wrench.copyDirSyncRecursive(from, to, {preserve: true, whitelist: false, filter: new RegExp(ignoreFiles, "g")});
+}
+
+function prepare(session) {
+    var conf = session.conf,
+        dest = session.sourcePaths;
+
+    if (fs.existsSync(session.sourceDir)) {
+        wrench.rmdirSyncRecursive(session.sourceDir);
+    }
+
+    // unzip archive
+    if (fs.existsSync(session.archivePath)) {
+        if (session.archivePath.toLowerCase().match("[.]zip$")) {
+            unzip(session.archivePath, session.sourceDir);
+        } else {
+            copyDirContents(session.archivePath, session.sourceDir);
+        }
+    } else {
+        throw localize.translate("EXCEPTION_INVALID_ARCHIVE_PATH", session.archivePath);
+    }
+}
+
+
+function getModulesArray(dest, files, baseDir) {
+    var modulesList = [],
+        EXCLUDE_FILES = ["client.js", "manifest.json"];
+
+    function isExcluded(file) {
+        return EXCLUDE_FILES.indexOf(path.basename(file)) !== -1 || !file.match(/\.(js|json)$/);
+    }
+
+    files.forEach(function (file) {
+        file = path.resolve(baseDir, file);
+
+        if (!fs.statSync(file).isDirectory()) {
+            if (!isExcluded(file)) {
+                modulesList.push({name: path.relative(path.normalize(dest.CHROME), file).replace(/\\/g, "/"), file: file});
+            }
+        }
+    });
+
+    return modulesList;
+}
+
+function generateFrameworkModulesJS(session) {
+    var dest = session.sourcePaths,
+        modulesList = [],
+        modulesStr = "(function () { ",
+        frameworkModulesStr = "window.frameworkModules = [",
+        libFiles = wrench.readdirSyncRecursive(dest.LIB),
+        extFiles,
+        extModules;
+
+    modulesList = modulesList.concat(getModulesArray(dest, libFiles, dest.LIB));
+
+    if (fs.existsSync(dest.EXT)) {
+        extFiles = wrench.readdirSyncRecursive(dest.EXT);
+        extModules = getModulesArray(dest, extFiles, dest.EXT);
+        modulesList = modulesList.concat(extModules);
+    }
+
+    modulesList.forEach(function (module, index) {
+        modulesStr += "define('" + module.name + "', function (require, exports, module) {\n" +
+                      fs.readFileSync(module.file, "utf-8") + "\n" +
+                      "});\n";
+        frameworkModulesStr += "'" + module.name + "'" +  (index !== modulesList.length - 1 ? ", " : "");
+        // Issue with 10.1 webplatform - requires certain files in chrome/lib
+        if (MODULES_TO_KEEP.indexOf(module.name) < 0) {
+            fs.unlinkSync(path.normalize(dest.CHROME + "/" + module.name));
+        }
+    });
+
+    modulesStr += "}());";
+    frameworkModulesStr += "];\n";
+    fs.writeFileSync(path.normalize(dest.CHROME + "/frameworkModules.js"), frameworkModulesStr + modulesStr);
+}
+
+function copyNative(session, target) {
+    var src = path.normalize(session.conf.NATIVE + "/" + target),
+        dest = path.normalize(session.sourceDir);
+
+    copyDirContents(src, dest);
+}
+
+function copyWebworks(session) {
+    var srcPath = path.normalize(session.conf.PROJECT_ROOT + "/lib"),
+        dest = path.normalize(session.sourceDir),
+        srcFiles;
+
+    srcFiles = packagerUtils.listFiles(srcPath, function (file) {
+        return CORDOVA_JS_REGEX.test(file);
+    });
+
+    if (srcFiles.length === 1) {
+        packagerUtils.copyFile(srcFiles[0], dest);
+
+        //Rename file to webworks.js
+        fs.renameSync(path.join(dest, path.basename(srcFiles[0])), path.join(dest, "cordova.js"));
+    } else {
+        throw localize.translate("EXCEPTION_CORDOVA_JS_IN_LIB_DIR", srcFiles.length);
+    }
+}
+
+function hasValidExtension(file) {
+    return VALID_EXTENSIONS.some(function (element, index, array) {
+        return path.extname(file) === element;
+    });
+}
+
+function generateUserConfig(session, config) {
+    packagerUtils.writeFile(path.join(session.sourcePaths.LIB, "config"), "user.js", "module.exports = " + JSON.stringify(config, null, "    ") + ";");
+}
+
+module.exports = {
+    unzip: unzip,
+
+    copyNative: copyNative,
+
+    copyWebworks : copyWebworks,
+
+    prepareOutputFiles: prepare,
+
+    generateFrameworkModulesJS: generateFrameworkModulesJS,
+
+    generateUserConfig: generateUserConfig,
+
+    cleanSource: function (session) {
+        if (!session.keepSource) {
+            wrench.rmdirSyncRecursive(session.sourceDir);
+        }
+    },
+
+    copyDirContents: copyDirContents
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/i18n-manager.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/i18n-manager.js b/bin/templates/project/cordova/lib/i18n-manager.js
new file mode 100644
index 0000000..d530f09
--- /dev/null
+++ b/bin/templates/project/cordova/lib/i18n-manager.js
@@ -0,0 +1,146 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*jshint sub:true*/
+var path = require("path"),
+    fs = require("fs"),
+    wrench = require("wrench"),
+    pkgrUtils = require("./packager-utils"),
+    LOCALES_DIR = "locales";
+
+// Given a list of locale files (as follows), based on un-localized splash/icon definition, generate
+// localized splash/icon metadata.
+//
+// zh-hans-cn/a.gif
+// zh-hans-cn/f.gif
+// zh-hans-cn/images/splash-1024x600.png
+// zh-hans-cn/images/splash-600x1024.png
+// zh-hans/a.gif
+// zh-hans/b.gif
+// zh/a.gif
+// zh/b.gif
+// zh/c.gif
+function generateLocalizedMetadataForSplashScreenIcon(config, configKey, xmlObject, xmlObjectKey, localeFiles) {
+    // localeMap looks like this:
+    // {
+    //     "zh-hans-cn": ["a.gif", "f.gif", "images/splash-1024x600.png", "images/splash-600x1024.png"],
+    //     "zh-hans": ["a.gif", "b.gif"],
+    //     "zh": ["a.gif", "b.gif", "c.gif"]
+    // }
+    var localeMap = {};
+
+    if (localeFiles) {
+        localeFiles.forEach(function (path) {
+            var split = path.replace(/\.\./g, "").split("/"),
+                locale;
+
+            split = split.filter(function (element) {
+                return element.length > 0;
+            });
+
+            if (split.length > 1) {
+                locale = split[0];
+
+                if (!localeMap[locale]) {
+                    localeMap[locale] = [];
+                }
+
+                // remove locale subfolder from path
+                split.splice(0, 1);
+                localeMap[locale].push(split.join("/"));
+            }
+        });
+    }
+
+    xmlObject[xmlObjectKey] = {};
+    xmlObject[xmlObjectKey]["image"] = [];
+
+    if (config[configKey]) {
+        config[configKey].forEach(function (imgPath) {
+            imgPath = imgPath.replace(/\\/g, "/"); // replace any backslash with forward slash
+
+            Object.getOwnPropertyNames(localeMap).forEach(function (locale) {
+                if (localeMap[locale].indexOf(imgPath) !== -1) {
+                    // localized image found for locale
+                    xmlObject[xmlObjectKey]["image"].push({
+                        text: {
+                            _attr: {
+                                "xml:lang": locale
+                            },
+                            _value: LOCALES_DIR + "/" + locale + "/" + imgPath
+                        }
+                    });
+                }
+            });
+
+            xmlObject[xmlObjectKey]["image"].push({
+                _value: imgPath
+            });
+        });
+    }
+}
+
+function generateLocalizedText(session, config, xmlObject, key) {
+    var localizedText = config[key],
+        textElements = [],
+        locale;
+
+    for (locale in localizedText) {
+        if (localizedText.hasOwnProperty(locale)) {
+            //Don't add default locale and don't add locale if it already exists
+            if (locale !== 'default' && textElements && textElements.indexOf(locale) === -1) {
+                textElements.push({
+                    _attr: {
+                        "xml:lang": locale
+                    },
+                    _value: localizedText[locale]
+                });
+            }
+        }
+    }
+
+    xmlObject[key] = {
+        _value: localizedText['default'],
+        text: textElements
+    };
+}
+
+function generateLocalizedMetadata(session, config, xmlObject, key) {
+    if (config.icon || config["rim:splash"]) {
+        var localeFiles,
+            normalizedLocaleFiles = [];
+
+        if (fs.existsSync(session.sourceDir + "/" + LOCALES_DIR)) {
+            localeFiles = wrench.readdirSyncRecursive(session.sourceDir + "/" + LOCALES_DIR);
+            if (pkgrUtils.isWindows()) {
+
+                localeFiles.forEach(function (file) {
+                    file = path.relative(path.resolve(session.sourceDir, "locales"), file).replace(/\\/g, "/");
+                    normalizedLocaleFiles.push(file);
+                });
+            } else {
+                normalizedLocaleFiles = localeFiles;
+            }
+        }
+
+        generateLocalizedMetadataForSplashScreenIcon(config, key, xmlObject, key === "rim:splash" ? "splashScreens" : key, normalizedLocaleFiles);
+    }
+}
+
+module.exports = {
+    LOCALES_DIR: LOCALES_DIR,
+    generateLocalizedMetadata: generateLocalizedMetadata,
+    generateLocalizedText: generateLocalizedText
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/install-device
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/install-device b/bin/templates/project/cordova/lib/install-device
new file mode 100644
index 0000000..45f8a07
--- /dev/null
+++ b/bin/templates/project/cordova/lib/install-device
@@ -0,0 +1,56 @@
+#!/usr/bin/env node
+
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    utils = require("./utils"),
+    options = require('commander'),
+    runUtils = require("./run-utils"),
+    logger = require("./logger");
+
+options
+    .usage('[--target=id]')
+    .option('--target <id>', 'specifies the target to run the application')
+    .option('-k, --keystorepass <password>', 'the password of signing key; needed for creating debug token')
+    .option('--query', 'query on the commandline when a password is needed')
+    .option('--devicepass <password>', 'device password')
+    .option('--no-uninstall', 'does not uninstall application from device')
+    .option('--no-launch', 'do not launch the application on device')
+    .on('--help', function() {
+        console.log('  Examples:');
+        console.log('');
+        console.log("  Deploying to a predefined target");
+        console.log('    $ run --target=Z10');
+        console.log('');
+    });
+process.argv.forEach(function (argument, index, args) {
+    if (argument.match(/^--target=/)) {
+        args.splice(index, 1, "--target", argument.substr("--target=".length));
+    }
+});
+
+options.parse(process.argv);
+
+options.device = true;
+utils.waterfall(
+    [
+        runUtils.getValidatedTarget.bind(this, options),
+        runUtils.checkBuild,
+        runUtils.uninstall.bind(this, options),
+        runUtils.deployToTarget.bind(this, options)
+    ]
+);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/install-emulator
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/install-emulator b/bin/templates/project/cordova/lib/install-emulator
new file mode 100644
index 0000000..afbc581
--- /dev/null
+++ b/bin/templates/project/cordova/lib/install-emulator
@@ -0,0 +1,56 @@
+#!/usr/bin/env node
+
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    utils = require("./utils"),
+    options = require('commander'),
+    runUtils = require("./run-utils"),
+    logger = require("./logger");
+
+options
+    .usage('[--target=id]')
+    .option('--target <id>', 'specifies the target to run the application')
+    .option('--devicepass <password>', 'device password')
+    .option('--query', 'query on the commandline when a password is needed')
+    .option('-k, --keystorepass <password>', 'the password of signing key; needed for creating debug token')
+    .option('--no-uninstall', 'does not uninstall application from device')
+    .option('--no-launch', 'do not launch the application on device')
+    .on('--help', function() {
+        console.log('  Examples:');
+        console.log('');
+        console.log("  Deploying to a predefined target");
+        console.log('    $ run --target=Z10');
+        console.log('');
+    });
+process.argv.forEach(function (argument, index, args) {
+    if (argument.match(/^--target=/)) {
+        args.splice(index, 1, "--target", argument.substr("--target=".length));
+    }
+});
+
+options.parse(process.argv);
+
+options.emulator = true;
+utils.waterfall(
+    [
+        runUtils.getValidatedTarget.bind(this, options),
+        runUtils.checkBuild,
+        runUtils.uninstall.bind(this, options),
+        runUtils.deployToTarget.bind(this, options)
+    ]
+);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-devices
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-devices b/bin/templates/project/cordova/lib/list-devices
new file mode 100755
index 0000000..e39b5e2
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-devices
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+set -e
+
+source $(dirname "$0")/../init
+"$CORDOVA_NODE/node" "$(dirname "$0")/list-devices.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-devices.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-devices.bat b/bin/templates/project/cordova/lib/list-devices.bat
new file mode 100644
index 0000000..db0602e
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-devices.bat
@@ -0,0 +1,22 @@
+:: Licensed to the Apache Software Foundation (ASF) under one
+:: or more contributor license agreements.  See the NOTICE file
+:: distributed with this work for additional information
+:: regarding copyright ownership.  The ASF licenses this file
+:: to you under the Apache License, Version 2.0 (the
+:: "License"); you may not use this file except in compliance
+:: with the License.  You may obtain a copy of the License at
+::
+:: http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing,
+:: software distributed under the License is distributed on an
+:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+:: KIND, either express or implied.  See the License for the
+:: specific language governing permissions and limitations
+:: under the License.
+
+@ECHO OFF
+call "%~dp0..\init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\list-devices.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-devices.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-devices.js b/bin/templates/project/cordova/lib/list-devices.js
new file mode 100644
index 0000000..b27a7fb
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-devices.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env node
+
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+require('./target-utils').listTargets('device', true);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-emulator-images
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-emulator-images b/bin/templates/project/cordova/lib/list-emulator-images
new file mode 100755
index 0000000..0783207
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-emulator-images
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+set -e
+
+source $(dirname "$0")/../init
+"$CORDOVA_NODE/node" "$(dirname "$0")/list-emulator-images.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-emulator-images.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-emulator-images.bat b/bin/templates/project/cordova/lib/list-emulator-images.bat
new file mode 100644
index 0000000..613a2a4
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-emulator-images.bat
@@ -0,0 +1,22 @@
+:: Licensed to the Apache Software Foundation (ASF) under one
+:: or more contributor license agreements.  See the NOTICE file
+:: distributed with this work for additional information
+:: regarding copyright ownership.  The ASF licenses this file
+:: to you under the Apache License, Version 2.0 (the
+:: "License"); you may not use this file except in compliance
+:: with the License.  You may obtain a copy of the License at
+::
+:: http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing,
+:: software distributed under the License is distributed on an
+:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+:: KIND, either express or implied.  See the License for the
+:: specific language governing permissions and limitations
+:: under the License.
+
+@ECHO OFF
+call "%~dp0..\init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\list-emulator-images.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-emulator-images.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-emulator-images.js b/bin/templates/project/cordova/lib/list-emulator-images.js
new file mode 100644
index 0000000..9bdd906
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-emulator-images.js
@@ -0,0 +1,19 @@
+#!/usr/bin/env node
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+require('./target-utils').listTargets('emulator', false);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-started-emulators
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-started-emulators b/bin/templates/project/cordova/lib/list-started-emulators
new file mode 100755
index 0000000..cd6a266
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-started-emulators
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+set -e
+
+source $(dirname "$0")/../init
+"$CORDOVA_NODE/node" "$(dirname "$0")/list-started-emulators.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-started-emulators.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-started-emulators.bat b/bin/templates/project/cordova/lib/list-started-emulators.bat
new file mode 100644
index 0000000..0931f39
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-started-emulators.bat
@@ -0,0 +1,22 @@
+:: Licensed to the Apache Software Foundation (ASF) under one
+:: or more contributor license agreements.  See the NOTICE file
+:: distributed with this work for additional information
+:: regarding copyright ownership.  The ASF licenses this file
+:: to you under the Apache License, Version 2.0 (the
+:: "License"); you may not use this file except in compliance
+:: with the License.  You may obtain a copy of the License at
+::
+:: http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing,
+:: software distributed under the License is distributed on an
+:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+:: KIND, either express or implied.  See the License for the
+:: specific language governing permissions and limitations
+:: under the License.
+
+@ECHO OFF
+call "%~dp0..\init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\list-started-emulators.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/list-started-emulators.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/list-started-emulators.js b/bin/templates/project/cordova/lib/list-started-emulators.js
new file mode 100644
index 0000000..0b1f8de
--- /dev/null
+++ b/bin/templates/project/cordova/lib/list-started-emulators.js
@@ -0,0 +1,18 @@
+#!/usr/bin/env node
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+require('./target-utils').listTargets('emulator', true);


[22/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/test/test_jworkflow.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/test/test_jworkflow.js b/blackberry10/node_modules/jWorkflow/test/test_jworkflow.js
deleted file mode 100644
index afb13a2..0000000
--- a/blackberry10/node_modules/jWorkflow/test/test_jworkflow.js
+++ /dev/null
@@ -1,521 +0,0 @@
-$(document).ready(function () {
-    module("jWorkflow ordering and starting workflows");
-
-    test("jWorkflow: we can place an order", function () {
-        expect(1);
-        var order = jWorkflow.order(function () {});
-        ok(order, "we should have an order");
-    });
-
-    test("jWorkflow: order throws an error when not given a function", function () {
-        expect(1);
-        var errored = false;
-        try {
-            jWorkflow.order(42);
-        } 
-        catch (ex) {
-            errored = true;
-        }
-
-        ok(errored, "expected an error");
-
-    });
-
-    test("jWorkflow: we can call andThen on the return value of order", function () {
-        expect(2);
-
-        var transfunctioner = function () { },
-            order = jWorkflow.order(transfunctioner);
-        
-        ok(order.andThen, "expected to be asked: 'andThen'");
-        equals(typeof(order.andThen), "function", "expected andThen to be a function");
-    });
-
-    test("jWorkflow: andThen throws an error when not given a function", function () {
-        expect(1);
-
-        var errored = false;
-        try {
-            jWorkflow.order(function () {}).andThen(42);
-        } 
-        catch (ex) {
-            errored = true;
-        }
-
-        ok(errored, "expected an error");
-        
-    });
-
-    test("jWorkflow: we can call andThen on the return value of andThen", function () {
-        expect(2);
-
-        var garlicChicken = function () {},
-            whiteRice = function () {},
-            wontonSoup = function () {},
-            cookiesFortune = function () {},
-            noAndThen = function () {},
-            order = jWorkflow.order(garlicChicken)
-                            .andThen(whiteRice)
-                            .andThen(wontonSoup)
-                            .andThen(cookiesFortune);
-        
-        order.andThen(noAndThen).andThen(noAndThen);
-
-        ok(order.andThen, "expected to be asked: 'andThen'");
-        equals(typeof(order.andThen), "function", "expected andThen to be a function");
-
-    });
-
-    test("jWorkflow: it doesnt invoke the order function when start isnt called", function () {
-        var dude = true,
-            sweet = function () { 
-                dude = false; 
-            },
-            order = jWorkflow.order(sweet);
-
-        ok(dude, "expected sweet to have not been invoked");
-        
-    });
-
-    test("jWorkflow: it calls the order function when start is called", function () {
-        var dude = false,
-            sweet = function () { 
-                dude = true; 
-            },
-            order = jWorkflow.order(sweet);
-
-        order.start();
-
-        ok(dude, "expected sweet to have been invoked");
-    });
-
-    asyncTest("jWorkflow: it can handle multiple orders without mixing them", function () {
-        expect(1);
-        var dude = false,
-            what = false,
-            sweet = function () { 
-                dude = true; 
-            },
-            whatup = function () { 
-                what = true; 
-            },
-            order = jWorkflow.order(sweet),
-            order2 = jWorkflow.order(whatup);
-
-
-        order.start(function () {
-            start();
-            ok(what === false, "whatup shouldn't have been called");
-        });
-    });
-
-    test("jWorkflow: it calls the order in the order that it was built", function () {
-        expect(1);
-
-        var result = [], 
-            garlicChicken = function () { 
-                result.push("garlicChicken"); 
-            },
-            whiteRice = function () { 
-                result.push("whiteRice"); 
-            },
-            wontonSoup = function () { 
-                result.push("wontonSoup"); 
-            },
-            cookiesFortune = function () { 
-                result.push("cookiesFortune"); 
-            },
-            noAndThen = function () { 
-                result.push("noAndThen"); 
-            },
-            order = jWorkflow.order(garlicChicken)
-                            .andThen(whiteRice)
-                            .andThen(wontonSoup)
-                            .andThen(cookiesFortune);
-        
-        order.andThen(noAndThen).andThen(noAndThen);
-
-        order.start();
-
-        same(["garlicChicken", "whiteRice", "wontonSoup", "cookiesFortune", "noAndThen", "noAndThen"], result, "expected functions to be called in order");
-    });
-
-    test("jWorkflow: it get the return value of the previous func", function () {
-
-        var dude = function () { 
-                return 42; 
-            },
-            sweet = function (previous) { 
-                equals(previous, 42, "expected previous to be return value"); 
-            },
-            order = jWorkflow.order(dude).andThen(sweet);
-
-        order.start();
-
-    });
-
-    test("jWorkflow: we get a baton play with", function () {
-        var order = jWorkflow.order(function (previous, baton) {
-            ok(baton, "expected a baton");
-            ok(baton.take, "expected to be able to take the baton");
-            ok(baton.pass, "expected to be able to pass the baton");
-        });
-
-        order.start();
-
-    });
-
-    test("jWorkflow: when I take the baton, the next methods are not called if I don't pass it", function () {
-        var transfunctioner = true,
-        dude = function () {},
-        sweet = function () {},
-        noAndThen = function (previous, baton) {
-            baton.take();
-        },
-        fortuneCookie = function () { 
-            transfunctioner = false; 
-        },
-        order = jWorkflow.order(dude).andThen(sweet).andThen(noAndThen).andThen(fortuneCookie);
-
-        order.start();
-
-        ok(transfunctioner, "fortune Cookie should not have been called because we took the baton and didn't pass it");
-    });
-
-    asyncTest("jWorkflow: when I take the baton and pass it async, the next methods are called", function () {
-        expect(1);
-        var transfunctioner = false,
-        dude = function () {},
-        sweet = function () {},
-        noAndThen = function (previous, baton) {
-            baton.take();
-            window.setTimeout(function () {
-                baton.pass();
-            }, 10);
-        },
-        fortuneCookie = function () { 
-            transfunctioner = true; 
-        },
-        order = jWorkflow.order(dude).andThen(sweet).andThen(noAndThen).andThen(fortuneCookie);
-
-        order.start(function () {
-            start();
-            ok(transfunctioner, "fortune Cookie should have been called because we passed the baton");
-        });
-
-    });
-
-    asyncTest("jWorkflow: it calls the order in the order that it was built, even with Async calls", function () {
-        expect(1);
-
-        var result = [], 
-            procrastinate = function (msg, baton) { 
-                baton.take();
-                window.setTimeout(function () {
-                    result.push(msg); 
-                    baton.pass();
-                }, 10);
-            },
-            garlicChicken = function (previous, baton) { 
-                procrastinate("garlicChicken", baton); 
-            },
-            whiteRice = function (previous, baton) { 
-                result.push("whiteRice");
-            },
-            wontonSoup = function (previous, baton) { 
-                procrastinate("wontonSoup", baton); 
-            },
-            cookiesFortune = function (previous, baton) { 
-                result.push("cookiesFortune"); 
-            },
-            noAndThen = function (previous, baton) { 
-                procrastinate("noAndThen", baton); 
-            },
-            order = jWorkflow.order(garlicChicken)
-                            .andThen(whiteRice)
-                            .andThen(wontonSoup)
-                            .andThen(cookiesFortune);
-        
-        order.andThen(noAndThen).andThen(noAndThen);
-
-        order.start(function () {
-            start();
-            same(result, ["garlicChicken", "whiteRice", "wontonSoup", "cookiesFortune", "noAndThen", "noAndThen"], "expected functions to be called in order");
-        });
-    });
-
-    test("jWorkflow: we can give context for the function passed to andThen", function () {
-        expect(1);
-
-        var zoltan = {
-                toMyParentsMinivan: function () {
-                    ok(this.getCultMembers, "expected to be able to get the cult members");
-                },
-
-                getCultMembers: function () {
-                    return ["Zarnoff", "Zabu", "Zellnor", "Zelbor", "Zelmina", "Jeff"];
-                }
-            },
-            order = jWorkflow.order(zoltan.toMyParentsMinivan, zoltan);
-
-        order.start();
-    });
-
-    test("jWorkflow, we can pass in a different context for each function", function () {
-        expect(2);
-        
-        var jesse = { 
-                smokeyMcPot: true,
-                test: function () {
-                    ok(this.smokeyMcPot, "I should be SmokeyMcPot");
-                }
-            },
-            chester = {
-                johnnyPotsmoker: true,
-                test: function () {
-                    ok(this.johnnyPotsmoker, "I should be Johnny Potsmoker");
-                }
-            },
-            order = jWorkflow.order(jesse.test, jesse)
-                             .andThen(chester.test, chester);
-
-         
-        order.start();
-
-
-    });
-
-    test("jWorkflow: we can pass context into start", function () {
-        expect(1);
-
-        var jesse = { 
-                smokeyMcPot: true,
-                test: function () {
-                    ok(this.smokeyMcPot, "I should be SmokeyMcPot");
-                }
-            },
-            order = jWorkflow.order();
-
-        order.start(jesse.test, jesse);
-    });
-
-    test("jWorkflow, we can pass null into order", function () {
-        expect(1);
-
-        var order = jWorkflow.order();
-
-        ok(order, "expected to have an order when not passing in an initial function");
-    });
-
-    test("jWorkflow, we can NOT pass null into andThen", function () {
-        expect(1);
-        var errored = false,
-            order = jWorkflow.order();
-
-        try {
-            order.andThen();
-        } 
-        catch (ex) {
-            errored = true;
-        }
-
-        ok(errored, "expected an exception when calling andThen with no order");
-    });
-
-    asyncTest("jWorkflow, we can pass a return value from an async function into a sync function via the baton", function () {
-        expect(1);
-       
-        var correct,
-            was,
-            order = jWorkflow.order(function (previous, baton) {
-                baton.take();
-                setTimeout(function () {
-                    baton.pass(420);
-                }, 10);
-
-                return 11;
-
-            }).andThen(function (answer) {
-                was = answer;
-                correct = answer === 420;
-            });
-
-        order.start(function () {
-            start();
-            ok(correct, "expected it to be 420 but was " + was);
-        });
-    });
-
-    asyncTest("jWorkflow, we can reuse an order", function () {
-        expect(1);
-
-        var sheep_teleported = 0,
-            teleport = function () {
-                sheep_teleported += 1;
-            },
-            order = jWorkflow.order(teleport).andThen(teleport);
-
-
-        order.start(function () {
-            order.start(function () {
-                start();
-                equals(sheep_teleported, 4, "expected to teleport 4 sheep");
-            });
-        });
-    });
-
-    asyncTest("jWorkflow, we can chill for a little bit between tasks", function () {
-        var time = [],
-            inhale = function () {
-                time.push(new Date());
-            },
-            exhale = inhale;
-
-        jWorkflow.order(inhale).chill(100).andThen(exhale).start(function () {
-            start();
-            var chilled = time[1] - time[0];
-            ok(chilled > 50, "expected to chill a little bit between tasks: " + chilled);
-        });
-    });
-
-    test("jWorkflow, it passes the final result to the callback passed to start", function () {
-        expect(1);
-        var plus1 = function (prev) {
-                return prev + 1;
-            };
-
-        jWorkflow.order(function () {
-                    return 0;
-                 })
-                 .andThen(plus1)
-                 .andThen(plus1)
-                 .start(function (result) {
-                     equals(2, result);
-                 });
-    });
-
-    test("jWorkflow, we can pass the initial value into start", function () {
-        expect(1);
-
-        jWorkflow.order().andThen(function (prev) {
-            equals(5, prev);
-        }).start({
-            initialValue: 5
-        });
-    });
-
-    asyncTest("jWorkflow, we can pass another workflow into andThen", function () {
-        expect(1);
-       
-        var plus1 = function (prev) {
-                return prev + 1;
-            },
-            plus4 = function (prev, baton) {
-                baton.take();
-                setTimeout(function () {
-                    baton.pass(prev + 4);
-                }, 10);
-            },
-            addTen = jWorkflow.order(plus4).andThen(plus1).andThen(plus4).andThen(plus1),
-            addFive = jWorkflow.order(plus4).andThen(plus1);
-
-        jWorkflow.order()
-                 .andThen(addTen)
-                 .andThen(addTen)
-                 .andThen(addFive)
-                 .start({
-                    callback: function (result) {
-                        start();
-                        equals(result, 25);
-                    },
-                    initialValue: 0
-                 });
-    });
-
-    asyncTest("jWorkflow, we can pass an array of functions into andThen", function () {
-        expect(1);
-
-        var x = "",
-            w = function (letter, delay) {
-                return function (prev, baton) {
-                    if (delay) {
-                        baton.take();
-                        window.setTimeout(function () {
-                            x += letter;
-                            baton.pass();
-                        }, delay);
-                    }
-                    else {
-                        x += letter;
-                    }
-                };
-            };
-
-        jWorkflow.order(w("d"))
-                 .andThen([w("U", 100), w("u", 10), w("u")])
-                 .andThen(w("de"))
-                 .start(function () {
-                     start();
-                     equals(x, "duuUde");
-                 });
-
-    });
-
-    asyncTest("jWorkflow, we can pass an array of workflows into andThen", function () {
-        expect(1);
-
-        var x = "",
-            w = function (letter, delay) {
-                return function (prev, baton) {
-                    if (delay) {
-                        baton.take();
-                        window.setTimeout(function () {
-                            x += letter;
-                            baton.pass();
-                        }, delay);
-                    }
-                    else {
-                        x += letter;
-                    }
-                };
-            };
-
-        jWorkflow.order(jWorkflow.order(w("s")))
-                 .andThen([jWorkflow.order(w("w", 1)).andThen(w("e")), jWorkflow.order(w("e", 30))])
-                 .andThen(w("et"))
-                 .start(function () {
-                     start();
-                     equals(x, "sweeet");
-                 });
-    });
-
-    asyncTest("jWorkflow, we can stop execution of a workflow with baton.drop", function () {
-        expect(2);
-
-        var inc = function (prev, baton) {
-                if (prev >= 3) {
-                    baton.drop(prev);
-                }
-                return ++prev;
-            },
-            protected = false;
-
-        jWorkflow.order(inc)
-                 .andThen(inc)
-                 .andThen(inc)
-                 .andThen(inc)
-                 .andThen(inc)
-                 .andThen(inc)
-                 .andThen(function (prev) {
-                     protected = true;
-                     return prev;
-                 }).start({
-                     initialValue: 0,
-                     callback: function (result) {
-                         start();
-                         equals(protected, false);
-                         equals(result, 3);
-                     }
-                 });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/test/vendor/jquery.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/test/vendor/jquery.js b/blackberry10/node_modules/jWorkflow/test/vendor/jquery.js
deleted file mode 100644
index a0fb883..0000000
--- a/blackberry10/node_modules/jWorkflow/test/vendor/jquery.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * jQuery JavaScript Library v1.3.2
- * http://jquery.com/
- *
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
- *
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
- */
-(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.sele
 ctor=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this
 ;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G
 ){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="st
 ring"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o
 .inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(t
 his[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Obje
 ct.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!=
 =false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="m
 argin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDoc
 ument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[
 2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J
 .parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return
  J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webk
 it/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K
 =0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache
 [H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"
 }if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
-/*
- * Sizzle CSS Selector Engine - v0.9.3
- *  Copyright 2009, The Dojo Foundation
- *  Released under the MIT, BSD, and GPL Licenses.
- *  More information: http://sizzlejs.com/
- */
-(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.cal
 l(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].
 exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((
 ?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:functi
 on(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[
 1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"
 ===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U
 =U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)=
 ==U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){va
 r V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagNa
 me(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElem
 entsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:f
 unction(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U=
 =T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeT
 ype==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.
 indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.tes
 t(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY
 =H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.is
 DefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F|
 |H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.sel
 ector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatecha
 nge",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;o
 pacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var 
 L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:func
 tion(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.ext
 end(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"
 ="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);
 return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.
 httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try
 {var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.conca
 t.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?
 this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return tr
 ue})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.pr
 ototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop==
 "height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J
 ,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.
 offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElem
 ent("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();va
 r G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxMod
 el&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/test/vendor/qunit.css
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/test/vendor/qunit.css b/blackberry10/node_modules/jWorkflow/test/vendor/qunit.css
deleted file mode 100644
index 1d3b97e..0000000
--- a/blackberry10/node_modules/jWorkflow/test/vendor/qunit.css
+++ /dev/null
@@ -1,17 +0,0 @@
-h1#qunit-header, h1.qunit-header { padding: 15px; font-size: large; background-color: #06b; color: white; font-family: 'trebuchet ms', verdana, arial; margin: 0; }
-h1#qunit-header a { color: white; }
-
-h2#qunit-banner { height: 2em; border-bottom: 1px solid white; background-color: #eee; margin: 0; font-family: 'trebuchet ms', verdana, arial; }
-h2#qunit-banner.pass { background-color: green; }
-h2#qunit-banner.fail { background-color: red; }
-
-h2#qunit-userAgent, h2.qunit-userAgent { padding: 10px; background-color: #eee; color: black; margin: 0; font-size: small; font-weight: normal; font-family: 'trebuchet ms', verdana, arial; font-size: 10pt; }
-
-div#qunit-testrunner-toolbar { background: #eee; border-top: 1px solid black; padding: 10px; font-family: 'trebuchet ms', verdana, arial; margin: 0; font-size: 10pt; }
-
-ol#qunit-tests { font-family: 'trebuchet ms', verdana, arial; font-size: 10pt; }
-ol#qunit-tests li strong { cursor:pointer; }
-ol#qunit-tests .pass { color: green; } 
-ol#qunit-tests .fail { color: red; } 
-
-p#qunit-testresult { margin-left: 1em; font-size: 10pt; font-family: 'trebuchet ms', verdana, arial; }


[50/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/.jshintignore
----------------------------------------------------------------------
diff --git a/.jshintignore b/.jshintignore
new file mode 100644
index 0000000..41c3629
--- /dev/null
+++ b/.jshintignore
@@ -0,0 +1,6 @@
+framework/lib/jnext.js
+bin/test/cordova/unit/params-bad.json
+bin/templates/project/cordova/lib/xml-helpers.js
+bin/templates/project/cordova/third_party/*
+bin/templates/project/lib/*
+bin/templates/project/www/**/*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/.jshintrc
----------------------------------------------------------------------
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..84db82c
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,73 @@
+{
+    "predef": [
+        "escape",
+        "unescape",
+        //Jasmine
+        "jasmine",
+        "it",
+        "describe",
+        "xit",
+        "xdescribe",
+        "beforeEach",
+        "afterEach",
+        "runs",
+        "waits",
+        "waitsFor",
+        "spyOn",
+        "expect",
+        "global",
+        //Webworks
+        "qnx",
+        "chrome",
+        "blackberry",
+        "internal",
+        "JNEXT",
+        "frameworkModules",
+        //Node
+        "__dirname",
+        "GLOBAL",
+        "process",
+        "exports",
+        "module",
+        "NamedNodeMap",
+        "require",
+        "Node",
+        "JSZip",
+        //UI Components
+        "x$",
+        "iris",
+        //Browser
+        "DOMElement",
+        "atob",
+        //automated tests
+        "showOverlay",
+        "hideOverlay"
+    ],
+
+    "node" : false,
+    "browser" : true,
+
+    "boss" : false,
+    "curly": false,
+    "bitwise" : false,
+    "white": true,
+    "indent": 4,
+    "evil": false,
+    "devel": true,
+    "debug": false,
+    "eqeqeq": true,
+    "forin": true,
+    "immed": true,
+    "laxbreak": false,
+    "newcap": true,
+    "noarg": true,
+    "noempty": false,
+    "nonew": false,
+    "nomen": false,
+    "onevar": true,
+    "plusplus": false,
+    "regexp": false,
+    "undef": true,
+    "sub": true,
+    "strict": false
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/.npmignore
----------------------------------------------------------------------
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000..db4145c
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,2 @@
+.gitignore
+.gitkeep

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..f7dbcab
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,37 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+-->
+
+# Contributing to Apache Cordova
+
+Anyone can contribute to Cordova. And we need your contributions.
+
+There are multiple ways to contribute: report bugs, improve the docs, and
+contribute code.
+
+For instructions on this, start with the 
+[contribution overview](http://cordova.apache.org/#contribute).
+
+The details are explained there, but the important items are:
+ - Sign and submit an Apache ICLA (Contributor License Agreement).
+ - Have a Jira issue open that corresponds to your contribution.
+ - Run the tests so your patch doesn't break existing functionality.
+
+We look forward to your contributions!

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/Gruntfile.js
----------------------------------------------------------------------
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 0000000..1847910
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,41 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+module.exports = function (grunt) {
+    grunt.initConfig({
+        jshint: {
+            all: [
+                'Gruntfile.js',
+                'bin/**/*.js',
+                'framework/**/*.js'
+            ]
+        },
+        jasmine_node: {
+            options: {
+                matchall: true
+            },
+            all: [
+                'bin/test',
+                'framework/test'
+            ]
+        }
+
+    });
+
+    grunt.loadNpmTasks('grunt-contrib-jshint');
+    grunt.loadNpmTasks('grunt-jasmine-node');
+
+    grunt.registerTask('lint', ['jshint']);
+    grunt.registerTask('test', ['jasmine_node']);
+    grunt.registerTask('default', ['lint', 'test']);
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..cbfc221
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,268 @@
+
+                               Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+For the template/project/lib/ant-contrib/ant-contrib-1.0b3.jar component:
+
+   The Apache Software License, Version 1.1
+
+   Copyright (c) 2001-2003 Ant-Contrib project.  All rights reserved.
+
+   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.
+
+   3. The end-user documentation included with the redistribution, if
+      any, must include the following acknowledgment:
+         "This product includes software developed by the
+          Ant-Contrib project (http://sourceforge.net/projects/ant-contrib)."
+      Alternately, this acknowledgment may appear in the software itself,
+      if and wherever such third-party acknowledgments normally appear.
+
+   4. The name Ant-Contrib must not be used to endorse or promote products
+      derived from this software without prior written permission. For
+      written permission, please contact
+      ant-contrib-developers@lists.sourceforge.net.
+
+   5. Products derived from this software may not be called "Ant-Contrib"
+      nor may "Ant-Contrib" appear in their names without prior written
+      permission of the Ant-Contrib project.
+
+   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 ANT-CONTRIB PROJECT OR ITS
+   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.
+   ====================================================================
+
+For the template/project/www/json2.js component:
+
+    http://www.JSON.org/json2.js
+    2010-03-20
+
+    Public Domain.
+
+    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+    See http://www.JSON.org/js.html
+
+
+    This code should be minified before deployment.
+    See http://javascript.crockford.com/jsmin.html
+
+    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+    NOT CONTROL.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..23360ce
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,8 @@
+Apache Cordova
+Copyright 2012 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org)
+
+This product includes software developed by
+Ant-Contrib project (http://sourceforge.net/projects/ant-contrib).

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 4e02a19..14bc923 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,169 @@
-# Apache Cordova for BlackBerry
-===
+Apache Cordova for BlackBerry 10
+================================
 
-This repo contains **Cordova** *platforms*:
+**Apache Cordova** is an application development platform that allows you to use common web technologies, primarily **HTML5**, **JavaScript**, and **CSS**, to create applications for mobile devices. **Cordova** uses a standard set of APIs to access common device features. Additional plugins allow you to access **BlackBerry 10** specific APIs, so that you can extend your application to tightly integrate with the **BlackBerry 10 OS**.
 
-[blackberry10](blackberry10/) - **BlackBerry 10**
+Requirements
+------------
 
-`git checkout 2.9.0` for:
-[playbook](playbook/) - **BlackBerry Tablet OS**
+Cordova for BlackBerry 10 has the following software requirements:
 
-`git checkout 2.8.0` for:
-[blackberry](blackberry/) - **BBOS** 5 to 7
+-   **Windows XP** (32-bit), **Windows 7** (32-bit and 64-bit), or **Mac OS X** 10.6.4+
+-   **Node.js** (> 0.9.9) [Download node.js now](http://nodejs.org/)
+-   **BlackBerry 10 Native SDK**. [Download the BlackBerry 10 Native SDK now.](http://developer.blackberry.com/native/download/)
 
-Please see README files in the sub folders for more information.
+    After installing the Native SDK, its tools must be added to your system path. Either manually add the bin directory to your path or run the following scripts:
+    -    *Linux/OS X* `source [BBNDK directory]/bbndk-env.sh`
+    -    *Windows* `[BBNDK directory]\bbndk-env.bat`
+    
+Conventions
+-----------
+The instructions in this document will generally use `/` as the path separator. On *Windows*, you should enter `\` where you see `/` in these instructions.
+
+Setting up your signing keys
+----------------------------
+
+Before starting development, you'll need to register for your code signing key and debug token. The signing key allows you to sign your completed app so that you can distribute it through **BlackBerry World**. The debug token allows you to test an unsigned app on a BlackBerry 10 device. You do not need to create and install the debug token yourself; if you supply the keystore password, the build script will create and install the debug token for you.
+
+-   [Register for your code signing key now.](https://www.blackberry.com/SignedKeys/codesigning.html)
+-   [Set your computer up for code signing. ](http://developer.blackberry.com/html5/documentation/set_up_for_signing.html)
+-   [Learn more about debug tokens.](http://developer.blackberry.com/html5/documentation/running_your_bb10_app_2008471_11.html)
+
+Creating your project
+-------------------------
+
+To create a new project, you use the `create` command to set up the folder structure for your app.
+
+1.  On the command line, navigate to the folder where you extracted Cordova.
+2.  Run the `create` command using the following syntax:
+
+        bin/create <path-to-project> [<project-package> [<project-name> [<path-to-www-template>]]]
+
+This command creates the folder structure for your project at the specified location. All of your project resource files should be stored in the `<path-to-project>/www` folder, or in a subfolder within it.
+
+where
+
+- `<path-to-project>` specifies the directory to create for your project
+- `<project-package>` specifies a reverse domain style identifier
+- `<project-name>` specifies the app's display name
+- `<path-to-www-template>` specifies the directory to use as a template
+
+Adding and managing targets
+---------------------------
+
+A target refers to a **BlackBerry 10** *device* or *simulator* that you will use to test your app. Targets are added directly to your project; you can add multiple targets to your project, each with a unique name. Then, when you want to deploy your app to a particular target, you can simply refer to that target by name when you run your script.
+
+###Add a target
+
+To add a target, on the command line, type the following command:
+
+        <path-to-project>/cordova/target add <name> <ip-address> [--type simulator] [--password <password>] [--pin <device-pin>]
+
+where
+
+-   `<name>`  specifies a unique name for the target.
+-   `<ip-address>`  specifies the ip address of the **BlackBerry 10** *device* or *simulator*.
+-   `--type simulator` If not provided, *device* is assumed.
+-   `--password <password>`  specifies the password for the *device*/*simulator*. This is only necessary if the *device*/*simulator* is password protected.
+-   `--pin <device-pin>`  specifies the `PIN` of the **BlackBerry 10** *device*, which identifies that device as a valid host for the debug token. This argument is required only if you are creating a *debug token*.
+
+###Remove a target
+
+To remove a target, on the command line, type the following command:
+
+        <path-to-project>/cordova/target remove <name>
+
+Building your app
+-----------------
+
+To build your app, run the `build` script. You can build the app in either *release mode* or in *debug mode*.
+
+-   When you build the app in *release mode*, you are preparing it for distribution through **BlackBerry World**. The script packages your app resources and plugins together in a `.bar file`, then *signs* the app.
+-   When you build the app in *debug mode*, you are preparing it to be tested. The script packages your app resources and plugins together in a `.bar file`, but does not sign it. The script can also deploy the app onto a previously defined target. If you have not already created and installed a *debug token*, you can supply the keystore password, and the build script will create and install the *debug token* for you as well.
+
+    *Debug mode* also enables **Web Inspector** for the app, which allows you to remotely inspect the source code. A prompt displays the URL that you can use to connect to and inspect your app. For more information on using **Web Inspector**, see [Debugging using Web Inspector](http://developer.blackberry.com/html5/documentation/web_inspector_overview_1553586_11.html).
+
+###Build your app in release mode
+
+To build your app in release mode, on the command line, type the following command:
+
+        <path-to-project>/cordova/build release [<target>] [--keystorepass <password>] [--buildId <number>] [--params <params-JSON-file>]
+
+where
+
+-   `<target>`  specifies the name of a previously added target. If `<target>`  is not specified, the default target is used, if one has been created. This argument is only required if you want the script to deploy your app to a BlackBerry device or emulator and you have not created a default target. Additionally, if `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
+-   `--keystorepass <password>`  specifies the password you defined when you configured your computer to sign applications (by default you'll be prompted for this if it isn't otherwise configured).
+-   `--buildId <number>`  specifies the build version number of your application. Typically, this number should be incremented from the previous signed version. This argument is optional.
+-   `--params <params-JSON-file>`  specifies a JSON file containing additional parameters to pass to downstream tools. This argument is optional.
+
+###Build your app in debug mode
+
+To build your app in debug mode, on the command line, type the following command:
+
+        <path-to-project>/cordova/build debug [<target>] [--params <params-JSON-file>] [--loglevel <error|warn|verbose>]
+
+where
+
+-   `<target>`  specifies the name of a previously added target. If `<target>`  is not specified, the default target is used, if one has been created. This argument is only required if you want the script to deploy your app to a BlackBerry device or emulator and you have not created a default target. Additionally, if `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
+-   `--params <params-JSON-file>`  specifies a JSON file containing additional parameters to pass to downstream tools.
+-   `--loglevel <level>`  specifies the log level. The log level may be one of `error`, `warn`, or `verbose`.
+
+Note that all of these parameters are optional. If you have previously defined a default target (and installed a debug token, if that target is a BlackBerry device), you can run the script with no arguments, and the script will package your app and deploy it to the default target. For example:
+
+        <path-to-project>/cordova/build debug
+
+Deploying an app
+-------------------------
+
+You can test your app using either a BlackBerry device or an emulator. Before deploying your app, you must first create a target for the device or emulator you want to deploy your app to.
+
+The run script will first build  your app. If you intend to deploy an app to a physical device for testing, you must first install a debug token on that device. If you specify the `--keystorepass <password>` argument when running the run script, the script will create and install the debug token for you. You do not need a debug token to test your app on an emulator, even if that app is unsigned.
+
+To deploy your app to a device or emulator, on a command line type the following command:
+
+        <path-to-project>/cordova/run <target> [--no-build]
+
+where
+-   `<target>`  specifies the name of a previously added target. If `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
+
+-   `-no--build` will use the most recently built version of the application rather than re-building. This is useful to test an application in release mode.
+
+Adding and managing plugins
+---------------------------
+
+To add additional functionality that is outside of the core features of Cordova, you'll need to add plugins. A plugin represents a set of APIs that provide access to additional features of the platform.
+
+In order to use a plugin, you must first add it into your project. Once added into your project, the plugin will be bundled with your project during the build process, to ensure that your app has access to all the APIs it needs.
+
+To add and manage plugins you can use the plugman tool. It is available via npm (ie npm install -g plugman)
+
+###Add a plugin
+
+To add a plugin, on the command line, type the following command:
+
+        plugman install --platform blackberry10 --project . --plugin <id|path|url> [--variable NAME=name]
+
+###Remove a plugin
+
+To remove a plugin, on the command line, type the following command:
+
+        plugman uninstall --platform blackberry10 --project . --plugin <id>
+
+###View a list of installed plugins
+
+To view a list of installed plugins, on the command line, type the following command:
+
+        plugman ls
+
+Historical notes
+================
+
+If you are looking for **BlackBerry Tablet OS** or **BBOS** *classic*, you need to check them out via a branch:
+
+**BlackBerry Tablet OS**:
+
+        git checkout 2.9.0
+
+**BBOS** 5 to 7:
+
+        git checkout 2.8.0

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
new file mode 100644
index 0000000..4dc153b
--- /dev/null
+++ b/RELEASENOTES.md
@@ -0,0 +1,59 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+-->
+## Release Notes for Cordova BlackBerry ##
+
+### 3.1.0 ###
+
+[CB-4268] Rework util functions to support getting list of connected devices / emulators
+[CB-4268] Add support for --device and --emulator to run script
+[CB-4292] Update plugman to 0.9.10
+[CB-4342] Detect USB connected device
+[CB-4065] Remove lib files after frameworkModules.js is generated
+[CB-4734] Fixed issue where plugins are not added to frameworkModules
+[CB-4423] Warn when special characters are used in create script
+[CB-4344] Auto-detect started simulator
+[CB-4272] Improve error messages related to debug tokens and signing
+[CB-4292] Remove remaining plugins
+[CB-4481] Removing permissions from template since not all apps should need them
+[CB-4259] Removing plugman and cordova/plugin script
+[CB-4634] Updating the default app to match cordova-app-hello-world
+[CB-4544] Adds a --query flag to query the user for their password when we need it      - Rewrite the run script for maintenance
+[BlackBerry10] Fixing a bug with debugtoken generation without prompt
+Updating scripts to make init calls surrounded in quotes
+[BlackBerry10] Updated init to work on Windows 7 with long paths         with spaces
+[CB-4730] [BlackBerry10] Updating init calls to work on Win 7 64         with long paths.
+[CB-4785] Fixing --no-build flag for run command
+[CB-4732] Re-writing build script to use async
+Syncing hello-world-app for 3.1 release
+[CB-4076] Added support for the origin attribute in config.xml
+[CB-4076] Modified config-parser to default to the uri attribute
+[CB-4563] Migrated blackberry.app parameters to preferences
+[CB-4812] Support for "default" value in the orientation preference
+[CB-3798] Provide support for optional localized node/npm/bb-tools
+Plugman version bump to 0.10.0
+[CB3439] Introduces --web-inspector flag to enable webinspector for signed builds
+[CB-3798] Fixed CORDOVA_BBTOOLS env variable with spaces in path
+[CB-3798] Refactored all exec calls to use newly created utility exec function to avoid path with spaces errors
+corrected playbook create tool usage
+[CB-4346] changed utils genbarname function to return string as per ticket description, updated README.md section on create command
+CB-4875 updated readme with info on accessing last supported versions of BBOS and Playbook
+CB-4876 removal of playbook implementation
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/VERSION
----------------------------------------------------------------------
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..86bab9c
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+3.6.0-dev

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/check_reqs
----------------------------------------------------------------------
diff --git a/bin/check_reqs b/bin/check_reqs
new file mode 100755
index 0000000..6926c39
--- /dev/null
+++ b/bin/check_reqs
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+BIN_DIR=$(dirname "$0")
+
+#init will execute check reqs logic
+source "$BIN_DIR/init"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/check_reqs.bat
----------------------------------------------------------------------
diff --git a/bin/check_reqs.bat b/bin/check_reqs.bat
new file mode 100644
index 0000000..0de7c75
--- /dev/null
+++ b/bin/check_reqs.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B %ERRORLEVEL%
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/create
----------------------------------------------------------------------
diff --git a/bin/create b/bin/create
new file mode 100755
index 0000000..01dfa6e
--- /dev/null
+++ b/bin/create
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+#
+# create a cordova/blackberry10 project
+#
+# USAGE
+#   ./create path [package [id [name [template]]]]
+#
+
+BIN_DIR=$(dirname "$0")
+
+source "$BIN_DIR/init"
+
+CURRENT_DIR=$(pwd)
+
+"$CORDOVA_NODE/node" "$BIN_DIR"/lib/create.js "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/create.bat
----------------------------------------------------------------------
diff --git a/bin/create.bat b/bin/create.bat
new file mode 100644
index 0000000..fc7d08e
--- /dev/null
+++ b/bin/create.bat
@@ -0,0 +1,26 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+set "BIN_DIR=%~dp0"
+
+call "%BIN_DIR%init"
+if ERRORLEVEL 1 exit /B %ERRORLEVEL% 
+
+"%CORDOVA_NODE%\node" "%BIN_DIR%lib\create.js" %*
+if ERRORLEVEL 1 exit /B %ERRORLEVEL%

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/init
----------------------------------------------------------------------
diff --git a/bin/init b/bin/init
new file mode 100755
index 0000000..90f1a0c
--- /dev/null
+++ b/bin/init
@@ -0,0 +1,87 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CURRENT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+CORDOVA_HOME_DIR=$HOME/.cordova/lib/blackberry10/cordova/$(cat "$CURRENT_DIR/../VERSION")
+LOCAL_NODE_BIN=$CORDOVA_HOME_DIR/bin/dependencies/node/bin
+LOCAL_BBTOOLS=$CORDOVA_HOME_DIR/bin/dependencies/bb-tools/bin
+
+#Skip all logic if init has already been run (env variable have been set already...)
+if [ -z "$CORDOVA_NODE" ] || [ -z "$CORDOVA_BBTOOLS" ]; then
+
+    #set CORDOVA_NODE
+    if [ -x "$LOCAL_NODE_BIN" ]; then
+        #set CORDOVA_NODE to local node version, if exists
+        CORDOVA_NODE=$LOCAL_NODE_BIN
+    else
+        #set CORDOVA_NODE to whichever node is on path, if exists
+        NODE_PATH=$(command -v node)
+        if [ ! -z "$NODE_PATH" ]; then
+            CORDOVA_NODE=$(dirname "$NODE_PATH")
+        fi
+    fi
+    export CORDOVA_NODE=$CORDOVA_NODE
+
+    #set CORDOVA_BBTOOLS
+    if [ -x "$LOCAL_BBTOOLS" ]; then
+        #set CORDOVA_BBTOOLS to local bbtools, if exists
+        CORDOVA_BBTOOLS=$LOCAL_BBTOOLS
+    else
+        #set CORDOVA_BBTOOLS to whichever bbtools is on path, if exists
+        BBTOOLS_PATH=$(command -v blackberry-nativepackager)
+        if [ ! -z "$BBTOOLS_PATH" ]; then
+            CORDOVA_BBTOOLS=$(dirname "$BBTOOLS_PATH")
+        fi
+    fi
+    export CORDOVA_BBTOOLS=$CORDOVA_BBTOOLS
+
+fi
+
+#-------------check reqs---------------#
+NODE="$CORDOVA_NODE/node"
+JAVA=$(command -v java)
+PACKAGER="$CORDOVA_BBTOOLS/blackberry-nativepackager"
+DEPLOYER="$CORDOVA_BBTOOLS/blackberry-deploy"
+SIGNER="$CORDOVA_BBTOOLS/blackberry-signer"
+DEBUGTOKENREQUEST="$CORDOVA_BBTOOLS/blackberry-debugtokenrequest"
+
+if [ ! -x "$NODE" ]; then
+    echo node cannot be found on the path. Aborting.
+    EXIT_CODE=2
+elif [ ! -x "$JAVA" ]; then
+    echo java cannot be found on the path. Aborting.
+    EXIT_CODE=2
+elif [ ! -x "$PACKAGER" ]; then
+    echo blackberry-nativepackager cannot be found on the path. Aborting.
+    EXIT_CODE=2
+elif [ ! -x "$DEPLOYER" ]; then
+    echo blackberry-deploy cannot be found on the path. Aborting.
+    EXIT_CODE=2
+elif [ ! -x "$SIGNER" ]; then
+    echo blackberry-signer cannot be found on the path. Aborting.
+    EXIT_CODE=2
+elif [ ! -x "$DEBUGTOKENREQUEST" ]; then
+    echo blackberry-debugtokenrequest cannot be found on the path. Aborting.
+    EXIT_CODE=2
+fi
+
+if [ ! -z "$EXIT_CODE" ]; then
+    exit $EXIT_CODE
+fi
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/init.bat
----------------------------------------------------------------------
diff --git a/bin/init.bat b/bin/init.bat
new file mode 100644
index 0000000..f696081
--- /dev/null
+++ b/bin/init.bat
@@ -0,0 +1,127 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+setlocal enabledelayedexpansion
+
+set /P CORDOVA_VERSION=<"%~dp0..\VERSION"
+set "CORDOVA_HOME_DIR=!USERPROFILE!\.cordova\lib\blackberry10\cordova\!CORDOVA_VERSION!"
+set "LOCAL_NODE_BINARY=!CORDOVA_HOME_DIR!\bin\dependencies\node\bin"
+set "LOCAL_BBTOOLS_BINARY=!CORDOVA_HOME_DIR!\bin\dependencies\bb-tools\bin"
+
+set FOUNDWHERE=
+for /f "usebackq delims=" %%e in (`where where 2^>nul`) do (
+  if not defined FOUNDWHERE set "FOUNDWHERE=%%e"
+)
+if not defined FOUNDWHERE set "FOUNDWHERE=%~dp0\whereis"
+
+set FOUNDJAVAAT=
+for /f "usebackq delims=" %%e in (`"%FOUNDWHERE%" java 2^>nul`) do (
+  if not defined FOUNDJAVAAT set "FOUNDJAVAAT=%%~dpe"
+)
+:: While we could normally ask where.exe to search an arbitrary environment variable,
+:: it's too complicated to teach whereis.cmd to do that
+:: instead we're going to replace PATH with a special PATH
+:: In case you're curious, you can't nest ::'s inside ()s
+if not defined FOUNDJAVAAT (
+  setlocal enabledelayedexpansion
+  SET "PATH=%ProgramFiles(x86)%\java\jre7\bin;%ProgramW6432%\java\jre7\bin;"
+  for /f "usebackq delims=" %%e in (`"%FOUNDWHERE%" java 2^>nul`) do (
+    set "FOUNDJAVAAT=%%~dpe"
+  )
+  if defined FOUNDJAVAAT (
+    for /f "delims=" %%C in (""!FOUNDJAVAAT!"") do (
+      endlocal
+      set "FOUNDJAVAAT=%%~C"
+    )
+    if defined FOUNDJAVAAT (
+      set "PATH=!PATH!;!FOUNDJAVAAT!"
+    )
+  ) else (
+    endlocal
+  )
+)
+:: While there are two endlocal calls, they're mutually exclusive and bookend the setlocal
+
+if defined CORDOVA_NODE (
+  if exist "!CORDOVA_NODE!" (
+    if defined CORDOVA_BBTOOLS (
+      if exist "!CORDOVA_BBTOOLS!" (
+        goto end
+      )
+    )
+  )
+)
+
+if exist "!LOCAL_NODE_BINARY!" (
+  set "CORDOVA_NODE=!LOCAL_NODE_BINARY!"
+) else (
+  for /f "usebackq delims=" %%e in (`%FOUNDWHERE% node 2^>nul`) do (
+    set "CORDOVA_NODE=%%~dpe"
+  )
+)
+
+if exist "!LOCAL_BBTOOLS_BINARY!" (
+  set "CORDOVA_BBTOOLS=!LOCAL_BBTOOLS_BINARY!"
+) else (
+  for /f "usebackq delims=" %%e in (`%FOUNDWHERE% blackberry-nativepackager 2^>nul`) do (
+    set "CORDOVA_BBTOOLS=%%~dpe"
+  )
+)
+
+:end
+
+if not exist "%LOCAL_NODE_BINARY%" (
+  if not exist "%CORDOVA_NODE%\node.exe" (
+    echo node cannot be found on the path. Aborting.
+    exit /b 2
+  )
+)
+if not defined FOUNDJAVAAT (
+  echo java cannot be found on the path. Aborting.
+  exit /b 2
+)
+if not exist "!CORDOVA_BBTOOLS!\blackberry-nativepackager.bat" (
+  echo blackberry-nativepackager cannot be found on the path. Aborting.
+  exit /b 2
+)
+if not exist "!CORDOVA_BBTOOLS!\blackberry-deploy.bat" (
+  echo blackberry-deploy cannot be found on the path. Aborting.
+  exit /b 2
+)
+if not exist "!CORDOVA_BBTOOLS!\blackberry-signer.bat" (
+  echo blackberry-signer cannot be found on the path. Aborting.
+  exit /b 2
+)
+if not exist "!CORDOVA_BBTOOLS!\blackberry-debugtokenrequest.bat" (
+  echo blackberry-debugtokenrequest cannot be found on the path. Aborting.
+  exit /b 2
+)
+
+:: Export variables we want to share with the caller
+for /f "delims=" %%A in (""!CORDOVA_NODE!"") do (
+  for /f "delims=" %%B in (""!CORDOVA_BBTOOLS!"") do (
+    for /f "delims=" %%C in (""!PATH!"") do (
+      endlocal
+      set "CORDOVA_NODE=%%~A"
+      set "CORDOVA_BBTOOLS=%%~B"
+      set "PATH=%%~C"
+    )
+  )
+)
+exit /b 0

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/lib/config.js
----------------------------------------------------------------------
diff --git a/bin/lib/config.js b/bin/lib/config.js
new file mode 100644
index 0000000..c21a09f
--- /dev/null
+++ b/bin/lib/config.js
@@ -0,0 +1,50 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var fs = require('fs'),
+    path = require('path'),
+    PROPERTY_FILE_NAME = 'blackberry10.json',
+    CORDOVA_DIR = '.cordova',
+    DEFAULT_PROPERTY_FILE = {
+        targets: {
+        }
+    },
+    getCordovaDir = function () {
+        var homePath = process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'],
+            cordovaPath = path.join(homePath, CORDOVA_DIR);
+        if (!fs.existsSync(cordovaPath)) {
+            fs.mkdirSync(cordovaPath);
+        }
+        return cordovaPath;
+    };
+
+module.exports = {
+    getProperties: function () {
+        var props, 
+            propertiesPath = path.join(getCordovaDir(), PROPERTY_FILE_NAME);
+        if (!fs.existsSync(propertiesPath)) {
+            this.writeProperties(DEFAULT_PROPERTY_FILE);
+        }
+        props = require(propertiesPath);
+        if (!props.targets) {
+            props.targets = {};
+        }
+        return props;
+    },
+    writeProperties: function (data) {
+        var contents = JSON.stringify(data, null, 4) + "\n",
+            propertiesPath = path.join(getCordovaDir(), PROPERTY_FILE_NAME);
+        fs.writeFileSync(propertiesPath, contents, 'utf-8');
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
new file mode 100644
index 0000000..45bcb09
--- /dev/null
+++ b/bin/lib/create.js
@@ -0,0 +1,205 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * create a cordova/blackberry10 project
+ *
+ * USAGE
+ *  ./create path [package [id [name [template]]]]
+ */
+
+var ERROR_VALUE = 2,
+    path = require("path"),
+    exit = require('exit'),
+    shell = require('shelljs'),
+    fs = require("fs"),
+    os = require("os"),
+    wrench = require("wrench"),
+    version = getVersion(),
+    project_path = validateProjectPath(),
+    app_id = process.argv[3],
+    app_name = process.argv[4] || 'WebWorks Application',
+    TARGETS = ["device", "simulator"],
+    TEMPLATE_PROJECT_DIR = path.join(__dirname, "..", "templates", "project"),
+    ROOT_PROJECT_DIR = path.join(__dirname, "..", ".."),
+    MODULES_PROJECT_DIR = path.join(__dirname, "..", "..", "node_modules"),
+    BOOTSTRAP_PROJECT_DIR = path.join(__dirname, "..", "..", "framework", "bootstrap"),
+    FRAMEWORK_LIB_PROJECT_DIR = path.join(__dirname, "..", "..", "framework", "lib"),
+    BIN_DIR = path.join(__dirname, ".."),
+    BUILD_DIR = path.join(__dirname, "..", "build"),
+    CORDOVA_JS_SRC = path.join(__dirname, "..", "..", "javascript", "cordova.blackberry10.js"),
+    update_dir = path.join(project_path, "lib", "cordova." + version),
+    native_dir = path.join(project_path, "native"),
+    template_dir = process.argv[5] || TEMPLATE_PROJECT_DIR,
+    js_path = "javascript",
+    js_basename = "cordova.js";
+
+function getVersion() {
+    var version = fs.readFileSync(path.join(__dirname,  "..", "..", "VERSION"));
+    if (version) {
+        return version.toString().replace( /([^\x00-\xFF]|\s)*$/g, '' );
+    }
+}
+
+function validPackageName(packageName) {
+    var domainRegex = /^[a-zA-Z]([a-zA-Z0-9])*(\.[a-zA-Z]([a-zA-Z0-9])*)*$/;
+    if (typeof packageName !== "undefined") {
+        if ((packageName.length > 50) || !domainRegex.test(packageName)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+function validateProjectPath() {
+    if (!process.argv[2]) {
+        console.log("You must give a project PATH");
+        help();
+        exit(ERROR_VALUE);
+        return "";
+    } else {
+        return path.resolve(process.argv[2]);
+    }
+}
+
+function validate() {
+    if (fs.existsSync(project_path)) {
+        console.log("The project path must be an empty directory");
+        help();
+        exit(ERROR_VALUE);
+    }
+    if (!validPackageName(app_id)) {
+        console.log("[warning] App ID must be sequence of alpha-numeric (optionally separated by '.') characters, no longer than 50 characters.\n" +
+                    "special characters in '" + app_id + "' will be replaced by '_'");
+    }
+}
+
+function clean() {
+    if (fs.existsSync(BUILD_DIR)) {
+        wrench.rmdirSyncRecursive(BUILD_DIR);
+    }
+}
+
+function copyJavascript() {
+    wrench.mkdirSyncRecursive(path.join(BUILD_DIR, js_path), 0777);
+    shell.cp(CORDOVA_JS_SRC, path.join(BUILD_DIR, js_path));
+
+    //rename copied cordova.blackberry10.js file
+    fs.renameSync(path.join(BUILD_DIR, js_path, "cordova.blackberry10.js"), path.join(BUILD_DIR, js_path, js_basename));
+}
+
+function copyFilesToProject() {
+    var nodeModulesDest = path.join(project_path, "cordova", "node_modules"),
+        bbtoolsBinDest = path.join(project_path, "cordova", "dependencies", "bb-tools", "bin"),
+        bbtoolsLibDest = path.join(project_path, "cordova", "dependencies", "bb-tools", "lib"),
+        bbNativePackager = "blackberry-nativepackager",
+        bbSigner = "blackberry-signer",
+        bbDeploy = "blackberry-deploy",
+        bbDebugTokenRequest= "blackberry-debugtokenrequest";
+
+    // create project using template directory
+    wrench.mkdirSyncRecursive(project_path, 0777);
+    wrench.copyDirSyncRecursive(template_dir, project_path);
+    if (template_dir != TEMPLATE_PROJECT_DIR) {
+        wrench.copyDirSyncRecursive(path.join(TEMPLATE_PROJECT_DIR, 'cordova'), path.join(project_path, 'cordova'));
+    }
+
+    // copy repo level target tool to project
+    shell.cp(path.join(BIN_DIR, "target"), path.join(project_path, "cordova"));
+    shell.cp(path.join(BIN_DIR, "target.bat"), path.join(project_path, "cordova"));
+    shell.cp(path.join(BIN_DIR, "lib", "target.js"), path.join(project_path, "cordova", "lib"));
+    shell.cp(path.join(BIN_DIR, "lib", "config.js"), path.join(project_path, "cordova", "lib"));
+
+    // copy repo level init script to project
+    shell.cp(path.join(BIN_DIR, "whereis.cmd"), path.join(project_path, "cordova"));
+    shell.cp(path.join(BIN_DIR, "init.bat"), path.join(project_path, "cordova"));
+    shell.cp(path.join(BIN_DIR, "init"), path.join(project_path, "cordova"));
+
+    //copy VERSION file [used to identify corresponding ~/.cordova/lib directory for dependencies]
+    shell.cp(path.join(ROOT_PROJECT_DIR, "VERSION"), path.join(project_path));
+
+    // copy repo level check_reqs script to project
+    shell.cp(path.join(BIN_DIR, "check_reqs.bat"), path.join(project_path, "cordova"));
+    shell.cp(path.join(BIN_DIR, "check_reqs"), path.join(project_path, "cordova"));
+
+    // change file permission for cordova scripts because ant copy doesn't preserve file permissions
+    wrench.chmodSyncRecursive(path.join(project_path,"cordova"), 0700);
+
+    //copy cordova-*version*.js to www
+    shell.cp(path.join(BUILD_DIR, js_path, js_basename), path.join(project_path, "www"));
+
+    //copy node modules to cordova build directory
+    wrench.mkdirSyncRecursive(nodeModulesDest, 0777);
+    wrench.copyDirSyncRecursive(MODULES_PROJECT_DIR, nodeModulesDest);
+
+    //copy framework bootstrap
+    TARGETS.forEach(function (target) {
+        var chromeDir = path.join(native_dir, target, "chrome"),
+            frameworkLibDir = path.join(chromeDir, "lib"),
+            defaultConfig;
+
+        wrench.mkdirSyncRecursive(frameworkLibDir);
+        wrench.copyDirSyncRecursive(BOOTSTRAP_PROJECT_DIR, chromeDir);
+        wrench.copyDirSyncRecursive(FRAMEWORK_LIB_PROJECT_DIR, frameworkLibDir);
+
+        //apply 'native' Cordova version
+        defaultConfig = fs.readFileSync(path.join(frameworkLibDir,  "config", "default.js"));
+        defaultConfig = defaultConfig.toString().replace("CORDOVA-VERSION", version);
+        fs.writeFileSync(path.join(frameworkLibDir, "config", "default.js"), defaultConfig, "utf-8");
+
+    });
+
+    // save release
+    wrench.mkdirSyncRecursive(update_dir, 0777);
+    wrench.copyDirSyncRecursive(BUILD_DIR, update_dir);
+}
+
+function updateProject() {
+    var configXMLPath = path.resolve(path.join(project_path, "www", "config.xml")),
+        xmlString;
+
+    if (typeof app_id !== "undefined") {
+        xmlString = fs.readFileSync(configXMLPath, "utf-8");
+        fs.writeFileSync(configXMLPath, xmlString.replace("default.app.id", app_id).replace("default.app.name", app_name), "utf-8");
+    }
+}
+
+function help() {
+    console.log("\nUsage: create <project-path> [id [name [template_path]]] \n");
+    console.log("Options: \n");
+    console.log("   -h, --help      output usage information \n");
+}
+
+if ( process.argv[2] === "-h" || process.argv[2] === "--help" ) {
+    help();
+} else {
+    try {
+        validate();
+        clean();
+        copyJavascript();
+        copyFilesToProject();
+        updateProject();
+        clean();
+        exit();
+    } catch (ex) {
+        console.log("Project creation failed!");
+        console.error(os.EOL + ex);
+        exit(ERROR_VALUE);
+    }
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/lib/target.js
----------------------------------------------------------------------
diff --git a/bin/lib/target.js b/bin/lib/target.js
new file mode 100644
index 0000000..0aac883
--- /dev/null
+++ b/bin/lib/target.js
@@ -0,0 +1,154 @@
+#!/usr/bin/env node
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require('path'),
+    exit = require('exit'),
+    fs = require('fs'),
+    config = require('./config'),
+    commander = require('commander'),
+    properties = config.getProperties(),
+    ERROR_VALUE = 2,
+    NOTIMPLEMENTED_VALUE = 1,
+    command,
+    targetName,
+    ip,
+    type,
+    password,
+    pin,
+    pinRegex = new RegExp("[0-9A-Fa-f]{8}");
+
+function isValidType(type) {
+    var result = true;
+
+    if (typeof type !== 'string') {
+        console.log("target type is required");
+        console.log(commander.helpInformation());
+        exit(ERROR_VALUE);
+    }
+    else if (!(type === 'device' || type === 'emulator')) {
+        result = false;
+    }
+    return result;
+}
+
+function isValidPin(pin) {
+    var result = true;
+    if (typeof pin !== 'undefined' && !pinRegex.test(pin)) {
+        result = false;
+    }
+    return result;
+}
+
+commander
+    .usage('[command] [params]')
+    .option('-p, --password <password>', 'Specifies password for this target')
+    .option('--pin <devicepin>', 'Specifies PIN for this device')
+    .option('-t, --type <device | simulator>', 'Specifies the target type');
+
+commander
+    .on('--help', function () {
+        console.log('   Synopsis:');
+        console.log('   $ target');
+        console.log('   $ target add <name> <host> [-t | --type <device | simulator>] [-p | --password <password>] [--pin <devicepin>]');
+        console.log('   $ target remove <name>');
+        console.log(' ');
+    });
+
+commander
+    .command('add')
+    .description("Add specified target")
+    .action(function () {
+        if (commander.args.length === 1) {
+            console.log("Target details not specified");
+            console.log(commander.helpInformation());
+            exit(ERROR_VALUE);
+        }
+        targetName = commander.args[0];
+        ip = commander.args[1];
+        type = commander.type ? commander.type : "device";
+        if (type === "simulator") {
+            type = "emulator";
+        }
+        if (commander.password && typeof commander.password === 'string') {
+            password = commander.password;
+        }
+        if (commander.pin && typeof commander.pin === 'string') {
+            pin = commander.pin;
+        }
+        if (!isValidType(type)) {
+            console.log("Invalid target type: " + type);
+            console.log(commander.helpInformation());
+            exit(ERROR_VALUE);
+        }
+        if (typeof ip !== 'string') {
+            console.log("host is required");
+            console.log(commander.helpInformation());
+            exit(ERROR_VALUE);
+        }
+        if (!isValidPin(pin)) {
+            console.log("Invalid PIN: " + pin);
+            console.log(commander.helpInformation());
+            exit(ERROR_VALUE);
+        }
+        if (properties.targets.hasOwnProperty(targetName)) {
+            console.log("Overwriting target: " + targetName);
+        }
+        targetName = targetName.replace(/ /g, "-");
+        properties.targets[targetName] = {"ip": ip, "type": type, "password": password, "pin": pin};
+    });
+
+commander
+    .command('remove')
+    .description("Remove specified target")
+    .action(function () {
+        if (commander.args.length === 1) {
+            console.log('No target specified');
+            console.log(commander.helpInformation());
+            exit(ERROR_VALUE);
+        }
+        targetName = commander.args[0];
+        if (!properties.targets.hasOwnProperty(targetName)) {
+            console.log("Target: '" + targetName + "' not found");
+            console.log(commander.helpInformation());
+            exit(ERROR_VALUE);
+        }
+        delete properties.targets[targetName];
+    });
+
+commander
+    .command('*')
+    .action(function () {
+        console.log('Unrecognized command');
+        console.log(commander.helpInformation());
+        exit(NOTIMPLEMENTED_VALUE);
+    });
+
+
+try {
+    commander.parse(process.argv);
+
+    if (commander.args.length === 0) {
+        Object.keys(properties.targets).forEach(function (target) {
+                console.log(target);
+            }
+        );
+        exit();
+    }
+
+    config.writeProperties(properties);
+} catch (e) {
+    console.log(e);
+    exit();
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/lib/update.js
----------------------------------------------------------------------
diff --git a/bin/lib/update.js b/bin/lib/update.js
new file mode 100644
index 0000000..6a1b4f7
--- /dev/null
+++ b/bin/lib/update.js
@@ -0,0 +1,88 @@
+#!/usr/bin/env node
+
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+var shell = require('shelljs'),
+    exit = require('exit'),
+    path  = require('path'),
+    fs    = require('fs'),
+    ROOT    = path.join(__dirname, '..', '..');
+
+function setShellFatal(value, func) {
+    var oldVal = shell.config.fatal;
+    shell.config.fatal = value;
+    func();
+    shell.config.fatal = oldVal;
+}
+
+
+function updateNativeDir(projectpath) {
+    shell.cp('-rf', path.join(ROOT, 'bin', 'templates', 'project', 'native'), path.join(projectpath));
+}
+
+function updateCordovaJS(projectpath, version) {
+    var jspath = path.join(projectpath, 'lib', 'cordova.' + version, 'javascript');
+    shell.mkdir('-p', jspath); // remake lib dir tree with updated version
+    shell.cp('-f', path.join(ROOT, 'javascript', 'cordova.blackberry10.js'), path.join(jspath, 'cordova.js')); // copy new js
+    shell.cp('-f', path.join(ROOT, 'javascript', 'cordova.blackberry10.js'), path.join(projectpath, 'www', 'cordova.js'));
+}
+
+function updateCordovaTools(projectpath) {
+    // update cordova scripts from template
+    shell.cp('-rf', path.join(ROOT, 'bin', 'templates', 'project', 'cordova'), path.join(projectpath));
+    // update repo level scripts
+    updateTargetTool(projectpath);
+    updateInitTool(projectpath); 
+}
+
+function updateTargetTool(projectpath) {
+    shell.cp('-f', path.join(ROOT, 'bin', 'target'), path.join(projectpath, 'cordova'));
+    shell.cp('-f', path.join(ROOT, 'bin', 'target.bat'), path.join(projectpath, 'cordova'));
+    shell.cp('-f', path.join(ROOT, 'bin', 'lib', 'target.js'), path.join(projectpath, 'cordova', 'lib'));
+}
+
+function updateInitTool(projectpath) {
+    shell.cp('-f', path.join(ROOT, 'bin', 'init.bat'), path.join(projectpath, 'cordova'));
+    shell.cp('-f', path.join(ROOT, 'bin', 'init'), path.join(projectpath, 'cordova'));
+}
+
+exports.updateProject = function (projectpath) {
+    var version = fs.readFileSync(path.join(ROOT, 'VERSION'), 'utf-8').trim();
+    setShellFatal(true, function () {
+        shell.rm('-rf', path.join(projectpath, 'lib')); //remove old lib tree
+        updateCordovaJS(projectpath, version);
+        updateCordovaTools(projectpath);
+        updateNativeDir(projectpath);
+        fs.writeFileSync(path.join(projectpath, 'VERSION'), version + "\n", 'utf-8');
+        console.log('BlackBerry10 project is now at version ' + version);
+    });
+};
+
+if (require.main === module) {
+    (function () {
+        var args = process.argv;
+        if (args.length < 3 || (args[2] === '--help' || args[2] === '-h')) {
+            console.log('Usage: ' + path.relative(process.cwd(), path.join(__dirname, '..', 'update')) + ' <path_to_project>');
+            exit(1);
+        } else {
+            exports.updateProject(args[2]);
+        }
+    })();
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/target
----------------------------------------------------------------------
diff --git a/bin/target b/bin/target
new file mode 100755
index 0000000..7ae84ab
--- /dev/null
+++ b/bin/target
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+BIN_DIR=$(dirname "$0")
+source "$BIN_DIR/init"
+"$CORDOVA_NODE/node" "$BIN_DIR/lib/target" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/target.bat
----------------------------------------------------------------------
diff --git a/bin/target.bat b/bin/target.bat
new file mode 100644
index 0000000..b760775
--- /dev/null
+++ b/bin/target.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\target" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/bb10-ndk-version
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/bb10-ndk-version b/bin/templates/project/cordova/bb10-ndk-version
new file mode 100755
index 0000000..3964910
--- /dev/null
+++ b/bin/templates/project/cordova/bb10-ndk-version
@@ -0,0 +1,25 @@
+#!/bin/bash
+<<COMMENT
+    Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CORDOVA_DIR=$(dirname "$0")
+source "$CORDOVA_DIR/init"
+
+# Prints bb10 ndk version number
+"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/bb10-ndk-version" "$@"
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/bb10-ndk-version.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/bb10-ndk-version.bat b/bin/templates/project/cordova/bb10-ndk-version.bat
new file mode 100644
index 0000000..00d113c
--- /dev/null
+++ b/bin/templates/project/cordova/bb10-ndk-version.bat
@@ -0,0 +1,21 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\bb10-ndk-version" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/build
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/build b/bin/templates/project/cordova/build
new file mode 100755
index 0000000..7a39b18
--- /dev/null
+++ b/bin/templates/project/cordova/build
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CORDOVA_DIR=$(dirname "$0")
+source "$CORDOVA_DIR/init"
+
+#package app
+"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/build" "$@"
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/build.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/build.bat b/bin/templates/project/cordova/build.bat
new file mode 100644
index 0000000..e20e8c5
--- /dev/null
+++ b/bin/templates/project/cordova/build.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\build" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/clean
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/clean b/bin/templates/project/cordova/clean
new file mode 100755
index 0000000..02ecd13
--- /dev/null
+++ b/bin/templates/project/cordova/clean
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CORDOVA_DIR=$(dirname "$0")
+source "$CORDOVA_DIR/init"
+
+"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/clean"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/clean.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/clean.bat b/bin/templates/project/cordova/clean.bat
new file mode 100644
index 0000000..30129a6
--- /dev/null
+++ b/bin/templates/project/cordova/clean.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\clean" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/default-icon.png
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/default-icon.png b/bin/templates/project/cordova/default-icon.png
new file mode 100644
index 0000000..f86a27a
Binary files /dev/null and b/bin/templates/project/cordova/default-icon.png differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/defaults.xml
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/defaults.xml b/bin/templates/project/cordova/defaults.xml
new file mode 100644
index 0000000..0ca31c9
--- /dev/null
+++ b/bin/templates/project/cordova/defaults.xml
@@ -0,0 +1,29 @@
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-->
+<!--
+  Widget Configuration Reference:
+    https://developer.blackberry.com/html5/documentation/v2_1/config_doc_elements.html
+-->
+<widget xmlns="http://www.w3.org/ns/widgets"
+        xmlns:rim="http://www.blackberry.com/ns/widgets"
+        xmlns:cdv="http://cordova.apache.org/ns/1.0">
+  <content src="index.html"/>
+</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/install-device
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/install-device b/bin/templates/project/cordova/install-device
new file mode 100755
index 0000000..efc79e5
--- /dev/null
+++ b/bin/templates/project/cordova/install-device
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CORDOVA_DIR=$(dirname "$0")
+source "$CORDOVA_DIR/init"
+
+"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/install-device" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/install-device.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/install-device.bat b/bin/templates/project/cordova/install-device.bat
new file mode 100644
index 0000000..63c9fec
--- /dev/null
+++ b/bin/templates/project/cordova/install-device.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\install-device" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/install-emulator
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/install-emulator b/bin/templates/project/cordova/install-emulator
new file mode 100644
index 0000000..6187672
--- /dev/null
+++ b/bin/templates/project/cordova/install-emulator
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CORDOVA_DIR=$(dirname "$0")
+source "$CORDOVA_DIR/init"
+
+"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/install-emulator" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/install-emulator.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/install-emulator.bat b/bin/templates/project/cordova/install-emulator.bat
new file mode 100644
index 0000000..2521da6
--- /dev/null
+++ b/bin/templates/project/cordova/install-emulator.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\install-emulator" %*


[36/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/bootstrap/require.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/bootstrap/require.js b/blackberry10/framework/bootstrap/require.js
deleted file mode 100644
index 4c87069..0000000
--- a/blackberry10/framework/bootstrap/require.js
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var define,
-    require;
-
-(function () {
-    var unpreparedModules = {},
-        readyModules = {},
-        ACCEPTABLE_EXTENSIONS = [".js", ".json"],
-        DEFAULT_EXTENSION = ".js";
-
-    function hasValidExtension(moduleName) {
-        return ACCEPTABLE_EXTENSIONS.some(function (element, index, array) {
-            return moduleName.match("\\" + element + "$");
-        });
-    }
-
-
-    function normalizeName(originalName, baseName) {
-        var nameParts,
-            name = originalName.slice(0);
-        //remove ^local:// (if it exists) and .js$
-        //This will not work for local:// without a trailing js
-        name = name.replace(/(?:^local:\/\/)/, "");
-        if (name.charAt(0) === '.' && baseName) {
-            //Split the baseName and remove the final part (the module name)
-            nameParts = baseName.split('/');
-            nameParts.pop();
-            nameParts = nameParts.concat(name.split('/'));
-
-            name = nameParts.reduce(function (previous, current,  index, array) {
-                var returnValue,
-                    slashIndex;
-
-                //If previous is a dot, ignore it
-                //If previous is ever just .. we're screwed anyway
-                if (previous !== '.') {
-                    returnValue = previous;
-                }
-
-                //If we have a .. then remove a chunk of previous
-                if (current === "..") {
-                    slashIndex = previous.lastIndexOf('/');
-                    //If there's no slash we're either screwed or we remove the final token
-                    if (slashIndex !== -1) {
-                        returnValue = previous.slice(0, previous.lastIndexOf('/'));
-                    } else {
-                        returnValue = "";
-                    }
-                } else if (current !== '.') {
-                    //Otherwise simply append anything not a .
-                    //Only append a slash if we're not empty
-                    if (returnValue.length) {
-                        returnValue += "/";
-                    }
-                    returnValue += current;
-                }
-
-                return returnValue;
-            });
-
-        }
-
-        //If there is no acceptable extension tack on a .js
-        if (!hasValidExtension(name)) {
-            name = name + DEFAULT_EXTENSION;
-        }
-
-        return name;
-    }
-
-    function buildModule(name, dependencies, factory) {
-        var module = {exports: {}},
-            localRequire = function (moduleName) {
-                return require(moduleName, name);
-            },
-            args = [];
-        localRequire.toUrl = function (moduleName, baseName) {
-            return require.toUrl(moduleName, baseName || name);
-        };
-        dependencies.forEach(function (dependency) {
-            if (dependency === 'require') {
-                args.push(localRequire);
-            } else if (dependency === 'exports') {
-                args.push(module.exports);
-            } else if (dependency === 'module') {
-                args.push(module);
-            } else {
-                //This is because jshint cannot handle out of order functions
-                /*global loadModule:false */
-                args.push(loadModule(dependency));
-                /*global loadModule:true */
-            }
-        });
-
-        //No need to process dependencies, webworks only has require, exports, module
-        factory.apply(this, args);
-
-        //For full AMD we would need logic to also check the return value
-        return module.exports;
-
-    }
-
-    function getDefineString(moduleName, body) {
-        var evalString = 'define("' + moduleName + '", function (require, exports, module) {',
-            isJson = /\.json$/.test(moduleName);
-
-        evalString += isJson ? ' module.exports = ' : '';
-        evalString += body.replace(/^\s+|\s+$/g, '');
-        evalString += isJson ? ' ;' : '';
-        evalString += '});';
-
-        return evalString;
-    }
-
-    function loadModule(name, baseName) {
-        var normalizedName = normalizeName(name, baseName),
-            url,
-            xhr,
-            loadResult;
-        //Always check undefined first, this allows the user to redefine modules
-        //(Not used in WebWorks, although it is used in our unit tests)
-        if (unpreparedModules[normalizedName]) {
-            readyModules[normalizedName] = buildModule(normalizedName, unpreparedModules[normalizedName].dependencies, unpreparedModules[normalizedName].factory);
-            delete unpreparedModules[normalizedName];
-        }
-
-        //If the module does not exist, load the module from external source
-        //Webworks currently only loads APIs from across bridge
-        if (!readyModules[normalizedName]) {
-            //If the module to be loaded ends in .js then we will define it
-            //Also if baseName exists than we have a local require situation
-            if (hasValidExtension(name) || baseName) {
-                xhr = new XMLHttpRequest();
-                url = name;
-                //If the module to be loaded starts with local:// go over the bridge
-                //Else If the module to be loaded is a relative load it may not have .js extension which is needed
-                if (/^local:\/\//.test(name)) {
-                    url = "http://localhost:8472/extensions/load/" + normalizedName.replace(/(?:^ext\/)(.+)(?:\/client.js$)/, "$1");
-
-                    xhr.open("GET", url, false);
-                    xhr.send(null);
-                    try {
-                        loadResult = JSON.parse(xhr.responseText);
-
-                        loadResult.dependencies.forEach(function (dep) {
-                            /*jshint evil:true */
-                            eval(getDefineString(dep.moduleName, dep.body));
-                            /*jshint evil:false */
-                        });
-
-                        //Trimming responseText to remove EOF chars
-                        /*jshint evil:true */
-                        eval(getDefineString(normalizedName, loadResult.client));
-                        /*jshint evil:false */
-                    } catch (err1) {
-                        err1.message += ' in ' + url;
-                        throw err1;
-                    }
-                } else {
-                    if (baseName) {
-                        url = normalizedName;
-                    }
-
-                    xhr.open("GET", url, false);
-                    xhr.send(null);
-                    try {
-                        //Trimming responseText to remove EOF chars
-                        /*jshint evil:true */
-                        eval(getDefineString(normalizedName, xhr.responseText));
-                        /*jshint evil:false */
-                    } catch (err) {
-                        err.message += ' in ' + url;
-                        throw err;
-                    }
-                }
-
-                if (unpreparedModules[normalizedName]) {
-                    readyModules[normalizedName] = buildModule(normalizedName, unpreparedModules[normalizedName].dependencies, unpreparedModules[normalizedName].factory);
-                    delete unpreparedModules[normalizedName];
-                }
-            } else {
-                throw "module " + name + " cannot be found";
-            }
-
-        }
-
-        return readyModules[normalizedName];
-
-    }
-
-    //Use the AMD signature incase we ever want to change.
-    //For now we will only be using (name, baseName)
-    require = function (dependencies, callback) {
-        if (typeof dependencies === "string") {
-            //dependencies is the module name and callback is the relName
-            //relName is not part of the AMDJS spec, but we use it from localRequire
-            return loadModule(dependencies, callback);
-        } else if (Array.isArray(dependencies) && typeof callback === 'function') {
-            //Call it Asynchronously
-            setTimeout(function () {
-                buildModule(undefined, dependencies, callback);
-            }, 0);
-        }
-    };
-
-    require.toUrl = function (originalName, baseName) {
-        return normalizeName(originalName, baseName);
-    };
-
-    //Use the AMD signature incase we ever want to change.
-    //For now webworks will only be using (name, factory) signature.
-    define = function (name, dependencies, factory) {
-        if (typeof name === "string" && typeof dependencies === 'function') {
-            factory = dependencies;
-            dependencies = ['require', 'exports', 'module'];
-        }
-
-        //According to the AMDJS spec we should parse out the require statements
-        //from factory.toString and add those to the list of dependencies
-
-        //Normalize the name. Remove local:// and .js
-        name = normalizeName(name);
-        unpreparedModules[name] = {
-            dependencies: dependencies,
-            factory: factory
-        };
-    };
-}());
-
-//Export for use in node for unit tests
-if (typeof module === "object" && typeof require === "function") {
-    module.exports = {
-        require: require,
-        define: define
-    };
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/bootstrap/ui.html
----------------------------------------------------------------------
diff --git a/blackberry10/framework/bootstrap/ui.html b/blackberry10/framework/bootstrap/ui.html
deleted file mode 100644
index 70bef2d..0000000
--- a/blackberry10/framework/bootstrap/ui.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!-- Copyright 2012 Research In Motion Limited.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- -->
-<!DOCTYPE HTML>
-<html lang="en">
-    <head>
-        <meta charset="utf-8">
-        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
-        <link rel="stylesheet" href="platform:///ui-resources/styles/styles.css" type="text/css" media="screen" charset="utf-8">
-
-        <script src="../chrome/require.js" type="text/javascript"></script>
-        <script src="platform:///webplatform.js" type="text/javascript"></script>
-        <script src="platform:///i18n.js" type="text/javascript"></script>
-        <script src="platform:///ui-resources/index.js" type="text/javascript"></script>
-    </head>
-    <body>
-
-        <div id="contextMenuModal" style="display:none;"></div>
-<div id="contextMenu" class="hideMenu">
-    <div id="contextMenuHeader">
-        <div id="contextMenuHeadText"></div>
-        <div id="contextMenuSubheadText"></div>
-    </div>
-    <div id="contextMenuContent"></div>
-    <div id="contextMenuHandle"></div>
-    <div id="contextMenuDelete"></div>
-</div>
-
-        <div id="dialog" class="hidden">
-    <div class="dialog-top-third">
-        <div id="dialog-panel">
-        </div>
-    </div>
-    <div class="dialog-bottom-two-thirds">
-    </div>
-</div>
-
-        <div id="invocationlist" class="screenInner screenSlide removed">
-    <div id="cancelTitlebar"></div>
-    <div id="invocationListContent" class="targetList"></div>
-    <div id="targetLoader">
-        <div id="targetLoaderActivity" class="activityIndicator"></div>
-    </div>
-</div>
-
-        <div id="toaster" class="toaster"></div>
-
-
-        <div id="childwebviewcontrols"></div>
-
-        <div id="formcontrolPanel">
-            <div id="formcontrol">
-                <button id="formcontrol_previous"/>
-                <button id="formcontrol_next"/>
-                <button id="formcontrol_submit"/>
-            </div>
-        </div>
-
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/PluginResult.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/PluginResult.js b/blackberry10/framework/lib/PluginResult.js
deleted file mode 100644
index 77e2c49..0000000
--- a/blackberry10/framework/lib/PluginResult.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2013 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-function PluginResult(args, env) {
-
-    var CALLBACK_STATUS_NO_RESULT = 0,
-        CALLBACK_STATUS_OK = 1,
-        CALLBACK_STATUS_ERROR = 9,
-        callbackId = JSON.parse(decodeURIComponent(args.callbackId)),
-        send = function (data) {
-            env.response.send(200, encodeURIComponent(JSON.stringify(data)));
-        },
-        callback = function (success, status, data, keepCallback) {
-            var executeString = "cordova.callbackFromNative('" + callbackId  + "', " +
-                !!success + ", " + status + ", [" + data + "], " + !!keepCallback + ");";
-            env.webview.executeJavaScript(executeString);
-        };
-
-    Object.defineProperty(this, "callbackId", {enumerable: true, value: callbackId});
-
-    this.noResult = function (keepCallback) {
-        send({ code: CALLBACK_STATUS_NO_RESULT, keepCallback: !!keepCallback });
-    };
-
-    this.error = function (msg, keepCallback) {
-        send({ code: CALLBACK_STATUS_ERROR, msg: msg, keepCallback: !!keepCallback });
-    };
-
-    this.ok = function (data, keepCallback) {
-        send({ code: CALLBACK_STATUS_OK, data: data, keepCallback: !!keepCallback });
-    };
-
-    this.callbackOk = function (data, keepCallback) {
-        callback(true, CALLBACK_STATUS_OK, JSON.stringify(data), keepCallback);
-    };
-
-    this.callbackError = function (msg, keepCallback) {
-        callback(false, CALLBACK_STATUS_ERROR, JSON.stringify(msg), keepCallback);
-    };
-}
-
-window.PluginResult = PluginResult;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/config.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/config.js b/blackberry10/framework/lib/config.js
deleted file mode 100644
index 6fbe527..0000000
--- a/blackberry10/framework/lib/config.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var defaults = require('./config/default'),
-    user = require('./config/user'),
-    utils = require('./utils');
-
-module.exports = utils.mixin(user,
-                 utils.mixin(defaults, {}));

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/config/default.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/config/default.js b/blackberry10/framework/lib/config/default.js
deleted file mode 100644
index 303f26a..0000000
--- a/blackberry10/framework/lib/config/default.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-module.exports = {
-    configXML: "config.xml",
-    configXMLDoc: null,
-
-    cordovaVersion: "CORDOVA-VERSION",
-
-    backButtonBehavior: "back",
-    customHeaders: {},
-    version: "1.0.0",
-
-    author: "",
-    authorURL: "",
-    authorEmail: "",
-    copyright: "",
-    content: "local:///index.html",
-    contentCharset: "",
-    contentType: "",
-    description: "",
-    icon: "AIRApp_72.png",
-    iconHover: "",
-    id: "",
-    license: "",
-    licenseURL: "",
-    name: "WebWorksAppTemplate",
-
-    navigationMode: "pointer",
-
-    preferredTransports: null,
-    transportTimeout: 300000,
-
-    hasMultiAccess: false,
-    widgetExtensions: null,
-    featureTable: null,
-    accessList: null,
-    permissions: null,
-
-    loadingScreenColor: "#FFFFFF",
-    backgroundImage: "",
-    foregroundImage: "",
-    onFirstLaunch: false,
-    onLocalPageLoad: false,
-    onRemotePageLoad: false,
-    transitionType: -1,
-    transitionDuration: 250,
-    transitionDirection: 128,
-
-    disableAllCache: false,
-    aggressiveCacheAge: 2592000,
-    maxCacheSizeTotal: 1024,
-    maxCacheSizeItem: 128,
-    maxStandardCacheAge: 2592000,
-
-    runOnStartUp: false,
-    allowInvokeParams: false,
-    backgroundSource: "",
-    foregroundSource: "index.html",
-    debugEnabled: false,
-    enableFormControl: true,
-    enableChildWebView: true,
-    enableWebSecurity: true,
-    enableDiskCache: false,
-    enablePopupBlocker: false
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/config/user.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/config/user.js b/blackberry10/framework/lib/config/user.js
deleted file mode 100644
index 344825e..0000000
--- a/blackberry10/framework/lib/config/user.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-module.exports = {
-    authorEmail: "guocat@gmail.com",
-    copyright: "@Rebecca",
-    customHeaders: {
-        "rim-header": "RIM-Widget:rim/widget"
-    },
-    userAgent: "Some extremely long user agent (with) spe/cial, characters",
-    author: "Me",
-    version: "1.0.0.0",
-    hasMultiAccess: true,
-    license: "This is a license",
-    accessList: [{
-        allowSubDomain: false,
-        features: [{
-            version: "1.0.0.0",
-            required: true,
-            id: "blackberry.example.test"
-        }, {
-            version: "1.0.0.0",
-            required: true,
-            id: "blackberry.app"
-        }],
-        uri: "WIDGET_LOCAL"
-    }],
-    licenseURL: "",
-    authorURL: "http://bbtools_win7_01/yui",
-    foregroundSource: "derp.html",
-    backgroundColor: "0xFFFF9900",
-    content: "http://localhost/lib/public/testbed.html",
-    description: "this is the description",
-    configXML: "config.xml",
-    name: "wwTest"
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/controllerWebView.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/controllerWebView.js b/blackberry10/framework/lib/controllerWebView.js
deleted file mode 100644
index 9c05ebe..0000000
--- a/blackberry10/framework/lib/controllerWebView.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var controllerWebView,
-    overlayWebView = require("./overlayWebView"),
-    controller,
-    invocation,
-    utils;
-
-controllerWebView = {
-    init: function (config) {
-        controller = window.qnx.webplatform.getController();
-        invocation = window.qnx.webplatform.getApplication().invocation;
-        utils = require('./utils');
-        controller.enableWebInspector = config.debugEnabled;
-        controller.enableCrossSiteXHR = true;
-        controller.visible = false;
-        controller.active = false;
-        controller.setGeometry(0, 0, screen.width, screen.height);
-        controller.setFileSystemSandbox = false;
-
-        /* Remote functions that are published to allow communication with
-         * the overlay webview, they are called via the RPC bridge
-         */
-        controller.publishRemoteFunction('webview.setSensitivity', function (args) {
-            var sensitivityType = args[0];
-            overlayWebView.setSensitivity(sensitivityType);
-        });
-
-        controller.publishRemoteFunction('webview.notifyContextMenuCancelled', function () {
-            overlayWebView.notifyContextMenuCancelled();
-        });
-    },
-
-    setGeometry: function (x, y, width, height) {
-        controller.setGeometry(x, y, width, height);
-    },
-
-    setApplicationOrientation: function (angle) {
-        controller.setApplicationOrientation(angle);
-    },
-
-    notifyApplicationOrientationDone: function () {
-        controller.notifyApplicationOrientationDone();
-    },
-
-    dispatchEvent: function (eventType, args) {
-        controller.dispatchEvent(eventType, args);
-    }
-};
-
-controllerWebView.__defineGetter__('id', function () {
-    return controller.id;
-});
-
-controllerWebView.__defineSetter__('onChildWebViewCreated', function (input) {
-    controller.onChildWebViewCreated = input;
-});
-module.exports = controllerWebView;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/event.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/event.js b/blackberry10/framework/lib/event.js
deleted file mode 100644
index 880e6c4..0000000
--- a/blackberry10/framework/lib/event.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var _handlers = {},
-    _webview = require("./webview");
-
-module.exports = {
-    trigger: function (actionEvent) {
-        var args = Array.prototype.slice.call(arguments),
-            executeString = "webworks.event.trigger('" + actionEvent + "', '" + escape(encodeURIComponent(JSON.stringify(args.slice(1)))) + "')";
-
-        if (_handlers.hasOwnProperty(actionEvent)) {
-            _handlers[actionEvent].forEach(function (webview) {
-                webview.executeJavaScript(executeString);
-            });
-        } else {
-            //Just dump it in the content webview for consistency
-            _webview.executeJavascript(executeString);
-        }
-    },
-
-    add: function (action, webview) {
-        var triggerEvent;
-
-        if (action) {
-            //Use action.event for old extensions that may not have triggerEvent defined
-            triggerEvent = action.triggerEvent || action.event;
-
-            if (!action.once) {
-                action.context.addEventListener(action.event, action.trigger || this.trigger);
-            }
-
-            //If there are no registered listeners for this event, create an array to hold them
-            if (!_handlers.hasOwnProperty(triggerEvent)) {
-                _handlers[triggerEvent] = [];
-            }
-            //If the webview is not in the list of webviews listening to this action then add it
-            if (!_handlers[triggerEvent].some(function (handlerWebView) {
-                    return handlerWebView.id === webview.id;
-                })) {
-                _handlers[triggerEvent].push(webview);
-            }
-
-        } else {
-            throw "Action is null or undefined";
-        }
-    },
-
-    remove: function (action, webview) {
-        if (action) {
-            action.context.removeEventListener(action.event, action.trigger || this.trigger);
-
-            //Remove the webview from the _handlers
-            if (_handlers.hasOwnProperty(action.event)) {
-
-                _handlers[action.event] = _handlers[action.event].filter(function (sourceWebview) {
-                    return sourceWebview.id !== webview.id;
-                });
-
-                //If the array is empty delete it
-                if (_handlers[action.event].length === 0) {
-                    delete _handlers[action.event];
-                }
-            }
-
-        } else {
-            throw "Action is null or undefined";
-        }
-
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/events/applicationEvents.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/events/applicationEvents.js b/blackberry10/framework/lib/events/applicationEvents.js
deleted file mode 100644
index d0b1b2e..0000000
--- a/blackberry10/framework/lib/events/applicationEvents.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-module.exports = {
-    addEventListener: function (event, trigger) {
-        if (event) {
-            event = "application." + event;
-            window.qnx.webplatform.getApplication().addEventListener(event, trigger);
-        } else {
-            console.warn("Attempting to register for 'falsey' event: " + event);
-        }
-    },
-    removeEventListener: function (event, trigger) {
-        if (event) {
-            event = "application." + event;
-            window.qnx.webplatform.getApplication().removeEventListener(event, trigger);
-        } else {
-            console.warn("Attempting to un-register for 'falsey' event: " + event);
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/events/deviceEvents.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/events/deviceEvents.js b/blackberry10/framework/lib/events/deviceEvents.js
deleted file mode 100644
index 744d5a4..0000000
--- a/blackberry10/framework/lib/events/deviceEvents.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-module.exports = {
-    addEventListener: function (event, trigger) {
-        if (event) {
-            event = "device." + event;
-            window.qnx.webplatform.device.addEventListener(event, trigger);
-        } else {
-            console.warn("Attempting to register for 'falsey' event: " + event);
-        }
-    },
-    removeEventListener: function (event, trigger) {
-        if (event) {
-            event = "device." + event;
-            window.qnx.webplatform.device.removeEventListener(event, trigger);
-        } else {
-            console.warn("Attempting to un-register for 'falsey' event: " + event);
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/exception.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/exception.js b/blackberry10/framework/lib/exception.js
deleted file mode 100644
index f0a8467..0000000
--- a/blackberry10/framework/lib/exception.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-module.exports = {
-
-    types: {
-        Application: "Application",
-        ArgumentLength: "ArgumentLength",
-        ArgumentType: "ArgumentType",
-        Argument: "Argument",
-        NotificationType: "NotificationType",
-        NotificationStateType: "NotificationStateType",
-        DomObjectNotFound: "DomObjectNotFound",
-        MethodNotImplemented: "MethodNotImplemented",
-        InvalidState: "InvalidState",
-        ApplicationState: "ApplicationState"
-    },
-
-    handle: function handle(exception, reThrow) {
-        reThrow = reThrow || false;
-
-        var eMsg = exception.message || "exception caught!",
-        msg = eMsg + "\n\n" + (exception.stack || "*no stack provided*") + "\n\n";
-
-        console.error(msg);
-
-        if (reThrow) {
-            throw exception;
-        }
-    },
-
-    raise: function raise(exceptionType, message, customExceptionObject) {
-        var obj = customExceptionObject || {
-                type: "",
-                message: "",
-
-                toString: function () {
-                    var result = this.name + ': "' + this.message + '"';
-
-                    if (this.stack) {
-                        result += "\n" + this.stack;
-                    }
-                    return result;
-                }
-            };
-
-        message = message || "";
-
-        obj.name = exceptionType;
-        obj.type = exceptionType;
-        // TODO: include the exception objects original message if exists
-        obj.message = message;
-
-        throw obj;
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/framework.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/framework.js b/blackberry10/framework/lib/framework.js
deleted file mode 100644
index 85732dd..0000000
--- a/blackberry10/framework/lib/framework.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var utils = require('./utils'),
-    controllerWebView = require('./controllerWebView'),
-    webview = require('./webview'),
-    overlayWebView = require('./overlayWebView'),
-    config = require("./config"),
-    appEvents = require("./events/applicationEvents"),
-    actionMap = {
-        pause: {
-            event: "inactive",
-            trigger: function () {
-                webview.executeJavascript("if (cordova) cordova.fireDocumentEvent('pause')");
-            }
-        },
-        resume: {
-            event: "active",
-            trigger: function () {
-                webview.executeJavascript("if (cordova) cordova.fireDocumentEvent('resume')");
-            }
-        }
-    };
-
-function addEvents() {
-    for (var action in actionMap) {
-        if (actionMap.hasOwnProperty(action)) {
-            appEvents.addEventListener(actionMap[action].event, actionMap[action].trigger);
-        }
-    }
-}
-
-function removeEvents() {
-    for (var action in actionMap) {
-        if (actionMap.hasOwnProperty(action)) {
-            appEvents.removeEventListener(actionMap[action].event, actionMap[action].trigger);
-        }
-    }
-}
-
-function showWebInspectorInfo() {
-    var port = window.qnx.webplatform.getApplication().webInspectorPort,
-        messageObj = {};
-
-    qnx.webplatform.device.getNetworkInterfaces(function (networkInfo) {
-        var connectedInterface;
-
-        utils.forEach(networkInfo, function (info) {
-            if (info && !connectedInterface) {
-                connectedInterface = info;
-            }
-        }, this);
-
-        messageObj.title = "Web Inspector Enabled";
-        if (connectedInterface) {
-            messageObj.htmlmessage =  "\n ip4:    " + connectedInterface.ipv4Address + ":" + port + "<br/> ip6:    " + connectedInterface.ipv6Address + ":" + port;
-        } else {
-            messageObj.message = "Connect to the simulator's IP on port: " + port;
-        }
-        messageObj.dialogType = 'JavaScriptAlert';
-        overlayWebView.showDialog(messageObj);
-    });
-}
-
-var _self = {
-    start: function (url) {
-        var callback,
-            showUrlCallback;
-
-        // log Cordova framework version (which should match JS version)
-        console.log('Apache Cordova native platform version ' + config.cordovaVersion + ' is starting.');
-
-        // Set up the controller WebView
-        controllerWebView.init(config);
-
-        webview.create(function () {
-            if (config.enableFlash) {
-                //Set webview plugin directory [required for flash]
-                webview.setExtraPluginDirectory('/usr/lib/browser/plugins');
-
-                //Enable plugins for the webview [required for flash]
-                webview.setEnablePlugins(true);
-
-                //Enable flash for the childWebViews
-                controllerWebView.onChildWebViewCreated = function (child) {
-                    //Set webview plugin directory [required for flash]
-                    child.setExtraPluginDirectory('/usr/lib/browser/plugins');
-
-                    //Enable plugins for the webview [required for flash]
-                    child.pluginsEnabled = true;
-                };
-            }
-
-            if (!config.enableWebSecurity) {
-                webview.enableCrossSiteXHR = true;
-            }
-
-            if (!config.enablePopupBlocker) {
-                qnx.webplatform.nativeCall('webview.setBlockPopups', webview.id, false);
-            }
-
-            if (config.enableDiskCache) {
-                qnx.webplatform.nativeCall('webview.setEnableDiskCache', webview.id, 'true');
-            }
-
-            // Workaround for executeJavascript doing nothing for the first time
-            webview.executeJavascript("1 + 1");
-
-            url = url || config.content;
-
-            showUrlCallback = function () {
-                overlayWebView.removeEventListener("DocumentLoadFinished", showUrlCallback);
-                showUrlCallback = null;
-
-                // Start page
-                if (url) {
-                    webview.setURL(url);
-                }
-            };
-
-            overlayWebView.create(function () {
-                overlayWebView.addEventListener("DocumentLoadFinished", showUrlCallback);
-
-                overlayWebView.setURL("local:///chrome/ui.html");
-                overlayWebView.renderContextMenuFor(webview);
-                overlayWebView.handleDialogFor(webview);
-                controllerWebView.dispatchEvent('ui.init', null);
-                webview.setUIWebViewObj(overlayWebView.getWebViewObj());
-                if (config.enableChildWebView) {
-                    overlayWebView.bindAppWebViewToChildWebViewControls(webview);
-                } else {
-                    webview.onChildWindowOpen = function (data) {
-                        var parsedData = JSON.parse(data);
-                        utils.invokeInBrowser(parsedData.url);
-                    };
-                }
-                if (config.enableFormControl) {
-                    overlayWebView.getWebViewObj().formcontrol.subscribeTo(webview);
-                }
-            });
-        },
-        {
-            debugEnabled : config.debugEnabled
-        });
-
-        addEvents();
-
-        //if debugging is enabled, show the IP and port for webinspector
-        if (config.debugEnabled) {
-            callback = function () {
-                showWebInspectorInfo();
-
-                //Remove listener. Alert should only be shown once.
-                webview.removeEventListener("DocumentLoadFinished", callback);
-            };
-
-            webview.addEventListener("DocumentLoadFinished", callback);
-        }
-    },
-    stop: function () {
-        removeEvents();
-        webview.destroy();
-    }
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/jnext.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/jnext.js b/blackberry10/framework/lib/jnext.js
deleted file mode 100755
index 8907ce4..0000000
--- a/blackberry10/framework/lib/jnext.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*global objJSExt */
-
-function JNEXT_() {
-    var self = this;
-    var m_bFirstRequire = true;
-
-    self.m_arEvents = {};
-
-    self.onPageLoad = function() {
-    };
-
-    self.attachToDOM = function() {
-        // Make sure JNEXT onPageLoad is called when page load
-        //  completes without damaging existing onLoad handlers
-        var prevOnLoad = window.onload;
-        if( typeof window.onload != 'function') {
-            window.onload = self.onPageLoad;
-        } else {
-            window.onload = function() {
-                if(prevOnLoad) {
-                    prevOnLoad();
-                }
-
-                self.onPageLoad();
-            };
-        }
-
-        // Unobtrusively add the JNEXT plugin or ActiveX to the DOM
-        var objBody = document.getElementsByTagName("body")[0];
-        var objDiv = document.createElement('div');
-        var strHTML;
-
-        if(window.ActiveXObject) {
-            strHTML = '<object id="objJSExt" width="0" height="0" classid="CLSID:C802F39D-BF85-427a-A334-77E501DB62E9" codebase="jnext.ocx"></object>';
-            strHTML += '<script language="JavaScript" for="objJSExt" EVENT="Js2nEvent( strEvent )">JNEXT.processEvent(strEvent)</script>';
-        } else {
-            var strAddSrc = "";
-            if(navigator.userAgent.indexOf("Safari") != -1 && navigator.userAgent.indexOf("Windows") != -1) {
-                // This hack required on Safari for Windows
-                strAddSrc = 'src="./jnext/safari.foo"';
-            }
-            strHTML = '<embed id="objJSExt" ' + strAddSrc + ' type="application/jnext-scriptable-plugin" width="0" height="0">';
-        }
-
-        objDiv.innerHTML = strHTML;
-        objBody.appendChild(objDiv);
-    };
-
-    self.getosname = function() {
-        return objJSExt.sendCmd("osname");
-    };
-
-    self.require = function(strLibrary) {
-        // Load a required JNEXT plugin
-        var strCmd;
-        var strVal;
-        var arParams;
-
-        if(m_bFirstRequire) {
-            strCmd = "userAgent " + navigator.userAgent;
-            strVal = objJSExt.sendCmd(strCmd);
-            arParams = strVal.split(" ");
-            if(arParams[0] != "Ok") {
-                alert("userAgent " + strVal);
-                return false;
-            }
-            self.m_bFirstRequire = false;
-        }
-        strCmd = "Require " + strLibrary;
-        strVal = objJSExt.sendCmd(strCmd);
-        arParams = strVal.split(" ");
-        if(arParams[0] != "Ok") {
-            alert("Require " + strVal);
-            return false;
-        }
-
-        return true;
-    };
-
-    self.createObject = function(strObjName) {
-        // Create an instance of a native object
-        var strCmd;
-        var strVal;
-        var arParams;
-        strVal = objJSExt.sendCmd("CreateObject " + strObjName);
-        arParams = strVal.split(" ");
-        if(arParams[0] != "Ok") {
-            alert("CreateObject: " + strVal);
-            return "";
-        }
-        return arParams[1];
-    };
-
-    self.invoke = function(strObjId, strMethod, strParams) {
-        // Invoke a method of a given instance of a native object
-        var strCmd = "InvokeMethod " + strObjId + " " + strMethod;
-
-        if( typeof (strParams) != "undefined") {
-            strCmd += " " + strParams;
-        }
-
-        return objJSExt.sendCmd(strCmd);
-    };
-
-    self.registerEvents = function(objNotify) {
-        var strId = objNotify.getId();
-        self.m_arEvents[strId] = objNotify;
-    };
-
-    self.unregisterEvents = function(objNotify) {
-        var strId = objNotify.getId();
-        delete self.m_arEvents[strId];
-    };
-
-    self.processEvent = function(strNativeEvt) {
-        // Process an event received from native code. The event
-        // contains the target JavaScript object id and the
-        // relevant parameters.
-
-        var arParams = strNativeEvt.split(" ");
-        var strObjId = arParams[0];
-        var strEvent = strNativeEvt.substring(strObjId.length + 1);
-
-        var objNotify = self.m_arEvents[strObjId];
-        if( typeof (objNotify) == 'undefined') {
-            alert("Warning: No object with Id " + strId + " found for event " + strEvent);
-            return;
-        }
-
-        // This will now be handled by the appropriate JavaScript
-        // JNEXT extension object
-        objNotify.onEvent(strEvent);
-    };
-
-    self.ajaxGet = function(strUrl, id) {
-        var req = false;
-        if(window.ActiveXObject) {
-            try {
-                req = new ActiveXObject("Msxml2.XMLHTTP");
-            } catch (e) {
-                try {
-                    req = new ActiveXObject("Microsoft.XMLHTTP");
-                } catch (ex) {
-                }
-            }
-        } else if(window.XMLHttpRequest) {
-            req = new XMLHttpRequest();
-        } else {
-            return false;
-        }
-
-        req.onreadystatechange = function() {
-            if(req.readyState == 4 && (req.status == 200 || window.location.href.indexOf("http") == -1)) {
-                self.onAjaxRecv(req.responseText);
-            }
-        };
-
-        req.open('GET', strUrl, true);
-        req.send(null);
-    };
-
-    self.onAjaxRecv = function(strContent) {
-        alert(strContent);
-    };
-
-    self.attachToDOM();
-}
-
-window.JNEXT = new JNEXT_();
-module.exports = JNEXT;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/overlayWebView.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/overlayWebView.js b/blackberry10/framework/lib/overlayWebView.js
deleted file mode 100644
index a2bba69..0000000
--- a/blackberry10/framework/lib/overlayWebView.js
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var CHROME_HEIGHT = 0,
-    webview,
-    _webviewObj;
-
-webview =
-    {
-
-    create: function (ready, configSettings) {
-        _webviewObj = window.qnx.webplatform.createUIWebView(function () {
-
-            _webviewObj.visible = true;
-            _webviewObj.active = true;
-            _webviewObj.zOrder = 2;
-            _webviewObj.enableCrossSiteXHR = true;
-            _webviewObj.setGeometry(0, 0, screen.width, screen.height);
-            _webviewObj.addEventListener("DocumentLoadFinished", function () {
-                _webviewObj.default.setDefaultFont();
-                _webviewObj.visible = true;
-            });
-
-            _webviewObj.allowRpc = true;
-            _webviewObj.backgroundColor = 0x00FFFFFF;
-            _webviewObj.sensitivity = "SensitivityTest";
-            _webviewObj.devicePixelRatio = 1;
-            _webviewObj.allowQnxObject = true;
-
-            if (ready && typeof ready === 'function') {
-                ready();
-            }
-
-            window.qnx.webplatform.getController().dispatchEvent("overlayWebView.initialized", [_webviewObj]);
-
-        });
-    },
-
-    destroy: function () {
-        _webviewObj.destroy();
-    },
-
-    setURL: function (url) {
-        _webviewObj.url = url;
-    },
-
-    setGeometry: function (x, y, width, height) {
-        _webviewObj.setGeometry(x, y, width, height);
-    },
-
-    setSensitivity : function (sensitivity) {
-        _webviewObj.sensitivity = sensitivity;
-    },
-
-    setApplicationOrientation: function (angle) {
-        _webviewObj.setApplicationOrientation(angle);
-    },
-
-    notifyApplicationOrientationDone: function () {
-        _webviewObj.notifyApplicationOrientationDone();
-    },
-
-    executeJavascript: function (js) {
-        _webviewObj.executeJavaScript(js);
-    },
-
-    windowGroup: function () {
-        return _webviewObj.windowGroup;
-    },
-
-    notifyContextMenuCancelled: function () {
-        _webviewObj.notifyContextMenuCancelled();
-    },
-
-    bindAppWebViewToChildWebViewControls: function (appWebView) {
-        if (_webviewObj && _webviewObj.childwebviewcontrols) {
-            _webviewObj.childwebviewcontrols.subscribeTo(appWebView);
-        }
-    },
-
-    renderContextMenuFor: function (targetWebView) {
-        return _webviewObj.contextMenu.subscribeTo(targetWebView);
-    },
-
-    handleDialogFor: function (targetWebView) {
-        return _webviewObj.dialog.subscribeTo(targetWebView);
-    },
-
-    showDialog: function (description, callback) {
-        return _webviewObj.dialog.show(description, callback);
-    },
-
-    getWebViewObj: function (webview) {
-        return _webviewObj;
-    },
-
-    addEventListener: function (eventName, callback) {
-        _webviewObj.addEventListener(eventName, callback);
-    },
-
-    removeEventListener: function (eventName, callback) {
-        _webviewObj.removeEventListener(eventName, callback);
-    },
-
-    showToast : function (message, options) {
-        return _webviewObj.toast.show(message, options);
-    },
-
-    showInvocationList: function (request, title, success, error) {
-        _webviewObj.invocationlist.show(request, title, success, error);
-    }
-};
-
-webview.__defineGetter__('id', function () {
-    if (_webviewObj) {
-        return _webviewObj.id;
-    }
-});
-
-webview.__defineGetter__('zOrder', function () {
-    return _webviewObj.zOrder;
-});
-
-webview.__defineGetter__('contextMenu', function () {
-    if (_webviewObj) {
-        return _webviewObj.contextMenu;
-    }
-});
-
-module.exports = webview;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/plugins/default.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/plugins/default.js b/blackberry10/framework/lib/plugins/default.js
deleted file mode 100644
index 8347917..0000000
--- a/blackberry10/framework/lib/plugins/default.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2010-2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var Whitelist = require("../policy/whitelist").Whitelist,
-    whitelist = new Whitelist();
-
-module.exports = {
-
-    exec: function (request, succ, fail, args, env) {
-        var extPath = "plugin/" + request.params.ext + "/index",
-            requestObj = {
-                extension: null,
-                method: null,
-                getExtension: function () {
-                    if (frameworkModules.indexOf(extPath + ".js") !== -1) {
-                        this.extension = require("../utils").loadModule("../" + extPath);
-                        return requestObj;
-                    } else {
-                        throw {code: 404, msg: "Extension " + request.params.ext + " not found"};
-                    }
-                },
-                getMethod: function () {
-                    var methodParts = request.params.method ? request.params.method.split('/') : [request.params.method],
-                        extMethod;
-
-                    try {
-                        extMethod = this.extension[methodParts.shift()];
-                        extMethod = methodParts.reduce(function (previous, current) {
-                            if (previous[current]) {
-                                return previous[current];
-                            } else {
-                                throw {code: 404, msg: "Method " + request.params.method + " for " + request.params.ext + " not found"};
-                            }
-                        }, extMethod);
-
-                        if (extMethod && typeof extMethod === "function") {
-                            this.method = extMethod;
-                            return requestObj;
-                        } else {
-                            throw {code: 404, msg: "Method " + request.params.method + " for " + request.params.ext + " not found"};
-                        }
-                    } catch (e) {
-                        throw {code: 404, msg: "Method " + request.params.method + " for " + request.params.ext + " not found"};
-                    }
-                },
-                exec: function () {
-                    this.method(succ, fail, args, env);
-                }
-            };
-
-        try {
-            requestObj.getExtension().getMethod().exec();
-        } catch (e) {
-            console.warn(e.msg);
-            fail(-1, e.msg, e.code);
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/plugins/event.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/plugins/event.js b/blackberry10/framework/lib/plugins/event.js
deleted file mode 100644
index de00533..0000000
--- a/blackberry10/framework/lib/plugins/event.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var _event = require("../../lib/event"),
-    ONCE_EVENT_ERROR = "Error occurred while adding once event listener.",
-    ERROR_ID = -1;
-
-module.exports = {
-    once: function (request, success, fail, args, env) {
-        try {
-            var eventName = decodeURIComponent(args.eventName).replace(/\"/g, ""),
-                action = {
-                    once: true,
-                    event: eventName
-                };
-
-            _event.add(action, env.webview);
-
-            if (success) {
-                success();
-            }
-        }
-        catch (e) {
-            if (fail) {
-                fail(ERROR_ID, ONCE_EVENT_ERROR);
-            }
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/policy/folderAccess.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/policy/folderAccess.js b/blackberry10/framework/lib/policy/folderAccess.js
deleted file mode 100644
index b6e9f94..0000000
--- a/blackberry10/framework/lib/policy/folderAccess.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var util = require("../utils");
-
-// Removes the start and end slashes from the path
-function _trimSurroundingSlashes(path) {
-    // Trim starting slash
-    if (util.startsWith(path, "/")) {
-        path = path.substr(1);
-    }
-
-    // Trim ending slash
-    if (util.endsWith(path, "/")) {
-        path = path.substr(0, path.length - 1);
-    }
-
-    return path;
-}
-
-// Determines the depth of the given path
-// Folder path must not include the scheme or the host
-function _determineDepth(folderPath) {
-    var depthCount = 0;
-
-    // Replace all backslashes with forward slash
-    folderPath = folderPath.replace("\\", "/");
-
-    // Special case: "/" is the given path
-    if (folderPath === "/") {
-        return 0;
-    }
-
-    folderPath = _trimSurroundingSlashes(folderPath);
-
-    // Count slashes remaining
-    while (folderPath.indexOf("/") !== -1) {
-        depthCount = depthCount + 1;
-
-        // Add 1 to skip the slash
-        folderPath = folderPath.substring(folderPath.indexOf("/") + 1);
-    }
-
-    // Add one more for the remaining folder
-    depthCount += 1;
-
-    return depthCount;
-}
-
-// Parse a folder path up to the desired depth
-function _getPath(folderPath, desiredDepth) {
-    var depthCount = 0, builtPath = "";
-
-    // Special case: Desired depth is 0
-    if (desiredDepth === 0) {
-        return "/";
-    }
-
-    // Replace all backslashes with forward slash
-    folderPath = folderPath.replace("\\", "/");
-
-    folderPath = _trimSurroundingSlashes(folderPath);
-
-    // Count slashes remaining
-    while (depthCount < desiredDepth) {
-        depthCount += 1;
-
-        // Add 1 to skip the slash
-        builtPath += "/" + folderPath.substring(0, folderPath.indexOf('/'));
-        folderPath = folderPath.substring(folderPath.indexOf('/') + 1);
-    }
-
-    return builtPath;
-}
-
-function WebFolderAccessManager() {
-    this._pathCollection = {};
-    this._maxPathLength = 0;
-}
-
-WebFolderAccessManager.prototype.addAccess = function (folderPath, access) {
-    if (!folderPath) {
-        folderPath = "/";
-    }
-
-    // Trim surrounding slashes for consistency
-    // The root "/" is a special case that does not need this trimming
-    if (folderPath !== "/") {
-        folderPath = "/" + _trimSurroundingSlashes(folderPath);
-    }
-
-    folderPath = folderPath.toLowerCase();
-
-    this._pathCollection[folderPath] = access;
-
-    // Determine the depth of the path
-    this._maxPathLength = Math.max(this._maxPathLength, _determineDepth(folderPath));
-};
-
-WebFolderAccessManager.prototype.getAccess = function (folderPath) {
-    var depth = _determineDepth(folderPath);
-    return this.getAccessRecursively(folderPath, depth);
-};
-
-WebFolderAccessManager.prototype.fetchAccess = function (folderPath) {
-    var queryIndex, folderPathWildcard;
-
-    if (!this._pathCollection.hasOwnProperty(folderPath)) {
-        // If there isn't an exact match and folderPath contains query string,
-        // check if the path collection contains an access with the same folderPath
-        // but with wildcard query
-        if ((queryIndex = folderPath.indexOf("?")) > -1) {
-            folderPathWildcard = folderPath.slice(0, queryIndex + 1) + "*";
-
-            if (this._pathCollection.hasOwnProperty(folderPathWildcard)) {
-                return this._pathCollection[folderPathWildcard];
-            }
-        }
-
-        return null;
-    } else {
-        return this._pathCollection[folderPath];
-    }
-};
-
-WebFolderAccessManager.prototype.getAccessRecursively = function (folderPath, pathLength) {
-    var fetchedAccess,
-        newPathLength,
-        newPath;
-
-    if (!folderPath) {
-        return null;
-    }
-
-    folderPath = folderPath.toLowerCase();
-
-    if (!!(fetchedAccess = this.fetchAccess(folderPath))) {
-        return fetchedAccess;
-    } else {
-        // Truncate the end portion of the path and try again
-        newPathLength = Math.min(this._maxPathLength, pathLength - 1);
-        newPath = _getPath(folderPath, newPathLength);
-
-        return this.getAccessRecursively(newPath, newPathLength);
-    }
-};
-
-function WebFolderAccess() {
-    this._mgr = new WebFolderAccessManager();
-}
-
-// folderPath - folder path must not include the scheme or the host
-WebFolderAccess.prototype.addAccess = function (folderPath, access) {
-    this._mgr.addAccess(folderPath, access);
-};
-
-// folderPath - folder path must not include the scheme or the host
-WebFolderAccess.prototype.getAccess = function (folderPath) {
-    return this._mgr.getAccess(folderPath);
-};
-
-exports.WebFolderAccess = WebFolderAccess;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/policy/webkitOriginAccess.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/policy/webkitOriginAccess.js b/blackberry10/framework/lib/policy/webkitOriginAccess.js
deleted file mode 100644
index 73fd0e6..0000000
--- a/blackberry10/framework/lib/policy/webkitOriginAccess.js
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var config = require('./../config'),
-    utils = require('./../utils'),
-    Whitelist = require('./whitelist').Whitelist,
-    LOCAL_URI = "local://",
-    FILE_URI = "file://",
-    WW_URI = utils.getURIPrefix(),
-    _domains = [
-        {
-            url: LOCAL_URI,
-            allowSubDomains: true
-        }
-    ],
-    _webviews = [],
-    _isInitialized = false,
-    _whitelist = new Whitelist();
-
-function addOriginAccessWhitelistEntry(webview, source, destination, allowSubDomains) {
-    webview.addOriginAccessWhitelistEntry(source, destination, !!allowSubDomains);
-}
-
-function addDomain(url, allowSubDomains) {
-    var parsedUri = utils.parseUri(url);
-
-    allowSubDomains = !!allowSubDomains;
-
-    if (utils.isLocalURI(parsedUri)) {
-        url = LOCAL_URI;
-    } else if (utils.isFileURI(parsedUri)) {
-        url = FILE_URI;
-    } else {
-        url = parsedUri.source;
-    }
-
-    if (_whitelist.isAccessAllowed(url) && !_domains.some(function (domain) {
-        return domain.url === url;
-    })) {
-        _webviews.forEach(function (webview) {
-            addOriginAccessWhitelistEntry(webview, url, WW_URI, true);
-
-            _domains.forEach(function (domain) {
-                addOriginAccessWhitelistEntry(webview, domain.url, url, allowSubDomains);
-                addOriginAccessWhitelistEntry(webview, url, domain.url, domain.allowSubDomains);
-            });
-
-        });
-
-        _domains.push({
-            url: url,
-            allowSubDomains: allowSubDomains
-        });
-    }
-}
-
-function initializeDomains() {
-    var accessElements = config.accessList;
-
-    accessElements.forEach(function (element, index, array) {
-        var uri = (element.uri === 'WIDGET_LOCAL' ? LOCAL_URI : element.uri);
-        addDomain(uri, !!element.allowSubDomain);
-    });
-}
-
-function initializeWebview(webview) {
-    //Always allow file access from local and let the OS deal with permissions
-    addOriginAccessWhitelistEntry(webview, LOCAL_URI, FILE_URI, true);
-    addOriginAccessWhitelistEntry(webview, FILE_URI, LOCAL_URI, true);
-    //Always allow LOCAL access to URIs
-    addOriginAccessWhitelistEntry(webview, LOCAL_URI, WW_URI, true);
-
-    _domains.forEach(function (domain, domainIndex, domainArray) {
-        var i,
-            nextDomain;
-
-        if (domain.uri !== LOCAL_URI) {
-            addOriginAccessWhitelistEntry(webview, domain.url, WW_URI, true);
-        }
-
-        for (i = domainIndex + 1; i < domainArray.length; i++) {
-            nextDomain = domainArray[i];
-            addOriginAccessWhitelistEntry(webview, domain.url, nextDomain.url, nextDomain.allowSubDomains);
-            addOriginAccessWhitelistEntry(webview, nextDomain.url, domain.url, domain.allowSubDomains);
-        }
-    });
-
-}
-
-module.exports = {
-
-    addWebView: function (webview) {
-        if (_webviews.indexOf(webview) === -1) {
-            _webviews.push(webview);
-            initializeWebview(webview);
-            if (!_isInitialized) {
-                initializeDomains();
-                _isInitialized = true;
-            }
-        }
-    },
-
-    addOriginAccess: function (origin, allowSubDomains) {
-        if (!_isInitialized) {
-            initializeDomains();
-            _isInitialized = true;
-        }
-        addDomain(origin, allowSubDomains);
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/policy/whitelist.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/policy/whitelist.js b/blackberry10/framework/lib/policy/whitelist.js
deleted file mode 100644
index a267eb9..0000000
--- a/blackberry10/framework/lib/policy/whitelist.js
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var WebFolderAccess = require("./folderAccess").WebFolderAccess,
-    util = require("../utils");
-
-function _isLocalAccess(access) {
-    return access && access.uri === "WIDGET_LOCAL";
-}
-
-function _isMatch(access, requestURI) {
-    // Look for local first
-    if (_isLocalAccess(access)) {
-        // Local access always allowed
-        //THIS USED TO RETURN TRUE FOR FILE ACCESS
-        //I HAVE TURNED IT OFF BECAUSE IT MAKES NO SENSE THAT LOCAL ACCESS ALWAYS MATCHES FILE ACCESS
-        return (util.isLocalURI(requestURI));
-    } else if (util.isDataURI(requestURI)) {
-        // Check for data url
-        // data urls are allowed
-        return true;
-    }
-
-    // Based on widgets 1.0 (access control)
-    // http://www.w3.org/TR/2009/WD-widgets-access-20090618/#rfc3987
-    var refURI = util.parseUri(access.uri),
-        allowSub = access.allowSubDomain;
-
-    if (!requestURI.path) {
-        requestURI.path = "/";
-    }
-
-    // Start comparison based on widget spec.
-    // 1. Compare scheme
-    if (refURI.scheme.toLowerCase() !== requestURI.scheme.toLowerCase()) {
-        return false;
-    }
-
-    // 2. Compare host - if subdomain is false, host must match exactly
-    // (referenceURI MUST HAVE host specified - not null.)
-    // Special Case: Ignore this condition if we are dealing with file://
-    if (!requestURI.authority && !util.isFileURI(requestURI)) {
-        return false;
-    }
-
-    if (!allowSub && refURI.host.toLowerCase() !== requestURI.host.toLowerCase()) {
-        return false;
-    }
-
-    // 3. Compare host - if subdomain is true, check for subdomain or match
-    if (allowSub && !util.endsWith(requestURI.host.toLowerCase(), "." + refURI.host.toLowerCase()) &&
-        requestURI.host.toLowerCase() !== refURI.host.toLowerCase()) {
-        return false;
-    }
-
-    // 4. Compare port
-    if (refURI.port && refURI.port !== requestURI.port) {
-        return false;
-    }
-
-    // 5.  Compare path+query
-    if (!util.startsWith(requestURI.path.toLowerCase(), refURI.path.toLowerCase()) && refURI.query !== "*") {
-        return false;
-    }
-
-    return true;
-}
-
-function _getAccessForPathAndQuery(folderAccess, path, query) {
-    if (folderAccess) {
-        if (!query) {
-            return folderAccess.getAccess(path);
-        } else {
-            return folderAccess.getAccess(path + "?" + query);
-        }
-    }
-
-    return null;
-}
-
-function AccessManager(config) {
-    config = config || require("../config");
-
-    this._accessList = config.accessList;
-    this._hasGlobalAccess = config.hasMultiAccess;
-    this._authorityCollection = null;
-    this._localAccess = null;
-}
-
-AccessManager.prototype.getFolderAccess = function (scheme, authority) {
-    var key = scheme + "://" + authority;
-    key = key.toLowerCase();
-
-    if (this._authorityCollection.hasOwnProperty(key)) {
-        return this._authorityCollection[key];
-    }
-
-    return null;
-};
-
-AccessManager.prototype.putFolderAccess = function (scheme, authority, folderAccess) {
-    var key = scheme + "://" + authority;
-    key = key.toLowerCase();
-    this._authorityCollection[key] = folderAccess;
-};
-
-AccessManager.prototype.initializeAuthCollection = function () {
-    var folderAccess, currentURI, that = this;
-
-    if (!this._authorityCollection) {
-        this._authorityCollection = {};
-
-        if (this._accessList) {
-            this._accessList.forEach(function (access) {
-                if (_isLocalAccess(access)) {
-                    that._localAccess = access;
-                } else {
-                    currentURI = util.parseUri(access.uri);
-
-                    // Check the authority collection to see if the authority item
-                    // we want already exists
-                    folderAccess = that.getFolderAccess(currentURI.scheme, currentURI.authority) || new WebFolderAccess();
-
-                    // Add folder path access to the authority item
-                    if (!currentURI.query) {
-                        folderAccess.addAccess(currentURI.path, access);
-                    } else {
-                        folderAccess.addAccess(currentURI.path + "?" + currentURI.query, access);
-                    }
-
-                    that.putFolderAccess(currentURI.scheme, currentURI.authority, folderAccess);
-                }
-            });
-        }
-    }
-};
-
-AccessManager.prototype.authorityCheck = function (port, scheme, authority) {
-    var originalAuthority = authority;
-
-    if (port) {
-        // If authority has a specific port, and the collection does not have an access matches
-        // the exact authority, strip port from authority to see if there is a match
-        if (!this.getFolderAccess(scheme, authority)) {
-            authority = authority.slice(0, authority.lastIndexOf(":"));
-            authority = this.authorityCheck("", scheme, authority);
-        }
-
-        //If no successful match was found without the port, reset the authority and try with it
-        if (!this.getFolderAccess(scheme, authority)) {
-            authority = originalAuthority;
-        }
-    }
-
-    if (authority.indexOf(".") === -1) {
-        // If authority is computer name, must have exact match in collection
-        if (!this.getFolderAccess(scheme, authority)) {
-            return "";
-        }
-
-        return authority;
-    }
-
-    while (authority && !this.getFolderAccess(scheme, authority)) {
-        if (authority.indexOf(".") === -1) {
-            return "";
-        }
-        authority = authority.substring(authority.indexOf(".") + 1);
-    }
-
-    return authority;
-};
-
-AccessManager.prototype.getFromFolderAccess = function (folderAccess, requestURI) {
-    var fetchedAccess = null,
-        scheme = requestURI.scheme,
-        authority = requestURI.authority,
-        path = requestURI.path,
-        query = requestURI.query,
-        prevAuthority;
-
-    if (!path) {
-        fetchedAccess = folderAccess.getAccess("/");
-    } else {
-        fetchedAccess = _getAccessForPathAndQuery(folderAccess, path, query);
-    }
-
-    // Make sure we've got the right one
-    while (!fetchedAccess || !_isMatch(fetchedAccess, requestURI)) {
-        // There was an auth url that matched, but didnt match the folder structure
-        // Try the next level up
-        prevAuthority = authority;
-        authority = authority.substring(authority.indexOf(".") + 1);
-        //If authority hasn't changed, then this loop will continue endlessly because nothing else has changed
-        //This will happen when an element has the same authority but no folder access.
-        if (prevAuthority === authority) {
-            return null;
-        }
-
-        // Check for an authority string that has an existing key
-        authority = this.authorityCheck(requestURI.port, scheme, authority);
-        if (!authority) {
-            return null;
-        }
-
-        // Retrieve access set for the specified authority
-        folderAccess = this.getFolderAccess(scheme, authority);
-
-        // Special case: no access element was found for a file protocol request.
-        // This is added since file protocol was allowed through the above check
-        if (scheme === "file" && !folderAccess) {
-            return null;
-        }
-
-        fetchedAccess = _getAccessForPathAndQuery(folderAccess, path, query);
-    }
-
-    return fetchedAccess;
-};
-
-AccessManager.prototype.getAccessByUrl = function (url) {
-    var requestURI = util.parseUri(url),
-        authority = requestURI.authority,
-        scheme = requestURI.scheme,
-        folderAccess,
-        fetchedAccess;
-
-    if (util.isAbsoluteURI(requestURI)) {
-        // Initialize authority collection if it does not yet exist
-        this.initializeAuthCollection();
-
-        // Start with the full authority path and check if an access exists for that path
-        // If it does not exist, remove the first section of the authority path and try again
-
-        // Check for an authority string that has an existing key
-        // Special case: Allow file, and local protocol to proceed without an authority
-        authority = this.authorityCheck(requestURI.port, scheme, authority);
-        if (!authority && !(scheme === "file" || scheme === "local" || scheme === "data")) {
-            return null;
-        }
-        // Retrieve access set for the specified authority
-        folderAccess = this.getFolderAccess(scheme, authority);
-
-        // Special case: no access was found for a file protocol request
-        // This is added since file protocol was allowed through the above check
-        if (scheme === "file" && !folderAccess) {
-            return null;
-        } else if (scheme === "local" && !folderAccess) {
-            // If no access element is found with local URI, use local access for this request
-            return this._localAccess;
-        } else if (scheme === "data") {
-            // Always allow data-uris
-            return true;
-        }
-
-        fetchedAccess = this.getFromFolderAccess(folderAccess, requestURI);
-
-        if (fetchedAccess) {
-            return fetchedAccess;
-        } else if (this._localAccess && _isMatch(this._localAccess, requestURI)) {
-            // If we cannot find a more specific access for this local URI, use local access
-            return this._localAccess;
-        } else if (folderAccess && _isMatch(folderAccess, requestURI)) {
-            return folderAccess;
-        }
-    }
-
-    return null;
-};
-
-AccessManager.prototype.hasGlobalAccess = function () {
-    return this._hasGlobalAccess;
-};
-
-function Whitelist(config) {
-    this._mgr = new AccessManager(config);
-}
-
-Whitelist.prototype.getFeaturesForUrl = function (url) {
-    var access = this._mgr.getAccessByUrl(url),
-        featureIds = [];
-
-    if (access && access.features) {
-        access.features.forEach(function (elem) {
-            featureIds.push(elem.id);
-        });
-    }
-
-    return featureIds;
-};
-
-Whitelist.prototype.isFeatureAllowed = function (url, feature) {
-    var features = this.getFeaturesForUrl(url);
-
-    return !!features && features.reduce(function (found, current) {
-        return found || current === feature;
-    }, false);
-};
-
-Whitelist.prototype.isAccessAllowed = function (url, isXHR) {
-    return (this._mgr.hasGlobalAccess() && !isXHR) || !!this._mgr.getAccessByUrl(url);
-};
-
-exports.Whitelist = Whitelist;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/server.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/server.js b/blackberry10/framework/lib/server.js
deleted file mode 100644
index 73e5d7c..0000000
--- a/blackberry10/framework/lib/server.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var DEFAULT_SERVICE = "default",
-    DEFAULT_ACTION = "exec";
-
-function rebuildRequest(req) {
-    var originalURL = req.params.service + "/" +
-            req.params.action +
-            (req.params.ext ? "/" + req.params.ext  : "") +
-            (req.params.method ? "/" + req.params.method : "") +
-            (req.params.args ? "?" + req.params.args : ""),
-        tokens = originalURL.split('/'),
-        //Handle the case where the method is multi-level
-        finalToken = (tokens[1] && tokens.length > 2) ? tokens.slice(1).join('/') : tokens[1],
-        args = null;
-
-    // set args
-    if (finalToken && finalToken.indexOf("?") >= 0) {
-        // Re-split args
-        args = finalToken.split("?")[1];
-    }
-
-    return {
-        params : {
-            service : DEFAULT_SERVICE,
-            action : DEFAULT_ACTION,
-            ext : tokens[0],
-            method : (finalToken && finalToken.indexOf("?") >= 0) ? finalToken.split("?")[0] : finalToken,
-            args : args
-        },
-        body : req.body,
-        origin : req.origin
-    };
-}
-
-function parseArgs(req) {
-    var args = null,
-        params;
-    // set args
-    if (req.params.args && typeof req.params.args === "string") {
-        // GET querystring to json
-        params = req.params.args.split("&");
-        if (params) {
-            args = {};
-            params.forEach(function (param) {
-                var parts = param.split("=");
-                args[parts[0]] = parts[1];
-            });
-        }
-    } else {
-        // POST body to json
-        if (req.body) {
-            args = JSON.parse(req.body);
-        }
-    }
-    req.params.args = args;
-}
-
-module.exports = {
-    handle: function (req, res, sourceWebview, config) {
-        try {
-            var pluginName = "lib/plugins/" + req.params.service,
-                plugin;
-
-            if (frameworkModules.indexOf(pluginName + ".js") === -1) {
-                pluginName = "lib/plugins/" + DEFAULT_SERVICE;
-                req = rebuildRequest(req);
-            }
-
-            parseArgs(req);
-
-            //Updating because some versions of node only work with relative paths
-            pluginName = pluginName.replace('lib', '.');
-
-            plugin = require("./utils").loadModule(pluginName);
-
-            plugin[req.params.action](req,
-            function (result) {
-                res.send(200, encodeURIComponent(JSON.stringify({
-                    code: 1,
-                    data: result,
-                    keepCallback: false
-                })));
-            },
-            function (error) {
-                res.send(200, encodeURIComponent(JSON.stringify({
-                    code: 9,
-                    data: error,
-                    keepCallback: false
-                })));
-            },
-            req.params.args,
-            {
-                "request": req,
-                "response": res,
-                "webview": sourceWebview,
-                "config": config
-            });
-        } catch (e) {
-            console.error(e);
-            res.send(404, "can't find the stuff");
-        }
-    }
-};


[26/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/strict.dtd
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/strict.dtd b/blackberry10/node_modules/elementtree/node_modules/sax/examples/strict.dtd
deleted file mode 100644
index b274559..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/strict.dtd
+++ /dev/null
@@ -1,870 +0,0 @@
-<!--
-    This is HTML 4.01 Strict DTD, which excludes the presentation 
-    attributes and elements that W3C expects to phase out as 
-    support for style sheets matures. Authors should use the Strict
-    DTD when possible, but may use the Transitional DTD when support
-    for presentation attribute and elements is required.
-    
-    HTML 4 includes mechanisms for style sheets, scripting,
-    embedding objects, improved support for right to left and mixed
-    direction text, and enhancements to forms for improved
-    accessibility for people with disabilities.
-
-          Draft: $Date: 1999/12/24 23:37:48 $
-
-          Authors:
-              Dave Raggett <ds...@w3.org>
-              Arnaud Le Hors <le...@w3.org>
-              Ian Jacobs <ij...@w3.org>
-
-    Further information about HTML 4.01 is available at:
-
-        http://www.w3.org/TR/1999/REC-html401-19991224
-
-
-    The HTML 4.01 specification includes additional
-    syntactic constraints that cannot be expressed within
-    the DTDs.
-
--->
-<!--
-    Typical usage:
-
-    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-            "http://www.w3.org/TR/html4/strict.dtd">
-    <html>
-    <head>
-    ...
-    </head>
-    <body>
-    ...
-    </body>
-    </html>
-
-    The URI used as a system identifier with the public identifier allows
-    the user agent to download the DTD and entity sets as needed.
-
-    The FPI for the Transitional HTML 4.01 DTD is:
-
-        "-//W3C//DTD HTML 4.01 Transitional//EN"
-
-    This version of the transitional DTD is:
-
-        http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd
-
-    If you are writing a document that includes frames, use 
-    the following FPI:
-
-        "-//W3C//DTD HTML 4.01 Frameset//EN"
-
-    This version of the frameset DTD is:
-
-        http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd
-
-    Use the following (relative) URIs to refer to 
-    the DTDs and entity definitions of this specification:
-
-    "strict.dtd"
-    "loose.dtd"
-    "frameset.dtd"
-    "HTMLlat1.ent"
-    "HTMLsymbol.ent"
-    "HTMLspecial.ent"
-
--->
-
-<!--================== Imported Names ====================================-->
-<!-- Feature Switch for frameset documents -->
-<!ENTITY % HTML.Frameset "IGNORE">
-
-<!ENTITY % ContentType "CDATA"
-    -- media type, as per [RFC2045]
-    -->
-
-<!ENTITY % ContentTypes "CDATA"
-    -- comma-separated list of media types, as per [RFC2045]
-    -->
-
-<!ENTITY % Charset "CDATA"
-    -- a character encoding, as per [RFC2045]
-    -->
-
-<!ENTITY % Charsets "CDATA"
-    -- a space-separated list of character encodings, as per [RFC2045]
-    -->
-
-<!ENTITY % LanguageCode "NAME"
-    -- a language code, as per [RFC1766]
-    -->
-
-<!ENTITY % Character "CDATA"
-    -- a single character from [ISO10646] 
-    -->
-
-<!ENTITY % LinkTypes "CDATA"
-    -- space-separated list of link types
-    -->
-
-<!ENTITY % MediaDesc "CDATA"
-    -- single or comma-separated list of media descriptors
-    -->
-
-<!ENTITY % URI "CDATA"
-    -- a Uniform Resource Identifier,
-       see [URI]
-    -->
-
-<!ENTITY % Datetime "CDATA" -- date and time information. ISO date format -->
-
-
-<!ENTITY % Script "CDATA" -- script expression -->
-
-<!ENTITY % StyleSheet "CDATA" -- style sheet data -->
-
-
-
-<!ENTITY % Text "CDATA">
-
-
-<!-- Parameter Entities -->
-
-<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements -->
-
-<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
-
-<!ENTITY % list "UL | OL">
-
-<!ENTITY % preformatted "PRE">
-
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin1//EN//HTML"
-   "HTMLlat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols//EN//HTML"
-   "HTMLsymbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special//EN//HTML"
-   "HTMLspecial.ent">
-%HTMLspecial;
-<!--=================== Generic Attributes ===============================-->
-
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED  -- document-wide unique id --
-  class       CDATA          #IMPLIED  -- space-separated list of classes --
-  style       %StyleSheet;   #IMPLIED  -- associated style info --
-  title       %Text;         #IMPLIED  -- advisory title --"
-  >
-
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED  -- language code --
-  dir         (ltr|rtl)      #IMPLIED  -- direction for weak/neutral text --"
-  >
-
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED  -- a pointer button was clicked --
-  ondblclick  %Script;       #IMPLIED  -- a pointer button was double clicked--
-  onmousedown %Script;       #IMPLIED  -- a pointer button was pressed down --
-  onmouseup   %Script;       #IMPLIED  -- a pointer button was released --
-  onmouseover %Script;       #IMPLIED  -- a pointer was moved onto --
-  onmousemove %Script;       #IMPLIED  -- a pointer was moved within --
-  onmouseout  %Script;       #IMPLIED  -- a pointer was moved away --
-  onkeypress  %Script;       #IMPLIED  -- a key was pressed and released --
-  onkeydown   %Script;       #IMPLIED  -- a key was pressed down --
-  onkeyup     %Script;       #IMPLIED  -- a key was released --"
-  >
-
-<!-- Reserved Feature Switch -->
-<!ENTITY % HTML.Reserved "IGNORE">
-
-<!-- The following attributes are reserved for possible future use -->
-<![ %HTML.Reserved; [
-<!ENTITY % reserved
- "datasrc     %URI;          #IMPLIED  -- a single or tabular Data Source --
-  datafld     CDATA          #IMPLIED  -- the property or column name --
-  dataformatas (plaintext|html) plaintext -- text or html --"
-  >
-]]>
-
-<!ENTITY % reserved "">
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-
-<!--=================== Text Markup ======================================-->
-
-<!ENTITY % fontstyle
- "TT | I | B | BIG | SMALL">
-
-<!ENTITY % phrase "EM | STRONG | DFN | CODE |
-                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
-
-<!ENTITY % special
-   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
-
-<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">
-
-<!-- %inline; covers inline or "text-level" elements -->
-<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
-
-<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
-<!ATTLIST (%fontstyle;|%phrase;)
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!ELEMENT (SUB|SUP) - - (%inline;)*    -- subscript, superscript -->
-<!ATTLIST (SUB|SUP)
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!ELEMENT SPAN - - (%inline;)*         -- generic language/style container -->
-<!ATTLIST SPAN
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  %reserved;			       -- reserved for possible future use --
-  >
-
-<!ELEMENT BDO - - (%inline;)*          -- I18N BiDi over-ride -->
-<!ATTLIST BDO
-  %coreattrs;                          -- id, class, style, title --
-  lang        %LanguageCode; #IMPLIED  -- language code --
-  dir         (ltr|rtl)      #REQUIRED -- directionality --
-  >
-
-
-<!ELEMENT BR - O EMPTY                 -- forced line break -->
-<!ATTLIST BR
-  %coreattrs;                          -- id, class, style, title --
-  >
-
-<!--================== HTML content models ===============================-->
-
-<!--
-    HTML has two basic content models:
-
-        %inline;     character level elements and text strings
-        %block;      block-like elements e.g. paragraphs and lists
--->
-
-<!ENTITY % block
-     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
-      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
-
-<!ENTITY % flow "%block; | %inline;">
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
-<!ATTLIST BODY
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  onload          %Script;   #IMPLIED  -- the document has been loaded --
-  onunload        %Script;   #IMPLIED  -- the document has been removed --
-  >
-
-<!ELEMENT ADDRESS - - (%inline;)* -- information on author -->
-<!ATTLIST ADDRESS
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->
-<!ATTLIST DIV
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  %reserved;                           -- reserved for possible future use --
-  >
-
-
-<!--================== The Anchor Element ================================-->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-<!ENTITY % Coords "CDATA" -- comma-separated list of lengths -->
-
-<!ELEMENT A - - (%inline;)* -(A)       -- anchor -->
-<!ATTLIST A
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
-  type        %ContentType;  #IMPLIED  -- advisory content type --
-  name        CDATA          #IMPLIED  -- named link end --
-  href        %URI;          #IMPLIED  -- URI for linked resource --
-  hreflang    %LanguageCode; #IMPLIED  -- language code --
-  rel         %LinkTypes;    #IMPLIED  -- forward link types --
-  rev         %LinkTypes;    #IMPLIED  -- reverse link types --
-  accesskey   %Character;    #IMPLIED  -- accessibility key character --
-  shape       %Shape;        rect      -- for use with client-side image maps --
-  coords      %Coords;       #IMPLIED  -- for use with client-side image maps --
-  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
-  onfocus     %Script;       #IMPLIED  -- the element got the focus --
-  onblur      %Script;       #IMPLIED  -- the element lost the focus --
-  >
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT MAP - - ((%block;) | AREA)+ -- client-side image map -->
-<!ATTLIST MAP
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  name        CDATA          #REQUIRED -- for reference by usemap --
-  >
-
-<!ELEMENT AREA - O EMPTY               -- client-side image map area -->
-<!ATTLIST AREA
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  shape       %Shape;        rect      -- controls interpretation of coords --
-  coords      %Coords;       #IMPLIED  -- comma-separated list of lengths --
-  href        %URI;          #IMPLIED  -- URI for linked resource --
-  nohref      (nohref)       #IMPLIED  -- this region has no action --
-  alt         %Text;         #REQUIRED -- short description --
-  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
-  accesskey   %Character;    #IMPLIED  -- accessibility key character --
-  onfocus     %Script;       #IMPLIED  -- the element got the focus --
-  onblur      %Script;       #IMPLIED  -- the element lost the focus --
-  >
-
-<!--================== The LINK Element ==================================-->
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the LINK element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel=stylesheet)
-   c) to make a link to a script (rel=script)
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a postscript or pdf version (rel=alternate media=print)
--->
-
-<!ELEMENT LINK - O EMPTY               -- a media-independent link -->
-<!ATTLIST LINK
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
-  href        %URI;          #IMPLIED  -- URI for linked resource --
-  hreflang    %LanguageCode; #IMPLIED  -- language code --
-  type        %ContentType;  #IMPLIED  -- advisory content type --
-  rel         %LinkTypes;    #IMPLIED  -- forward link types --
-  rev         %LinkTypes;    #IMPLIED  -- reverse link types --
-  media       %MediaDesc;    #IMPLIED  -- for rendering on these media --
-  >
-
-<!--=================== Images ===========================================-->
-
-<!-- Length defined in strict DTD for cellpadding/cellspacing -->
-<!ENTITY % Length "CDATA" -- nn for pixels or nn% for percentage length -->
-<!ENTITY % MultiLength "CDATA" -- pixel, percentage, or relative -->
-
-<![ %HTML.Frameset; [
-<!ENTITY % MultiLengths "CDATA" -- comma-separated list of MultiLength -->
-]]>
-
-<!ENTITY % Pixels "CDATA" -- integer representing length in pixels -->
-
-
-<!-- To avoid problems with text-only UAs as well as 
-   to make image content understandable and navigable 
-   to users of non-visual UAs, you need to provide
-   a description with ALT, and avoid server-side image maps -->
-<!ELEMENT IMG - O EMPTY                -- Embedded image -->
-<!ATTLIST IMG
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  src         %URI;          #REQUIRED -- URI of image to embed --
-  alt         %Text;         #REQUIRED -- short description --
-  longdesc    %URI;          #IMPLIED  -- link to long description
-                                          (complements alt) --
-  name        CDATA          #IMPLIED  -- name of image for scripting --
-  height      %Length;       #IMPLIED  -- override height --
-  width       %Length;       #IMPLIED  -- override width --
-  usemap      %URI;          #IMPLIED  -- use client-side image map --
-  ismap       (ismap)        #IMPLIED  -- use server-side image map --
-  >
-
-<!-- USEMAP points to a MAP element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--==================== OBJECT ======================================-->
-<!--
-  OBJECT is used to embed objects as part of HTML pages 
-  PARAM elements should precede other content. SGML mixed content
-  model technicality precludes specifying this formally ...
--->
-
-<!ELEMENT OBJECT - - (PARAM | %flow;)*
- -- generic embedded object -->
-<!ATTLIST OBJECT
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  declare     (declare)      #IMPLIED  -- declare but don't instantiate flag --
-  classid     %URI;          #IMPLIED  -- identifies an implementation --
-  codebase    %URI;          #IMPLIED  -- base URI for classid, data, archive--
-  data        %URI;          #IMPLIED  -- reference to object's data --
-  type        %ContentType;  #IMPLIED  -- content type for data --
-  codetype    %ContentType;  #IMPLIED  -- content type for code --
-  archive     CDATA          #IMPLIED  -- space-separated list of URIs --
-  standby     %Text;         #IMPLIED  -- message to show while loading --
-  height      %Length;       #IMPLIED  -- override height --
-  width       %Length;       #IMPLIED  -- override width --
-  usemap      %URI;          #IMPLIED  -- use client-side image map --
-  name        CDATA          #IMPLIED  -- submit as part of form --
-  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
-  %reserved;                           -- reserved for possible future use --
-  >
-
-<!ELEMENT PARAM - O EMPTY              -- named property value -->
-<!ATTLIST PARAM
-  id          ID             #IMPLIED  -- document-wide unique id --
-  name        CDATA          #REQUIRED -- property name --
-  value       CDATA          #IMPLIED  -- property value --
-  valuetype   (DATA|REF|OBJECT) DATA   -- How to interpret value --
-  type        %ContentType;  #IMPLIED  -- content type for value
-                                          when valuetype=ref --
-  >
-
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT HR - O EMPTY -- horizontal rule -->
-<!ATTLIST HR
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT P - O (%inline;)*            -- paragraph -->
-<!ATTLIST P
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from H1 (the most important)
-  to H6 (the least important).
--->
-
-<!ELEMENT (%heading;)  - - (%inline;)* -- heading -->
-<!ATTLIST (%heading;)
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- excludes markup for images and changes in font size -->
-<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">
-
-<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- preformatted text -->
-<!ATTLIST PRE
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!--===================== Inline Quotes ==================================-->
-
-<!ELEMENT Q - - (%inline;)*            -- short inline quotation -->
-<!ATTLIST Q
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  cite        %URI;          #IMPLIED  -- URI for source document or msg --
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- long quotation -->
-<!ATTLIST BLOCKQUOTE
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  cite        %URI;          #IMPLIED  -- URI for source document or msg --
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-
-<!-- INS/DEL are handled by inclusion on BODY -->
-<!ELEMENT (INS|DEL) - - (%flow;)*      -- inserted text, deleted text -->
-<!ATTLIST (INS|DEL)
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  cite        %URI;          #IMPLIED  -- info on reason for change --
-  datetime    %Datetime;     #IMPLIED  -- date and time of change --
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- definition lists - DT for term, DD for its definition -->
-
-<!ELEMENT DL - - (DT|DD)+              -- definition list -->
-<!ATTLIST DL
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!ELEMENT DT - O (%inline;)*           -- definition term -->
-<!ELEMENT DD - O (%flow;)*             -- definition description -->
-<!ATTLIST (DT|DD)
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-
-<!ELEMENT OL - - (LI)+                 -- ordered list -->
-<!ATTLIST OL
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!-- Unordered Lists (UL) bullet styles -->
-<!ELEMENT UL - - (LI)+                 -- unordered list -->
-<!ATTLIST UL
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-
-
-<!ELEMENT LI - O (%flow;)*             -- list item -->
-<!ATTLIST LI
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
-<!ATTLIST FORM
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  action      %URI;          #REQUIRED -- server-side form handler --
-  method      (GET|POST)     GET       -- HTTP method used to submit the form--
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
-  name        CDATA          #IMPLIED  -- name of form for scripting --
-  onsubmit    %Script;       #IMPLIED  -- the form was submitted --
-  onreset     %Script;       #IMPLIED  -- the form was reset --
-  accept-charset %Charsets;  #IMPLIED  -- list of supported charsets --
-  >
-
-<!-- Each label must not contain more than ONE field -->
-<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text -->
-<!ATTLIST LABEL
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  for         IDREF          #IMPLIED  -- matches field ID value --
-  accesskey   %Character;    #IMPLIED  -- accessibility key character --
-  onfocus     %Script;       #IMPLIED  -- the element got the focus --
-  onblur      %Script;       #IMPLIED  -- the element lost the focus --
-  >
-
-<!ENTITY % InputType
-  "(TEXT | PASSWORD | CHECKBOX |
-    RADIO | SUBMIT | RESET |
-    FILE | HIDDEN | IMAGE | BUTTON)"
-   >
-
-<!-- attribute name required for all but submit and reset -->
-<!ELEMENT INPUT - O EMPTY              -- form control -->
-<!ATTLIST INPUT
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  type        %InputType;    TEXT      -- what kind of widget is needed --
-  name        CDATA          #IMPLIED  -- submit as part of form --
-  value       CDATA          #IMPLIED  -- Specify for radio buttons and checkboxes --
-  checked     (checked)      #IMPLIED  -- for radio buttons and check boxes --
-  disabled    (disabled)     #IMPLIED  -- unavailable in this context --
-  readonly    (readonly)     #IMPLIED  -- for text and passwd --
-  size        CDATA          #IMPLIED  -- specific to each type of field --
-  maxlength   NUMBER         #IMPLIED  -- max chars for text fields --
-  src         %URI;          #IMPLIED  -- for fields with images --
-  alt         CDATA          #IMPLIED  -- short description --
-  usemap      %URI;          #IMPLIED  -- use client-side image map --
-  ismap       (ismap)        #IMPLIED  -- use server-side image map --
-  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
-  accesskey   %Character;    #IMPLIED  -- accessibility key character --
-  onfocus     %Script;       #IMPLIED  -- the element got the focus --
-  onblur      %Script;       #IMPLIED  -- the element lost the focus --
-  onselect    %Script;       #IMPLIED  -- some text was selected --
-  onchange    %Script;       #IMPLIED  -- the element value was changed --
-  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
-  %reserved;                           -- reserved for possible future use --
-  >
-
-<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- option selector -->
-<!ATTLIST SELECT
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  name        CDATA          #IMPLIED  -- field name --
-  size        NUMBER         #IMPLIED  -- rows visible --
-  multiple    (multiple)     #IMPLIED  -- default is single selection --
-  disabled    (disabled)     #IMPLIED  -- unavailable in this context --
-  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
-  onfocus     %Script;       #IMPLIED  -- the element got the focus --
-  onblur      %Script;       #IMPLIED  -- the element lost the focus --
-  onchange    %Script;       #IMPLIED  -- the element value was changed --
-  %reserved;                           -- reserved for possible future use --
-  >
-
-<!ELEMENT OPTGROUP - - (OPTION)+ -- option group -->
-<!ATTLIST OPTGROUP
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  disabled    (disabled)     #IMPLIED  -- unavailable in this context --
-  label       %Text;         #REQUIRED -- for use in hierarchical menus --
-  >
-
-<!ELEMENT OPTION - O (#PCDATA)         -- selectable choice -->
-<!ATTLIST OPTION
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED  -- unavailable in this context --
-  label       %Text;         #IMPLIED  -- for use in hierarchical menus --
-  value       CDATA          #IMPLIED  -- defaults to element content --
-  >
-
-<!ELEMENT TEXTAREA - - (#PCDATA)       -- multi-line text field -->
-<!ATTLIST TEXTAREA
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  name        CDATA          #IMPLIED
-  rows        NUMBER         #REQUIRED
-  cols        NUMBER         #REQUIRED
-  disabled    (disabled)     #IMPLIED  -- unavailable in this context --
-  readonly    (readonly)     #IMPLIED
-  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
-  accesskey   %Character;    #IMPLIED  -- accessibility key character --
-  onfocus     %Script;       #IMPLIED  -- the element got the focus --
-  onblur      %Script;       #IMPLIED  -- the element lost the focus --
-  onselect    %Script;       #IMPLIED  -- some text was selected --
-  onchange    %Script;       #IMPLIED  -- the element value was changed --
-  %reserved;                           -- reserved for possible future use --
-  >
-
-<!--
-  #PCDATA is to solve the mixed content problem,
-  per specification only whitespace is allowed there!
- -->
-<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- form control group -->
-<!ATTLIST FIELDSET
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!ELEMENT LEGEND - - (%inline;)*       -- fieldset legend -->
-
-<!ATTLIST LEGEND
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  accesskey   %Character;    #IMPLIED  -- accessibility key character --
-  >
-
-<!ELEMENT BUTTON - -
-     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
-     -- push button -->
-<!ATTLIST BUTTON
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED  -- sent to server when submitted --
-  type        (button|submit|reset) submit -- for use as form button --
-  disabled    (disabled)     #IMPLIED  -- unavailable in this context --
-  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
-  accesskey   %Character;    #IMPLIED  -- accessibility key character --
-  onfocus     %Script;       #IMPLIED  -- the element got the focus --
-  onblur      %Script;       #IMPLIED  -- the element lost the focus --
-  %reserved;                           -- reserved for possible future use --
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The BORDER attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The FRAME attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the VALIGN attribute.
-
- The value "border" is included for backwards compatibility with
- <TABLE BORDER> which yields frame=border and border=implied
- For <TABLE BORDER=1> you get border=1 and frame=implied. In this
- case, it is appropriate to treat this as frame=border for backwards
- compatibility with deployed browsers.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The RULES attribute defines which rules to draw between cells:
-
- If RULES is absent then assume:
-     "none" if BORDER is absent or BORDER=0 otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents -->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED  -- alignment char, e.g. char=':' --
-   charoff    %Length;       #IMPLIED  -- offset for alignment char --"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT TABLE - -
-     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
-<!ELEMENT CAPTION  - - (%inline;)*     -- table caption -->
-<!ELEMENT THEAD    - O (TR)+           -- table header -->
-<!ELEMENT TFOOT    - O (TR)+           -- table footer -->
-<!ELEMENT TBODY    O O (TR)+           -- table body -->
-<!ELEMENT COLGROUP - O (COL)*          -- table column group -->
-<!ELEMENT COL      - O EMPTY           -- table column -->
-<!ELEMENT TR       - O (TH|TD)+        -- table row -->
-<!ELEMENT (TH|TD)  - O (%flow;)*       -- table header cell, table data cell-->
-
-<!ATTLIST TABLE                        -- table element --
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  summary     %Text;         #IMPLIED  -- purpose/structure for speech output--
-  width       %Length;       #IMPLIED  -- table width --
-  border      %Pixels;       #IMPLIED  -- controls frame width around table --
-  frame       %TFrame;       #IMPLIED  -- which parts of frame to render --
-  rules       %TRules;       #IMPLIED  -- rulings between rows and cols --
-  cellspacing %Length;       #IMPLIED  -- spacing between cells --
-  cellpadding %Length;       #IMPLIED  -- spacing within cells --
-  %reserved;                           -- reserved for possible future use --
-  datapagesize CDATA         #IMPLIED  -- reserved for possible future use --
-  >
-
-
-<!ATTLIST CAPTION
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!--
-COLGROUP groups a set of COL elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST COLGROUP
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  span        NUMBER         1         -- default number of columns in group --
-  width       %MultiLength;  #IMPLIED  -- default width for enclosed COLs --
-  %cellhalign;                         -- horizontal alignment in cells --
-  %cellvalign;                         -- vertical alignment in cells --
-  >
-
-<!--
- COL elements define the alignment properties for cells in
- one or more columns.
-
- The WIDTH attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The SPAN attribute causes the attributes of one
- COL element to apply to more than one column.
--->
-<!ATTLIST COL                          -- column groups and properties --
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  span        NUMBER         1         -- COL attributes affect N columns --
-  width       %MultiLength;  #IMPLIED  -- column width specification --
-  %cellhalign;                         -- horizontal alignment in cells --
-  %cellvalign;                         -- vertical alignment in cells --
-  >
-
-<!--
-    Use THEAD to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    TBODY sections are rendered in scrolling panel.
-
-    Use TFOOT to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    TBODY sections are rendered in scrolling panel.
-
-    Use multiple TBODY sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST (THEAD|TBODY|TFOOT)          -- table section --
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  %cellhalign;                         -- horizontal alignment in cells --
-  %cellvalign;                         -- vertical alignment in cells --
-  >
-
-<!ATTLIST TR                           -- table row --
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  %cellhalign;                         -- horizontal alignment in cells --
-  %cellvalign;                         -- vertical alignment in cells --
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- TH is for headers, TD for data, but for cells acting as both use TD -->
-<!ATTLIST (TH|TD)                      -- header or data cell --
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  abbr        %Text;         #IMPLIED  -- abbreviation for header cell --
-  axis        CDATA          #IMPLIED  -- comma-separated list of related headers--
-  headers     IDREFS         #IMPLIED  -- list of id's for header cells --
-  scope       %Scope;        #IMPLIED  -- scope covered by header cells --
-  rowspan     NUMBER         1         -- number of rows spanned by cell --
-  colspan     NUMBER         1         -- number of cols spanned by cell --
-  %cellhalign;                         -- horizontal alignment in cells --
-  %cellvalign;                         -- vertical alignment in cells --
-  >
-
-
-<!--================ Document Head =======================================-->
-<!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" -->
-<!ENTITY % head.content "TITLE & BASE?">
-
-<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
-<!ATTLIST HEAD
-  %i18n;                               -- lang, dir --
-  profile     %URI;          #IMPLIED  -- named dictionary of meta info --
-  >
-
-<!-- The TITLE element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- document title -->
-<!ATTLIST TITLE %i18n>
-
-
-<!ELEMENT BASE - O EMPTY               -- document base URI -->
-<!ATTLIST BASE
-  href        %URI;          #REQUIRED -- URI that acts as base URI --
-  >
-
-<!ELEMENT META - O EMPTY               -- generic metainformation -->
-<!ATTLIST META
-  %i18n;                               -- lang, dir, for use with content --
-  http-equiv  NAME           #IMPLIED  -- HTTP response header name  --
-  name        NAME           #IMPLIED  -- metainformation name --
-  content     CDATA          #REQUIRED -- associated information --
-  scheme      CDATA          #IMPLIED  -- select form of content --
-  >
-
-<!ELEMENT STYLE - - %StyleSheet        -- style info -->
-<!ATTLIST STYLE
-  %i18n;                               -- lang, dir, for use with title --
-  type        %ContentType;  #REQUIRED -- content type of style language --
-  media       %MediaDesc;    #IMPLIED  -- designed for use with these media --
-  title       %Text;         #IMPLIED  -- advisory title --
-  >
-
-<!ELEMENT SCRIPT - - %Script;          -- script statements -->
-<!ATTLIST SCRIPT
-  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
-  type        %ContentType;  #REQUIRED -- content type of script language --
-  src         %URI;          #IMPLIED  -- URI for an external script --
-  defer       (defer)        #IMPLIED  -- UA may defer execution of script --
-  event       CDATA          #IMPLIED  -- reserved for possible future use --
-  for         %URI;          #IMPLIED  -- reserved for possible future use --
-  >
-
-<!ELEMENT NOSCRIPT - - (%block;)+
-  -- alternate content container for non script-based rendering -->
-<!ATTLIST NOSCRIPT
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  >
-
-<!--================ Document Structure ==================================-->
-<!ENTITY % html.content "HEAD, BODY">
-
-<!ELEMENT HTML O O (%html.content;)    -- document root element -->
-<!ATTLIST HTML
-  %i18n;                               -- lang, dir --
-  >

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/switch-bench.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/switch-bench.js b/blackberry10/node_modules/elementtree/node_modules/sax/examples/switch-bench.js
deleted file mode 100755
index 4d3cf14..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/switch-bench.js
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/local/bin/node-bench
-
-var Promise = require("events").Promise;
-
-var xml = require("posix").cat("test.xml").wait(),
-  path = require("path"),
-  sax = require("../lib/sax"),
-  saxT = require("../lib/sax-trampoline"),
-  
-  parser = sax.parser(false, {trim:true}),
-  parserT = saxT.parser(false, {trim:true}),
-  
-  sys = require("sys");
-
-
-var count = exports.stepsPerLap = 500,
-  l = xml.length,
-  runs = 0;
-exports.countPerLap = 1000;
-exports.compare = {
-  "switch" : function () {
-    // sys.debug("switch runs: "+runs++);
-    // for (var x = 0; x < l; x += 1000) {
-    //   parser.write(xml.substr(x, 1000))
-    // }
-    // for (var i = 0; i < count; i ++) {
-      parser.write(xml);
-      parser.close();
-    // }
-    // done();
-  },
-  trampoline : function () {
-    // sys.debug("trampoline runs: "+runs++);
-    // for (var x = 0; x < l; x += 1000) {
-    //   parserT.write(xml.substr(x, 1000))
-    // }
-    // for (var i = 0; i < count; i ++) {
-      parserT.write(xml);
-      parserT.close();
-    // }
-    // done();
-  },
-};
-
-sys.debug("rock and roll...");
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.html b/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.html
deleted file mode 100644
index 61f8f1a..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-
-<html lang="en">
-<head>
-	<title>testing the parser</title>
-</head>
-<body>
-
-<p>hello
-
-<script>
-
-</script>
-</body>
-</html>


[42/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/bar-builder.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/bar-builder.js b/blackberry10/bin/templates/project/cordova/lib/bar-builder.js
deleted file mode 100644
index cfd029a..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/bar-builder.js
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var jWorkflow = require("jWorkflow"),
-    wrench = require("wrench"),
-    nativePkgr = require("./native-packager"),
-    fileManager = require("./file-manager"),
-    localize = require("./localize"),
-    logger = require("./logger"),
-    signingHelper = require("./signing-helper"),
-    targetIdx = 0;
-
-function buildTarget(previous, baton) {
-    baton.take();
-
-    var target = this.session.targets[targetIdx++],
-        session = this.session,
-        config = this.config;
-
-    //Create output folder
-    wrench.mkdirSyncRecursive(session.outputDir + "/" + target);
-
-    //Copy resources (could be lost if copying assets from other project)
-    fileManager.copyNative(this.session, target);
-    //Generate user config here to overwrite default
-    fileManager.generateUserConfig(session, config);
-
-    if (config.packageCordovaJs) {
-        //Package cordova.js to chrome folder
-        fileManager.copyWebworks(this.session);
-    }
-
-    //Generate frameworkModules.js (this needs to be done AFTER all files have been copied)
-    fileManager.generateFrameworkModulesJS(session);
-
-    //Call native-packager module for target
-    nativePkgr.exec(session, target, config, function (code) {
-        if (code !== 0) {
-            logger.error(localize.translate("EXCEPTION_NATIVEPACKAGER"));
-            baton.pass(code);
-        } else {
-            if (target === "device" && session.isSigningRequired(config)) {
-                signingHelper.execSigner(session, target, function (error) {
-                    if (error && error.code) {
-                        baton.pass(error.code);
-                    } else {
-                        //Pass 0 to signify success
-                        baton.pass(0);
-                    }
-                });
-            } else {
-                baton.pass(code);
-            }
-        }
-    });
-}
-
-function buildWorkflow(session, context) {
-    if (session.targets && session.targets.length > 0) {
-        var order;
-
-        session.targets.forEach(function (target, idx) {
-            if (idx === 0) {
-                order = jWorkflow.order(buildTarget, context);
-            } else {
-                order = order.andThen(buildTarget, context);
-            }
-        });
-
-        return order;
-    } else {
-        logger.debug("NOTHING TO BUILD, NO TARGETS");
-    }
-}
-
-module.exports = {
-    build: function (session, config, callback) {
-        var context = {
-                session: session,
-                config: config
-            },
-            workflow = buildWorkflow(session, context);
-
-        if (workflow) {
-            workflow.start({
-                "callback": callback
-            });
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/bar-conf.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/bar-conf.js b/blackberry10/bin/templates/project/cordova/lib/bar-conf.js
deleted file mode 100644
index 857875b..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/bar-conf.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var self = {};
-
-self.ROOT = "";
-self.CHROME = self.ROOT + "/chrome";
-self.LIB = self.CHROME + "/lib";
-self.EXT = self.CHROME + "/plugin";
-self.UI = self.ROOT + "/ui-resources";
-self.PLUGINS = self.ROOT + "/plugins";
-self.JNEXT_PLUGINS = self.ROOT + "/plugins/jnext";
-
-module.exports = self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/bb10-ndk-version.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/bb10-ndk-version.js b/blackberry10/bin/templates/project/cordova/lib/bb10-ndk-version.js
deleted file mode 100755
index 760ae70..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/bb10-ndk-version.js
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env node
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-var bbtools = process.env.CORDOVA_BBTOOLS,
-    reg = /host_\d+_\d+/g,
-    results;
-
-if (reg.test(bbtools)) {
-    results = bbtools.match(reg);
-    console.log(results[0].split('host_')[1].replace('_', '.'));
-} else {
-    return new Error('Unable to find the blackberry ndk on your path.');
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/bbwpignore.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/bbwpignore.js b/blackberry10/bin/templates/project/cordova/lib/bbwpignore.js
deleted file mode 100755
index 29c6399..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/bbwpignore.js
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var fs = require("fs"),
-    path = require("path"),
-    BBWPignore;
-
-function getDirectory(file) {
-    if (file.match("/$")) {
-        return file;
-    } else if (file.indexOf("/") === -1) {
-        return "";
-    } else {
-        return file.substring(0, file.lastIndexOf("/"));
-    }
-}
-
-function trim(str) {
-    return str.replace(/^\s+|\s+$/g, "");
-}
-
-BBWPignore = function (bbwpIgnoreFile, filesToMatch) {
-    var comments = [],
-        directories = [],
-        wildcardEntries = [],
-        files = [],
-        split,
-        matched = [],
-        i,
-        temparr,
-        tempFiles = [];
-    temparr = fs.readFileSync(bbwpIgnoreFile, "utf-8").split('\n');
-
-    //switch all the paths to relative, so if someone has passed absolute paths convert them to relative to .bbwpignore
-    filesToMatch.forEach(function (file) {
-        if (file === path.resolve(file)) { //if path is absolute
-            tempFiles.push(path.relative(path.dirname(bbwpIgnoreFile), file));
-        } else {
-            tempFiles.push(file);
-        }
-    });
-    filesToMatch = tempFiles;
-
-    //run through all the patterns in the bbwpignore and put them in appropriate arrays
-    for (i = 0; i < temparr.length; i++) {
-        temparr[i] = trim(temparr[i]);
-        if (temparr[i] !== "") {
-            if (temparr[i].match("^#")) {
-                comments.push(temparr[i]);
-            } else if (temparr[i].match("^/") && temparr[i].match("/$")) {
-                directories.push(temparr[i]);
-            } else if (temparr[i].indexOf("*") !== -1) {
-                split = temparr[i].split("/");
-                if (split[split.length - 1].indexOf("*") !== -1) { // only wildcards in the file name are supported, not in directory names
-                    wildcardEntries.push(temparr[i]);
-                } else {
-                    files.push(temparr[i]);
-                }
-            } else {
-                files.push(temparr[i]);
-            }
-        }
-    }
-
-    //run through all the files and check it against each of the patterns collected earlier
-    filesToMatch.forEach(function (fileToMatch) {
-        var directory,
-            dirOrig = getDirectory(fileToMatch),
-            isMatch = false;
-        //match directories
-        directory = "/" + dirOrig + "/";
-        if (directories.indexOf(directory) !== -1) {
-            matched.push(fileToMatch);
-            //add the directory to the list as well but only check
-            if (matched.indexOf("/" + dirOrig) === -1) {
-                matched.push("/" + dirOrig);
-            }
-            isMatch = true;
-        } else {
-            //handle special case when match patterns begin with /
-            //match wildCards
-            wildcardEntries.forEach(function (wildcard) {
-                if (wildcard.match("^/")) { // special case looking for exact match
-                    wildcard = "^" + wildcard.replace("*", "[^\/]*");
-                    if (("/" + fileToMatch).match(wildcard)) {
-                        matched.push(fileToMatch);
-                        isMatch = true;
-                    }
-                } else {
-                    wildcard = wildcard.replace("*", "[^\/]*");
-                    if (fileToMatch.match(wildcard)) {
-                        matched.push(fileToMatch);
-                        isMatch = true;
-                    }
-                }
-            });
-            if (!isMatch) { //must be a file
-                files.forEach(function (file) {
-                    if (file.match("^/")) { // special case looking for exact match
-                        if (file === ("/" + fileToMatch)) {
-                            matched.push(fileToMatch);
-                            isMatch = true;
-                        }
-                    } else if (fileToMatch.match(file)) {
-                        matched.push(fileToMatch);
-                        isMatch = true;
-                    }
-                });
-
-            }
-        }
-    });
-    this.matchedFiles = matched;
-};
-
-module.exports = BBWPignore;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/build.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/build.js b/blackberry10/bin/templates/project/cordova/lib/build.js
deleted file mode 100755
index ab38964..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/build.js
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/env node
-
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    exit = require("exit"),
-    command = require("commander"),
-    os = require("os"),
-    utils = require("./utils"),
-    signingHelper = require("./signing-helper"),
-    bbProperties = utils.getProperties(),
-    bbwpArgv = [
-        process.argv[0],
-        path.resolve(path.join(__dirname, process.argv[1])),
-        path.resolve(path.join(__dirname, "..", "..", "www")),
-        "-o",
-        path.resolve(path.join(__dirname, "..", "..", "build"))
-    ],
-    async = require("async"),
-    childProcess = require("child_process"),
-    pkgrUtils = require("./packager-utils"),
-    session = require("./session"),
-    ERROR_VALUE = 2,
-    commandStr;
-
-function copyArgIfExists(arg) {
-    if (command[arg]) {
-        bbwpArgv.push("--" + arg);
-        bbwpArgv.push(command[arg]);
-    }
-}
-
-command
-    .usage('[--debug | --release] [--no-query] [-k | --keystorepass] [-b <number> | --buildId <number>] [-p <json> | --params <json>] [-l <level> | --loglevel <level>] [--web-inspector] [--no-signing]')
-    .option('--debug', 'build in debug mode.')
-    .option('--release', 'build in release mode. This will sign the resulting bar.')
-    .option('--no-query', 'fail if a password is needed and one isn\'t available')
-    .option('-k, --keystorepass <password>', 'signing key password')
-    .option('-b, --buildId <num>', 'specifies the build number for signing (typically incremented from previous signing).')
-    .option('-p, --params <params JSON file>', 'specifies additional parameters to pass to downstream tools.')
-    .option('-l, --loglevel <loglevel>', 'set the logging level (error, warn, verbose)')
-    .option('--web-inspector', 'enables webinspector. Enabled by default in debug mode.).')
-    .option('--no-signing', 'when building in release mode, this will skip signing');
-
-try {
-    command.parse(process.argv);
-
-    if (command.debug && command.release) {
-        console.error("Invalid build command: cannot specify both debug and release parameters.");
-        console.log(command.helpInformation());
-        exit(ERROR_VALUE);
-    }
-
-    signingHelper.warn();
-
-    utils.series(
-        [
-            function clean(done) {
-                var cmd = utils.isWindows() ? "clean" : "./clean",
-                    args = [],
-                    opts = { "cwd": path.normalize(__dirname + "/..") };
-
-                utils.exec(cmd, args, opts, done);
-            },
-            function releaseBuild(allDone) {
-                var childTasks = [],
-                    keystorepass = session.getKeyStorePass(command),
-                    err;
-
-                if (command.release) {
-                    copyArgIfExists("buildId");
-                    if (command.signing) {
-                        //Note: Packager refers to signing password as "password" not "keystorepass"
-                        bbwpArgv.push("--password");
-                        if (keystorepass) {
-                            bbwpArgv.push(keystorepass);
-                        } else if (command.query) {
-                            childTasks.push(utils.prompt.bind(this, {description: "Please enter your keystore password: ", hidden: true}));
-                            childTasks.push(function (password, done) {
-                                bbwpArgv.push(password);
-                                done();
-                            });
-                        } else {
-                            err = "No signing password provided. You can omit --no-query, use --no-signing, use --keystorepass, or enter a value for 'keystorepass' in " + pkgrUtils.homedir() + "/.cordova/blackberry10.json";
-                        }
-                    }
-                }
-
-                async.waterfall(childTasks, function (error) { allDone(error || err); });
-            },
-            function build(done) {
-                //enable webinspector in debug mode or if --webinspector was provided
-                if (!command.release || command.webInspector) {
-                    bbwpArgv.push("-d");
-                }
-
-                copyArgIfExists("params");
-                copyArgIfExists("loglevel");
-
-                //Overwrite process.argv, before calling packager
-                process.argv = bbwpArgv;
-
-                //Delete cached commander object. It will conflict with the packagers commander
-                delete require.cache[require.resolve("commander")];
-                delete require.cache[require.resolve("commander/lib/commander")];
-
-                require("./packager").start(done);
-            }
-        ]
-    );
-} catch (e) {
-    console.error(os.EOL + e);
-    exit(ERROR_VALUE);
-}
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/clean.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/clean.js b/blackberry10/bin/templates/project/cordova/lib/clean.js
deleted file mode 100644
index c93cff1..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/clean.js
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env node
-
-/*
- *  Copyright 2013 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var wrench = require('wrench'),
-    path = require("path"),
-    buildPath = path.normalize(__dirname + "/../../build/");
-
-wrench.rmdirSyncRecursive(buildPath, true);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/cmdline.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/cmdline.js b/blackberry10/bin/templates/project/cordova/lib/cmdline.js
deleted file mode 100644
index b05da0f..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/cmdline.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var command = require("commander"),
-    logger = require("./logger"),
-    localize = require("./localize");
-
-command
-    .version('1.0.0.0')
-    .usage('[drive:][path]archive [-s [dir]] [[ -g genpassword] [-buildId num]] [-o dir] [-d] [-p paramsjsonfile]')
-    .option('-s, --source [dir]', 'Save source. The default behavior is to not save the source files. If dir is specified then creates dir\\src\\ directory structure. If no dir specified then the path of archive is assumed')
-    .option('-g, --password <password>', 'Signing key password')
-    .option('-buildId <num>', '[deprecated] Use --buildId.')
-    .option('-b, --buildId <num>', 'Specifies the build number for signing (typically incremented from previous signing).')
-    .option('-o, --output <dir>', 'Redirects output file location to dir. If both -o and dir are not specified then the path of archive is assumed')
-    .option('-d, --debug', 'Allows use of not signed build on device by utilizing debug token and enables Web Inspector.')
-    .option('-p, --params <params JSON file>', 'Specifies additional parameters to pass to downstream tools.')
-    .option('--appdesc <filepath>', 'Optionally specifies the path to the bar descriptor file (bar-descriptor.xml). For internal use only.')
-    .option('-v, --verbose', 'Turn on verbose messages')
-    .option('-l, --loglevel <loglevel>', 'set the logging level (error, warn, verbose)');
-
-function parseArgs(args) {
-    var option,
-        i;
-    if (!args[2]) {
-        //no args passed into [node bbwp.js], show the help information
-        args.push("-h");
-    }
-
-    //Handle deprecated option -buildId
-    for (i = 0; i < args.length; i++) {
-        if (args[i] === "-buildId") {
-            args[i] = "--buildId";
-        }
-    }
-    
-    command.parse(args);
-
-    //Check for any invalid command line args
-    for (i = 0; i < args.length; i++) {
-        //Remove leading dashes if any
-        option = args[i].substring(2);
-        if (args[i].indexOf("--") === 0 && !command[option]) {
-            throw localize.translate("EXCEPTION_CMDLINE_ARG_INVALID", args[i]);
-        }
-    }
-
-    return this;
-}
-
-module.exports = {
-    "commander": command,
-    "parse": parseArgs
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/conf.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/conf.js b/blackberry10/bin/templates/project/cordova/lib/conf.js
deleted file mode 100644
index 019a84e..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/conf.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    utils = require("./utils"),
-    fs = require("fs");
-
-function getToolsDir() {
-    if (process.env && process.env.QNX_HOST) {
-        var bbndkDir = path.join(process.env.QNX_HOST, "usr");
-        if (fs.existsSync(bbndkDir)) {
-            //BBNDK exists on path, use its tools
-            return bbndkDir;
-        }
-    }
-}
-
-module.exports = {
-    ROOT: path.normalize(__dirname + "/../framework"),
-    PROJECT_ROOT: path.normalize(__dirname + "/../../"),
-    NATIVE: path.normalize(__dirname + "/../../native"),
-    JNEXT_AUTH: path.normalize(__dirname + "/../../native/plugins/jnext/auth.txt"),
-    BIN: path.normalize(__dirname + "/../framework/bin"),
-    LIB: path.normalize(__dirname + "/../framework/lib"),
-    EXT: path.normalize(__dirname + "/../../plugins"),
-    UI: path.normalize(__dirname + "/../framework/ui-resources"),
-    DEPENDENCIES: path.normalize(__dirname + "/../framework/dependencies"),
-    DEPENDENCIES_BOOTSTRAP: path.normalize(__dirname + "/../framework/bootstrap"),
-    DEPENDENCIES_TOOLS: getToolsDir(),
-    DEPENDENCIES_WWE: path.normalize(__dirname + "/../dependencies/%s-wwe"),
-    DEBUG_TOKEN: path.normalize(path.join(utils.getCordovaDir(), "blackberry10debugtoken.bar")),
-    DEFAULT_ICON: path.normalize(__dirname + "/../default-icon.png"),
-    BAR_DESCRIPTOR: "bar-descriptor.xml",
-    BBWP_IGNORE_FILENAME: ".bbwpignore"
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/config-parser.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/config-parser.js b/blackberry10/bin/templates/project/cordova/lib/config-parser.js
deleted file mode 100644
index 3fb87c8..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/config-parser.js
+++ /dev/null
@@ -1,696 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*jshint sub:true*/
-var fs = require("fs"),
-    util = require('util'),
-    xml2js = require('xml2js'),
-    packagerUtils = require('./packager-utils'),
-    check = require('validator').check,
-    sanitize = require('validator').sanitize,
-    localize = require("./localize"),
-    logger = require("./logger"),
-    fileManager = require("./file-manager"),
-    utils = require("./packager-utils"),
-    i18nMgr = require("./i18n-manager"),
-    et = require("elementtree"),
-    _config_doc,
-    _self,
-    _predefinedFeatures;
-
-//This function will convert a wc3 paramObj with a list of
-//<param name="" value=""> elements into a single object
-function processParamObj(paramObj) {
-    var processedObj = {},
-        attribs,
-        paramName,
-        paramValue;
-
-    if (paramObj) {
-        //Convert to array for single param entries where only an object is created
-        if (!Array.isArray(paramObj)) {
-            paramObj = [paramObj];
-        }
-
-        paramObj.forEach(function (param) {
-            attribs = param["@"];
-
-            if (attribs) {
-                paramName = attribs["name"];
-                paramValue = attribs["value"];
-
-                if (paramName && paramValue) {
-                    //Add the key/value pair to the processedObj
-                    processedObj[paramName] = paramValue;
-                }
-            }
-        });
-    }
-
-    return processedObj;
-}
-
-function processFeatures(featuresArray, widgetConfig, processPredefinedFeatures) {
-    var features = [],
-        attribs;
-    if (featuresArray) {
-        featuresArray.forEach(function (feature) {
-            attribs = feature["@"];
-            if (attribs) {
-                attribs.required = packagerUtils.toBoolean(attribs.required, true);
-
-                // We do NOT want to auto defer networking and JavaScript if the
-                // blackberry.push feature is being used
-                if (attribs.id === "blackberry.push") {
-                    widgetConfig.autoDeferNetworkingAndJavaScript = false;
-                }
-
-                if (_predefinedFeatures[attribs.id]) {
-                    //Handle features that do NOT contain an API namespace
-                    if (processPredefinedFeatures) {
-                        _predefinedFeatures[attribs.id](feature, widgetConfig);
-                    }
-                } else {
-                    features.push(attribs);
-                }
-            } else {
-                features.push(attribs);
-            }
-        });
-    }
-
-    return features;
-}
-
-function createAccessListObj(uriOrOrigin, allowSubDomain) {
-    return {
-        uri: uriOrOrigin,
-        allowSubDomain: allowSubDomain
-    };
-}
-
-function processVersion(widgetConfig) {
-    if (widgetConfig.version) {
-        var versionArray = widgetConfig.version.split(".");
-
-        //if 4rth number in version exists, extract for build id
-        if (versionArray.length > 3) {
-            widgetConfig.buildId = versionArray[3];
-            widgetConfig.version = widgetConfig.version.substring(0, widgetConfig.version.lastIndexOf('.'));
-        }
-    }
-}
-
-function processBuildID(widgetConfig, session) {
-    if (session.buildId) {
-        //user specified a build id (--buildId), override any previously set build id
-        widgetConfig.buildId = session.buildId;
-    }
-}
-
-function processWidgetData(data, widgetConfig, session) {
-    var attribs,
-        featureArray,
-        uriExist,
-        originExist,
-        header;
-
-    if (data["@"]) {
-        widgetConfig.version = data["@"].version;
-        widgetConfig.id = data["@"].id;
-
-        if (data["@"]["rim:header"]) {
-            widgetConfig.customHeaders = {};
-            header = data["@"]["rim:header"].split(":");
-            // Just set it for now, in the future we can append them
-            widgetConfig.customHeaders[header[0]] = header[1];
-        }
-
-        if (data["@"]["rim:userAgent"]) {
-            widgetConfig.userAgent = data["@"]["rim:userAgent"];
-        }
-    }
-
-    //Default values
-    widgetConfig.hasMultiAccess = false;
-    widgetConfig.accessList = [];
-    widgetConfig.enableFlash = false;
-    widgetConfig.autoOrientation = true;
-    widgetConfig.autoDeferNetworkingAndJavaScript = true;
-    widgetConfig.theme = "default";
-    widgetConfig.autoHideSplashScreen = "true";
-
-    //set locally available features to access list
-    if (data.feature) {
-        featureArray = packagerUtils.isArray(data.feature) ? data.feature : [data.feature];
-    }
-
-    //Handle features that do not have source code
-    featureArray = processFeatures(featureArray, widgetConfig, true);
-
-    //Push empty WIDGET_LOCAL access obj until whitelisting is cleaned up
-    widgetConfig.accessList.push(createAccessListObj("WIDGET_LOCAL", true));
-
-    //add whitelisted features to access list
-    if (data.access) {
-        //If there is only one access list element, it will be parsed as an object and not an array
-        if (!packagerUtils.isArray(data.access)) {
-            data.access = [data.access];
-        }
-
-        //check if uri and origin attributes are used
-        data.access.forEach(function (accessElement, accessIndex) {
-            attribs = accessElement["@"];
-
-            if (attribs) {
-                if (attribs.uri) {
-                    uriExist = true;
-                }
-                if (attribs.origin) {
-                    originExist = true;
-                }
-            }
-        });
-        if (uriExist === true && originExist === true) {
-            logger.warn(localize.translate("WARNING_URI_AND_ORIGIN_FOUND_IN_CONFIG"));
-        }
-
-        data.access.forEach(function (accessElement) {
-            attribs = accessElement["@"];
-
-            if (attribs) {
-                if (attribs.uri === "*" || attribs.origin === "*") {
-                    if (accessElement.feature) {
-                        throw localize.translate("EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN");
-                    }
-                    widgetConfig.hasMultiAccess = true;
-                } else {
-                    attribs.subdomains = packagerUtils.toBoolean(attribs.subdomains);
-                    if (attribs.uri || attribs.origin) {
-                        if (uriExist === true && originExist === true) {
-                            widgetConfig.accessList.push(createAccessListObj(attribs.uri, attribs.subdomains)); //using uri attribute by default
-                        } else {
-                            widgetConfig.accessList.push(createAccessListObj(attribs.uri || attribs.origin, attribs.subdomains));
-                        }
-                    }
-                }
-            }
-        });
-    }
-}
-
-function trim(obj) {
-    return (typeof obj === "string" ? obj.trim() : obj);
-}
-
-function processSplashScreenIconSrc(data, widgetConfig, key) {
-    if (data[key]) {
-        widgetConfig[key] = [];
-
-        if (!(data[key] instanceof Array)) {
-            data[key] = [data[key]];
-        }
-
-        data[key].forEach(function (obj) {
-            if (obj["@"]) {
-                widgetConfig[key].push(obj["@"].src);
-            } else {
-                widgetConfig[key].push(obj);
-            }
-        });
-    }
-}
-
-function processSplashScreenData(data, widgetConfig) {
-    //
-    // This takes config.xml markup in the form of:
-    //
-    // <rim:splash src="splash-1280x768.jpg" />
-    // <rim:splash src="splash-768x1280.jpg" />
-    // <rim:splash src="splash-1024x600.jpg" />
-    // <rim:splash src="splash-600x1024.jpg" />
-    //
-    // and turns it into:
-    //
-    // icon: ["splash-1280x768.jpg", "splash-768x1280.jpg", "splash-1024x600.jpg", "splash-600x1024.jpg"]
-    //
-    // Folder-based localization now done in i18n-manager
-    //
-    processSplashScreenIconSrc(data, widgetConfig, "rim:splash");
-}
-
-function processIconData(data, widgetConfig, session) {
-    //
-    // This takes config.xml markup in the form of:
-    //
-    // <icon src="icon-86.png" />
-    // <icon src="icon-150.png" />
-    //
-    // and turns it into:
-    //
-    // icon: ["icon-86.png", "icon-150.png"]
-    //
-    // Folder-based localization now done in i18n-manager
-    //
-    var default_icon_filename = "default-icon.png",
-        default_icon_src = session.conf.DEFAULT_ICON,
-        default_icon_dst = session.sourceDir;
-
-    processSplashScreenIconSrc(data, widgetConfig, "icon");
-
-    if (!widgetConfig.icon) {
-        packagerUtils.copyFile(default_icon_src, default_icon_dst);
-
-        widgetConfig["icon"] = [];
-        widgetConfig["icon"].push(default_icon_filename);
-    }
-}
-
-function validateSplashScreensIcon(widgetConfig, key) {
-    if (widgetConfig[key]) {
-        var msg = localize.translate(key === "icon" ? "EXCEPTION_INVALID_ICON_SRC" : "EXCEPTION_INVALID_SPLASH_SRC");
-
-        if (widgetConfig[key].length === 0) {
-            // element without src attribute
-            throw msg;
-        } else {
-            widgetConfig[key].forEach(function (src) {
-                var msg2 = localize.translate(key === "icon" ? "EXCEPTION_INVALID_ICON_SRC_LOCALES" : "EXCEPTION_INVALID_SPLASH_SRC_LOCALES");
-
-                // check that src attribute is specified and is not empty
-                check(src, msg).notNull();
-
-                // check that src attribute does not start with reserved locales folder
-                src = src.replace(/\\/g, "/");
-                check(src, msg2).notRegex("^" + i18nMgr.LOCALES_DIR + "\/");
-            });
-        }
-
-    }
-}
-
-function processAuthorData(data, widgetConfig) {
-    if (data.author) {
-        var attribs = data.author["@"];
-
-        if (!attribs && typeof data.author === "string") {
-            //do not sanitize empty objects {} (must be string)
-            widgetConfig.author = sanitize(data.author).trim();
-        } else if (data.author["#"]) {
-            widgetConfig.author = sanitize(data.author["#"]).trim();
-        }
-
-        if (attribs) {
-            widgetConfig.authorURL = attribs.href;
-            widgetConfig.copyright = attribs["rim:copyright"];
-            widgetConfig.authorEmail = attribs.email;
-        }
-    }
-}
-
-function processLicenseData(data, widgetConfig) {
-    if (data.license && data.license["#"]) {
-        widgetConfig.license = data.license["#"];
-    } else {
-        widgetConfig.license = "";
-    }
-
-    if (data.license && data.license["@"]) {
-        widgetConfig.licenseURL = data.license["@"].href;
-    } else {
-        widgetConfig.licenseURL = "";
-    }
-}
-
-function processContentData(data, widgetConfig) {
-    if (data.content) {
-        var attribs  = data.content["@"],
-            startPage;
-        if (attribs) {
-            widgetConfig.content = attribs.src;
-
-            startPage = packagerUtils.parseUri(attribs.src);
-
-            // if start page is local but does not start with local:///, will prepend it
-            // replace any backslash with forward slash
-            if (!packagerUtils.isAbsoluteURI(startPage) && !packagerUtils.isLocalURI(startPage)) {
-                if (!startPage.relative.match(/^\//)) {
-                    widgetConfig.content = "local:///" + startPage.relative.replace(/\\/g, "/");
-                } else {
-                    widgetConfig.content = "local://" + startPage.relative.replace(/\\/g, "/");
-                }
-            }
-
-            widgetConfig.foregroundSource = attribs.src;
-            widgetConfig.contentType = attribs.type;
-            widgetConfig.contentCharSet = attribs.charset;
-            widgetConfig.allowInvokeParams = attribs["rim:allowInvokeParams"];
-            //TODO content rim:background
-        }
-    }
-}
-
-function processPermissionsData(data, widgetConfig) {
-    if (data["rim:permissions"] && data["rim:permissions"]["rim:permit"]) {
-        var permissions = data["rim:permissions"]["rim:permit"];
-
-        if (permissions instanceof Array) {
-            widgetConfig.permissions = permissions;
-        } else {
-            //user entered one permission and it comes in as an object
-            widgetConfig.permissions = [permissions];
-        }
-    } else {
-        widgetConfig.permissions = [];
-    }
-
-    // We do NOT want to auto defer networking and JavaScript if the
-    // run_when_backgrounded permission is set
-    if (widgetConfig.permissions.indexOf("run_when_backgrounded") >= 0) {
-        widgetConfig.autoDeferNetworkingAndJavaScript = false;
-    }
-}
-
-function processInvokeTargetsData(data, widgetConfig) {
-
-    if (data["rim:invoke-target"]) {
-        widgetConfig["invoke-target"] = data["rim:invoke-target"];
-
-        //If invoke-target is not an array, wrap the invoke-target in an array
-        utils.wrapPropertyInArray(widgetConfig, "invoke-target");
-
-        widgetConfig["invoke-target"].forEach(function (invokeTarget) {
-            if (invokeTarget.type && !packagerUtils.isEmpty(invokeTarget.type)) {
-                invokeTarget.type = invokeTarget.type.toUpperCase();
-            }
-
-            if (invokeTarget.filter) {
-                utils.wrapPropertyInArray(invokeTarget, "filter");
-
-                invokeTarget.filter.forEach(function (filter) {
-
-                    if (filter["action"]) {
-                        utils.wrapPropertyInArray(filter, "action");
-                    }
-
-                    if (filter["mime-type"]) {
-                        utils.wrapPropertyInArray(filter, "mime-type");
-                    }
-
-                    if (filter["property"]) {
-                        utils.wrapPropertyInArray(filter, "property");
-                    }
-                });
-            }
-        });
-    }
-}
-
-function validateConfig(widgetConfig) {
-    check(widgetConfig.version, localize.translate("EXCEPTION_INVALID_VERSION"))
-        .notNull()
-        .regex("^[0-9]{1,3}([.][0-9]{1,3}){2,3}$");
-
-    for (var prop in widgetConfig.name) {
-        if (widgetConfig.name.hasOwnProperty(prop)) {
-            check(widgetConfig.name[prop], localize.translate("EXCEPTION_INVALID_NAME")).notEmpty();
-        }
-    }
-
-    check(widgetConfig.author, localize.translate("EXCEPTION_INVALID_AUTHOR")).notNull();
-    check(widgetConfig.id, localize.translate("EXCEPTION_INVALID_ID")).notNull().notEmpty();
-
-    validateSplashScreensIcon(widgetConfig, "rim:splash");
-
-    validateSplashScreensIcon(widgetConfig, "icon");
-
-    if (widgetConfig.accessList) {
-        widgetConfig.accessList.forEach(function (access) {
-            if (access.uri) {
-                if (access.uri !== "WIDGET_LOCAL") {
-                    check(access.uri, localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_PROTOCOL", access.uri))
-                        .regex("^[a-zA-Z]+:\/\/");
-                    check(access.uri, localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_URN", access.uri))
-                        .notRegex("^[a-zA-Z]+:\/\/$");
-                }
-            }
-
-            if (access.features) {
-                // Assert each feature has a proper ID and is not empty
-                access.features.forEach(function (feature) {
-                    if (!feature) {
-                        throw localize.translate("EXCEPTION_INVALID_FEATURE_ID");
-                    }
-                    check(feature.id, localize.translate("EXCEPTION_INVALID_FEATURE_ID")).notNull().notEmpty();
-                });
-            }
-
-        });
-    }
-
-    if (widgetConfig["invoke-target"]) {
-
-        widgetConfig["invoke-target"].forEach(function (invokeTarget) {
-
-            check(typeof invokeTarget["@"] === "undefined",
-                    localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_ID"))
-                .equals(false);
-            check(invokeTarget["@"].id, localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_ID"))
-                .notNull()
-                .notEmpty();
-            check(invokeTarget.type, localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_TYPE"))
-                .notNull()
-                .notEmpty();
-
-            if (invokeTarget.filter) {
-
-                invokeTarget.filter.forEach(function (filter) {
-
-                    check(filter["action"] && filter["action"] instanceof Array && filter["action"].length > 0,
-                            localize.translate("EXCEPTION_INVOKE_TARGET_ACTION_INVALID"))
-                        .equals(true);
-
-                    check(filter["mime-type"] && filter["mime-type"] instanceof Array && filter["mime-type"].length > 0,
-                            localize.translate("EXCEPTION_INVOKE_TARGET_MIME_TYPE_INVALID"))
-                        .equals(true);
-
-                    if (filter.property) {
-                        filter.property.forEach(function (property) {
-                            check(property["@"] && property["@"]["var"] && typeof property["@"]["var"] === "string",
-                                    localize.translate("EXCEPTION_INVOKE_TARGET_FILTER_PROPERTY_INVALID"))
-                                .equals(true);
-                        });
-                    }
-                });
-            }
-        });
-    }
-}
-
-function processLocalizedText(tag, data, widgetConfig) {
-    var tagData = data[tag],
-        DEFAULT = 'default';
-
-    function processLanguage(tagElement) {
-        var attribs = tagElement['@'],
-            language;
-
-        if (attribs) {
-            language = attribs['xml:lang'] || DEFAULT;
-            widgetConfig[tag][language.toLowerCase()] = tagElement['#'];
-        } else {
-            widgetConfig[tag][DEFAULT] = tagElement;
-        }
-    }
-
-    if (Array.isArray(tagData)) {
-        //i.e. <element xml:lang="en">english value</element>
-        //     <element xml:lang="fr">french value</element>
-        tagData.forEach(processLanguage);
-    } else if (tagData instanceof Object) {
-        //i.e. <element xml:lang="en">english value</element>
-        processLanguage(tagData);
-    } else {
-        //i.e <element>value</element>
-        widgetConfig[tag][DEFAULT] = tagData;
-    }
-}
-
-function processNameAndDescription(data, widgetConfig) {
-    widgetConfig.name = {};
-    widgetConfig.description = {};
-
-    processLocalizedText('name', data, widgetConfig);
-    processLocalizedText('description', data, widgetConfig);
-}
-
-function processCordovaPreferences(data, widgetConfig) {
-    if (data.preference) {
-        var preference = JSON.parse(JSON.stringify(processParamObj(data.preference)).toLowerCase()),
-            hideFormControl = preference.hidekeyboardformaccessorybar;
-
-        widgetConfig.packageCordovaJs = preference.packagecordovajs === "enable";
-        widgetConfig.autoHideSplashScreen = preference.autohidesplashscreen !== "false";
-
-        // <preference name="backgroundColor" value="hex" />
-        if (preference.backgroundcolor) {
-            widgetConfig.backgroundColor = processBgColor(preference.backgroundcolor);
-        }
-
-        // <preference name="childBrowser" value="enable or disable" />
-        if (preference.childbrowser) {
-            widgetConfig.enableChildWebView = (preference.childbrowser === 'disable') === false;
-        }
-
-        // <preference name="HideKeyboardFormAccessoryBar" value="enable/true or disable/false" />
-        if (preference.hidekeyboardformaccessorybar) {
-            widgetConfig.enableFormControl = (hideFormControl !== 'enable') && (hideFormControl !== 'true');
-        }
-
-        // <preference name="popupBlocker" value="enable or disable" />
-        if (preference.popupblocker) {
-            widgetConfig.enablePopupBlocker = (preference.popupblocker === 'enable') === true;
-        }
-
-        // <preference name="orientation" value="portrait, landscape, north, auto or default" />
-        if (preference.orientation) {
-            if (preference.orientation ===  "landscape" || preference.orientation === "portrait" || preference.orientation === "north") {
-                widgetConfig.autoOrientation = false;
-                widgetConfig.orientation = preference.orientation;
-            } else if (preference.orientation !== "auto" && preference.orientation !== "default") {
-                throw localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", preference.orientation);
-            }
-        }
-
-        // <preference name="theme" value="bright, dark, inherit or default" />
-        if (preference.theme && (typeof preference.theme === "string")) {
-            if (preference.theme ===  "bright" || preference.theme === "dark" || preference.theme === "inherit" || preference.theme ===  "default") {
-                widgetConfig.theme = preference.theme;
-            }
-        }
-
-        // <preference name="webSecurity" value="enable or disable" />
-        if (preference.websecurity && (typeof preference.websecurity === "string") && (preference.websecurity === "disable")) {
-            widgetConfig.enableWebSecurity = false;
-            logger.warn(localize.translate("WARNING_WEBSECURITY_DISABLED"));
-        }
-
-        // <preference name="diskCache" value="enable or disable" />
-        if (preference.diskcache) {
-            widgetConfig.enableDiskCache = (preference.diskcache === 'enable');
-        }
-    }
-}
-
-function processBgColor(bgColor) {
-    //convert bgColor to a number
-    var bgColorNum = parseInt(bgColor, 16);
-
-    if (isNaN(bgColorNum)) {
-        //bgColor is not a number, throw error
-        throw localize.translate("EXCEPTION_BGCOLOR_INVALID", bgColor);
-    } else {
-        return bgColorNum;
-    }
-}
-
-function processResult(data, session) {
-    var widgetConfig = {};
-
-    processWidgetData(data, widgetConfig, session);
-    processIconData(data, widgetConfig, session);
-    processAuthorData(data, widgetConfig);
-    processLicenseData(data, widgetConfig);
-    processContentData(data, widgetConfig);
-    processPermissionsData(data, widgetConfig);
-    processInvokeTargetsData(data, widgetConfig);
-    processSplashScreenData(data, widgetConfig);
-    processNameAndDescription(data, widgetConfig);
-    processCordovaPreferences(data, widgetConfig);
-
-    widgetConfig.configXML = "config.xml";
-
-    //validate the widgetConfig
-    validateConfig(widgetConfig);
-
-    //special handling for version and grabbing the buildId if specified (4rth number)
-    processVersion(widgetConfig);
-
-    //if --buildId was specified, it takes precedence
-    processBuildID(widgetConfig, session);
-
-    //store any config-file element injections
-    widgetConfig.configFileInjections = _config_doc.findall("config-file");
-
-    return widgetConfig;
-}
-
-function init() {
-    //Predefined features are features that do NOT contain an API namespace
-    _predefinedFeatures = {
-        "enable-flash" : function (feature, widgetConfig) {
-            widgetConfig.enableFlash = true;
-        },
-        "blackberry.app.orientation": function (feature, widgetConfig) {
-            if (feature) {
-                var params = processParamObj(feature.param),
-                    mode = params.mode;
-
-                if (!mode) {
-                    //No mode provided, throw error
-                    throw localize.translate("EXCEPTION_EMPTY_ORIENTATION_MODE", mode);
-                } else if (mode === "landscape" || mode === "portrait" || mode === "north") {
-                    widgetConfig.autoOrientation = false;//Overwrites default value
-                    widgetConfig.orientation = mode;
-                } else if (mode !== "auto") {
-                    //Mode invalid, throw error
-                    throw localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", mode);
-                }
-
-                // Throw a warning since this feature is deprecated
-                logger.warn(localize.translate("WARNING_ORIENTATION_DEPRECATED"));
-            }
-        }
-    };
-}
-
-_self = {
-    parse: function (xmlPath, session, callback) {
-        if (!fs.existsSync(xmlPath)) {
-            throw localize.translate("EXCEPTION_CONFIG_NOT_FOUND");
-        }
-
-        var fileData = fs.readFileSync(xmlPath),
-            xml = utils.bufferToString(fileData),
-            parser = new xml2js.Parser({trim: true, normalize: true, explicitRoot: false});
-
-        //Used for config-file injections
-        _config_doc = new et.ElementTree(et.XML(xml));
-
-        init();
-
-        //parse xml file data
-        parser.parseString(xml, function (err, result) {
-            if (err) {
-                logger.error(localize.translate("EXCEPTION_PARSING_XML"));
-                fileManager.cleanSource(session);
-            } else {
-                callback(processResult(result, session));
-            }
-        });
-    }
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/debugtoken-helper.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/debugtoken-helper.js b/blackberry10/bin/templates/project/cordova/lib/debugtoken-helper.js
deleted file mode 100755
index 4916ba5..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/debugtoken-helper.js
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var childProcess = require("child_process"),
-    fs = require("fs"),
-    path = require("path"),
-    conf = require("./conf"),
-    localize = require("./localize"),
-    logger = require("./logger"),
-    pkgrUtils = require("./packager-utils"),
-    utils = require("./utils"),
-    getParams = require("./params"),
-    workingDir = path.normalize(__dirname + "/.."),
-    debugTokenDir = path.normalize(path.join(utils.getCordovaDir(), "blackberry10debugtoken.bar")),
-    properties,
-    targets,
-    self = {};
-
-function isDebugTokenValid(pin, data) {
-    var manifests,
-        i,
-        l,
-        expiry = null,
-        devices = [],
-        line,
-        now = new Date();
-
-    if (!data) {
-        return false;
-    }
-
-    manifests = data.toString().replace(/[\r]/g, '').split('\n');
-
-    for (i = 0, l = manifests.length; i < l; i++) {
-        if (manifests[i].indexOf("Debug-Token-Expiry-Date: ") >= 0) {
-            // Parse the expiry date
-            line = manifests[i].substring("Debug-Token-Expiry-Date: ".length);
-            expiry = new Date(line.substring(0, line.indexOf("T")) + " " + line.substring(line.indexOf("T") + 1, line.length - 1) + " UTC");
-        } else if (manifests[i].indexOf("Debug-Token-Device-Id: ") >= 0) {
-            line = manifests[i].substring("Debug-Token-Device-Id: ".length);
-            devices = line.split(",");
-        }
-    }
-
-    if (expiry && expiry > now) {
-        for (i = 0, l = devices.length; i < l; i++) {
-            if (parseInt(devices[i]) === parseInt(pin, 16)) {
-                return true; // The debug token is valid if not expired and device pin is included
-            }
-        }
-    }
-
-    return false;
-}
-
-function generateCreateTokenOptions(pins, password) {
-    var options = [],
-        params = getParams("blackberry-debugtokenrequest") || {},
-        i;
-
-    params["-storepass"] = password;
-
-    Object.getOwnPropertyNames(params).forEach(function (p) {
-        options.push(p);
-
-        if (params[p]) {
-            options.push(params[p]);
-        }
-    });
-
-    pins.forEach(function(pin) {
-        options.push("-devicepin");
-        options.push(pin);
-    });
-
-    options.push(debugTokenDir);
-
-    return options;
-}
-
-function generateDeployTokenOptions(targetIp, targetPassword) {
-    var options = [],
-        params = getParams("blackberry-deploy") || {};
-
-    params["-installDebugToken"] = debugTokenDir;
-    params["-device"] = targetIp;
-
-    if (targetPassword) {
-        params["-password"] = targetPassword;
-    }
-
-    Object.getOwnPropertyNames(params).forEach(function (p) {
-        options.push(p);
-
-        if (params[p]) {
-            options.push(params[p]);
-        }
-    });
-
-    return options;
-}
-
-function execNativeScript(script, options, callback) {
-    var fullPath = path.join(process.env.CORDOVA_BBTOOLS, script);
-
-    utils.exec(fullPath, options, {
-        "cwd" : workingDir,
-        "env" : process.env
-    }, callback);
-}
-
-self.createToken = function (projectProperties, target, keystorepass, callback) {
-    var pins = [],
-        key;
-
-    // Store the global variable "properties"
-    properties = projectProperties;
-
-    // Gather PINs information from properties
-    if (target === "all") {
-        for (key in properties.targets) {
-            if (properties.targets.hasOwnProperty(key) && properties.targets[key].pin) {
-                pins.push(properties.targets[key].pin);
-            }
-        }
-    } else {
-        if (!target) {
-            target = properties.defaultTarget;
-        }
-
-        if (properties.targets.hasOwnProperty(target) && properties.targets[target].pin) {
-            pins.push(properties.targets[target].pin);
-        }
-    }
-
-    if (pins.length === 0) {
-        logger.warn(localize.translate("WARN_NO_DEVICE_PIN_FOUND"));
-        if (callback && typeof callback === "function") {
-            callback(-1);
-        }
-    } else if (!keystorepass) {
-        logger.warn(localize.translate("WARN_NO_SIGNING_PASSWORD_PROVIDED", pkgrUtils.homedir()));
-        if (callback && typeof callback === "function") {
-            callback(-1);
-        }
-    } else {
-        logger.info(localize.translate("PROGRESS_GENERATING_DEBUG_TOKEN"));
-        // Call "blackberry-debugtokenrequest" to generate debug token
-        execNativeScript("blackberry-debugtokenrequest",
-            generateCreateTokenOptions(pins, keystorepass),
-            callback
-        );
-    }
-};
-
-self.deployToken = function (target, targetIp, targetPassword, callback) {
-    logger.info(localize.translate("PROGRESS_DEPLOYING_DEBUG_TOKEN", target));
-    execNativeScript("blackberry-deploy",
-        generateDeployTokenOptions(targetIp, targetPassword),
-        callback
-    );
-};
-
-self.checkDebugToken = function (pin, callback) {
-    var script = path.normalize(path.join(process.env.CORDOVA_BBTOOLS, "blackberry-nativepackager")),
-        args = [
-            "-listManifest",
-            path.normalize(debugTokenDir)
-        ];
-
-    if (!callback || typeof callback !== "function") {
-        return;
-    }
-
-    if (!fs.existsSync(debugTokenDir)) {
-        callback(false);
-        return;
-    }
-
-    utils.exec(script, args, {
-        "cwd": workingDir,
-        "env": process.env,
-        _customOptions: { silent: true}
-    }, function (error, stdout, stderr) {
-        callback(isDebugTokenValid(pin, stdout));
-    });
-};
-
-module.exports = self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/file-manager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/file-manager.js b/blackberry10/bin/templates/project/cordova/lib/file-manager.js
deleted file mode 100755
index 977ca2b..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/file-manager.js
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    util = require("util"),
-    packagerUtils = require("./packager-utils"),
-    fs = require("fs"),
-    conf = require("./conf"),
-    BBWPignore = require('./bbwpignore'),
-    wrench = require("wrench"),
-    zip = require("zip"),
-    localize = require("./localize"),
-    logger = require("./logger"),
-    CLIENT_JS = "client.js",
-    SERVER_JS = "index.js",
-    VALID_EXTENSIONS = [".js", ".json"],
-    CORDOVA_JS_REGEX = /(cordova-.+js)|cordova\.js/,
-    MODULES_TO_KEEP = ["lib/utils.js", "lib/exception.js"];
-
-function unzip(from, to) {
-    var data, entries, p, parent;
-
-    if (fs.existsSync(from)) {
-        data = fs.readFileSync(from);
-        entries = zip.Reader(data).toObject();
-
-        if (!fs.existsSync(to)) {
-            wrench.mkdirSyncRecursive(to, "0755");
-        }
-
-        for (p in entries) {
-            if (entries.hasOwnProperty(p)) {
-                if (p.indexOf("__MACOSX") >= 0) {
-                    continue;
-                }
-
-                if (p.split("/").length > 1) {
-                    parent = p.split("/").slice(0, -1).join("/");
-                    wrench.mkdirSyncRecursive(to + "/" + parent, "0755");
-                }
-
-                fs.writeFileSync(to + "/" + p, entries[p]);
-            }
-        }
-    } else {
-        throw localize.translate("EXCEPTION_WIDGET_ARCHIVE_NOT_FOUND", from);
-    }
-}
-
-function copyDirContents(from, to) {
-    var files = wrench.readdirSyncRecursive(from),
-        bbwpignoreFile = path.join(from, conf.BBWP_IGNORE_FILENAME),
-        bbwpignore,
-        ignoreFiles = conf.BBWP_IGNORE_FILENAME;
-
-    if (fs.existsSync(bbwpignoreFile)) {
-        bbwpignore = new BBWPignore(bbwpignoreFile, files);
-        bbwpignore.matchedFiles.push(conf.BBWP_IGNORE_FILENAME); //add the .bbwpignore file to the ignore list
-        ignoreFiles = bbwpignore.matchedFiles.join("|");
-    }
-
-
-    wrench.copyDirSyncRecursive(from, to, {preserve: true, whitelist: false, filter: new RegExp(ignoreFiles, "g")});
-}
-
-function prepare(session) {
-    var conf = session.conf,
-        dest = session.sourcePaths;
-
-    if (fs.existsSync(session.sourceDir)) {
-        wrench.rmdirSyncRecursive(session.sourceDir);
-    }
-
-    // unzip archive
-    if (fs.existsSync(session.archivePath)) {
-        if (session.archivePath.toLowerCase().match("[.]zip$")) {
-            unzip(session.archivePath, session.sourceDir);
-        } else {
-            copyDirContents(session.archivePath, session.sourceDir);
-        }
-    } else {
-        throw localize.translate("EXCEPTION_INVALID_ARCHIVE_PATH", session.archivePath);
-    }
-}
-
-
-function getModulesArray(dest, files, baseDir) {
-    var modulesList = [],
-        EXCLUDE_FILES = ["client.js", "manifest.json"];
-
-    function isExcluded(file) {
-        return EXCLUDE_FILES.indexOf(path.basename(file)) !== -1 || !file.match(/\.(js|json)$/);
-    }
-
-    files.forEach(function (file) {
-        file = path.resolve(baseDir, file);
-
-        if (!fs.statSync(file).isDirectory()) {
-            if (!isExcluded(file)) {
-                modulesList.push({name: path.relative(path.normalize(dest.CHROME), file).replace(/\\/g, "/"), file: file});
-            }
-        }
-    });
-
-    return modulesList;
-}
-
-function generateFrameworkModulesJS(session) {
-    var dest = session.sourcePaths,
-        modulesList = [],
-        modulesStr = "(function () { ",
-        frameworkModulesStr = "window.frameworkModules = [",
-        libFiles = wrench.readdirSyncRecursive(dest.LIB),
-        extFiles,
-        extModules;
-
-    modulesList = modulesList.concat(getModulesArray(dest, libFiles, dest.LIB));
-
-    if (fs.existsSync(dest.EXT)) {
-        extFiles = wrench.readdirSyncRecursive(dest.EXT);
-        extModules = getModulesArray(dest, extFiles, dest.EXT);
-        modulesList = modulesList.concat(extModules);
-    }
-
-    modulesList.forEach(function (module, index) {
-        modulesStr += "define('" + module.name + "', function (require, exports, module) {\n" +
-                      fs.readFileSync(module.file, "utf-8") + "\n" +
-                      "});\n";
-        frameworkModulesStr += "'" + module.name + "'" +  (index !== modulesList.length - 1 ? ", " : "");
-        // Issue with 10.1 webplatform - requires certain files in chrome/lib
-        if (MODULES_TO_KEEP.indexOf(module.name) < 0) {
-            fs.unlinkSync(path.normalize(dest.CHROME + "/" + module.name));
-        }
-    });
-
-    modulesStr += "}());";
-    frameworkModulesStr += "];\n";
-    fs.writeFileSync(path.normalize(dest.CHROME + "/frameworkModules.js"), frameworkModulesStr + modulesStr);
-}
-
-function copyNative(session, target) {
-    var src = path.normalize(session.conf.NATIVE + "/" + target),
-        dest = path.normalize(session.sourceDir);
-
-    copyDirContents(src, dest);
-}
-
-function copyWebworks(session) {
-    var srcPath = path.normalize(session.conf.PROJECT_ROOT + "/lib"),
-        dest = path.normalize(session.sourceDir),
-        srcFiles;
-
-    srcFiles = packagerUtils.listFiles(srcPath, function (file) {
-        return CORDOVA_JS_REGEX.test(file);
-    });
-
-    if (srcFiles.length === 1) {
-        packagerUtils.copyFile(srcFiles[0], dest);
-
-        //Rename file to webworks.js
-        fs.renameSync(path.join(dest, path.basename(srcFiles[0])), path.join(dest, "cordova.js"));
-    } else {
-        throw localize.translate("EXCEPTION_CORDOVA_JS_IN_LIB_DIR", srcFiles.length);
-    }
-}
-
-function hasValidExtension(file) {
-    return VALID_EXTENSIONS.some(function (element, index, array) {
-        return path.extname(file) === element;
-    });
-}
-
-function generateUserConfig(session, config) {
-    packagerUtils.writeFile(path.join(session.sourcePaths.LIB, "config"), "user.js", "module.exports = " + JSON.stringify(config, null, "    ") + ";");
-}
-
-module.exports = {
-    unzip: unzip,
-
-    copyNative: copyNative,
-
-    copyWebworks : copyWebworks,
-
-    prepareOutputFiles: prepare,
-
-    generateFrameworkModulesJS: generateFrameworkModulesJS,
-
-    generateUserConfig: generateUserConfig,
-
-    cleanSource: function (session) {
-        if (!session.keepSource) {
-            wrench.rmdirSyncRecursive(session.sourceDir);
-        }
-    },
-
-    copyDirContents: copyDirContents
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/i18n-manager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/i18n-manager.js b/blackberry10/bin/templates/project/cordova/lib/i18n-manager.js
deleted file mode 100644
index d530f09..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/i18n-manager.js
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*jshint sub:true*/
-var path = require("path"),
-    fs = require("fs"),
-    wrench = require("wrench"),
-    pkgrUtils = require("./packager-utils"),
-    LOCALES_DIR = "locales";
-
-// Given a list of locale files (as follows), based on un-localized splash/icon definition, generate
-// localized splash/icon metadata.
-//
-// zh-hans-cn/a.gif
-// zh-hans-cn/f.gif
-// zh-hans-cn/images/splash-1024x600.png
-// zh-hans-cn/images/splash-600x1024.png
-// zh-hans/a.gif
-// zh-hans/b.gif
-// zh/a.gif
-// zh/b.gif
-// zh/c.gif
-function generateLocalizedMetadataForSplashScreenIcon(config, configKey, xmlObject, xmlObjectKey, localeFiles) {
-    // localeMap looks like this:
-    // {
-    //     "zh-hans-cn": ["a.gif", "f.gif", "images/splash-1024x600.png", "images/splash-600x1024.png"],
-    //     "zh-hans": ["a.gif", "b.gif"],
-    //     "zh": ["a.gif", "b.gif", "c.gif"]
-    // }
-    var localeMap = {};
-
-    if (localeFiles) {
-        localeFiles.forEach(function (path) {
-            var split = path.replace(/\.\./g, "").split("/"),
-                locale;
-
-            split = split.filter(function (element) {
-                return element.length > 0;
-            });
-
-            if (split.length > 1) {
-                locale = split[0];
-
-                if (!localeMap[locale]) {
-                    localeMap[locale] = [];
-                }
-
-                // remove locale subfolder from path
-                split.splice(0, 1);
-                localeMap[locale].push(split.join("/"));
-            }
-        });
-    }
-
-    xmlObject[xmlObjectKey] = {};
-    xmlObject[xmlObjectKey]["image"] = [];
-
-    if (config[configKey]) {
-        config[configKey].forEach(function (imgPath) {
-            imgPath = imgPath.replace(/\\/g, "/"); // replace any backslash with forward slash
-
-            Object.getOwnPropertyNames(localeMap).forEach(function (locale) {
-                if (localeMap[locale].indexOf(imgPath) !== -1) {
-                    // localized image found for locale
-                    xmlObject[xmlObjectKey]["image"].push({
-                        text: {
-                            _attr: {
-                                "xml:lang": locale
-                            },
-                            _value: LOCALES_DIR + "/" + locale + "/" + imgPath
-                        }
-                    });
-                }
-            });
-
-            xmlObject[xmlObjectKey]["image"].push({
-                _value: imgPath
-            });
-        });
-    }
-}
-
-function generateLocalizedText(session, config, xmlObject, key) {
-    var localizedText = config[key],
-        textElements = [],
-        locale;
-
-    for (locale in localizedText) {
-        if (localizedText.hasOwnProperty(locale)) {
-            //Don't add default locale and don't add locale if it already exists
-            if (locale !== 'default' && textElements && textElements.indexOf(locale) === -1) {
-                textElements.push({
-                    _attr: {
-                        "xml:lang": locale
-                    },
-                    _value: localizedText[locale]
-                });
-            }
-        }
-    }
-
-    xmlObject[key] = {
-        _value: localizedText['default'],
-        text: textElements
-    };
-}
-
-function generateLocalizedMetadata(session, config, xmlObject, key) {
-    if (config.icon || config["rim:splash"]) {
-        var localeFiles,
-            normalizedLocaleFiles = [];
-
-        if (fs.existsSync(session.sourceDir + "/" + LOCALES_DIR)) {
-            localeFiles = wrench.readdirSyncRecursive(session.sourceDir + "/" + LOCALES_DIR);
-            if (pkgrUtils.isWindows()) {
-
-                localeFiles.forEach(function (file) {
-                    file = path.relative(path.resolve(session.sourceDir, "locales"), file).replace(/\\/g, "/");
-                    normalizedLocaleFiles.push(file);
-                });
-            } else {
-                normalizedLocaleFiles = localeFiles;
-            }
-        }
-
-        generateLocalizedMetadataForSplashScreenIcon(config, key, xmlObject, key === "rim:splash" ? "splashScreens" : key, normalizedLocaleFiles);
-    }
-}
-
-module.exports = {
-    LOCALES_DIR: LOCALES_DIR,
-    generateLocalizedMetadata: generateLocalizedMetadata,
-    generateLocalizedText: generateLocalizedText
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/install-device
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/install-device b/blackberry10/bin/templates/project/cordova/lib/install-device
deleted file mode 100644
index 45f8a07..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/install-device
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env node
-
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    utils = require("./utils"),
-    options = require('commander'),
-    runUtils = require("./run-utils"),
-    logger = require("./logger");
-
-options
-    .usage('[--target=id]')
-    .option('--target <id>', 'specifies the target to run the application')
-    .option('-k, --keystorepass <password>', 'the password of signing key; needed for creating debug token')
-    .option('--query', 'query on the commandline when a password is needed')
-    .option('--devicepass <password>', 'device password')
-    .option('--no-uninstall', 'does not uninstall application from device')
-    .option('--no-launch', 'do not launch the application on device')
-    .on('--help', function() {
-        console.log('  Examples:');
-        console.log('');
-        console.log("  Deploying to a predefined target");
-        console.log('    $ run --target=Z10');
-        console.log('');
-    });
-process.argv.forEach(function (argument, index, args) {
-    if (argument.match(/^--target=/)) {
-        args.splice(index, 1, "--target", argument.substr("--target=".length));
-    }
-});
-
-options.parse(process.argv);
-
-options.device = true;
-utils.waterfall(
-    [
-        runUtils.getValidatedTarget.bind(this, options),
-        runUtils.checkBuild,
-        runUtils.uninstall.bind(this, options),
-        runUtils.deployToTarget.bind(this, options)
-    ]
-);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/install-emulator
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/install-emulator b/blackberry10/bin/templates/project/cordova/lib/install-emulator
deleted file mode 100644
index afbc581..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/install-emulator
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env node
-
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    utils = require("./utils"),
-    options = require('commander'),
-    runUtils = require("./run-utils"),
-    logger = require("./logger");
-
-options
-    .usage('[--target=id]')
-    .option('--target <id>', 'specifies the target to run the application')
-    .option('--devicepass <password>', 'device password')
-    .option('--query', 'query on the commandline when a password is needed')
-    .option('-k, --keystorepass <password>', 'the password of signing key; needed for creating debug token')
-    .option('--no-uninstall', 'does not uninstall application from device')
-    .option('--no-launch', 'do not launch the application on device')
-    .on('--help', function() {
-        console.log('  Examples:');
-        console.log('');
-        console.log("  Deploying to a predefined target");
-        console.log('    $ run --target=Z10');
-        console.log('');
-    });
-process.argv.forEach(function (argument, index, args) {
-    if (argument.match(/^--target=/)) {
-        args.splice(index, 1, "--target", argument.substr("--target=".length));
-    }
-});
-
-options.parse(process.argv);
-
-options.emulator = true;
-utils.waterfall(
-    [
-        runUtils.getValidatedTarget.bind(this, options),
-        runUtils.checkBuild,
-        runUtils.uninstall.bind(this, options),
-        runUtils.deployToTarget.bind(this, options)
-    ]
-);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-devices
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-devices b/blackberry10/bin/templates/project/cordova/lib/list-devices
deleted file mode 100755
index e39b5e2..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-devices
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-set -e
-
-source $(dirname "$0")/../init
-"$CORDOVA_NODE/node" "$(dirname "$0")/list-devices.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-devices.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-devices.bat b/blackberry10/bin/templates/project/cordova/lib/list-devices.bat
deleted file mode 100644
index db0602e..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-devices.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements.  See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership.  The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License.  You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied.  See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-call "%~dp0..\init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\list-devices.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-devices.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-devices.js b/blackberry10/bin/templates/project/cordova/lib/list-devices.js
deleted file mode 100644
index b27a7fb..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-devices.js
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env node
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-require('./target-utils').listTargets('device', true);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-emulator-images
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-emulator-images b/blackberry10/bin/templates/project/cordova/lib/list-emulator-images
deleted file mode 100755
index 0783207..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-emulator-images
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-set -e
-
-source $(dirname "$0")/../init
-"$CORDOVA_NODE/node" "$(dirname "$0")/list-emulator-images.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.bat b/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.bat
deleted file mode 100644
index 613a2a4..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements.  See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership.  The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License.  You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied.  See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-call "%~dp0..\init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\list-emulator-images.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.js b/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.js
deleted file mode 100644
index 9bdd906..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-emulator-images.js
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env node
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-require('./target-utils').listTargets('emulator', false);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-started-emulators
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-started-emulators b/blackberry10/bin/templates/project/cordova/lib/list-started-emulators
deleted file mode 100755
index cd6a266..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-started-emulators
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-set -e
-
-source $(dirname "$0")/../init
-"$CORDOVA_NODE/node" "$(dirname "$0")/list-started-emulators.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.bat b/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.bat
deleted file mode 100644
index 0931f39..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements.  See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership.  The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License.  You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied.  See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-call "%~dp0..\init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\list-started-emulators.js"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.js b/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.js
deleted file mode 100644
index 0b1f8de..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/list-started-emulators.js
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env node
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-require('./target-utils').listTargets('emulator', true);


[47/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/utils.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/utils.js b/bin/templates/project/cordova/lib/utils.js
new file mode 100644
index 0000000..df5e9b7
--- /dev/null
+++ b/bin/templates/project/cordova/lib/utils.js
@@ -0,0 +1,385 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* globals Buffer */
+
+var fs = require('fs'),
+    exit = require('exit'),
+    async = require('async'),
+    path = require('path'),
+    childProcess = require('child_process'),
+    wrench = require('wrench'),
+    os = require('os'),
+    promptLib = require("prompt"),
+    DEFAULT_BAR_NAME = "bb10app",
+    PROPERTY_FILE_NAME = 'blackberry10.json',
+    CORDOVA_DIR = '.cordova',
+    ERROR_VALUE = 2,
+    DEFAULT_PROPERTY_FILE = {
+        targets: {
+        }
+    },
+    _self;
+
+function swapBytes(buffer) {
+    var l = buffer.length,
+        i,
+        a;
+
+    if (l % 2 === 0x01) {
+        throw new Exception("Buffer error");
+    }
+
+    for (i = 0; i < l; i += 2) {
+        a = buffer[i];
+        buffer[i] = buffer[i + 1];
+        buffer[i + 1] = a;
+    }
+
+    return buffer;
+}
+
+_self = {
+    writeFile: function (fileLocation, fileName, fileData) {
+        //If directory does not exist, create it.
+        if (!fs.existsSync(fileLocation)) {
+            wrench.mkdirSyncRecursive(fileLocation, "0755");
+        }
+
+        fs.writeFile(path.join(fileLocation, fileName), fileData, function (err) {
+            if (err) throw err;
+        });
+    },
+
+    copyFile: function (srcFile, destDir, baseDir) {
+        var filename = path.basename(srcFile),
+            fileBuffer = fs.readFileSync(srcFile),
+            fileLocation;
+
+        //if a base directory was provided, determine
+        //folder structure from the relative path of the base folder
+        if (baseDir && srcFile.indexOf(baseDir) === 0) {
+            fileLocation = srcFile.replace(baseDir, destDir);
+            wrench.mkdirSyncRecursive(path.dirname(fileLocation), "0755");
+            fs.writeFileSync(fileLocation, fileBuffer);
+        } else {
+            if (!fs.existsSync(destDir)) {
+                wrench.mkdirSyncRecursive(destDir, "0755");
+            }
+
+            fs.writeFileSync(path.join(destDir, filename), fileBuffer);
+        }
+    },
+
+    listFiles: function (directory, filter) {
+        var files = wrench.readdirSyncRecursive(directory),
+            filteredFiles = [];
+
+        files.forEach(function (file) {
+            //On mac wrench.readdirSyncRecursive does not return absolute paths, so resolve one.
+            file = path.resolve(directory, file);
+
+            if (filter(file)) {
+                filteredFiles.push(file);
+            }
+        });
+
+        return filteredFiles;
+    },
+
+    readdirSyncRecursive: function (baseDir) {
+        var files = [],
+            curFiles = [],
+            nextDirs,
+            isDir = function (f) {
+                return fs.statSync(f).isDirectory();
+            },
+            isFile = function (f) {
+                return !isDir(f);
+            },
+            prependBaseDir = function (fname) {
+                return path.join(baseDir, fname);
+            };
+
+        try {
+            curFiles = fs.readdirSync(baseDir);
+
+            if (curFiles && curFiles.length > 0) {
+                curFiles = curFiles.map(prependBaseDir);
+                nextDirs = curFiles.filter(isDir);
+                curFiles = curFiles.filter(isFile);
+
+                files = files.concat(curFiles);
+
+                while (nextDirs.length) {
+                    files = files.concat(_self.readdirSyncRecursive(nextDirs.shift()));
+                }
+            }
+        } catch (e) {
+        }
+
+        return files;
+    },
+
+    isWindows: function () {
+        return os.type().toLowerCase().indexOf("windows") >= 0;
+    },
+
+    isOSX: function () {
+        return os.type().toLowerCase().indexOf("darwin") >= 0;
+    },
+
+    isArray: function (obj) {
+        return obj.constructor.toString().indexOf("Array") !== -1;
+    },
+
+    isEmpty : function (obj) {
+        for (var prop in obj) {
+            if (obj.hasOwnProperty(prop))
+                return false;
+        }
+        return true;
+    },
+
+    toBoolean: function (myString, defaultVal) {
+        // if defaultVal is not passed, default value is undefined
+        return myString === "true" ? true : myString === "false" ? false : defaultVal;
+    },
+
+    parseUri : function (str) {
+        var i, uri = {},
+            key = [ "source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ],
+            matcher = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(str);
+
+        for (i = key.length - 1; i >= 0; i--) {
+            uri[key[i]] = matcher[i] || "";
+        }
+
+        return uri;
+    },
+
+    // uri - output from parseUri
+    isAbsoluteURI : function (uri) {
+        if (uri && uri.source) {
+            return uri.relative !== uri.source;
+        }
+
+        return false;
+    },
+
+    isLocalURI : function (uri) {
+        return uri && uri.scheme && uri.scheme.toLowerCase() === "local";
+    },
+
+    // Convert node.js Buffer data (encoded) to String
+    bufferToString : function (data) {
+        var s = "";
+        if (Buffer.isBuffer(data)) {
+            if (data.length >= 2 && data[0] === 0xFF && data[1] === 0xFE) {
+                s = data.toString("ucs2", 2);
+            } else if (data.length >= 2 && data[0] === 0xFE && data[1] === 0xFF) {
+                swapBytes(data);
+                s = data.toString("ucs2", 2);
+            } else if (data.length >= 3 && data[0] === 0xEF && data[1] === 0xBB && data[2] === 0xBF) {
+                s = data.toString("utf8", 3);
+            } else {
+                s = data.toString("ascii");
+            }
+        }
+
+        return s;
+    },
+
+    // Wrap object property in an Array if the property is defined and it is not an Array
+    wrapPropertyInArray : function (obj, property) {
+        if (obj && obj[property] && !(obj[property] instanceof Array)) {
+            obj[property] = [ obj[property] ];
+        }
+    },
+
+    inQuotes : function (property) {
+        //wrap in quotes if it's not already wrapped
+        if (property.indexOf("\"") === -1) {
+            return "\"" + property + "\"";
+        } else {
+            return property;
+        }
+    },
+
+    exec : function (command, args, options, callback) {
+        //Optional params handling [args, options]
+        if (typeof args === "object" && !Array.isArray(args)) {
+            callback = options;
+            options = args;
+            args = [];
+        } else if (typeof args === "function") {
+            callback = args;
+            options = {};
+            args = [];
+        } else if (typeof options === "function") {
+            callback = options;
+            options = {};
+        }
+
+        //insert executable portion at beginning of arg array
+        args.splice(0, 0, command);
+
+        var pkgrUtils = require("./packager-utils"),
+            customOptions = options._customOptions,
+            proc,
+            i;
+
+        for (i = 0; i < args.length; i++) {
+            if (args[i] && args[i].indexOf(" ") !== -1) {
+                if (!_self.isWindows()) {
+                    //remove any escaped spaces on non-Windows platforms and simply use quotes
+                    args[i] = args[i].replace(/\\ /g, " ");
+                }
+
+                //put any args with spaces in quotes
+                args[i] = _self.inQuotes(args[i]);
+            }
+        }
+
+        //delete _customOptions from options object before sending to exec
+        delete options._customOptions;
+        //Use the process env by default
+        options.env = options.env || process.env;
+
+        proc = childProcess.exec(args.join(" "), options, callback);
+
+        if (!customOptions || !customOptions.silent) {
+            proc.stdout.on("data", pkgrUtils.handleProcessOutput);
+            proc.stderr.on("data", pkgrUtils.handleProcessOutput);
+        }
+    },
+
+    loadModule: function (path) {
+        return require(path);
+    },
+
+    findHomePath : function () {
+        return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
+    },
+
+    getCordovaDir: function () {
+        var cordovaPath = path.join(_self.findHomePath(), CORDOVA_DIR);
+
+        if (!fs.existsSync(cordovaPath)) {
+            fs.mkdirSync(cordovaPath);
+        }
+
+        return cordovaPath;
+    },
+
+    getPropertiesFilePath: function () {
+        var propertiesFile = path.join(_self.getCordovaDir(), PROPERTY_FILE_NAME);
+
+        if (!fs.existsSync(propertiesFile)) {
+            _self.writeToPropertiesFile(DEFAULT_PROPERTY_FILE);
+        }
+
+        return propertiesFile;
+    },
+
+    getPropertiesFileName: function () {
+        return PROPERTY_FILE_NAME;
+    },
+
+    getProperties: function () {
+        var props =  require(_self.getPropertiesFilePath());
+        if (!props.targets) {
+            props.targets = {};
+        }
+        return props;
+    },
+
+    writeToPropertiesFile: function (data) {
+        var contents = JSON.stringify(data, null, 4) + "\n",
+            propertiesFile = path.join(_self.getCordovaDir(), PROPERTY_FILE_NAME);
+
+        fs.writeFileSync(propertiesFile, contents, 'utf-8');
+    },
+
+    genBarName: function () {
+        return DEFAULT_BAR_NAME;
+    },
+
+    clone: function (original) {
+        var clone = {},
+            prop;
+        if (typeof original !== "object") {
+            clone = original;
+        } else if (Array.isArray(original)) {
+            clone = original.slice();
+        } else {
+            /* jshint ignore:start */
+            for (prop in original) {
+                clone[prop] = original[prop];
+            }
+            /* jshint ignore:end */
+        }
+
+        return clone;
+    },
+    prompt: function (options, done) {
+        var promptSchema = {
+                properties: {
+                    "property": options
+                }
+            };
+        promptLib.start();
+        promptLib.colors = false;
+        promptLib.message = "";
+        promptLib.delimiter = "";
+        promptLib.get(promptSchema, function (err, results) {
+            done(err, !err && results.property);
+        });
+    },
+
+    mixin: function (mixin, to) {
+        Object.getOwnPropertyNames(mixin).forEach(function (prop) {
+            if (Object.hasOwnProperty.call(mixin, prop)) {
+                Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(mixin, prop));
+            }
+        });
+        return to;
+    },
+
+    series: function (steps) {
+        async.series(steps, this.exit_handler);
+    },
+
+    waterfall: function (steps) { 
+        async.waterfall(steps, this.exit_handler);
+    },
+
+    exit_handler: function (err) {
+        if (err) {
+            if (typeof err === "string") {
+                console.error(err);
+            } else {
+                console.error("An error has occurred");
+            }
+            exit(ERROR_VALUE);
+        } else {
+            exit(0);
+        }
+    }
+
+};
+
+module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/version.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/version.js b/bin/templates/project/cordova/lib/version.js
new file mode 100755
index 0000000..3068597
--- /dev/null
+++ b/bin/templates/project/cordova/lib/version.js
@@ -0,0 +1,48 @@
+#!/usr/bin/env node
+
+/*
+ *  Copyright 2013 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var fs = require("fs"),
+    readline = require("readline"),
+    util = require("util"),
+    path = require('path'),
+    projectPath = path.resolve(__dirname, '../..'),
+    filename = path.join(projectPath, 'www/cordova.js');
+
+if (fs.existsSync(filename)) {
+    var rl = readline.createInterface({
+        input: fs.createReadStream(filename),
+        terminal: false
+    });
+
+    rl.on("line", function (line) {
+        var splitSpace,
+            splitDash;
+        if (/^\/\/\s\d/.test(line)) {
+            rl.close();
+            splitSpace = line.split(" ");
+            if (splitSpace.length > 1) {
+                splitDash = splitSpace[1].split("-");
+                if (splitDash.length > 0) {
+                    console.log(splitDash[0]);
+                }
+            }
+        }
+    });
+} else {
+    console.log(util.format("The file \"%s\" does not exist.", filename));
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/xml-helpers.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/xml-helpers.js b/bin/templates/project/cordova/lib/xml-helpers.js
new file mode 100644
index 0000000..cfb914c
--- /dev/null
+++ b/bin/templates/project/cordova/lib/xml-helpers.js
@@ -0,0 +1,176 @@
+/*
+ *
+ * Copyright 2013 Anis Kadri
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+/**
+ * contains XML utility functions, some of which are specific to elementtree
+ */
+
+var fs = require('fs')
+  , path = require('path')
+  , et = require('elementtree');
+
+module.exports = {
+    moveProjFile: function(origFile, projPath, callback) {
+        var src = path.resolve(projPath, origFile)
+          , dest = src.replace('.orig', '');
+
+        fs.createReadStream(src)
+            .pipe(fs.createWriteStream(dest))
+            .on('close', callback);
+    },
+
+    // compare two et.XML nodes, see if they match
+    // compares tagName, text, attributes and children (recursively)
+    equalNodes: function(one, two) {
+        if (one.tag != two.tag) {
+            return false;
+        } else if (one.text.trim() != two.text.trim()) {
+            return false;
+        } else if (one._children.length != two._children.length) {
+            return false;
+        }
+
+        var oneAttribKeys = Object.keys(one.attrib),
+            twoAttribKeys = Object.keys(two.attrib),
+            i = 0, attribName;
+
+        if (oneAttribKeys.length != twoAttribKeys.length) {
+            return false;
+        }
+
+        for (i; i < oneAttribKeys.length; i++) {
+            attribName = oneAttribKeys[i];
+
+            if (one.attrib[attribName] != two.attrib[attribName]) {
+                return false;
+            }
+        }
+
+        for (i; i < one._children.length; i++) {
+            if (!module.exports.equalNodes(one._children[i], two._children[i])) {
+                return false;
+            }
+        }
+
+        return true;
+    },
+
+    // adds node to doc at selector, creating parent if it doesn't exist
+    graftXML: function(doc, nodes, selector) {
+        var parent = resolveParent(doc, selector);
+        if (!parent) {
+            //Try to create the parent recursively if necessary
+            try {
+                var parentToCreate = et.XML("<" + path.basename(selector) + ">"),
+                    parentSelector = path.dirname(selector);
+
+                this.graftXML(doc, [parentToCreate], parentSelector);
+            } catch (e) {
+                return false;
+            }
+            parent = resolveParent(doc, selector);
+            if (!parent) return false;
+        }
+
+        nodes.forEach(function (node) {
+            // check if child is unique first
+            if (uniqueChild(node, parent)) {
+                parent.append(node);
+            }
+        });
+
+        return true;
+    },
+
+    // removes node from doc at selector
+    pruneXML: function(doc, nodes, selector) {
+        var parent = resolveParent(doc, selector);
+        if (!parent) return false;
+
+        nodes.forEach(function (node) {
+            var matchingKid = null;
+            if ((matchingKid = findChild(node, parent)) != null) {
+                // stupid elementtree takes an index argument it doesn't use
+                // and does not conform to the python lib
+                parent.remove(0, matchingKid);
+            }
+        });
+
+        return true;
+    },
+
+    parseElementtreeSync: function (filename) {
+        var contents = fs.readFileSync(filename, 'utf-8').replace("\ufeff", "");;
+        return new et.ElementTree(et.XML(contents));
+    }
+};
+
+function findChild(node, parent) {
+    var matchingKids = parent.findall(node.tag)
+      , i, j;
+
+    for (i = 0, j = matchingKids.length ; i < j ; i++) {
+        if (module.exports.equalNodes(node, matchingKids[i])) {
+            return matchingKids[i];
+        }
+    }
+    return null;
+}
+
+function uniqueChild(node, parent) {
+    var matchingKids = parent.findall(node.tag)
+      , i = 0;
+
+    if (matchingKids.length == 0) {
+        return true;
+    } else  {
+        for (i; i < matchingKids.length; i++) {
+            if (module.exports.equalNodes(node, matchingKids[i])) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
+
+var ROOT = /^\/([^\/]*)/,
+    ABSOLUTE = /^\/([^\/]*)\/(.*)/;
+function resolveParent(doc, selector) {
+    var parent, tagName, subSelector;
+
+    // handle absolute selector (which elementtree doesn't like)
+    if (ROOT.test(selector)) {
+        tagName = selector.match(ROOT)[1];
+        // test for wildcard "any-tag" root selector
+        if (tagName == '*' || tagName === doc._root.tag) {
+            parent = doc._root;
+
+            // could be an absolute path, but not selecting the root
+            if (ABSOLUTE.test(selector)) {
+                subSelector = selector.match(ABSOLUTE)[2];
+                parent = parent.find(subSelector)
+            }
+        } else {
+            return false;
+        }
+    } else {
+        parent = doc.find(selector)
+    }
+    return parent;
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/run
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/run b/bin/templates/project/cordova/run
new file mode 100755
index 0000000..42eeeef
--- /dev/null
+++ b/bin/templates/project/cordova/run
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CORDOVA_DIR=$(dirname "$0")
+source "$CORDOVA_DIR/init"
+
+"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/run" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/run.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/run.bat b/bin/templates/project/cordova/run.bat
new file mode 100644
index 0000000..42c413a
--- /dev/null
+++ b/bin/templates/project/cordova/run.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\run" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/third_party/data2xml/data2xml.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/third_party/data2xml/data2xml.js b/bin/templates/project/cordova/third_party/data2xml/data2xml.js
new file mode 100644
index 0000000..8223d12
--- /dev/null
+++ b/bin/templates/project/cordova/third_party/data2xml/data2xml.js
@@ -0,0 +1,86 @@
+// --------------------------------------------------------------------------------------------------------------------
+//
+// data2xml.js - A data to XML converter with a nice interface (for NodeJS).
+//
+// Copyright (c) 2011 AppsAttic Ltd - http://www.appsattic.com/
+// Written by Andrew Chilton <ch...@appsattic.com>
+//
+// License: http://opensource.org/licenses/MIT
+//
+// --------------------------------------------------------------------------------------------------------------------
+
+var xmlHeader = '<?xml version="1.0" encoding="utf-8"?>\n';
+
+function entitify(str) {
+    str = '' + str;
+    str = str
+        .replace(/&/g, '&amp;')
+        .replace(/</g,'&lt;')
+        .replace(/>/g,'&gt;')
+        .replace(/'/g, '&apos;')
+        .replace(/"/g, '&quot;');
+    return str;
+}
+
+function makeStartTag(name, attr) {
+    attr = attr || {};
+    var tag = '<' + name;
+    for(var a in attr) {
+        tag += ' ' + a + '="' + entitify(attr[a]) + '"';
+    }
+    tag += '>';
+    return tag;
+}
+
+function makeEndTag(name) {
+    return '</' + name + '>';
+}
+
+function makeElement(name, data) {
+    var element = '';
+    if ( Array.isArray(data) ) {
+        data.forEach(function(v) {
+            element += makeElement(name, v);
+        });
+        return element;
+    }
+    else if ( typeof data === 'object' ) {
+        element += makeStartTag(name, data._attr);
+        if ( data._value ) {
+            element += entitify(data._value);
+        }
+/************** MODIFICATION [always execute else condition] ***************/
+        for (var el in data) {
+            /**************** MODIFICATION {if condition altered} **********************/
+            if ( el === '_attr'  || el === '_value') {
+                continue;
+            }
+            element += makeElement(el, data[el]);
+        }
+        element += makeEndTag(name);
+        return element;
+/***************************** END MODIFICATION ***************************/
+    }
+    else {
+        // a piece of data on it's own can't have attributes
+        return makeStartTag(name) + entitify(data) + makeEndTag(name);
+    }
+    throw "Unknown data " + data;
+}
+
+var data2xml = function(name, data) {
+    var xml = xmlHeader;
+    xml += makeElement(name, data);
+    return xml;
+};
+
+// --------------------------------------------------------------------------------------------------------------------
+
+data2xml.entitify = entitify;
+data2xml.makeStartTag = makeStartTag;
+data2xml.makeEndTag = makeEndTag;
+data2xml.makeElement = makeElement;
+
+module.exports = data2xml;
+
+// --------------------------------------------------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/version
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/version b/bin/templates/project/cordova/version
new file mode 100755
index 0000000..53f5a1b
--- /dev/null
+++ b/bin/templates/project/cordova/version
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+CORDOVA_DIR=$(dirname "$0")
+source "$CORDOVA_DIR/init"
+
+# Prints cordova version number
+"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/version" "$@"
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/version.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/version.bat b/bin/templates/project/cordova/version.bat
new file mode 100644
index 0000000..22e3526
--- /dev/null
+++ b/bin/templates/project/cordova/version.bat
@@ -0,0 +1,23 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+if ERRORLEVEL 1 exit /B 1
+
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\version" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/native/device/plugins/jnext/auth.txt
----------------------------------------------------------------------
diff --git a/bin/templates/project/native/device/plugins/jnext/auth.txt b/bin/templates/project/native/device/plugins/jnext/auth.txt
new file mode 100644
index 0000000..0983f4f
--- /dev/null
+++ b/bin/templates/project/native/device/plugins/jnext/auth.txt
@@ -0,0 +1,3 @@
+local:/// *
+file:// *
+http:// *
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/native/device/wwe
----------------------------------------------------------------------
diff --git a/bin/templates/project/native/device/wwe b/bin/templates/project/native/device/wwe
new file mode 100644
index 0000000..0e48b92
--- /dev/null
+++ b/bin/templates/project/native/device/wwe
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec weblauncher "$@"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/native/simulator/plugins/jnext/auth.txt
----------------------------------------------------------------------
diff --git a/bin/templates/project/native/simulator/plugins/jnext/auth.txt b/bin/templates/project/native/simulator/plugins/jnext/auth.txt
new file mode 100644
index 0000000..0983f4f
--- /dev/null
+++ b/bin/templates/project/native/simulator/plugins/jnext/auth.txt
@@ -0,0 +1,3 @@
+local:/// *
+file:// *
+http:// *
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/native/simulator/wwe
----------------------------------------------------------------------
diff --git a/bin/templates/project/native/simulator/wwe b/bin/templates/project/native/simulator/wwe
new file mode 100644
index 0000000..0e48b92
--- /dev/null
+++ b/bin/templates/project/native/simulator/wwe
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec weblauncher "$@"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/config.xml
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/config.xml b/bin/templates/project/www/config.xml
new file mode 100644
index 0000000..f8120ce
--- /dev/null
+++ b/bin/templates/project/www/config.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-->
+<!--
+  Widget Configuration Reference:
+    https://developer.blackberry.com/html5/documentation/v2_1/config_doc_elements.html
+-->
+
+<widget xmlns="http://www.w3.org/ns/widgets"
+        xmlns:rim="http://www.blackberry.com/ns/widgets"
+	version="1.0.0.1" id="default.app.id">
+  <rim:permissions>
+
+  </rim:permissions>
+  <name>default.app.name</name>
+
+  <author>Your Name Here</author>
+
+  <description>
+       A sample Apache Cordova application that responds to the deviceready event.
+  </description>
+
+  <!-- Expose access to all URIs, including the file and http protocols -->
+  <access subdomains="true" uri="file:///store/home" />
+  <access subdomains="true" uri="file:///SDCard" />
+  <access subdomains="true" uri="*" />
+
+  <icon src="res/icon/blackberry10/icon-80.png" />
+  <rim:splash src="res/screen/blackberry10/splash-1280x768.png" />
+  <rim:splash src="res/screen/blackberry10/splash-720x720.png" />
+  <rim:splash src="res/screen/blackberry10/splash-768x1280.png" />
+
+  <content src="index.html" />
+
+</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/css/index.css
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/css/index.css b/bin/templates/project/www/css/index.css
new file mode 100644
index 0000000..51daa79
--- /dev/null
+++ b/bin/templates/project/www/css/index.css
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+* {
+    -webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
+}
+
+body {
+    -webkit-touch-callout: none;                /* prevent callout to copy image, etc when tap to hold */
+    -webkit-text-size-adjust: none;             /* prevent webkit from resizing text to fit */
+    -webkit-user-select: none;                  /* prevent copy paste, to allow, change 'none' to 'text' */
+    background-color:#E4E4E4;
+    background-image:linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
+    background-image:-webkit-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
+    background-image:-ms-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
+    background-image:-webkit-gradient(
+        linear,
+        left top,
+        left bottom,
+        color-stop(0, #A7A7A7),
+        color-stop(0.51, #E4E4E4)
+    );
+    background-attachment:fixed;
+    font-family:'HelveticaNeue-Light', 'HelveticaNeue', Helvetica, Arial, sans-serif;
+    font-size:12px;
+    height:100%;
+    margin:0px;
+    padding:0px;
+    text-transform:uppercase;
+    width:100%;
+}
+
+/* Portrait layout (default) */
+.app {
+    background:url(../img/logo.png) no-repeat center top; /* 170px x 200px */
+    position:absolute;             /* position in the center of the screen */
+    left:50%;
+    top:50%;
+    height:50px;                   /* text area height */
+    width:225px;                   /* text area width */
+    text-align:center;
+    padding:180px 0px 0px 0px;     /* image height is 200px (bottom 20px are overlapped with text) */
+    margin:-115px 0px 0px -112px;  /* offset vertical: half of image height and text area height */
+                                   /* offset horizontal: half of text area width */
+}
+
+/* Landscape layout (with min-width) */
+@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
+    .app {
+        background-position:left center;
+        padding:75px 0px 75px 170px;  /* padding-top + padding-bottom + text area = image height */
+        margin:-90px 0px 0px -198px;  /* offset vertical: half of image height */
+                                      /* offset horizontal: half of image width and text area width */
+    }
+}
+
+h1 {
+    font-size:24px;
+    font-weight:normal;
+    margin:0px;
+    overflow:visible;
+    padding:0px;
+    text-align:center;
+}
+
+.event {
+    border-radius:4px;
+    -webkit-border-radius:4px;
+    color:#FFFFFF;
+    font-size:12px;
+    margin:0px 30px;
+    padding:2px 0px;
+}
+
+.event.listening {
+    background-color:#333333;
+    display:block;
+}
+
+.event.received {
+    background-color:#4B946A;
+    display:none;
+}
+
+@keyframes fade {
+    from { opacity: 1.0; }
+    50% { opacity: 0.4; }
+    to { opacity: 1.0; }
+}
+ 
+@-webkit-keyframes fade {
+    from { opacity: 1.0; }
+    50% { opacity: 0.4; }
+    to { opacity: 1.0; }
+}
+ 
+.blink {
+    animation:fade 3000ms infinite;
+    -webkit-animation:fade 3000ms infinite;
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/img/logo.png
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/img/logo.png b/bin/templates/project/www/img/logo.png
new file mode 100644
index 0000000..9519e7d
Binary files /dev/null and b/bin/templates/project/www/img/logo.png differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/index.html
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/index.html b/bin/templates/project/www/index.html
new file mode 100644
index 0000000..bde5741
--- /dev/null
+++ b/bin/templates/project/www/index.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+     KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<html>
+    <head>
+        <meta charset="utf-8" />
+        <meta name="format-detection" content="telephone=no" />
+        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
+        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
+        <link rel="stylesheet" type="text/css" href="css/index.css" />
+        <title>Hello World</title>
+    </head>
+    <body>
+        <div class="app">
+            <h1>Apache Cordova</h1>
+            <div id="deviceready" class="blink">
+                <p class="event listening">Connecting to Device</p>
+                <p class="event received">Device is Ready</p>
+            </div>
+        </div>
+        <script type="text/javascript" src="cordova.js"></script>
+        <script type="text/javascript" src="js/index.js"></script>
+        <script type="text/javascript">
+            app.initialize();
+        </script>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/js/index.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/js/index.js b/bin/templates/project/www/js/index.js
new file mode 100644
index 0000000..87b5660
--- /dev/null
+++ b/bin/templates/project/www/js/index.js
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+var app = {
+    // Application Constructor
+    initialize: function() {
+        this.bindEvents();
+    },
+    // Bind Event Listeners
+    //
+    // Bind any events that are required on startup. Common events are:
+    // 'load', 'deviceready', 'offline', and 'online'.
+    bindEvents: function() {
+        document.addEventListener('deviceready', this.onDeviceReady, false);
+    },
+    // deviceready Event Handler
+    //
+    // The scope of 'this' is the event. In order to call the 'receivedEvent'
+    // function, we must explicitly call 'app.receivedEvent(...);'
+    onDeviceReady: function() {
+        app.receivedEvent('deviceready');
+    },
+    // Update DOM on a Received Event
+    receivedEvent: function(id) {
+        var parentElement = document.getElementById(id);
+        var listeningElement = parentElement.querySelector('.listening');
+        var receivedElement = parentElement.querySelector('.received');
+
+        listeningElement.setAttribute('style', 'display:none;');
+        receivedElement.setAttribute('style', 'display:block;');
+
+        console.log('Received Event: ' + id);
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/res/icon/blackberry10/icon-80.png
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/res/icon/blackberry10/icon-80.png b/bin/templates/project/www/res/icon/blackberry10/icon-80.png
new file mode 100644
index 0000000..f86a27a
Binary files /dev/null and b/bin/templates/project/www/res/icon/blackberry10/icon-80.png differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png b/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png
new file mode 100644
index 0000000..5f4bca9
Binary files /dev/null and b/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png b/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png
new file mode 100644
index 0000000..fe1756f
Binary files /dev/null and b/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png b/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png
new file mode 100644
index 0000000..0fb9c1b
Binary files /dev/null and b/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/spec.html
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/spec.html b/bin/templates/project/www/spec.html
new file mode 100644
index 0000000..71f00de
--- /dev/null
+++ b/bin/templates/project/www/spec.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+     KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<html>
+    <head>
+        <title>Jasmine Spec Runner</title>
+
+        <!-- jasmine source -->
+        <link rel="shortcut icon" type="image/png" href="spec/lib/jasmine-1.2.0/jasmine_favicon.png">
+        <link rel="stylesheet" type="text/css" href="spec/lib/jasmine-1.2.0/jasmine.css">
+        <script type="text/javascript" src="spec/lib/jasmine-1.2.0/jasmine.js"></script>
+        <script type="text/javascript" src="spec/lib/jasmine-1.2.0/jasmine-html.js"></script>
+
+        <!-- include source files here... -->
+        <script type="text/javascript" src="js/index.js"></script>
+
+        <!-- include spec files here... -->
+        <script type="text/javascript" src="spec/helper.js"></script>
+        <script type="text/javascript" src="spec/index.js"></script>
+
+        <script type="text/javascript">
+            (function() {
+                var jasmineEnv = jasmine.getEnv();
+                jasmineEnv.updateInterval = 1000;
+
+                var htmlReporter = new jasmine.HtmlReporter();
+
+                jasmineEnv.addReporter(htmlReporter);
+
+                jasmineEnv.specFilter = function(spec) {
+                    return htmlReporter.specFilter(spec);
+                };
+
+                var currentWindowOnload = window.onload;
+
+                window.onload = function() {
+                    if (currentWindowOnload) {
+                        currentWindowOnload();
+                    }
+                    execJasmine();
+                };
+
+                function execJasmine() {
+                    jasmineEnv.execute();
+                }
+            })();
+        </script>
+    </head>
+    <body>
+        <div id="stage" style="display:none;"></div>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/spec/helper.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/spec/helper.js b/bin/templates/project/www/spec/helper.js
new file mode 100644
index 0000000..929f776
--- /dev/null
+++ b/bin/templates/project/www/spec/helper.js
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+afterEach(function() {
+    document.getElementById('stage').innerHTML = '';
+});
+
+var helper = {
+    trigger: function(obj, name) {
+        var e = document.createEvent('Event');
+        e.initEvent(name, true, true);
+        obj.dispatchEvent(e);
+    },
+    getComputedStyle: function(querySelector, property) {
+        var element = document.querySelector(querySelector);
+        return window.getComputedStyle(element).getPropertyValue(property);
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/spec/index.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/spec/index.js b/bin/templates/project/www/spec/index.js
new file mode 100644
index 0000000..20f8be5
--- /dev/null
+++ b/bin/templates/project/www/spec/index.js
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+describe('app', function() {
+    describe('initialize', function() {
+        it('should bind deviceready', function() {
+            runs(function() {
+                spyOn(app, 'onDeviceReady');
+                app.initialize();
+                helper.trigger(window.document, 'deviceready');
+            });
+
+            waitsFor(function() {
+                return (app.onDeviceReady.calls.length > 0);
+            }, 'onDeviceReady should be called once', 500);
+
+            runs(function() {
+                expect(app.onDeviceReady).toHaveBeenCalled();
+            });
+        });
+    });
+
+    describe('onDeviceReady', function() {
+        it('should report that it fired', function() {
+            spyOn(app, 'receivedEvent');
+            app.onDeviceReady();
+            expect(app.receivedEvent).toHaveBeenCalledWith('deviceready');
+        });
+    });
+
+    describe('receivedEvent', function() {
+        beforeEach(function() {
+            var el = document.getElementById('stage');
+            el.innerHTML = ['<div id="deviceready">',
+                            '    <p class="event listening">Listening</p>',
+                            '    <p class="event received">Received</p>',
+                            '</div>'].join('\n');
+        });
+
+        it('should hide the listening element', function() {
+            app.receivedEvent('deviceready');
+            var displayStyle = helper.getComputedStyle('#deviceready .listening', 'display');
+            expect(displayStyle).toEqual('none');
+        });
+
+        it('should show the received element', function() {
+            app.receivedEvent('deviceready');
+            var displayStyle = helper.getComputedStyle('#deviceready .received', 'display');
+            expect(displayStyle).toEqual('block');
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE b/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
new file mode 100644
index 0000000..7c435ba
--- /dev/null
+++ b/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2008-2011 Pivotal Labs
+
+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/cordova-blackberry/blob/a6733a83/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js b/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js
new file mode 100644
index 0000000..a0b0639
--- /dev/null
+++ b/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js
@@ -0,0 +1,616 @@
+jasmine.HtmlReporterHelpers = {};
+
+jasmine.HtmlReporterHelpers.createDom = function(type, attrs, childrenVarArgs) {
+  var el = document.createElement(type);
+
+  for (var i = 2; i < arguments.length; i++) {
+    var child = arguments[i];
+
+    if (typeof child === 'string') {
+      el.appendChild(document.createTextNode(child));
+    } else {
+      if (child) {
+        el.appendChild(child);
+      }
+    }
+  }
+
+  for (var attr in attrs) {
+    if (attr == "className") {
+      el[attr] = attrs[attr];
+    } else {
+      el.setAttribute(attr, attrs[attr]);
+    }
+  }
+
+  return el;
+};
+
+jasmine.HtmlReporterHelpers.getSpecStatus = function(child) {
+  var results = child.results();
+  var status = results.passed() ? 'passed' : 'failed';
+  if (results.skipped) {
+    status = 'skipped';
+  }
+
+  return status;
+};
+
+jasmine.HtmlReporterHelpers.appendToSummary = function(child, childElement) {
+  var parentDiv = this.dom.summary;
+  var parentSuite = (typeof child.parentSuite == 'undefined') ? 'suite' : 'parentSuite';
+  var parent = child[parentSuite];
+
+  if (parent) {
+    if (typeof this.views.suites[parent.id] == 'undefined') {
+      this.views.suites[parent.id] = new jasmine.HtmlReporter.SuiteView(parent, this.dom, this.views);
+    }
+    parentDiv = this.views.suites[parent.id].element;
+  }
+
+  parentDiv.appendChild(childElement);
+};
+
+
+jasmine.HtmlReporterHelpers.addHelpers = function(ctor) {
+  for(var fn in jasmine.HtmlReporterHelpers) {
+    ctor.prototype[fn] = jasmine.HtmlReporterHelpers[fn];
+  }
+};
+
+jasmine.HtmlReporter = function(_doc) {
+  var self = this;
+  var doc = _doc || window.document;
+
+  var reporterView;
+
+  var dom = {};
+
+  // Jasmine Reporter Public Interface
+  self.logRunningSpecs = false;
+
+  self.reportRunnerStarting = function(runner) {
+    var specs = runner.specs() || [];
+
+    if (specs.length == 0) {
+      return;
+    }
+
+    createReporterDom(runner.env.versionString());
+    doc.body.appendChild(dom.reporter);
+
+    reporterView = new jasmine.HtmlReporter.ReporterView(dom);
+    reporterView.addSpecs(specs, self.specFilter);
+  };
+
+  self.reportRunnerResults = function(runner) {
+    reporterView && reporterView.complete();
+  };
+
+  self.reportSuiteResults = function(suite) {
+    reporterView.suiteComplete(suite);
+  };
+
+  self.reportSpecStarting = function(spec) {
+    if (self.logRunningSpecs) {
+      self.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
+    }
+  };
+
+  self.reportSpecResults = function(spec) {
+    reporterView.specComplete(spec);
+  };
+
+  self.log = function() {
+    var console = jasmine.getGlobal().console;
+    if (console && console.log) {
+      if (console.log.apply) {
+        console.log.apply(console, arguments);
+      } else {
+        console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
+      }
+    }
+  };
+
+  self.specFilter = function(spec) {
+    if (!focusedSpecName()) {
+      return true;
+    }
+
+    return spec.getFullName().indexOf(focusedSpecName()) === 0;
+  };
+
+  return self;
+
+  function focusedSpecName() {
+    var specName;
+
+    (function memoizeFocusedSpec() {
+      if (specName) {
+        return;
+      }
+
+      var paramMap = [];
+      var params = doc.location.search.substring(1).split('&');
+
+      for (var i = 0; i < params.length; i++) {
+        var p = params[i].split('=');
+        paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
+      }
+
+      specName = paramMap.spec;
+    })();
+
+    return specName;
+  }
+
+  function createReporterDom(version) {
+    dom.reporter = self.createDom('div', { id: 'HTMLReporter', className: 'jasmine_reporter' },
+      dom.banner = self.createDom('div', { className: 'banner' },
+        self.createDom('span', { className: 'title' }, "Jasmine "),
+        self.createDom('span', { className: 'version' }, version)),
+
+      dom.symbolSummary = self.createDom('ul', {className: 'symbolSummary'}),
+      dom.alert = self.createDom('div', {className: 'alert'}),
+      dom.results = self.createDom('div', {className: 'results'},
+        dom.summary = self.createDom('div', { className: 'summary' }),
+        dom.details = self.createDom('div', { id: 'details' }))
+    );
+  }
+};
+jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter);jasmine.HtmlReporter.ReporterView = function(dom) {
+  this.startedAt = new Date();
+  this.runningSpecCount = 0;
+  this.completeSpecCount = 0;
+  this.passedCount = 0;
+  this.failedCount = 0;
+  this.skippedCount = 0;
+
+  this.createResultsMenu = function() {
+    this.resultsMenu = this.createDom('span', {className: 'resultsMenu bar'},
+      this.summaryMenuItem = this.createDom('a', {className: 'summaryMenuItem', href: "#"}, '0 specs'),
+      ' | ',
+      this.detailsMenuItem = this.createDom('a', {className: 'detailsMenuItem', href: "#"}, '0 failing'));
+
+    this.summaryMenuItem.onclick = function() {
+      dom.reporter.className = dom.reporter.className.replace(/ showDetails/g, '');
+    };
+
+    this.detailsMenuItem.onclick = function() {
+      showDetails();
+    };
+  };
+
+  this.addSpecs = function(specs, specFilter) {
+    this.totalSpecCount = specs.length;
+
+    this.views = {
+      specs: {},
+      suites: {}
+    };
+
+    for (var i = 0; i < specs.length; i++) {
+      var spec = specs[i];
+      this.views.specs[spec.id] = new jasmine.HtmlReporter.SpecView(spec, dom, this.views);
+      if (specFilter(spec)) {
+        this.runningSpecCount++;
+      }
+    }
+  };
+
+  this.specComplete = function(spec) {
+    this.completeSpecCount++;
+
+    if (isUndefined(this.views.specs[spec.id])) {
+      this.views.specs[spec.id] = new jasmine.HtmlReporter.SpecView(spec, dom);
+    }
+
+    var specView = this.views.specs[spec.id];
+
+    switch (specView.status()) {
+      case 'passed':
+        this.passedCount++;
+        break;
+
+      case 'failed':
+        this.failedCount++;
+        break;
+
+      case 'skipped':
+        this.skippedCount++;
+        break;
+    }
+
+    specView.refresh();
+    this.refresh();
+  };
+
+  this.suiteComplete = function(suite) {
+    var suiteView = this.views.suites[suite.id];
+    if (isUndefined(suiteView)) {
+      return;
+    }
+    suiteView.refresh();
+  };
+
+  this.refresh = function() {
+
+    if (isUndefined(this.resultsMenu)) {
+      this.createResultsMenu();
+    }
+
+    // currently running UI
+    if (isUndefined(this.runningAlert)) {
+      this.runningAlert = this.createDom('a', {href: "?", className: "runningAlert bar"});
+      dom.alert.appendChild(this.runningAlert);
+    }
+    this.runningAlert.innerHTML = "Running " + this.completeSpecCount + " of " + specPluralizedFor(this.totalSpecCount);
+
+    // skipped specs UI
+    if (isUndefined(this.skippedAlert)) {
+      this.skippedAlert = this.createDom('a', {href: "?", className: "skippedAlert bar"});
+    }
+
+    this.skippedAlert.innerHTML = "Skipping " + this.skippedCount + " of " + specPluralizedFor(this.totalSpecCount) + " - run all";
+
+    if (this.skippedCount === 1 && isDefined(dom.alert)) {
+      dom.alert.appendChild(this.skippedAlert);
+    }
+
+    // passing specs UI
+    if (isUndefined(this.passedAlert)) {
+      this.passedAlert = this.createDom('span', {href: "?", className: "passingAlert bar"});
+    }
+    this.passedAlert.innerHTML = "Passing " + specPluralizedFor(this.passedCount);
+
+    // failing specs UI
+    if (isUndefined(this.failedAlert)) {
+      this.failedAlert = this.createDom('span', {href: "?", className: "failingAlert bar"});
+    }
+    this.failedAlert.innerHTML = "Failing " + specPluralizedFor(this.failedCount);
+
+    if (this.failedCount === 1 && isDefined(dom.alert)) {
+      dom.alert.appendChild(this.failedAlert);
+      dom.alert.appendChild(this.resultsMenu);
+    }
+
+    // summary info
+    this.summaryMenuItem.innerHTML = "" + specPluralizedFor(this.runningSpecCount);
+    this.detailsMenuItem.innerHTML = "" + this.failedCount + " failing";
+  };
+
+  this.complete = function() {
+    dom.alert.removeChild(this.runningAlert);
+
+    this.skippedAlert.innerHTML = "Ran " + this.runningSpecCount + " of " + specPluralizedFor(this.totalSpecCount) + " - run all";
+
+    if (this.failedCount === 0) {
+      dom.alert.appendChild(this.createDom('span', {className: 'passingAlert bar'}, "Passing " + specPluralizedFor(this.passedCount)));
+    } else {
+      showDetails();
+    }
+
+    dom.banner.appendChild(this.createDom('span', {className: 'duration'}, "finished in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s"));
+  };
+
+  return this;
+
+  function showDetails() {
+    if (dom.reporter.className.search(/showDetails/) === -1) {
+      dom.reporter.className += " showDetails";
+    }
+  }
+
+  function isUndefined(obj) {
+    return typeof obj === 'undefined';
+  }
+
+  function isDefined(obj) {
+    return !isUndefined(obj);
+  }
+
+  function specPluralizedFor(count) {
+    var str = count + " spec";
+    if (count > 1) {
+      str += "s"
+    }
+    return str;
+  }
+
+};
+
+jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.ReporterView);
+
+
+jasmine.HtmlReporter.SpecView = function(spec, dom, views) {
+  this.spec = spec;
+  this.dom = dom;
+  this.views = views;
+
+  this.symbol = this.createDom('li', { className: 'pending' });
+  this.dom.symbolSummary.appendChild(this.symbol);
+
+  this.summary = this.createDom('div', { className: 'specSummary' },
+      this.createDom('a', {
+        className: 'description',
+        href: '?spec=' + encodeURIComponent(this.spec.getFullName()),
+        title: this.spec.getFullName()
+      }, this.spec.description)
+  );
+
+  this.detail = this.createDom('div', { className: 'specDetail' },
+      this.createDom('a', {
+        className: 'description',
+        href: '?spec=' + encodeURIComponent(this.spec.getFullName()),
+        title: this.spec.getFullName()
+      }, this.spec.getFullName())
+  );
+};
+
+jasmine.HtmlReporter.SpecView.prototype.status = function() {
+  return this.getSpecStatus(this.spec);
+};
+
+jasmine.HtmlReporter.SpecView.prototype.refresh = function() {
+  this.symbol.className = this.status();
+
+  switch (this.status()) {
+    case 'skipped':
+      break;
+
+    case 'passed':
+      this.appendSummaryToSuiteDiv();
+      break;
+
+    case 'failed':
+      this.appendSummaryToSuiteDiv();
+      this.appendFailureDetail();
+      break;
+  }
+};
+
+jasmine.HtmlReporter.SpecView.prototype.appendSummaryToSuiteDiv = function() {
+  this.summary.className += ' ' + this.status();
+  this.appendToSummary(this.spec, this.summary);
+};
+
+jasmine.HtmlReporter.SpecView.prototype.appendFailureDetail = function() {
+  this.detail.className += ' ' + this.status();
+
+  var resultItems = this.spec.results().getItems();
+  var messagesDiv = this.createDom('div', { className: 'messages' });
+
+  for (var i = 0; i < resultItems.length; i++) {
+    var result = resultItems[i];
+
+    if (result.type == 'log') {
+      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
+    } else if (result.type == 'expect' && result.passed && !result.passed()) {
+      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
+
+      if (result.trace.stack) {
+        messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
+      }
+    }
+  }
+
+  if (messagesDiv.childNodes.length > 0) {
+    this.detail.appendChild(messagesDiv);
+    this.dom.details.appendChild(this.detail);
+  }
+};
+
+jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SpecView);jasmine.HtmlReporter.SuiteView = function(suite, dom, views) {
+  this.suite = suite;
+  this.dom = dom;
+  this.views = views;
+
+  this.element = this.createDom('div', { className: 'suite' },
+      this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(this.suite.getFullName()) }, this.suite.description)
+  );
+
+  this.appendToSummary(this.suite, this.element);
+};
+
+jasmine.HtmlReporter.SuiteView.prototype.status = function() {
+  return this.getSpecStatus(this.suite);
+};
+
+jasmine.HtmlReporter.SuiteView.prototype.refresh = function() {
+  this.element.className += " " + this.status();
+};
+
+jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SuiteView);
+
+/* @deprecated Use jasmine.HtmlReporter instead
+ */
+jasmine.TrivialReporter = function(doc) {
+  this.document = doc || document;
+  this.suiteDivs = {};
+  this.logRunningSpecs = false;
+};
+
+jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) {
+  var el = document.createElement(type);
+
+  for (var i = 2; i < arguments.length; i++) {
+    var child = arguments[i];
+
+    if (typeof child === 'string') {
+      el.appendChild(document.createTextNode(child));
+    } else {
+      if (child) { el.appendChild(child); }
+    }
+  }
+
+  for (var attr in attrs) {
+    if (attr == "className") {
+      el[attr] = attrs[attr];
+    } else {
+      el.setAttribute(attr, attrs[attr]);
+    }
+  }
+
+  return el;
+};
+
+jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
+  var showPassed, showSkipped;
+
+  this.outerDiv = this.createDom('div', { id: 'TrivialReporter', className: 'jasmine_reporter' },
+      this.createDom('div', { className: 'banner' },
+        this.createDom('div', { className: 'logo' },
+            this.createDom('span', { className: 'title' }, "Jasmine"),
+            this.createDom('span', { className: 'version' }, runner.env.versionString())),
+        this.createDom('div', { className: 'options' },
+            "Show ",
+            showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }),
+            this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "),
+            showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }),
+            this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped")
+            )
+          ),
+
+      this.runnerDiv = this.createDom('div', { className: 'runner running' },
+          this.createDom('a', { className: 'run_spec', href: '?' }, "run all"),
+          this.runnerMessageSpan = this.createDom('span', {}, "Running..."),
+          this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, ""))
+      );
+
+  this.document.body.appendChild(this.outerDiv);
+
+  var suites = runner.suites();
+  for (var i = 0; i < suites.length; i++) {
+    var suite = suites[i];
+    var suiteDiv = this.createDom('div', { className: 'suite' },
+        this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"),
+        this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description));
+    this.suiteDivs[suite.id] = suiteDiv;
+    var parentDiv = this.outerDiv;
+    if (suite.parentSuite) {
+      parentDiv = this.suiteDivs[suite.parentSuite.id];
+    }
+    parentDiv.appendChild(suiteDiv);
+  }
+
+  this.startedAt = new Date();
+
+  var self = this;
+  showPassed.onclick = function(evt) {
+    if (showPassed.checked) {
+      self.outerDiv.className += ' show-passed';
+    } else {
+      self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, '');
+    }
+  };
+
+  showSkipped.onclick = function(evt) {
+    if (showSkipped.checked) {
+      self.outerDiv.className += ' show-skipped';
+    } else {
+      self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, '');
+    }
+  };
+};
+
+jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) {
+  var results = runner.results();
+  var className = (results.failedCount > 0) ? "runner failed" : "runner passed";
+  this.runnerDiv.setAttribute("class", className);
+  //do it twice for IE
+  this.runnerDiv.setAttribute("className", className);
+  var specs = runner.specs();
+  var specCount = 0;
+  for (var i = 0; i < specs.length; i++) {
+    if (this.specFilter(specs[i])) {
+      specCount++;
+    }
+  }
+  var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s");
+  message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s";
+  this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild);
+
+  this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString()));
+};
+
+jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) {
+  var results = suite.results();
+  var status = results.passed() ? 'passed' : 'failed';
+  if (results.totalCount === 0) { // todo: change this to check results.skipped
+    status = 'skipped';
+  }
+  this.suiteDivs[suite.id].className += " " + status;
+};
+
+jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) {
+  if (this.logRunningSpecs) {
+    this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
+  }
+};
+
+jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
+  var results = spec.results();
+  var status = results.passed() ? 'passed' : 'failed';
+  if (results.skipped) {
+    status = 'skipped';
+  }
+  var specDiv = this.createDom('div', { className: 'spec '  + status },
+      this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"),
+      this.createDom('a', {
+        className: 'description',
+        href: '?spec=' + encodeURIComponent(spec.getFullName()),
+        title: spec.getFullName()
+      }, spec.description));
+
+
+  var resultItems = results.getItems();
+  var messagesDiv = this.createDom('div', { className: 'messages' });
+  for (var i = 0; i < resultItems.length; i++) {
+    var result = resultItems[i];
+
+    if (result.type == 'log') {
+      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
+    } else if (result.type == 'expect' && result.passed && !result.passed()) {
+      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
+
+      if (result.trace.stack) {
+        messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
+      }
+    }
+  }
+
+  if (messagesDiv.childNodes.length > 0) {
+    specDiv.appendChild(messagesDiv);
+  }
+
+  this.suiteDivs[spec.suite.id].appendChild(specDiv);
+};
+
+jasmine.TrivialReporter.prototype.log = function() {
+  var console = jasmine.getGlobal().console;
+  if (console && console.log) {
+    if (console.log.apply) {
+      console.log.apply(console, arguments);
+    } else {
+      console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
+    }
+  }
+};
+
+jasmine.TrivialReporter.prototype.getLocation = function() {
+  return this.document.location;
+};
+
+jasmine.TrivialReporter.prototype.specFilter = function(spec) {
+  var paramMap = {};
+  var params = this.getLocation().search.substring(1).split('&');
+  for (var i = 0; i < params.length; i++) {
+    var p = params[i].split('=');
+    paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
+  }
+
+  if (!paramMap.spec) {
+    return true;
+  }
+  return spec.getFullName().indexOf(paramMap.spec) === 0;
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css b/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css
new file mode 100644
index 0000000..826e575
--- /dev/null
+++ b/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css
@@ -0,0 +1,81 @@
+body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
+
+#HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
+#HTMLReporter a { text-decoration: none; }
+#HTMLReporter a:hover { text-decoration: underline; }
+#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
+#HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
+#HTMLReporter #jasmine_content { position: fixed; right: 100%; }
+#HTMLReporter .version { color: #aaaaaa; }
+#HTMLReporter .banner { margin-top: 14px; }
+#HTMLReporter .duration { color: #aaaaaa; float: right; }
+#HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
+#HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
+#HTMLReporter .symbolSummary li.passed { font-size: 14px; }
+#HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
+#HTMLReporter .symbolSummary li.failed { line-height: 9px; }
+#HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
+#HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
+#HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
+#HTMLReporter .symbolSummary li.pending { line-height: 11px; }
+#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
+#HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
+#HTMLReporter .runningAlert { background-color: #666666; }
+#HTMLReporter .skippedAlert { background-color: #aaaaaa; }
+#HTMLReporter .skippedAlert:first-child { background-color: #333333; }
+#HTMLReporter .skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; }
+#HTMLReporter .passingAlert { background-color: #a6b779; }
+#HTMLReporter .passingAlert:first-child { background-color: #5e7d00; }
+#HTMLReporter .failingAlert { background-color: #cf867e; }
+#HTMLReporter .failingAlert:first-child { background-color: #b03911; }
+#HTMLReporter .results { margin-top: 14px; }
+#HTMLReporter #details { display: none; }
+#HTMLReporter .resultsMenu, #HTMLReporter .resultsMenu a { background-color: #fff; color: #333333; }
+#HTMLReporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
+#HTMLReporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
+#HTMLReporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
+#HTMLReporter.showDetails .summary { display: none; }
+#HTMLReporter.showDetails #details { display: block; }
+#HTMLReporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
+#HTMLReporter .summary { margin-top: 14px; }
+#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary { margin-left: 14px; }
+#HTMLReporter .summary .specSummary.passed a { color: #5e7d00; }
+#HTMLReporter .summary .specSummary.failed a { color: #b03911; }
+#HTMLReporter .description + .suite { margin-top: 0; }
+#HTMLReporter .suite { margin-top: 14px; }
+#HTMLReporter .suite a { color: #333333; }
+#HTMLReporter #details .specDetail { margin-bottom: 28px; }
+#HTMLReporter #details .specDetail .description { display: block; color: white; background-color: #b03911; }
+#HTMLReporter .resultMessage { padding-top: 14px; color: #333333; }
+#HTMLReporter .resultMessage span.result { display: block; }
+#HTMLReporter .stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
+
+#TrivialReporter { padding: 8px 13px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow-y: scroll; background-color: white; font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; /*.resultMessage {*/ /*white-space: pre;*/ /*}*/ }
+#TrivialReporter a:visited, #TrivialReporter a { color: #303; }
+#TrivialReporter a:hover, #TrivialReporter a:active { color: blue; }
+#TrivialReporter .run_spec { float: right; padding-right: 5px; font-size: .8em; text-decoration: none; }
+#TrivialReporter .banner { color: #303; background-color: #fef; padding: 5px; }
+#TrivialReporter .logo { float: left; font-size: 1.1em; padding-left: 5px; }
+#TrivialReporter .logo .version { font-size: .6em; padding-left: 1em; }
+#TrivialReporter .runner.running { background-color: yellow; }
+#TrivialReporter .options { text-align: right; font-size: .8em; }
+#TrivialReporter .suite { border: 1px outset gray; margin: 5px 0; padding-left: 1em; }
+#TrivialReporter .suite .suite { margin: 5px; }
+#TrivialReporter .suite.passed { background-color: #dfd; }
+#TrivialReporter .suite.failed { background-color: #fdd; }
+#TrivialReporter .spec { margin: 5px; padding-left: 1em; clear: both; }
+#TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped { padding-bottom: 5px; border: 1px solid gray; }
+#TrivialReporter .spec.failed { background-color: #fbb; border-color: red; }
+#TrivialReporter .spec.passed { background-color: #bfb; border-color: green; }
+#TrivialReporter .spec.skipped { background-color: #bbb; }
+#TrivialReporter .messages { border-left: 1px dashed gray; padding-left: 1em; padding-right: 1em; }
+#TrivialReporter .passed { background-color: #cfc; display: none; }
+#TrivialReporter .failed { background-color: #fbb; }
+#TrivialReporter .skipped { color: #777; background-color: #eee; display: none; }
+#TrivialReporter .resultMessage span.result { display: block; line-height: 2em; color: black; }
+#TrivialReporter .resultMessage .mismatch { color: black; }
+#TrivialReporter .stackTrace { white-space: pre; font-size: .8em; margin-left: 10px; max-height: 5em; overflow: auto; border: 1px inset red; padding: 1em; background: #eef; }
+#TrivialReporter .finished-at { padding-left: 1em; font-size: .6em; }
+#TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped { display: block; }
+#TrivialReporter #jasmine_content { position: fixed; right: 100%; }
+#TrivialReporter .runner { border: 1px solid gray; display: block; margin: 5px 0; padding: 2px 0 2px 10px; }


[44/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/i18n-manager.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/i18n-manager.js b/bin/test/cordova/unit/spec/lib/i18n-manager.js
new file mode 100644
index 0000000..91df758
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/i18n-manager.js
@@ -0,0 +1,307 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var testData = require("./test-data"),
+    i18nMgr = require(testData.libPath + "/i18n-manager"),
+    session = testData.session,
+    fs = require("fs"),
+    wrench = require("wrench"),
+    pkgrUtils = require(testData.libPath + "/packager-utils");
+
+function mockOSReturnFiles(files) {
+    if (pkgrUtils.isWindows()) {
+        var newFiles = [];
+        files.forEach(function (f) {
+            newFiles.push(session.sourceDir + "\\locales\\" + f.split("/").join("\\"));
+        });
+        return newFiles;
+    } else {
+        return files;
+    }
+}
+
+describe("i18n manager", function () {
+    it("generate correct metadata for icon", function () {
+        var config = {
+                icon: ["logo.png"]
+            },
+            xmlObject = {};
+
+        spyOn(fs, "existsSync").andReturn(true);
+        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
+            'fr',
+            'fr/logo.png'
+        ]));
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
+
+        expect(xmlObject.icon).toBeDefined();
+        expect(xmlObject.icon.image).toBeDefined();
+        expect(xmlObject.icon.image.length).toBe(2);
+        expect(xmlObject.icon.image).toContain({
+            _value: "logo.png"
+        });
+        expect(xmlObject.icon.image).toContain({
+            text: {
+                _attr: {
+                    "xml:lang": "fr"
+                },
+                _value: "locales/fr/logo.png"
+            }
+        });
+    });
+
+    it("generate correct metadata for icon when locales folder does not exist", function () {
+        var config = {
+                icon: ["logo.png"]
+            },
+            xmlObject = {};
+
+        spyOn(fs, "existsSync").andReturn(false);
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
+
+        expect(xmlObject.icon).toBeDefined();
+        expect(xmlObject.icon.image).toBeDefined();
+        expect(xmlObject.icon.image.length).toBe(1);
+        expect(xmlObject.icon.image).toContain({
+            _value: "logo.png"
+        });
+    });
+
+    it("generate correct metadata for icon when locale folder does not contain matching image", function () {
+        var config = {
+                icon: ["logo.png"]
+            },
+            xmlObject = {};
+
+        spyOn(fs, "existsSync").andReturn(true);
+        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
+            'fr',
+            'fr/logo-mismatch.png'
+        ]));
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
+
+        expect(xmlObject.icon).toBeDefined();
+        expect(xmlObject.icon.image).toBeDefined();
+        expect(xmlObject.icon.image.length).toBe(1);
+        expect(xmlObject.icon.image).toContain({
+            _value: "logo.png"
+        });
+    });
+
+    it("generate correct metadata for icon when image is in subfolder", function () {
+        var config = {
+                icon: ["assets\\images\\logo.png"]
+            },
+            xmlObject = {};
+
+        spyOn(fs, "existsSync").andReturn(true);
+        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
+            'fr',
+            'fr/assets/images/logo.png'
+        ]));
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
+
+        expect(xmlObject.icon).toBeDefined();
+        expect(xmlObject.icon.image).toBeDefined();
+        expect(xmlObject.icon.image.length).toBe(2);
+        expect(xmlObject.icon.image).toContain({
+            _value: "assets/images/logo.png"
+        });
+        expect(xmlObject.icon.image).toContain({
+            text: {
+                _attr: {
+                    "xml:lang": "fr"
+                },
+                _value: "locales/fr/assets/images/logo.png"
+            }
+        });
+    });
+
+    it("generate correct metadata for icon when image is in subfolder and OS is windows", function () {
+        if (pkgrUtils.isWindows()) {
+            var config = {
+                    icon: ["assets\\images\\logo.png"]
+                },
+                xmlObject = {};
+
+            spyOn(fs, "existsSync").andReturn(true);
+            spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
+                'fr',
+                'fr\\assets\\images\\logo.png'
+            ]));
+
+            i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
+
+            expect(xmlObject.icon).toBeDefined();
+            expect(xmlObject.icon.image).toBeDefined();
+            expect(xmlObject.icon.image.length).toBe(2);
+            expect(xmlObject.icon.image).toContain({
+                _value: "assets/images/logo.png"
+            });
+            expect(xmlObject.icon.image).toContain({
+                text: {
+                    _attr: {
+                        "xml:lang": "fr"
+                    },
+                    _value: "locales/fr/assets/images/logo.png"
+                }
+            });
+        }
+    });
+
+    it("generate correct metadata for splash and OS is *nx", function () {
+        var config = {
+                "rim:splash": ["splash-1280x768.jpg", "splash-768x1280.jpg"]
+            },
+            xmlObject = {};
+
+        spyOn(pkgrUtils, 'isWindows').andReturn(false);
+        spyOn(fs, "existsSync").andReturn(true);
+        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
+            'fr',
+            'fr/splash-1280x768.jpg',
+            'fr/splash-768x1280.jpg'
+        ]));
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
+
+        expect(xmlObject.splashScreens).toBeDefined();
+        expect(xmlObject.splashScreens.image).toBeDefined();
+        expect(xmlObject.splashScreens.image.length).toBe(4);
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "splash-1280x768.jpg"
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "splash-768x1280.jpg"
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            text: {
+                _attr: {
+                    "xml:lang": "fr"
+                },
+                _value: "locales/fr/splash-1280x768.jpg"
+            }
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            text: {
+                _attr: {
+                    "xml:lang": "fr"
+                },
+                _value: "locales/fr/splash-768x1280.jpg"
+            }
+        });
+    });
+
+    it("generate correct metadata for splash when locales folder does not exist", function () {
+        var config = {
+                "rim:splash": ["splash-1280x768.jpg", "splash-768x1280.jpg"]
+            },
+            xmlObject = {};
+
+        spyOn(fs, "existsSync").andReturn(false);
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
+
+        expect(xmlObject.splashScreens).toBeDefined();
+        expect(xmlObject.splashScreens.image).toBeDefined();
+        expect(xmlObject.splashScreens.image.length).toBe(2);
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "splash-1280x768.jpg"
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "splash-768x1280.jpg"
+        });
+    });
+
+    it("generate correct metadata for splash when locale folder does not contain matching image", function () {
+        var config = {
+                "rim:splash": ["splash-1280x768.jpg", "splash-768x1280.jpg"]
+            },
+            xmlObject = {};
+
+        spyOn(fs, "existsSync").andReturn(true);
+        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
+            'fr',
+            'fr/splash-1280x768-mismatch.jpg',
+            'fr/splash-768x1280.jpg'
+        ]));
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
+
+        expect(xmlObject.splashScreens).toBeDefined();
+        expect(xmlObject.splashScreens.image).toBeDefined();
+        expect(xmlObject.splashScreens.image.length).toBe(3);
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "splash-1280x768.jpg"
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "splash-768x1280.jpg"
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            text: {
+                _attr: {
+                    "xml:lang": "fr"
+                },
+                _value: "locales/fr/splash-768x1280.jpg"
+            }
+        });
+    });
+
+    it("generate correct metadata for splash when image is in subfolder", function () {
+        var config = {
+                "rim:splash": ["assets\\images\\splash-1280x768.jpg", "assets\\images\\splash-768x1280.jpg"]
+            },
+            xmlObject = {};
+
+        spyOn(fs, "existsSync").andReturn(true);
+        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
+            'fr',
+            'fr/assets/images/splash-1280x768.jpg',
+            'fr/assets/images/splash-768x1280.jpg'
+        ]));
+
+        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
+
+        expect(xmlObject.splashScreens).toBeDefined();
+        expect(xmlObject.splashScreens.image).toBeDefined();
+        expect(xmlObject.splashScreens.image.length).toBe(4);
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "assets/images/splash-1280x768.jpg"
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            _value: "assets/images/splash-768x1280.jpg"
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            text: {
+                _attr: {
+                    "xml:lang": "fr"
+                },
+                _value: "locales/fr/assets/images/splash-1280x768.jpg"
+            }
+        });
+        expect(xmlObject.splashScreens.image).toContain({
+            text: {
+                _attr: {
+                    "xml:lang": "fr"
+                },
+                _value: "locales/fr/assets/images/splash-768x1280.jpg"
+            }
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/logger.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/logger.js b/bin/test/cordova/unit/spec/lib/logger.js
new file mode 100644
index 0000000..c934ada
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/logger.js
@@ -0,0 +1,104 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    logger = require(srcPath + "logger");
+
+describe("logger", function () {
+    describe("when the log level is verbose", function () {
+        beforeEach(function () {
+            spyOn(console, "log");
+            spyOn(console, "error");
+            logger.level('verbose');
+        });
+
+        it("logs info messages", function () {
+            logger.info("cheese is made from milk");
+            expect(console.log).toHaveBeenCalledWith("[INFO]    cheese is made from milk");
+        });
+
+        it("logs error messages", function () {
+            logger.error("PC LOAD LETTER");
+            expect(console.error).toHaveBeenCalledWith("[ERROR]   PC LOAD LETTER");
+        });
+
+        it("logs warning messages", function () {
+            logger.warn("beware the ides of march");
+            expect(console.log).toHaveBeenCalledWith("[WARN]    beware the ides of march");
+        });
+
+        it("logs messages", function () {
+            logger.log("Hulk Smash!");
+            expect(console.log).toHaveBeenCalledWith("[INFO]    Hulk Smash!");
+        });
+    });
+
+    describe("when the log level is warn", function () {
+        beforeEach(function () {
+            spyOn(console, "log");
+            spyOn(console, "error");
+            logger.level('warn');
+        });
+
+        it("doesn't log info messages", function () {
+            logger.info("cheese is made from milk");
+            expect(console.log).not.toHaveBeenCalledWith("[INFO]    cheese is made from milk");
+        });
+
+        it("logs error messages", function () {
+            logger.error("PC LOAD LETTER");
+            expect(console.error).toHaveBeenCalledWith("[ERROR]   PC LOAD LETTER");
+        });
+
+        it("logs warning messages", function () {
+            logger.warn("beware the ides of march");
+            expect(console.log).toHaveBeenCalledWith("[WARN]    beware the ides of march");
+        });
+
+        it("doesn't log messages", function () {
+            logger.log("Hulk Smash!");
+            expect(console.log).not.toHaveBeenCalledWith("[INFO]    Hulk Smash!");
+        });
+    });
+
+    describe("when the log level is error", function () {
+        beforeEach(function () {
+            spyOn(console, "log");
+            spyOn(console, "error");
+            logger.level('error');
+        });
+
+        it("doesn't log info messages", function () {
+            logger.info("cheese is made from milk");
+            expect(console.log).not.toHaveBeenCalledWith("[INFO]    cheese is made from milk");
+        });
+
+        it("logs error messages", function () {
+            logger.error("PC LOAD LETTER");
+            expect(console.error).toHaveBeenCalledWith("[ERROR]   PC LOAD LETTER");
+        });
+
+        it("doesn't log warning messages", function () {
+            logger.warn("beware the ides of march");
+            expect(console.log).not.toHaveBeenCalledWith("[WARN]    beware the ides of march");
+        });
+
+        it("doesn't log messages", function () {
+            logger.log("Hulk Smash!");
+            expect(console.log).not.toHaveBeenCalledWith("[INFO]    Hulk Smash!");
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/native-packager.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/native-packager.js b/bin/test/cordova/unit/spec/lib/native-packager.js
new file mode 100644
index 0000000..6f2359d
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/native-packager.js
@@ -0,0 +1,357 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var path = require("path"),
+    util = require("util"),
+    fs = require("fs"),
+    childProcess = require("child_process"),
+    wrench = require("wrench"),
+    srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    nativePkgr = require(srcPath + "/native-packager"),
+    pkgrUtils = require(srcPath + "/packager-utils"),
+    testUtils = require("./test-utilities"),
+    testData = require("./test-data"),
+    logger = require(srcPath + "logger"),
+    localize = require(srcPath + "/localize"),
+    conf = require(srcPath + "./conf"),
+    callback,
+    config,
+    session,
+    target,
+    result,
+    orgDebugEnabled,
+    orgDebugTokenPath,
+    NL = pkgrUtils.isWindows() ? "\r\n" : "\n";
+
+describe("Native packager", function () {
+    beforeEach(function () {
+        process.env.CORDOVA_BBTOOLS = "";
+        callback = jasmine.createSpy();
+        config = testData.config;
+        session = testData.session;
+        target = session.targets[0];
+        result = {
+            stdout: {
+                on: jasmine.createSpy()
+            },
+            stderr: {
+                on: jasmine.createSpy()
+            },
+            on: function (eventName, callback) {
+                callback(0);
+            }
+        };
+
+        // Store original debug token setting and later restore them in afterEach
+        // to be able to test positive and negative cases of each.
+        orgDebugEnabled = session.debug;
+        orgDebugTokenPath = session.conf.DEBUG_TOKEN;
+
+        spyOn(wrench, "readdirSyncRecursive").andReturn(["abc", "xyz"]);
+        spyOn(fs, "statSync").andReturn({
+            isDirectory: function () {
+                return false;
+            }
+        });
+        spyOn(fs, "writeFileSync");
+        spyOn(childProcess, "spawn").andReturn(result);
+        spyOn(fs, "existsSync").andCallFake(function (path) {
+            //Return true if this is the bbndk folder check
+            return path.indexOf("bbndk") !== -1;
+        });
+    });
+
+    afterEach(function () {
+        session.debug = orgDebugEnabled;
+        session.conf.DEBUG_TOKEN = orgDebugTokenPath;
+    });
+
+    it("should not display empty messages in logger", function () {
+        spyOn(pkgrUtils, "writeFile");
+        spyOn(logger, "warn");
+        spyOn(logger, "error");
+        spyOn(logger, "info");
+
+        nativePkgr.exec(session, target, testData.config, callback);
+
+        expect(logger.warn).not.toHaveBeenCalledWith("");
+        expect(logger.error).not.toHaveBeenCalledWith("");
+        expect(logger.info).not.toHaveBeenCalledWith("");
+    });
+
+    it("shows debug token warning when path to file is not valid", function () {
+        spyOn(pkgrUtils, "writeFile");
+        spyOn(logger, "warn");
+
+        session.debug = true;
+        //Current time will ensure that the file doesn't exist.
+        session.conf.DEBUG_TOKEN = new Date().getTime() + ".bar";
+
+        nativePkgr.exec(session, target, testData.config, callback);
+
+        expect(logger.warn).toHaveBeenCalled();
+    });
+
+    it("won't show debug token warning when -d options wasn't provided", function () {
+        spyOn(pkgrUtils, "writeFile");
+        spyOn(logger, "warn");
+
+        session.debug = false;
+        //Current time will ensure that the file doesn't exist.
+        session.conf.DEBUG_TOKEN = new Date().getTime() + ".bar";
+
+        nativePkgr.exec(session, target, testData.config, callback);
+
+        expect(logger.warn).not.toHaveBeenCalled();
+    });
+
+    it("exec blackberry-nativepackager", function () {
+        var bbTabletXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
+            "<qnx><id>" + config.id + "</id>" +
+            "<versionNumber>" + config.version + "</versionNumber>" +
+            "<author>" + config.author + "</author>" +
+            "<asset entry=\"true\" type=\"qnx/elf\">wwe</asset>" +
+            "<asset>abc</asset>" +
+            "<asset>xyz</asset>" +
+            "<entryPointType>Qnx/WebKit</entryPointType>" +
+            "<cascadesTheme>" + config.theme + "</cascadesTheme>" +
+            "<initialWindow><systemChrome>none</systemChrome><transparent>true</transparent><autoOrients>true</autoOrients></initialWindow>",
+            bbTabletXML2 = "<permission system=\"true\">run_native</permission>" +
+            "<permission system=\"false\">access_internet</permission>" +
+            "<name>" + config.name['default'] + "</name>" +
+            "<description>" + config.description['default'] + "</description></qnx>",
+            cmd = "blackberry-nativepackager" + (pkgrUtils.isWindows() ? ".bat" : "");
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (sourceDir, outputDir, data) {
+            expect(sourceDir).toEqual(session.sourceDir);
+            expect(outputDir).toEqual(conf.BAR_DESCRIPTOR);
+
+            //We have to validate the xml data in 2 chucks, because the WEBWORKS_VERSION env variable
+            //has a different value for SCM builds and we can't mock the webworks-info file
+            expect(data).toContain(bbTabletXML);
+            expect(data).toContain(bbTabletXML2);
+        });
+        nativePkgr.exec(session, target, testData.config, callback);
+
+        expect(fs.writeFileSync).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(String));
+        expect(childProcess.spawn).toHaveBeenCalledWith(cmd, ["@../options"], {"cwd": session.sourceDir, "env": process.env});
+        expect(callback).toHaveBeenCalledWith(0);
+    });
+
+    it("makes sure slog2 logging is enabled in debug mode", function () {
+        var tabletXMLEntry = "<env value=\"slog2\" var=\"CONSOLE_MODE\"></env>";
+
+        //Silence the logger during unit tests
+        spyOn(logger, "warn").andCallFake(function () { });
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (sourceDir, outputDir, data) {
+            expect(data).toContain(tabletXMLEntry);
+        });
+
+        session.debug = true;
+        nativePkgr.exec(session, target, testData.config, callback);
+    });
+
+    it("makes sure slog2 logging is not enabled when not in debug mode", function () {
+        var tabletXMLEntry = "<env value=\"slog2\" var=\"CONSOLE_MODE\"></env>";
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (sourceDir, outputDir, data) {
+            expect(data).not.toContain(tabletXMLEntry);
+        });
+
+        session.debug = false;
+        nativePkgr.exec(session, target, testData.config, callback);
+    });
+
+    it("can process application name", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.name = {"default": "API Smoke Test"};
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain("<name>API Smoke Test</name>");
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+
+    });
+
+    it("can process localized application name", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.name = {"FR": "API Smoke Test - FR"};
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain('<name><text xml:lang="FR">API Smoke Test - FR</text></name>');
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+    });
+
+    it("can process mutiple application names", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.name = {
+            "default": "API Smoke Test",
+            "EN": "API Smoke Test - EN",
+            "FR": "API Smoke Test - FR"
+        };
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain('<name>API Smoke Test<text xml:lang="EN">API Smoke Test - EN</text><text xml:lang="FR">API Smoke Test - FR</text></name>');
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+    });
+
+    it("can process application description", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.description = {"default": "My app description"};
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain("<description>My app description</description>");
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+
+    });
+
+    it("can process localized application description", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.description = {"FR": "My app description - FR"};
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain('<description><text xml:lang="FR">My app description - FR</text></description>');
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+    });
+
+    it("can process mutiple application descriptions", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.description = {
+            "default": "My app description",
+            "EN": "My app description - EN",
+            "FR": "My app description - FR"
+        };
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain('<description>My app description<text xml:lang="EN">My app description - EN</text><text xml:lang="FR">My app description - FR</text></description>');
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+    });
+
+    it("can process permissions with no attributes", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.permissions = ['read_device_identifying_information'];
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain("<permission>read_device_identifying_information</permission>");
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+
+    });
+
+    it("can process permissions with attributes", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.permissions = [{ '#': 'systemPerm', '@': {"system": "true"}}];
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain("<permission system=\"true\">systemPerm</permission>");
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+
+    });
+
+    it("adds the mandatory permissions for webworks", function () {
+        var config = testUtils.cloneObj(testData.config);
+        config.permissions = [];
+
+        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
+            expect(fileData).toContain("<permission system=\"false\">access_internet</permission>");
+            expect(fileData).toContain("<permission system=\"true\">run_native</permission>");
+        });
+
+        nativePkgr.exec(session, target, config, callback);
+
+    });
+
+    it("omits -devMode when signing and specifying -d", function () {
+        testUtils.mockResolve(path);
+        spyOn(pkgrUtils, "writeFile");
+
+        var session = testUtils.cloneObj(testData.session),
+            config = testUtils.cloneObj(testData.config),
+            target = "device",
+            optionsFile = "-package" + NL +
+                "-buildId" + NL +
+                "100" + NL +
+                path.normalize("c:/device/Demo.bar") + NL +
+                "-barVersion" + NL +
+                "1.5" + NL +
+                "-C" + NL +
+                path.normalize("c:/src/") + NL +
+                conf.BAR_DESCRIPTOR + NL +
+                path.normalize("c:/src/abc") + NL +
+                path.normalize("c:/src/xyz") + NL;
+
+        //Set signing params [-g --buildId]
+        session.keystore = path.normalize("c:/author.p12");
+        session.storepass = "password";
+        config.buildId = "100";
+
+        session.barPath = path.normalize("c:/%s/" + "Demo.bar");
+        session.sourceDir = path.normalize("c:/src/");
+        session.isSigningRequired = function () {
+            return true;
+        };
+
+        //Set -d param
+        session.debug = "";
+
+        nativePkgr.exec(session, target, config, callback);
+
+        //options file should NOT contain -devMode
+        expect(fs.writeFileSync).toHaveBeenCalledWith(jasmine.any(String), optionsFile);
+    });
+
+    it("exec blackberry-nativepackager with additional params", function () {
+        var cmd = "blackberry-nativepackager" + (pkgrUtils.isWindows() ? ".bat" : "");
+        spyOn(pkgrUtils, "writeFile");
+
+        session.getParams = jasmine.createSpy("session getParams").andReturn({
+            "-installApp": "",
+            "-device": "192.168.1.114",
+            "-password": "abc"
+        });
+
+        nativePkgr.exec(session, "simulator", testData.config, callback);
+
+        expect(fs.writeFileSync.mostRecentCall.args[0]).toBe(path.resolve(session.sourceDir + "/../", "options"));
+        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-package" + NL);
+        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-password" + NL);
+        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("abc" + NL);
+        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-device" + NL);
+        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("192.168.1.114" + NL);
+        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-installApp" + NL);
+        expect(childProcess.spawn).toHaveBeenCalledWith(cmd, ["@../options"], {"cwd": session.sourceDir, "env": process.env});
+        expect(callback).toHaveBeenCalledWith(0);
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/packager-utils.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/packager-utils.js b/bin/test/cordova/unit/spec/lib/packager-utils.js
new file mode 100644
index 0000000..493298c
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/packager-utils.js
@@ -0,0 +1,86 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var testData = require("./test-data"),
+    utils = require(testData.libPath + "/packager-utils"),
+    fs = require("fs"),
+    path = require("path"),
+    asciiFile = path.resolve("bin/test/cordova/unit/data/ascii_text.txt"),
+    utf8File = path.resolve("bin/test/cordova/unit/data/utf8_text.txt"),
+    ucs2beFile = path.resolve("bin/test/cordova/unit/data/ucs2be_text.txt"),
+    ucs2leFile = path.resolve("bin/test/cordova/unit/data/ucs2le_text.txt"),
+    helloWorld = "Hello World";
+
+describe("Encoded Buffer data to String", function () {
+    it("Ascii text to String", function () {
+        // Read text file encoded in ascii
+        var fileData = fs.readFileSync(asciiFile);
+        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
+    });
+
+    it("Utf8 text to String", function () {
+        // Read text file encoded in utf8
+        var fileData = fs.readFileSync(utf8File);
+        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
+    });
+
+    it("Ucs2BE text to String", function () {
+        // Read text file encoded in 2 byte Unicode big endian
+        var fileData = fs.readFileSync(ucs2beFile);
+        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
+    });
+
+    it("Ucs2LE text to String", function () {
+        // Read text file encoded in 2 byte Unicode little endian
+        var fileData = fs.readFileSync(ucs2leFile);
+        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
+    });
+});
+
+describe("property wrapper", function () {
+    it("wraps a property of an object in an array", function () {
+        var obj = {
+            prop: "value"
+        };
+
+        utils.wrapPropertyInArray(obj, "prop");
+        expect(obj.prop[0]).toEqual("value");
+    });
+
+    it("does not wrap an array object in an array", function () {
+        var obj = {
+            prop: ["value"]
+        };
+
+        utils.wrapPropertyInArray(obj, "prop");
+        expect(obj.prop[0][0]).not.toEqual("value");
+        expect(obj.prop[0]).toEqual("value");
+    });
+
+    it("does not wrap a property that doesn't exist in the object", function () {
+        var obj = {
+            prop: "value"
+        };
+
+        utils.wrapPropertyInArray(obj, "secondValue");
+        expect(obj.secondValue).not.toBeDefined();
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/packager-validator.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/packager-validator.js b/bin/test/cordova/unit/spec/lib/packager-validator.js
new file mode 100644
index 0000000..40e3b3c
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/packager-validator.js
@@ -0,0 +1,281 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    testData = require("./test-data"),
+    testUtilities = require("./test-utilities"),
+    localize = require(srcPath + "localize"),
+    logger = require(srcPath + "logger"),
+    packagerValidator = require(srcPath + "packager-validator"),
+    signingUtils = require(srcPath + "signing-utils"),
+    fs = require("fs"),
+    cmd,
+    extManager = {
+        getExtensionBasenameByFeatureId: function (featureId) {
+            if (featureId && featureId.indexOf("blackberry.") >= 0) {
+                return featureId.substring(featureId.indexOf(".") + 1);
+            } else {
+                return null;
+            }
+        }
+    };
+
+describe("Packager Validator", function () {
+    it("throws an exception when -g set and keys were not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = undefined;
+        session.storepass = "myPassword";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "author.p12"));
+    });
+
+    it("throws an exception when --buildId set and keys were not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = undefined;
+        session.buildId = "100";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "author.p12"));
+    });
+
+    it("throws an exception when -g set and bbidtoken.csk or barsigner.csk was not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = undefined;
+        session.storepass = "myPassword";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "bbidtoken.csk"));
+    });
+
+    it("does not throw an exception when -g set and barsigner.csk was found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = "barsigner.csk";
+        session.keystoreDb = "barsigner.db";
+        session.storepass = "myPassword";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).not.toThrow();
+    });
+
+    it("throws an exception when --buildId set and bbbidtoken.csk was not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = undefined;
+        session.buildId = "100";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "bbidtoken.csk"));
+    });
+
+    it("throws an exception when -g set and barsigner.db was not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = "c:/barsigner.csk";
+        session.keystoreDb = undefined;
+        session.storepass = "myPassword";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "barsigner.db"));
+    });
+
+    it("throws an exception when --buildId set and barsigner.db was not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = "c:/barsigner.csk";
+        session.keystoreDb = undefined;
+        session.buildId = "100";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "barsigner.db"));
+    });
+
+    it("generated a warning when Build ID is set in config and keys were not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //Mock the logger
+        spyOn(logger, "warn");
+
+        //setup signing parameters
+        session.keystore = undefined;
+        session.buildId = undefined;
+        configObj.buildId = "100";
+
+        packagerValidator.validateSession(session, configObj);
+        expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", "author.p12"));
+    });
+
+    it("generated a warning when Build ID is set in config and bbidtoken.csk was not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //Mock the logger
+        spyOn(logger, "warn");
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = undefined;
+        session.buildId = undefined;
+        configObj.buildId = "100";
+
+        packagerValidator.validateSession(session, configObj);
+        expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", "bbidtoken.csk"));
+    });
+
+    it("generated a warning when Build ID is set in config and barsigner.db was not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //Mock the logger
+        spyOn(logger, "warn");
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = "c:/barsigner.csk";
+        session.keystoreDb = undefined;
+        session.buildId = undefined;
+        configObj.buildId = "100";
+
+        packagerValidator.validateSession(session, configObj);
+        expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", "barsigner.db"));
+    });
+
+    it("throws an exception when appdesc was not found", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup appdesc which is not existing
+        session.buildId = undefined;
+        configObj.buildId = undefined;
+        session.appdesc = "c:/bardescriptor.xml";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_APPDESC_NOT_FOUND", "c:/bardescriptor.xml"));
+    });
+
+    it("throws an exception when --buildId was set with no password [-g]", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = testUtilities.cloneObj(testData.config);
+
+        //setup signing parameters
+        session.keystore = signingUtils.getDefaultPath("author.p12");
+        session.keystoreCsk = "c:/barsigner.csk";
+        session.keystoreDb = "c:/barsigner.db";
+        session.storepass = undefined;
+        session.buildId = "100";
+
+        expect(function () {
+            packagerValidator.validateSession(session, configObj);
+        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_PASSWORD"));
+    });
+});
+
+describe("Packager Validator: validateConfig", function () {
+    it("does not remove APIs that do exist from features whitelist", function () {
+        var session = testUtilities.cloneObj(testData.session),
+            configObj = {
+                accessList: [{
+                    features: [{
+                        id: "blackberry.identity",
+                        required: true,
+                        version: "1.0.0.0"
+                    }, {
+                        version: "1.0.0.0",
+                        required: true,
+                        id: "blackberry.event"
+                    }],
+                    uri: "WIDGET_LOCAL",
+                    allowSubDomain: true
+                }]
+            };
+
+        spyOn(fs, "existsSync").andCallFake(function () {
+            //since both of these APIs exist, existsSync would return true
+            return true;
+        });
+
+        packagerValidator.validateConfig(session, configObj, extManager);
+        expect(configObj.accessList[0].features.length).toEqual(2);
+
+
+    });
+
+    it("does not crash if user whitelists a feature with no id", function () {
+        var session = testUtilities.cloneObj(testData.session),
+        configObj = {
+            accessList: [{
+                features: [{
+                    id: "blackberry.identity",
+                    required: true,
+                    version: "1.0.0.0"
+                }, {
+                    version: "1.0.0.0",
+                    required: true,
+                }],
+                uri: "WIDGET_LOCAL",
+                allowSubDomain: true
+            }]
+        };
+        spyOn(logger, "warn");
+
+        spyOn(fs, "existsSync").andCallFake(function () {
+            //since both of these APIs exist, existsSync would return true
+            return true;
+        });
+
+        expect(function () {
+            packagerValidator.validateConfig(session, configObj, extManager);
+        }).not.toThrow();
+    });
+
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/session.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/session.js b/bin/test/cordova/unit/spec/lib/session.js
new file mode 100644
index 0000000..524b040
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/session.js
@@ -0,0 +1,228 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var session = require(__dirname + "/../../../../../templates/project/cordova/lib/session"),
+    localize = require(__dirname + "/../../../../../templates/project/cordova/lib/localize"),
+    testUtils = require("./test-utilities"),
+    utils = require(__dirname + "/../../../../../templates/project/cordova/lib/utils"),
+    path = require("path"),
+    fs = require("fs"),
+    wrench = require("wrench"),
+    zipLocation = __dirname + "/../../config.xml";
+
+describe("Session", function () {
+    beforeEach(function () {
+        //Do not create the source folder
+        spyOn(wrench, "mkdirSyncRecursive");
+        spyOn(utils, "getProperties").andReturn({});
+    });
+
+    it("sets the source directory correctly when specified [-s C:/sampleApp/mySource]", function () {
+        testUtils.mockResolve(path);
+
+        var data = {
+            args: [ 'C:/sampleApp/sample.zip' ],
+            output: 'C:/sampleApp/bin',
+            source: 'C:/sampleApp/mySource'//equivalent to [-s C:/sampleApp/mySource]
+        },
+        result = session.initialize(data);
+
+        expect(result.sourceDir).toEqual(path.normalize("C:/sampleApp/mySource/src"));
+    });
+
+    it("sets the source directory correctly when unspecified [-s] and output path set [-o]", function () {
+        testUtils.mockResolve(path);
+
+        var data = {
+            args: [ 'C:/sampleApp/sample.zip' ],
+            output: 'C:/sampleApp/bin',
+            source: true//equivalent to [-s]
+        },
+        result = session.initialize(data);
+
+        //src folder should be created in output directory
+        expect(result.sourceDir).toEqual(path.normalize("C:/sampleApp/bin/src"));
+    });
+
+    it("sets the source directory correctly when unspecified [-s] and no output path is set", function () {
+        testUtils.mockResolve(path);
+
+        var data = {
+            args: [ zipLocation ],
+            source: true//equivalent to [-s]
+        },
+        result = session.initialize(data);
+
+        //src folder should be created in output directory
+        expect(result.sourceDir).toEqual(path.join(path.dirname(zipLocation), "src"));
+    });
+
+    it("sets the password when specified using -g", function () {
+        var data = {
+            args: [ 'C:/sampleApp/sample.zip' ],
+            output: 'C:/sampleApp/bin',
+            source: 'C:/sampleApp/mySource',//equivalent to [-s C:/sampleApp/mySource]
+            password: 'myPassword'
+        },
+        result = session.initialize(data);
+        expect(result.storepass).toEqual('myPassword');
+    });
+
+    it("does not set the password when not a string", function () {
+        //Commander sometimes improperly sets password to a function, when no value provided
+        var data = {
+            args: [ 'C:/sampleApp/sample.zip' ],
+            output: 'C:/sampleApp/bin',
+            source: 'C:/sampleApp/mySource',//equivalent to [-s C:/sampleApp/mySource]
+            password: function () {}
+        },
+        result = session.initialize(data);
+        expect(result.storepass).toBeUndefined();
+    });
+
+    it("sets the buildId when specified [-buildId]", function () {
+        var data = {
+            args: [ 'C:/sampleApp/sample.zip' ],
+            output: 'C:/sampleApp/bin',
+            source: 'C:/sampleApp/mySource',//equivalent to [-s C:/sampleApp/mySource]
+            buildId: '100'
+        },
+        result = session.initialize(data);
+        expect(result.buildId).toEqual('100');
+    });
+
+    it("sets the appdesc correctly when specified [--appdesc C:/path/bardescriptor.xml]", function () {
+        testUtils.mockResolve(path);
+
+        var data = {
+            args: [ 'C:/sampleApp/sample.zip' ],
+            appdesc: 'C:/path/bardescriptor.xml' //equivalent to [--appdesc C:/path/bardescriptor.xml]
+        },
+        result = session.initialize(data);
+
+        expect(result.appdesc).toEqual(path.normalize("C:/path/bardescriptor.xml"));
+    });
+
+    it("sets the appdesc correctly when not specified", function () {
+        testUtils.mockResolve(path);
+
+        var data = {
+            args: [ 'C:/sampleApp/sample.zip' ]
+        },
+        result = session.initialize(data);
+
+        expect(result.appdesc).toBeUndefined();
+    });
+
+    it("sets the output directory correctly when specified with a relative path [-o myOutput]", function () {
+        var bbwpDir = __dirname + "/../../../../../../",
+        data = {
+            args: [ 'C:/sampleApp/sample.zip' ],
+            output: 'myOutput',
+        },
+        result = session.initialize(data);
+
+        //output should be set to bbwp location + outputFolder
+        expect(result.outputDir).toEqual(path.normalize(path.join(bbwpDir, "myOutput")));
+    });
+
+    describe("get params", function () {
+        beforeEach(function () {
+            delete require.cache[require.resolve(__dirname + "/../../../../../templates/project/cordova/lib/session")];
+            session = require(__dirname + "/../../../../../templates/project/cordova/lib/session");
+        });
+
+        it("get params from external file", function () {
+            var data = {
+                    args: [ 'C:/sampleApp/sample.zip' ],
+                    params: "params.json"
+                },
+                result;
+
+            spyOn(path, "resolve").andReturn(path.normalize(__dirname + "../../../params.json"));
+            spyOn(fs, "existsSync").andReturn(true);
+
+            result = session.initialize(data);
+
+            expect(result.getParams("blackberry-signer")).toEqual({
+                "-proxyhost": "abc.com",
+                "-proxyport": "80"
+            });
+        });
+
+        it("get params from non-existent file should throw error", function () {
+            var data = {
+                    args: [ 'C:/sampleApp/sample.zip' ],
+                    params: "blah.json",
+                    keystorepass: "test"
+                };
+
+            spyOn(fs, "existsSync").andReturn(false);
+
+            expect(function () {
+                session.initialize(data);
+            }).toThrow(localize.translate("EXCEPTION_PARAMS_FILE_NOT_FOUND", path.resolve("blah.json")));
+        });
+
+        it("get params from bad JSON file should throw error", function () {
+            var data = {
+                    args: [ 'C:/sampleApp/sample.zip' ],
+                    params: "params-bad.json"
+                },
+                result;
+
+            spyOn(path, "resolve").andReturn("test/params-bad.json");
+            spyOn(fs, "existsSync").andReturn(true);
+
+            expect(function () {
+                session.initialize(data);
+            }).toThrow(localize.translate("EXCEPTION_PARAMS_FILE_ERROR", path.resolve("blah.json")));
+        });
+    });
+
+    describe("when setting the log level", function () {
+        var logger = require(__dirname + "/../../../../../templates/project/cordova/lib/logger");
+
+        beforeEach(function () {
+            spyOn(logger, "level");
+        });
+
+        it("defaults to verbose with no args", function () {
+            session.initialize({args: []});
+            expect(logger.level).toHaveBeenCalledWith("verbose");
+        });
+
+        it("sets level to verbose", function () {
+            session.initialize({args: [], loglevel: 'verbose'});
+            expect(logger.level).toHaveBeenCalledWith("verbose");
+        });
+
+        it("sets level to warn", function () {
+            session.initialize({args: [], loglevel: 'warn'});
+            expect(logger.level).toHaveBeenCalledWith("warn");
+        });
+
+        it("sets level to error", function () {
+            session.initialize({args: [], loglevel: 'error'});
+            expect(logger.level).toHaveBeenCalledWith("error");
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/signing-helper.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/signing-helper.js b/bin/test/cordova/unit/spec/lib/signing-helper.js
new file mode 100644
index 0000000..8618f21
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/signing-helper.js
@@ -0,0 +1,98 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var testData = require('./test-data'),
+    signingHelper = require(testData.libPath + '/signing-helper'),
+    localize = require(testData.libPath + '/localize'),
+    pkgrUtils = require(testData.libPath + "/packager-utils"),
+    conf = require(testData.libPath + "/conf"),
+    path = require('path'),
+    fs = require('fs'),
+    os = require('os'),
+    childProcess = require("child_process"),
+    properties = {
+        homepath: "",
+        homedrive: ""
+    },
+    session;
+
+describe("signing-helper", function () {
+
+    describe("Exec blackberry-signer", function () {
+        var stdoutOn = jasmine.createSpy("stdout on"),
+            stderrOn = jasmine.createSpy("stderr on");
+
+        beforeEach(function () {
+            session = testData.session;
+            session.keystore = "/blah/author.p12";
+            session.storepass = "123";
+            session.barPath = path.normalize("c:/%s/" + "Demo.bar");
+
+            spyOn(childProcess, "exec").andReturn({
+                stdout: {
+                    on: stdoutOn
+                },
+                stderr: {
+                    on: stderrOn
+                },
+                on: jasmine.createSpy("on").andCallFake(function (event, callback) {
+                    if (callback && typeof callback === "function") {
+                        callback(0);
+                    }
+                })
+            });
+        });
+
+        it("exec blackberry-signer without extra params", function () {
+            var callback = jasmine.createSpy("callback"),
+                cmd = "blackberry-signer";
+
+            session.getParams = jasmine.createSpy("session getParams").andReturn(null);
+            signingHelper.execSigner(session, "device", callback);
+            expect(childProcess.exec).toHaveBeenCalledWith([cmd, "-keystore", session.keystore, "-storepass", session.storepass, path.resolve("c:/device/Demo.bar")].join(" "), jasmine.any(Object), callback);
+            expect(stdoutOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
+            expect(stderrOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
+        });
+
+        it("exec blackberry-signer with extra params", function () {
+            var callback = jasmine.createSpy("callback"),
+                cmd = "blackberry-signer";
+
+            session.getParams = jasmine.createSpy("session getParams").andReturn({
+                "-proxyhost": "abc.com",
+                "-proxyport": "80"
+            });
+            signingHelper.execSigner(session, "device", callback);
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain(cmd);
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-keystore");
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain(session.keystore);
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-storepass");
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain(session.storepass);
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-proxyport");
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain("80");
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-proxyhost");
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain("abc.com");
+            expect(childProcess.exec.mostRecentCall.args[0]).toContain(path.resolve("c:/device/Demo.bar"));
+            expect(stdoutOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
+            expect(stderrOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/signing-utils.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/signing-utils.js b/bin/test/cordova/unit/spec/lib/signing-utils.js
new file mode 100644
index 0000000..1ba5c01
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/signing-utils.js
@@ -0,0 +1,403 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var testData = require('./test-data'),
+    signingUtils = require(testData.libPath + '/signing-utils'),
+    localize = require(testData.libPath + '/localize'),
+    pkgrUtils = require(testData.libPath + "/packager-utils"),
+    conf = require(testData.libPath + "/conf"),
+    path = require('path'),
+    fs = require('fs'),
+    os = require('os'),
+    childProcess = require("child_process"),
+    properties = {
+        homepath: "",
+        homedrive: ""
+    },
+    session;
+
+describe("signing-utils", function () {
+
+    describe("on windows", function () {
+
+        beforeEach(function () {
+
+            /* Preserve the value of the USERPROFILE environment
+             * variable if it is defined. If it is not defined, mark
+             * the variable for deletion after the test.*/
+            if (typeof process.env.USERPROFILE === 'undefined') {
+                properties.userprofile = "delete";
+            } else {
+                properties.userprofile = process.env.USERPROFILE;
+            }
+
+            spyOn(os, "type").andReturn("windows");
+        });
+
+        afterEach(function () {
+
+            /* Restore the value of the USERPROFILE environment
+             * variable if it is defined. If it is not defined, delete
+             * the property if it was defined in the test.*/
+            if (typeof process.env.USERPROFILE === 'string') {
+                if (properties.userprofile === 'delete') {
+                    delete process.env.USERPROFILE;
+                } else {
+                    process.env.USERPROFILE = properties.userprofile;
+                }
+            }
+        });
+
+        it("can find keys in Local Settings", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find bbidtoken.csk in Local Settings", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePathBBID();
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find barsigner.csk in Local Settings", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getCskPath();
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find barsigner.db in Local Settings", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getDbPath();
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find keys in AppData", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("\\AppData");
+        });
+
+        it("can find bbidtoken.csk in AppData", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePathBBID();
+            expect(result).toContain("\\AppData");
+        });
+
+        it("can find barsigner.csk in AppData", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getCskPath();
+            expect(result).toContain("\\AppData");
+        });
+
+        it("can find barsigner.db in AppData", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getDbPath();
+            expect(result).toContain("\\AppData");
+        });
+
+        it("can find keys in home path", function () {
+            process.env.USERPROFILE = "C:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (p) {
+                return p.indexOf("\\Users\\user") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("\\Users\\user");
+        });
+
+        it("can find keys on C drive", function () {
+            process.env.USERPROFILE = "C:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (p) {
+                return p.indexOf("C:") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("C:");
+        });
+
+        it("can find keys on a drive other than C", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("D:");
+        });
+
+        it("can find bbidtoken.csk on a drive other than C", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePathBBID();
+            expect(result).toContain("D:");
+        });
+
+        it("can find barsigner.csk on a drive other than C", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1;
+            });
+
+            var result = signingUtils.getCskPath();
+            expect(result).toContain("D:");
+        });
+
+        it("can find barsigner.db on a drive other than C", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1;
+            });
+
+            var result = signingUtils.getDbPath();
+            expect(result).toContain("D:");
+        });
+
+        it("can find keys in Local Settings on the correct drive", function () {
+            process.env.USERPROFILE = "C:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("C:") !== -1 &&
+                        path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("C:");
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find bbidtoken.csk in Local Settings on the correct drive", function () {
+            process.env.USERPROFILE = "C:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("C:") !== -1 &&
+                        path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePathBBID();
+            expect(result).toContain("C:");
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find barsigner.csk in Local Settings on the correct drive", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1 &&
+                        path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getCskPath();
+            expect(result).toContain("D:");
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find barsigner.db in Local Settings on the correct drive", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1 &&
+                        path.indexOf("\\Local Settings") !== -1;
+            });
+
+            var result = signingUtils.getDbPath();
+            expect(result).toContain("D:");
+            expect(result).toContain("\\Local Settings");
+        });
+
+        it("can find keys in AppData on the correct drive", function () {
+            process.env.USERPROFILE = "C:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("C:") !== -1 &&
+                        path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("C:");
+            expect(result).toContain("\\AppData");
+        });
+
+        it("can find bbidtoken.csk in AppData on the correct drive", function () {
+            process.env.USERPROFILE = "C:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("C:") !== -1 &&
+                        path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePathBBID();
+            expect(result).toContain("C:");
+            expect(result).toContain("\\AppData");
+        });
+
+        it("can find barsigner.csk in AppData on the correct drive", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1 &&
+                        path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getCskPath();
+            expect(result).toContain("D:");
+            expect(result).toContain("\\AppData");
+        });
+
+        it("can find barsigner.db in AppData on the correct drive", function () {
+            process.env.USERPROFILE = "D:\\Users\\user";
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("D:") !== -1 &&
+                        path.indexOf("\\AppData") !== -1;
+            });
+
+            var result = signingUtils.getDbPath();
+            expect(result).toContain("D:");
+            expect(result).toContain("\\AppData");
+        });
+
+        it("returns undefined when keys cannot be found", function () {
+            spyOn(fs, "existsSync").andReturn(false);
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toBeUndefined();
+        });
+
+        it("returns undefined when barsigner.csk cannot be found", function () {
+            spyOn(fs, "existsSync").andReturn(false);
+
+            var result = signingUtils.getCskPath();
+            expect(result).toBeUndefined();
+        });
+
+        it("returns undefined when barsigner.db cannot be found", function () {
+            spyOn(fs, "existsSync").andReturn(false);
+
+            var result = signingUtils.getDbPath();
+            expect(result).toBeUndefined();
+        });
+    });
+
+    describe("on mac", function () {
+
+        beforeEach(function () {
+            spyOn(os, "type").andReturn("darwin");
+        });
+
+        it("can find keys in the Library folder", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("/Library/Research In Motion/") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toContain("/Library/Research In Motion/");
+        });
+
+        it("can find bbidtoken.csk in the Library folder", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("/Library/Research In Motion/") !== -1;
+            });
+
+            var result = signingUtils.getKeyStorePathBBID();
+            expect(result).toContain("/Library/Research In Motion/");
+        });
+
+        it("can find barsigner.csk in the Library folder", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("/Library/Research In Motion/") !== -1;
+            });
+
+            var result = signingUtils.getCskPath();
+            expect(result).toContain("/Library/Research In Motion/");
+        });
+
+        it("can find barsigner.db in the Library folder", function () {
+
+            spyOn(fs, "existsSync").andCallFake(function (path) {
+                return path.indexOf("/Library/Research In Motion/") !== -1;
+            });
+
+            var result = signingUtils.getDbPath();
+            expect(result).toContain("/Library/Research In Motion/");
+        });
+
+        it("returns undefined when keys cannot be found", function () {
+
+            spyOn(fs, "existsSync").andReturn(false);
+
+            var result = signingUtils.getKeyStorePath();
+            expect(result).toBeUndefined();
+        });
+
+        it("returns undefined when barsigner.csk cannot be found", function () {
+
+            spyOn(fs, "existsSync").andReturn(false);
+
+            var result = signingUtils.getCskPath();
+            expect(result).toBeUndefined();
+        });
+
+        it("returns undefined when barsigner.db cannot be found", function () {
+
+            spyOn(fs, "existsSync").andReturn(false);
+
+            var result = signingUtils.getDbPath();
+            expect(result).toBeUndefined();
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/test-data.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/test-data.js b/bin/test/cordova/unit/spec/lib/test-data.js
new file mode 100644
index 0000000..11ec335
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/test-data.js
@@ -0,0 +1,87 @@
+var path = require("path"),
+    outputDir = path.resolve("../packager.test"),
+    libPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    barConf = require(libPath + "/bar-conf"),
+    configPath = path.resolve("test") + "/config.xml";
+
+module.exports = {
+    libPath: libPath,
+    configPath: configPath,
+    session: {
+        "barPath": outputDir + "/%s/" + "Demo.bar",
+        "outputDir": outputDir,
+        "sourceDir": path.resolve(outputDir + "/src"),
+        "sourcePaths": {
+            "ROOT": path.resolve(outputDir + "/src"),
+            "CHROME": path.normalize(path.resolve(outputDir + "/src") + barConf.CHROME),
+            "LIB": path.normalize(path.resolve(outputDir + "/src") + barConf.LIB),
+            "UI": path.normalize(path.resolve(outputDir + "/src") + barConf.UI),
+            "EXT": path.normalize(path.resolve(outputDir + "/src") + barConf.EXT),
+            "PLUGINS": path.normalize(path.resolve(outputDir + "/src") + barConf.PLUGINS),
+            "JNEXT_PLUGINS": path.normalize(path.resolve(outputDir + "/src") + barConf.JNEXT_PLUGINS)
+        },
+        "archivePath": path.resolve("bin/test/cordova/unit/test.zip"),
+        "conf": require(path.resolve(libPath + "/conf")),
+        "targets": ["simulator"],
+        isSigningRequired: function () {
+            return false;
+        },
+        getParams: function () {
+            return null;
+        }
+    },
+    config: {
+        "id": 'Demo',
+        "name": { 'default': 'Demo' },
+        "version": '1.0.0',
+        "author": 'Research In Motion Ltd.',
+        "description": { 'default': 'This is a test!' },
+        "image": 'test.png',
+        "autoOrientation": true,
+        "theme": "default"
+    },
+    accessList: [{
+        uri: "http://google.com",
+        allowSubDomain: false,
+        features: [{
+            id: "blackberry.app",
+            required: true,
+            version: "1.0.0"
+        }, {
+            id: "blackberry.system",
+            required:  true,
+            version: "1.0.0"
+        }]
+    }, {
+        uri: "WIDGET_LOCAL",
+        allowSubDomain: false,
+        features: [{
+            id: "blackberry.system",
+            required: true,
+            version: "1.0.0"
+        }]
+    }],
+    xml2jsConfig: {
+        "@": {
+            "xmlns": " http://www.w3.org/ns/widgets",
+            "xmlns:rim": "http://www.blackberry.com/ns/widgets",
+            "version": "1.0.0",
+            "id": "myID",
+            "rim:header" : "RIM-Widget:rim/widget",
+            "rim:userAgent" : "A Test-User-Agent/(Blackberry-Agent)"
+        },
+        "name": "Demo",
+        "content": {
+            "@": {
+                "src": "local:///startPage.html"
+            }
+        },
+        "author": "Research In Motion Ltd.",
+        "license": {
+            "#": "Licensed under the Apache License, Version 2.0 (the \"License\"); #you may not use this file except in compliance with the License. #You may obtain a copy of the License at # #http://www.apache.org/licenses/LICENSE-2.0 # #Unless required by applicable law or agreed to in writing, software #distributed under the License is distributed on an \"AS IS\" BASIS, #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #See the License for the specific language governing permissions and limitations under the License.",
+            "@": {
+                "href": "http://www.apache.org/licenses/LICENSE-2.0"
+            }
+        }
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/test-utilities.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/test-utilities.js b/bin/test/cordova/unit/spec/lib/test-utilities.js
new file mode 100644
index 0000000..8b53c8e
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/test-utilities.js
@@ -0,0 +1,108 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var xml2js = require("xml2js");
+
+function getObjectByProperty(array, propertyName, propertyValue) {
+    for (var i = 0; i < array.length; i++) {
+        if (propertyValue === array[i][propertyName]) {
+            return array[i];
+        }
+    }
+}
+
+module.exports = {
+    getAccessList: function (accessListArray, value) {
+        if (accessListArray[0].hasOwnProperty("uri") === true) {
+            return getObjectByProperty(accessListArray, "uri", value);
+        } else {
+            return getObjectByProperty(accessListArray, "origin", value);
+        }
+    },
+
+    getFeatureByID: function (featureArray, featureID) {
+        return getObjectByProperty(featureArray, "id", featureID);
+    },
+
+    mockResolve: function (path) {
+        //Mock resolve because of a weird issue where resolve would return an
+        //invalid path on Mac if it cannot find the directory (c:/ doesnt exist on mac)
+        spyOn(path, "resolve").andCallFake(function (to) {
+            if (arguments.length === 2) {
+                //Handle optional from attribute
+                return path.normalize(path.join(arguments[0], arguments[1]));
+            } else {
+                return path.normalize(to);
+            }
+        });
+    },
+
+    cloneObj: function (obj) {
+        var newObj = (obj instanceof Array) ? [] : {}, i;
+        /* jshint ignore:start */
+        for (i in obj) {
+            if (i === 'clone') continue;
+
+            if (obj[i] && typeof obj[i] === "object") {
+                newObj[i] = this.cloneObj(obj[i]);
+            } else {
+                newObj[i] = obj[i];
+            }
+        }
+        /* jshint ignore:end */
+
+        return newObj;
+    },
+
+    mockParsing: function (data, error) {
+        spyOn(xml2js, "Parser").andReturn({
+            parseString: function (fileData, callback) {
+                //call callback with no error and altered xml2jsConfig data
+                callback(error, data);
+            }
+        });
+    }
+};
+
+describe("test-utilities", function () {
+    var testUtilities = require("./test-utilities");
+
+    it("can clone objects using cloneObj", function () {
+        var obj = {
+                A: "A",
+                B: "B",
+                C: {
+                    CA: "CA",
+                    CB: "CB",
+                    CC: {
+                        CCA: "CCA"
+                    }
+                }
+            },
+            clonedObj = testUtilities.cloneObj(obj);
+
+        //not the same object
+        expect(clonedObj).not.toBe(obj);
+
+        //has the same data
+        expect(clonedObj).toEqual(obj);
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/test.zip
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/test.zip b/bin/test/cordova/unit/test.zip
new file mode 100644
index 0000000..8859a66
Binary files /dev/null and b/bin/test/cordova/unit/test.zip differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/update
----------------------------------------------------------------------
diff --git a/bin/update b/bin/update
new file mode 100755
index 0000000..342984a
--- /dev/null
+++ b/bin/update
@@ -0,0 +1,28 @@
+#! /bin/bash
+<<COMMENT
+    Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+
+COMMENT
+# update a cordova/blackberry10 project
+#
+# USAGE
+#   ./update [projectpath]
+
+BIN_DIR=$(dirname "$0")
+source "$BIN_DIR/init"
+"$CORDOVA_NODE/node" "$BIN_DIR/lib/update.js" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/update.bat
----------------------------------------------------------------------
diff --git a/bin/update.bat b/bin/update.bat
new file mode 100644
index 0000000..5a71671
--- /dev/null
+++ b/bin/update.bat
@@ -0,0 +1,21 @@
+@ECHO OFF
+goto comment
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+:comment
+call "%~dp0init"
+"%CORDOVA_NODE%\node.exe" "%~dp0\lib\update.js" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/whereis.cmd
----------------------------------------------------------------------
diff --git a/bin/whereis.cmd b/bin/whereis.cmd
new file mode 100644
index 0000000..372bcef
--- /dev/null
+++ b/bin/whereis.cmd
@@ -0,0 +1,19 @@
+@echo off
+setlocal enabledelayedexpansion
+set var_a=%1
+call :sub %var_a%
+if exist %var_b% if not exist %var_b%\nul goto exit
+for %%i in (.com .exe .cmd .bat) do (
+  call :sub %var_a%%%i
+  if exist !var_b! goto exit
+)
+echo INFO: could not find files for the given pattern(s) 1>&2
+exit /b 1
+
+:sub
+set var_b=%~$PATH:1
+goto :EOF
+
+:exit
+echo %var_b%
+exit /b 0

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/.gitignore
----------------------------------------------------------------------
diff --git a/blackberry10/.gitignore b/blackberry10/.gitignore
deleted file mode 100644
index bd024b8..0000000
--- a/blackberry10/.gitignore
+++ /dev/null
@@ -1,21 +0,0 @@
-# OS X
-
-.DS_Store
-tags
-
-# Eclipse
-
-deliverables/
-.preprocessed/
-
-# Text Editor Tmp
-
-._*
-
-# Generated libraries
-
-build/
-dist/
-bin/templates/project/lib
-example/
-.tmp

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/.jshintignore
----------------------------------------------------------------------
diff --git a/blackberry10/.jshintignore b/blackberry10/.jshintignore
deleted file mode 100644
index 41c3629..0000000
--- a/blackberry10/.jshintignore
+++ /dev/null
@@ -1,6 +0,0 @@
-framework/lib/jnext.js
-bin/test/cordova/unit/params-bad.json
-bin/templates/project/cordova/lib/xml-helpers.js
-bin/templates/project/cordova/third_party/*
-bin/templates/project/lib/*
-bin/templates/project/www/**/*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/.jshintrc
----------------------------------------------------------------------
diff --git a/blackberry10/.jshintrc b/blackberry10/.jshintrc
deleted file mode 100644
index 84db82c..0000000
--- a/blackberry10/.jshintrc
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-    "predef": [
-        "escape",
-        "unescape",
-        //Jasmine
-        "jasmine",
-        "it",
-        "describe",
-        "xit",
-        "xdescribe",
-        "beforeEach",
-        "afterEach",
-        "runs",
-        "waits",
-        "waitsFor",
-        "spyOn",
-        "expect",
-        "global",
-        //Webworks
-        "qnx",
-        "chrome",
-        "blackberry",
-        "internal",
-        "JNEXT",
-        "frameworkModules",
-        //Node
-        "__dirname",
-        "GLOBAL",
-        "process",
-        "exports",
-        "module",
-        "NamedNodeMap",
-        "require",
-        "Node",
-        "JSZip",
-        //UI Components
-        "x$",
-        "iris",
-        //Browser
-        "DOMElement",
-        "atob",
-        //automated tests
-        "showOverlay",
-        "hideOverlay"
-    ],
-
-    "node" : false,
-    "browser" : true,
-
-    "boss" : false,
-    "curly": false,
-    "bitwise" : false,
-    "white": true,
-    "indent": 4,
-    "evil": false,
-    "devel": true,
-    "debug": false,
-    "eqeqeq": true,
-    "forin": true,
-    "immed": true,
-    "laxbreak": false,
-    "newcap": true,
-    "noarg": true,
-    "noempty": false,
-    "nonew": false,
-    "nomen": false,
-    "onevar": true,
-    "plusplus": false,
-    "regexp": false,
-    "undef": true,
-    "sub": true,
-    "strict": false
-}


[20/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/xlocalize/test.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/xlocalize/test.html b/blackberry10/node_modules/localize/test/xlocalize/test.html
deleted file mode 100644
index ce37ee7..0000000
--- a/blackberry10/node_modules/localize/test/xlocalize/test.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-
-<html>
-	<head>
-		<title>Test Doc!</title>
-	</head>
-	<body>
-		{{if session.lang != "en"}}
-			<h1>${translate("This page is in English.")}</h1>
-		{{/if}}
-		Foo. Foobar. Tada.
-	</body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/.jshintrc
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/.jshintrc b/blackberry10/node_modules/prompt/.jshintrc
deleted file mode 100644
index 0d97986..0000000
--- a/blackberry10/node_modules/prompt/.jshintrc
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "passfail": false,
-  "maxerr": 100,
-
-  "browser": false,
-  "node": true,
-  "rhino": false,
-  "couch": true,
-  "wsh": true,
-  "jquery": true,
-  "prototypejs": false,
-  "mootools": false,
-  "dojo": false,
-
-  "devel": false,
-
-  "es5": true,
-  "strict": false,
-  "globalstrict": false,
-
-  "asi": false,
-  "lastsemic": true,
-  "laxbreak": true,
-  "laxcomma": false,
-  "bitwise": false,
-  "boss": false,
-  "curly": true,
-  "eqeqeq": true,
-  "eqnull": false,
-  "evil": false,
-  "expr": false,
-  "forin": false,
-  "immed": false,
-  "latedef": false,
-  "loopfunc": true,
-  "noarg": true,
-  "regexp": true,
-  "regexdash": false,
-  "scripturl": true,
-  "shadow": true,
-  "supernew": true,
-  "undef": true,
-
-  "newcap": true,
-  "noempty": true,
-  "nonew": true,
-  "nomen": false,
-  "onevar": true,
-  "plusplus": false,
-  "sub": true,
-  "trailing": true,
-  "white": false,
-  "indent": 2
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/.npmignore b/blackberry10/node_modules/prompt/.npmignore
deleted file mode 100644
index e3bc275..0000000
--- a/blackberry10/node_modules/prompt/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules/
-node_modules/*
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/.travis.yml b/blackberry10/node_modules/prompt/.travis.yml
deleted file mode 100644
index d2f42d5..0000000
--- a/blackberry10/node_modules/prompt/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
-  - 0.8
-
-notifications:
-  email:
-    - travis@nodejitsu.com
-  irc: "irc.freenode.org#nodejitsu"
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/CHANGELOG.md b/blackberry10/node_modules/prompt/CHANGELOG.md
deleted file mode 100644
index b094c48..0000000
--- a/blackberry10/node_modules/prompt/CHANGELOG.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-0.2.7 / 2012-08-30
-==================
-
-  * Fixed handling of numeric inputs with parseFloat
-  * Fixed overwriting of non-string inputs
-  * Added support for boolean types
-
-0.2.6 / 2012-08-12
-==================
-
-  * Added allowance of empty default values
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/LICENSE b/blackberry10/node_modules/prompt/LICENSE
deleted file mode 100644
index 56217ca..0000000
--- a/blackberry10/node_modules/prompt/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Nodejitsu Inc.
-
-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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/README.md b/blackberry10/node_modules/prompt/README.md
deleted file mode 100644
index 6fdb684..0000000
--- a/blackberry10/node_modules/prompt/README.md
+++ /dev/null
@@ -1,293 +0,0 @@
-# prompt [![Build Status](https://secure.travis-ci.org/flatiron/prompt.png)](http://travis-ci.org/flatiron/prompt)
-
-A beautiful command-line prompt for node.js
-
-## Features
-
-* prompts the user for input
-* supports validation and defaults
-* hides passwords
-
-## Usage
-Using prompt is relatively straight forward. There are two core methods you should be aware of: `prompt.get()` and `prompt.addProperties()`. There methods take strings representing property names in addition to objects for complex property validation (and more). There are a number of [examples][0] that you should examine for detailed usage.
-
-### Getting Basic Prompt Information
-Getting started with `prompt` is easy. Lets take a look at `examples/simple-prompt.js`:
-
-``` js
-  var prompt = require('prompt');
-
-  //
-  // Start the prompt
-  //
-  prompt.start();
-
-  //
-  // Get two properties from the user: username and email
-  //
-  prompt.get(['username', 'email'], function (err, result) {
-    //
-    // Log the results.
-    //
-    console.log('Command-line input received:');
-    console.log('  username: ' + result.username);
-    console.log('  email: ' + result.email);
-  });
-```
-
-This will result in the following command-line output:
-
-```
-  $ node examples/simple-prompt.js 
-  prompt: username: some-user
-  prompt: email: some-user@some-place.org
-  Command-line input received:
-    username: some-user
-    email: some-user@some-place.org
-```
-
-### Prompting with Validation, Default Values, and More (Complex Properties)
-In addition to prompting the user with simple string prompts, there is a robust API for getting and validating complex information from a command-line prompt. Here's a quick sample:
-
-``` js
-  var schema = {
-    properties: {
-      name: {
-        pattern: /^[a-zA-Z\s\-]+$/,
-        message: 'Name must be only letters, spaces, or dashes',
-        required: true
-      },
-      password: {
-        hidden: true
-      }
-    }
-  };
-
-  //
-  // Start the prompt
-  //
-  prompt.start();
-
-  //
-  // Get two properties from the user: email, password
-  //
-  prompt.get(schema, function (err, result) {
-    //
-    // Log the results.
-    //
-    console.log('Command-line input received:');
-    console.log('  name: ' + result.name);
-    console.log('  password: ' + result.password);
-  });
-```
-
-Pretty easy right? The output from the above script is: 
-
-```
-  $ node examples/property-prompt.js
-  prompt: name: nodejitsu000
-  error:  Invalid input for name
-  error:  Name must be only letters, spaces, or dashes
-  prompt: name: Nodejitsu Inc
-  prompt: password: 
-  Command-line input received:
-    name: Nodejitsu Inc
-    password: some-password  
-```
-
-## Valid Property Settings
-`prompt` understands JSON-schema with a few extra parameters and uses [revalidator](https://github.com/flatiron/revalidator) for validation.
-
-Here's an overview of the properties that may be used for validation and prompting controls:
-
-``` js
-  {
-    description: 'Enter your password',     // Prompt displayed to the user. If not supplied name will be used.
-    type: 'string',                 // Specify the type of input to expect.
-    pattern: /^\w+$/,                  // Regular expression that input must be valid against.
-    message: 'Password must be letters', // Warning message to display if validation fails.
-    hidden: true,                        // If true, characters entered will not be output to console.
-    default: 'lamepassword',             // Default value to use if no value is entered.
-    required: true                        // If true, value entered must be non-empty.
-    before: function(value) { return 'v' + value; } // Runs before node-prompt callbacks. It modifies user's input
-  }
-```
-
-Alternatives to `pattern` include `format` and `conform`, as documented in [revalidator](https://github.com/flatiron/revalidator).
-
-Using `type: 'array'` has some special cases.
-
-- `description` will not work in the schema if `type: 'array'` is defined.
-- `maxItems` takes precedence over `minItems`.
-- Arrays that do not have `maxItems` defined will require users to `SIGINT` (`^C`) before the array is ended.
-- If `SIGINT` (`^C`) is triggered before `minItems` is met, a validation error will appear. This will require users to `SIGEOF` (`^D`) to end the input.
-
-For more information on things such as `maxItems` and `minItems`, refer to the [revalidator](https://github.com/flatiron/revalidator) repository.
-
-### Alternate Validation API:
-
-Prompt, in addition to iterating over JSON-Schema properties, will also happily iterate over an array of validation objects given an extra 'name' property:
-
-```js
-  var prompt = require('../lib/prompt');
-
-  //
-  // Start the prompt
-  //
-  prompt.start();
-
-  //
-  // Get two properties from the user: username and password
-  //
-  prompt.get([{
-      name: 'username',
-      required: true
-    }, {
-      name: 'password',
-      hidden: true,
-      conform: function (value) {
-        return true;
-      }
-    }], function (err, result) {
-    //
-    // Log the results.
-    //
-    console.log('Command-line input received:');
-    console.log('  username: ' + result.username);
-    console.log('  password: ' + result.password);
-  });
-```
-
-### Backward Compatibility
-
-Note that, while this structure is similar to that used by prompt 0.1.x, that the object properties use the same names as in JSON-Schema. prompt 0.2.x is backward compatible with prompt 0.1.x except for asynchronous validation.
-
-### Skipping Prompts
-
-Sometimes power users may wish to skip promts and specify all data as command line options. 
-if a value is set as a property of `prompt.override` prompt will use that instead of 
-prompting the user.
-
-``` js
-  //prompt-override.js
-
-  var prompt = require('prompt'),
-      optimist = require('optimist')
-
-  //
-  // set the overrides
-  //
-  prompt.override = optimist.argv
-
-  //
-  // Start the prompt
-  //
-  prompt.start();
-
-  //
-  // Get two properties from the user: username and email
-  //
-  prompt.get(['username', 'email'], function (err, result) {
-    //
-    // Log the results.
-    //
-    console.log('Command-line input received:');
-    console.log('  username: ' + result.username);
-    console.log('  email: ' + result.email);
-  })
-
-  //: node prompt-override.js --username USER --email EMAIL
-```
-
-
-### Adding Properties to an Object 
-A common use-case for prompting users for data from the command-line is to extend or create a configuration object that is passed onto the entry-point method for your CLI tool. `prompt` exposes a convenience method for doing just this: 
-
-``` js
-  var obj = {
-    password: 'lamepassword',
-    mindset: 'NY'
-  }
-
-  //
-  // Log the initial object.
-  //
-  console.log('Initial object to be extended:');
-  console.dir(obj);
-
-  //
-  // Add two properties to the empty object: username and email
-  //
-  prompt.addProperties(obj, ['username', 'email'], function (err) {
-    //
-    // Log the results.
-    //
-    console.log('Updated object received:');
-    console.dir(obj);
-  });
-```
-
-## Customizing your prompt
-Aside from changing `property.message`, you can also change `prompt.message`
-and `prompt.delimiter` to change the appearance of your prompt.
-
-The basic structure of a prompt is this:
-
-``` js
-prompt.message + prompt.delimiter + property.message + prompt.delimiter;
-```
-
-The default `prompt.message` is "prompt," the default `prompt.delimiter` is
-": ", and the default `property.message` is `property.name`.
-Changing these allows you to customize the appearance of your prompts! In
-addition, prompt supports ANSI color codes via the
-[colors module](https://github.com/Marak/colors.js) for custom colors. For a
-very colorful example:
-
-``` js
-  var prompt = require("prompt");
-
-  //
-  // Setting these properties customizes the prompt.
-  //
-  prompt.message = "Question!".rainbow;
-  prompt.delimiter = "><".green;
-
-  prompt.start();
-
-  prompt.get({
-    properties: {
-      name: {
-        description: "What is your name?".magenta
-      }
-    }
-  }, function (err, result) {
-    console.log("You said your name is: ".cyan + result.name.cyan);
-  });
-```
-
-If you don't want colors, you can set
-
-```js
-var prompt = require('prompt');
-
-prompt.colors = false;
-```
-
-## Installation
-
-``` bash
-  $ [sudo] npm install prompt
-```
-
-## Running tests
-
-``` bash 
-  $ npm test
-```
-
-#### License: MIT
-#### Author: [Charlie Robbins](http://github.com/indexzero)
-#### Contributors: [Josh Holbrook](http://github.com/jesusabdullah), [Pavan Kumar Sunkara](http://github.com/pksunkara)
-
-[0]: https://github.com/flatiron/prompt/tree/master/examples

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/docs/docco.css
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/docs/docco.css b/blackberry10/node_modules/prompt/docs/docco.css
deleted file mode 100644
index bd54134..0000000
--- a/blackberry10/node_modules/prompt/docs/docco.css
+++ /dev/null
@@ -1,194 +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;
-}
-h4, h5, h6 {
-  color: #333;
-  margin: 6px 0 6px 0;
-  font-size: 13px;
-}
-  h2, h3 {
-    margin-bottom: 0;
-    color: #000;
-  }
-    h1 {
-      margin-top: 40px;
-      margin-bottom: 15px;
-      color: #000;
-    }
-#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: 450px;
-    min-width: 450px;
-    min-height: 5px;
-    padding: 10px 25px 1px 50px;
-    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;
-    }
-    .pilwrap {
-      position: relative;
-    }
-      .pilcrow {
-        font: 12px Arial;
-        text-decoration: none;
-        color: #454545;
-        position: absolute;
-        top: 3px; left: -20px;
-        padding: 1px 2px;
-        opacity: 0;
-        -webkit-transition: opacity 0.2s linear;
-      }
-        td.docs:hover .pilcrow {
-          opacity: 1;
-        }
-  td.code, th.code {
-    padding: 14px 15px 16px 25px;
-    width: 100%;
-    vertical-align: top;
-    background: #f5f5ff;
-    border-left: 1px solid #e5e5ee;
-  }
-    pre, tt, code {
-      font-size: 12px; line-height: 18px;
-      font-family: Menlo, 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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/docs/prompt.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/docs/prompt.html b/blackberry10/node_modules/prompt/docs/prompt.html
deleted file mode 100644
index 7776f5b..0000000
--- a/blackberry10/node_modules/prompt/docs/prompt.html
+++ /dev/null
@@ -1,296 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>prompt.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               prompt.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span class="cm">/*</span>
-<span class="cm"> * prompt.js: Simple prompt for prompting information from the command line </span>
-<span class="cm"> *</span>
-<span class="cm"> * (C) 2010, Nodejitsu Inc.</span>
-<span class="cm"> *</span>
-<span class="cm"> */</span>
-
-<span class="kd">var</span> <span class="nx">events</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;events&#39;</span><span class="p">),</span>
-    <span class="nx">async</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;async&#39;</span><span class="p">),</span>
-    <span class="nx">colors</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;colors&#39;</span><span class="p">),</span>
-    <span class="nx">winston</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;winston&#39;</span><span class="p">),</span>
-    <span class="nx">stdio</span> <span class="o">=</span> <span class="nx">process</span><span class="p">.</span><span class="nx">binding</span><span class="p">(</span><span class="s1">&#39;stdio&#39;</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <h3>@private function capitalize (str)</h3>
-
-<h4>str {string} String to capitalize</h4>
-
-<p>Capitalizes the string supplied.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="kd">function</span> <span class="nx">capitalize</span><span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span>
-  <span class="k">return</span> <span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">+</span> <span class="nx">str</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-<span class="p">}</span>
-
-<span class="kd">var</span> <span class="nx">prompt</span> <span class="o">=</span> <span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">create</span><span class="p">(</span><span class="nx">events</span><span class="p">.</span><span class="nx">EventEmitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">);</span>
-
-<span class="kd">var</span> <span class="nx">logger</span> <span class="o">=</span> <span class="nx">prompt</span><span class="p">.</span><span class="nx">logger</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">winston</span><span class="p">.</span><span class="nx">Logger</span><span class="p">({</span>
-  <span class="nx">transports</span><span class="o">:</span> <span class="p">[</span>
-    <span class="k">new</span> <span class="p">(</span><span class="nx">winston</span><span class="p">.</span><span class="nx">transports</span><span class="p">.</span><span class="nx">Console</span><span class="p">)()</span>
-  <span class="p">]</span>
-<span class="p">});</span>
-    
-<span class="nx">prompt</span><span class="p">.</span><span class="nx">started</span>    <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
-<span class="nx">prompt</span><span class="p">.</span><span class="nx">paused</span>     <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
-<span class="nx">prompt</span><span class="p">.</span><span class="nx">allowEmpty</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span> 
-
-<span class="kd">var</span> <span class="nx">stdin</span><span class="p">,</span> <span class="nx">stdout</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Create an empty object for the properties 
-known to <code>prompt</code></p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">properties</span> <span class="o">=</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Setup the default winston logger to use 
-the <code>cli</code> levels and colors.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">logger</span><span class="p">.</span><span class="nx">cli</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <h3>function start (options)</h3>
-
-<h4>@options {Object} <strong>Optional</strong> Options to consume by prompt</h4>
-
-<p>Starts the prompt by listening to the appropriate events on <code>options.stdin</code>
-and <code>options.stdout</code>. If no streams are supplied, then <code>process.stdin</code> 
-and <code>process.stdout</code> are used, respectively.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">start</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-  <span class="k">if</span> <span class="p">(</span><span class="nx">prompt</span><span class="p">.</span><span class="nx">started</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span><span class="p">;</span>
-  <span class="p">}</span>
-  
-  <span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span>        <span class="o">||</span> <span class="p">{};</span>
-  <span class="nx">stdin</span>   <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">stdin</span>  <span class="o">||</span> <span class="nx">process</span><span class="p">.</span><span class="nx">openStdin</span><span class="p">();</span>
-  <span class="nx">stdout</span>  <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">stdout</span> <span class="o">||</span> <span class="nx">process</span><span class="p">.</span><span class="nx">stdout</span><span class="p">;</span>
-  
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">allowEmpty</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">allowEmpty</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span>
-  
-  <span class="nx">process</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;SIGINT&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-    <span class="nx">stdout</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">);</span>
-    <span class="nx">process</span><span class="p">.</span><span class="nx">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-  <span class="p">})</span>
-  
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;start&#39;</span><span class="p">);</span>
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">started</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <h3>function pause ()</h3>
-
-<p>Pauses input coming in from stdin</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">pause</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">prompt</span><span class="p">.</span><span class="nx">started</span> <span class="o">||</span> <span class="nx">prompt</span><span class="p">.</span><span class="nx">paused</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span><span class="p">;</span>
-  <span class="p">}</span>
-  
-  <span class="nx">stdin</span><span class="p">.</span><span class="nx">pause</span><span class="p">();</span>
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;pause&#39;</span><span class="p">);</span>
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">paused</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <h3>function resume ()</h3>
-
-<p>Resumes input coming in from stdin </p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">resume</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">prompt</span><span class="p">.</span><span class="nx">started</span> <span class="o">||</span> <span class="o">!</span><span class="nx">prompt</span><span class="p">.</span><span class="nx">paused</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span><span class="p">;</span>
-  <span class="p">}</span>
-  
-  <span class="nx">stdin</span><span class="p">.</span><span class="nx">resume</span><span class="p">();</span>
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;resume&#39;</span><span class="p">);</span>
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">paused</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <h3>function get (msg, [validator,] callback)</h3>
-
-<h4>@msg {Array|Object|string} Set of variables to get input for.</h4>
-
-<h4>@callback {function} Continuation to pass control to when complete.</h4>
-
-<p>Gets input from the user via stdin for the specified message(s) <code>msg</code>.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">get</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-  <span class="kd">var</span> <span class="nx">vars</span> <span class="o">=</span> <span class="o">!</span><span class="nb">Array</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">msg</span><span class="p">)</span> <span class="o">?</span> <span class="p">[</span><span class="nx">msg</span><span class="p">]</span> <span class="o">:</span> <span class="nx">msg</span><span class="p">,</span>
-      <span class="nx">result</span> <span class="o">=</span> <span class="p">{};</span>
-  
-  <span class="nx">vars</span> <span class="o">=</span> <span class="nx">vars</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">v</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">v</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">v</span> <span class="o">=</span> <span class="nx">v</span><span class="p">.</span><span class="nx">toLowerCase</span><span class="p">();</span>
-    <span class="p">}</span>
-    
-    <span class="k">return</span> <span class="nx">prompt</span><span class="p">.</span><span class="nx">properties</span><span class="p">[</span><span class="nx">v</span><span class="p">]</span> <span class="o">||</span> <span class="nx">v</span><span class="p">;</span>
-  <span class="p">});</span>
-  
-  <span class="kd">function</span> <span class="nx">get</span><span class="p">(</span><span class="nx">target</span><span class="p">,</span> <span class="nx">next</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">prompt</span><span class="p">.</span><span class="nx">getInput</span><span class="p">(</span><span class="nx">target</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">line</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">next</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
-      <span class="p">}</span>
-      
-      <span class="kd">var</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">name</span> <span class="o">||</span> <span class="nx">target</span><span class="p">;</span>
-      <span class="nx">result</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="nx">line</span><span class="p">;</span>
-      <span class="nx">next</span><span class="p">();</span>
-    <span class="p">});</span>
-  <span class="p">}</span>
-  
-  <span class="nx">async</span><span class="p">.</span><span class="nx">forEachSeries</span><span class="p">(</span><span class="nx">vars</span><span class="p">,</span> <span class="nx">get</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="nx">err</span> <span class="o">?</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="o">:</span> <span class="nx">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">result</span><span class="p">);</span>
-  <span class="p">});</span>
-  
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <h3>function getInput (msg, validator, callback)</h3>
-
-<h4>@msg {Object|string} Variable to get input for.</h4>
-
-<h4>@callback {function} Continuation to pass control to when complete.</h4>
-
-<p>Gets input from the user via stdin for the specified message <code>msg</code>.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">getInput</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-  <span class="kd">var</span> <span class="nx">name</span>   <span class="o">=</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">message</span> <span class="o">||</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">name</span> <span class="o">||</span> <span class="nx">prop</span><span class="p">,</span>
-      <span class="nx">raw</span>    <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;prompt&#39;</span><span class="p">,</span> <span class="s1">&#39;: &#39;</span> <span class="o">+</span> <span class="nx">name</span><span class="p">.</span><span class="nx">grey</span><span class="p">,</span> <span class="s1">&#39;: &#39;</span><span class="p">.</span><span class="nx">grey</span><span class="p">],</span>
-      <span class="nx">read</span>   <span class="o">=</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">hidden</span> <span class="o">?</span> <span class="nx">prompt</span><span class="p">.</span><span class="nx">readLineHidden</span> <span class="o">:</span> <span class="nx">prompt</span><span class="p">.</span><span class="nx">readLine</span><span class="p">,</span>
-      <span class="nx">length</span><span class="p">,</span> <span class="nx">msg</span><span class="p">;</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">prop</span><span class="p">.</span><span class="k">default</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">raw</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s1">&#39; (&#39;</span> <span class="o">+</span> <span class="nx">prop</span><span class="p">.</span><span class="k">default</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">);</span>
-  <span class="p">}</span>
-  </pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>Calculate the raw length and colorize the prompt</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">length</span> <span class="o">=</span> <span class="nx">raw</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">).</span><span class="nx">length</span><span class="p">;</span>
-  <span class="nx">raw</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nx">raw</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
-  <span class="nx">msg</span> <span class="o">=</span> <span class="nx">raw</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">);</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">prop</span><span class="p">.</span><span class="nx">help</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">prop</span><span class="p">.</span><span class="nx">help</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">line</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">logger</span><span class="p">.</span><span class="nx">help</span><span class="p">(</span><span class="nx">line</span><span class="p">);</span>
-    <span class="p">});</span>
-  <span class="p">}</span>
-  
-  <span class="nx">stdout</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span> 
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;prompt&#39;</span><span class="p">,</span> <span class="nx">prop</span><span class="p">);</span>
-  
-  <span class="nx">read</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">line</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
-    <span class="p">}</span>
-  
-    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">line</span> <span class="o">||</span> <span class="nx">line</span> <span class="o">===</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">line</span> <span class="o">=</span> <span class="nx">prop</span><span class="p">.</span><span class="k">default</span> <span class="o">||</span> <span class="nx">line</span><span class="p">;</span>
-    <span class="p">}</span>
-    
-    <span class="k">if</span> <span class="p">(</span><span class="nx">prop</span><span class="p">.</span><span class="nx">validator</span> <span class="o">||</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">empty</span> <span class="o">===</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">valid</span><span class="p">;</span>
-      
-      <span class="k">if</span> <span class="p">(</span><span class="nx">prop</span><span class="p">.</span><span class="nx">validator</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">valid</span> <span class="o">=</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">validator</span><span class="p">.</span><span class="nx">test</span> 
-         <span class="o">?</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">validator</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">line</span><span class="p">)</span>
-         <span class="o">:</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">validator</span><span class="p">(</span><span class="nx">line</span><span class="p">);</span>
-      <span class="p">}</span>
-      
-      <span class="k">if</span> <span class="p">(</span><span class="nx">prop</span><span class="p">.</span><span class="nx">empty</span> <span class="o">===</span> <span class="kc">false</span> <span class="o">&amp;&amp;</span> <span class="nx">valid</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">valid</span> <span class="o">=</span> <span class="nx">line</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
-        <span class="nx">prop</span><span class="p">.</span><span class="nx">warning</span> <span class="o">=</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">warning</span> <span class="o">||</span> <span class="s1">&#39;You must supply a value.&#39;</span><span class="p">;</span>
-      <span class="p">}</span>
-      
-      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">valid</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">logger</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="s1">&#39;Invalid input for &#39;</span> <span class="o">+</span> <span class="nx">name</span><span class="p">.</span><span class="nx">grey</span><span class="p">);</span>
-        <span class="k">if</span> <span class="p">(</span><span class="nx">prop</span><span class="p">.</span><span class="nx">warning</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">logger</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">prop</span><span class="p">.</span><span class="nx">warning</span><span class="p">);</span>
-        <span class="p">}</span>
-        
-        <span class="nx">prompt</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">&#39;invalid&#39;</span><span class="p">,</span> <span class="nx">prop</span><span class="p">,</span> <span class="nx">line</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">prompt</span><span class="p">.</span><span class="nx">getInput</span><span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
-      <span class="p">}</span>
-    <span class="p">}</span>
-        
-    <span class="nx">logger</span><span class="p">.</span><span class="nx">input</span><span class="p">(</span><span class="nx">line</span><span class="p">.</span><span class="nx">yellow</span><span class="p">);</span>
-    <span class="nx">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">line</span><span class="p">);</span>
-  <span class="p">});</span>
-
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-11">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-11">&#182;</a>               </div>               <h3>function addProperties (obj, properties, callback)</h3>
-
-<h4>@obj {Object} Object to add properties to</h4>
-
-<h4>@properties {Array} List of properties to get values for</h4>
-
-<h4>@callback {function} Continuation to pass control to when complete.</h4>
-
-<p>Prompts the user for values each of the <code>properties</code> if <code>obj</code> does not already
-have a value for the property. Responds with the modified object.  </p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">addProperties</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">properties</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-  <span class="nx">properties</span> <span class="o">=</span> <span class="nx">properties</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">prop</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="k">typeof</span> <span class="nx">obj</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;undefined&#39;</span><span class="p">;</span>
-  <span class="p">});</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">properties</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">properties</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">results</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
-    <span class="p">}</span>
-    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">results</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">obj</span><span class="p">);</span>
-    <span class="p">}</span>
-    
-    <span class="kd">function</span> <span class="nx">putNested</span> <span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">path</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">last</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">,</span> <span class="nx">key</span><span class="p">;</span> 
-      
-      <span class="k">while</span> <span class="p">(</span><span class="nx">path</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">key</span> <span class="o">=</span> <span class="nx">path</span><span class="p">.</span><span class="nx">shift</span><span class="p">();</span>
-        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">last</span><span class="p">[</span><span class="nx">key</span><span class="p">])</span> <span class="p">{</span>
-          <span class="nx">last</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">{};</span>
-        <span class="p">}</span>
-        
-        <span class="nx">last</span> <span class="o">=</span> <span class="nx">last</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span>
-      <span class="p">}</span>
-      
-      <span class="nx">last</span><span class="p">[</span><span class="nx">path</span><span class="p">.</span><span class="nx">shift</span><span class="p">()]</span> <span class="o">=</span> <span class="nx">value</span><span class="p">;</span>
-    <span class="p">}</span>
-    
-    <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">results</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">putNested</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">key</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">),</span> <span class="nx">results</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span>
-    <span class="p">});</span>
-    
-    <span class="nx">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">obj</span><span class="p">);</span>
-  <span class="p">});</span>
-  
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-12">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-12">&#182;</a>               </div>               <h3>function readLine (callback)</h3>
-
-<h4>@callback {function} Continuation to respond to when complete</h4>
-
-<p>Gets a single line of input from the user. </p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">readLine</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-  <span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="nx">buffer</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">resume</span><span class="p">();</span>
-  <span class="nx">stdin</span><span class="p">.</span><span class="nx">setEncoding</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">);</span>
-  <span class="nx">stdin</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
-  <span class="nx">stdin</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">data</span> <span class="p">(</span><span class="nx">chunk</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">value</span> <span class="o">+=</span> <span class="nx">buffer</span> <span class="o">+</span> <span class="nx">chunk</span><span class="p">;</span>
-    <span class="nx">buffer</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
-    <span class="nx">value</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/\r/g</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
-    <span class="k">if</span> <span class="p">(</span><span class="nx">value</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">)</span> <span class="o">!==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">!==</span> <span class="s1">&#39;\n&#39;</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">value</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/^\n+/</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
-      <span class="p">}</span>
-      
-      <span class="nx">buffer</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="nx">value</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">));</span>
-      <span class="nx">val</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">value</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">));</span>
-      <span class="nx">prompt</span><span class="p">.</span><span class="nx">pause</span><span class="p">();</span>
-      <span class="nx">stdin</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span>
-      <span class="nx">stdin</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
-      <span class="nx">value</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
-      <span class="nx">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">value</span><span class="p">);</span>
-    <span class="p">}</span>
-  <span class="p">});</span>
-  
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-13">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-13">&#182;</a>               </div>               <h3>function readLineHidden (callback)</h3>
-
-<h4>@callback {function} Continuation to respond to when complete</h4>
-
-<p>Gets a single line of hidden input (i.e. <code>rawMode = true</code>) from the user. </p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">prompt</span><span class="p">.</span><span class="nx">readLineHidden</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-  <span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="nx">buffer</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
-  <span class="nx">stdio</span><span class="p">.</span><span class="nx">setRawMode</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span>
-  <span class="nx">prompt</span><span class="p">.</span><span class="nx">resume</span><span class="p">();</span>
-  <span class="nx">stdin</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
-  <span class="nx">stdin</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="nx">data</span> <span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">c</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> <span class="o">+</span> <span class="nx">c</span><span class="p">;</span>
-    <span class="k">switch</span> <span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">case</span> <span class="s1">&#39;\n&#39;</span><span class="o">:</span> <span class="k">case</span> <span class="s1">&#39;\r&#39;</span><span class="o">:</span> <span class="k">case</span> <span class="s1">&#39;\r\n&#39;</span><span class="o">:</span> <span class="k">case</span> <span class="s1">&#39;\u0004&#39;</span><span class="o">:</span>
-        <span class="nx">stdio</span><span class="p">.</span><span class="nx">setRawMode</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
-        <span class="nx">stdin</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span>
-        <span class="nx">stdin</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
-        <span class="nx">value</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
-        <span class="nx">stdout</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">);</span>
-        <span class="nx">stdout</span><span class="p">.</span><span class="nx">flush</span><span class="p">();</span>
-        <span class="nx">prompt</span><span class="p">.</span><span class="nx">pause</span><span class="p">();</span>
-        <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span>
-      <span class="k">case</span> <span class="s1">&#39;\u0003&#39;</span><span class="o">:</span> <span class="k">case</span> <span class="s1">&#39;\0&#39;</span><span class="o">:</span>
-        <span class="nx">stdout</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">);</span>
-        <span class="nx">process</span><span class="p">.</span><span class="nx">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
-        <span class="k">break</span><span class="p">;</span>
-      <span class="k">default</span><span class="o">:</span>
-        <span class="nx">value</span> <span class="o">+=</span> <span class="nx">buffer</span> <span class="o">+</span> <span class="nx">c</span>
-        <span class="nx">buffer</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
-        <span class="k">break</span><span class="p">;</span>
-    <span class="p">}</span>
-  <span class="p">});</span>
-  
-  <span class="k">return</span> <span class="nx">prompt</span><span class="p">;</span>
-<span class="p">};</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/add-properties.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/add-properties.js b/blackberry10/node_modules/prompt/examples/add-properties.js
deleted file mode 100644
index 1a56176..0000000
--- a/blackberry10/node_modules/prompt/examples/add-properties.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * add-properties.js: Example of how to add properties to an object using prompt.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-//
-// Start the prompt
-//
-prompt.start();
-
-var obj = {
-  password: 'lamepassword',
-  mindset: 'NY'
-}
-
-//
-// Log the initial object.
-//
-console.log('Initial object to be extended:');
-console.dir(obj);
-
-//
-// Add two properties to the empty object: username and email
-//
-prompt.addProperties(obj, ['username', 'email'], function (err) {
-  //
-  // Log the results.
-  //
-  console.log('Updated object received:');
-  console.dir(obj);
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/existing-properties.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/existing-properties.js b/blackberry10/node_modules/prompt/examples/existing-properties.js
deleted file mode 100644
index d87503b..0000000
--- a/blackberry10/node_modules/prompt/examples/existing-properties.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * existing-properties.js: Example of using prompt with predefined properties.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-prompt.properties = {
-  email: {
-    format: 'email',
-    message: 'Must be a valid email address'
-  },
-  password: {
-    hidden: true
-  }
-};
-
-//
-// Start the prompt
-//
-prompt.start();
-
-//
-// Get two properties from the user: email, password
-//
-prompt.get(['email', 'password'], function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  email: ' + result.email);
-  console.log('  password: ' + result.password);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/history.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/history.js b/blackberry10/node_modules/prompt/examples/history.js
deleted file mode 100644
index fd4369d..0000000
--- a/blackberry10/node_modules/prompt/examples/history.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * history.js: Example of using the prompt history capabilities.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-//
-// Start the prompt
-//
-prompt.start();
-
-var properties = {
-  properties: {
-    animal: {
-      description: 'Enter an animal',
-      default: 'dog',
-      pattern: /dog|cat/
-    },
-    sound: {
-      description: 'What sound does this animal make?',
-      conform: function (value) {
-        var animal = prompt.history(0).value;
-
-        return animal === 'dog' && value === 'woof'
-          || animal === 'cat' && value === 'meow';
-      }
-    }
-  }
-}
-
-//
-// Get two properties from the user
-//
-prompt.get(properties, function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  animal: ' + result.animal);
-  console.log('  sound: ' + result.sound);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/nested-properties-prompt.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/nested-properties-prompt.js b/blackberry10/node_modules/prompt/examples/nested-properties-prompt.js
deleted file mode 100644
index 25106a2..0000000
--- a/blackberry10/node_modules/prompt/examples/nested-properties-prompt.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * property-prompt.js: Example of using prompt with complex properties.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-var schema = {
-  properties: {
-    url: {
-      required: true,
-      format: 'url'
-    },
-    auth: {
-      properties: {
-        username: {
-          required: true
-        },
-        password: {
-          required: true,
-          hidden: true
-        }
-      }
-    }
-  }
-};
-
-prompt.start();
-
-prompt.get(schema, function (err, result) {
-  console.log('Command-line input received:');
-  console.log('  url: ' + result.url);
-  console.log('  auth:username: ' + result.auth.username);
-  console.log('  auth:password: ' + result.auth.password);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/old-schema.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/old-schema.js b/blackberry10/node_modules/prompt/examples/old-schema.js
deleted file mode 100644
index 631b7b5..0000000
--- a/blackberry10/node_modules/prompt/examples/old-schema.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * simple-prompt.js: Simple example of using prompt.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-//
-// Start the prompt
-//
-prompt.start();
-
-//
-// Get two properties from the user: username and email
-//
-prompt.get([
-  {
-    name: 'username',
-    validator: /^[a-z]+$/,
-    warning: 'Username should consist only lowercase alphabets',
-    empty: false
-  },
-  {
-    name: 'email',
-    message: 'Email Address'
-  }
-], function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  username: ' + result.username);
-  console.log('  email: ' + result.email);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/override-validation.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/override-validation.js b/blackberry10/node_modules/prompt/examples/override-validation.js
deleted file mode 100644
index 8b02373..0000000
--- a/blackberry10/node_modules/prompt/examples/override-validation.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * override-validation.js: Example of using prompt with complex properties and command-line input.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt'),
-    optimist = require('optimist');
-
-var schema = {
-  properties: {
-    name: {
-      pattern: /^[a-zA-Z\s-]+$/,
-      message: 'Name must be only letters, spaces, or dashes',
-      required: true
-    },
-    email: {
-      name: 'email',
-      format: 'email',
-      message: 'Must be a valid email address'
-    }
-  }
-};
-
-//
-// Set the overrides
-//
-prompt.override = optimist.argv
-
-//
-// Start the prompt
-//
-prompt.start();
-
-//
-// Get two properties from the user: email, password
-//
-prompt.get(schema, function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  name: ' + result.name);
-  console.log('  email: ' + result.email);
-});
-
-// try running
-// $ node ./override-validation.js --name USER --email EMAIL
-// You will only be asked for email becasue it's invalid
-// $ node ./override-validation.js --name h$acker --email me@example.com
-// You will only be asked for email becasue it's invalid
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/password.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/password.js b/blackberry10/node_modules/prompt/examples/password.js
deleted file mode 100644
index 72fc02d..0000000
--- a/blackberry10/node_modules/prompt/examples/password.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * password.js: Simple example of using prompt.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-//
-// Start the prompt
-//
-prompt.start();
-
-//
-// Get two properties from the user: username and password
-//
-prompt.get([{
-    name: 'username',
-    required: true
-  }, {
-    name: 'password',
-    hidden: true,
-    conform: function (value) {
-      return true;
-    }
-  }], function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  username: ' + result.username);
-  console.log('  password: ' + result.password);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/prompt-override.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/prompt-override.js b/blackberry10/node_modules/prompt/examples/prompt-override.js
deleted file mode 100644
index 7f2848b..0000000
--- a/blackberry10/node_modules/prompt/examples/prompt-override.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var prompt = require('../lib/prompt'),
-    optimist;
-
-try {
-  optimist = require('optimist');
-} catch (err) {
-  throw new Error([
-    'You need to install optimist before this example will work!',
-    'Try: `npm install optimist`.'
-  ].join('\n'));
-}
-
-//
-// Set the overrides
-//
-prompt.override = optimist.argv
-
-//
-// Start the prompt
-//
-prompt.start();
-
-//
-// Get two properties from the user: username and email
-//
-prompt.get(['username', 'email'], function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  username: ' + result.username);
-  console.log('  email: ' + result.email);
-  prompt.pause();
-})
-
-// $ node ./prompt-override.js --username USER --email EMAIL

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/property-prompt.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/property-prompt.js b/blackberry10/node_modules/prompt/examples/property-prompt.js
deleted file mode 100644
index c8b343b..0000000
--- a/blackberry10/node_modules/prompt/examples/property-prompt.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * property-prompt.js: Example of using prompt with complex properties.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-var schema = {
-  properties: {
-    name: {
-      pattern: /^[a-zA-Z\s-]+$/,
-      message: 'Name must be only letters, spaces, or dashes',
-      required: true
-    },
-    email: {
-      name: 'email',
-      format: 'email',
-      message: 'Must be a valid email address'
-    },
-    password: {
-      required: true,
-      hidden: true
-    }
-  }
-};
-
-//
-// Start the prompt
-//
-prompt.start();
-
-//
-// Get two properties from the user: email, password
-//
-prompt.get(schema, function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  name: ' + result.name);
-  console.log('  email: ' + result.email);
-  console.log('  password: ' + result.password);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/simple-prompt.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/simple-prompt.js b/blackberry10/node_modules/prompt/examples/simple-prompt.js
deleted file mode 100644
index 062e529..0000000
--- a/blackberry10/node_modules/prompt/examples/simple-prompt.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * simple-prompt.js: Simple example of using prompt.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-//
-// Start the prompt
-//
-prompt.start();
-
-//
-// Get two properties from the user: username and email
-//
-prompt.get(['username', 'email'], function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  username: ' + result.username);
-  console.log('  email: ' + result.email);
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/examples/yes-or-no-prompt.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/examples/yes-or-no-prompt.js b/blackberry10/node_modules/prompt/examples/yes-or-no-prompt.js
deleted file mode 100644
index 512b556..0000000
--- a/blackberry10/node_modules/prompt/examples/yes-or-no-prompt.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * yes-or-no-prompt.js: Simple example of using prompt.
- *
- * (C) 2012, Nodejitsu Inc.
- *
- */
-
-var prompt = require('../lib/prompt');
-
-//
-// Start the prompt
-//
-prompt.start();
-
-var property = {
-  name: 'yesno',
-  message: 'are you sure?',
-  validator: /y[es]*|n[o]?/,
-  warning: 'Must respond yes or no',
-  default: 'no'
-};
-
-//
-// Get the simple yes or no property
-//
-prompt.get(property, function (err, result) {
-  //
-  // Log the results.
-  //
-  console.log('Command-line input received:');
-  console.log('  result: ' + result.yesno);
-});
\ No newline at end of file


[51/51] [partial] webworks commit: CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
CB-7087 Retire blackberry10/ directory


Project: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/commit/a6733a83
Tree: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/tree/a6733a83
Diff: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/diff/a6733a83

Branch: refs/heads/master
Commit: a6733a833201b76f870f4c36476b98a4875af956
Parents: d8c9241
Author: Josh Soref <js...@blackberry.com>
Authored: Mon Jul 7 16:07:11 2014 -0400
Committer: Josh Soref <js...@blackberry.com>
Committed: Mon Jul 7 17:39:15 2014 -0400

----------------------------------------------------------------------
 .jshintignore                                   |    6 +
 .jshintrc                                       |   73 +
 .npmignore                                      |    2 +
 CONTRIBUTING.md                                 |   37 +
 Gruntfile.js                                    |   41 +
 LICENSE                                         |  268 +
 NOTICE                                          |    8 +
 README.md                                       |  173 +-
 RELEASENOTES.md                                 |   59 +
 VERSION                                         |    1 +
 bin/check_reqs                                  |   23 +
 bin/check_reqs.bat                              |   23 +
 bin/create                                      |   33 +
 bin/create.bat                                  |   26 +
 bin/init                                        |   87 +
 bin/init.bat                                    |  127 +
 bin/lib/config.js                               |   50 +
 bin/lib/create.js                               |  205 +
 bin/lib/target.js                               |  154 +
 bin/lib/update.js                               |   88 +
 bin/target                                      |   22 +
 bin/target.bat                                  |   23 +
 bin/templates/project/cordova/bb10-ndk-version  |   25 +
 .../project/cordova/bb10-ndk-version.bat        |   21 +
 bin/templates/project/cordova/build             |   25 +
 bin/templates/project/cordova/build.bat         |   23 +
 bin/templates/project/cordova/clean             |   23 +
 bin/templates/project/cordova/clean.bat         |   23 +
 bin/templates/project/cordova/default-icon.png  |  Bin 0 -> 7287 bytes
 bin/templates/project/cordova/defaults.xml      |   29 +
 bin/templates/project/cordova/install-device    |   23 +
 .../project/cordova/install-device.bat          |   23 +
 bin/templates/project/cordova/install-emulator  |   23 +
 .../project/cordova/install-emulator.bat        |   23 +
 .../project/cordova/lib/bar-builder.js          |  103 +
 bin/templates/project/cordova/lib/bar-conf.js   |   27 +
 .../project/cordova/lib/bb10-ndk-version.js     |   29 +
 bin/templates/project/cordova/lib/bbwpignore.js |  129 +
 bin/templates/project/cordova/lib/build.js      |  129 +
 bin/templates/project/cordova/lib/clean.js      |   23 +
 bin/templates/project/cordova/lib/cmdline.js    |   67 +
 bin/templates/project/cordova/lib/conf.js       |   48 +
 .../project/cordova/lib/config-parser.js        |  696 ++
 .../project/cordova/lib/debugtoken-helper.js    |  202 +
 .../project/cordova/lib/file-manager.js         |  210 +
 .../project/cordova/lib/i18n-manager.js         |  146 +
 .../project/cordova/lib/install-device          |   56 +
 .../project/cordova/lib/install-emulator        |   56 +
 bin/templates/project/cordova/lib/list-devices  |   23 +
 .../project/cordova/lib/list-devices.bat        |   22 +
 .../project/cordova/lib/list-devices.js         |   20 +
 .../project/cordova/lib/list-emulator-images    |   23 +
 .../cordova/lib/list-emulator-images.bat        |   22 +
 .../project/cordova/lib/list-emulator-images.js |   19 +
 .../project/cordova/lib/list-started-emulators  |   23 +
 .../cordova/lib/list-started-emulators.bat      |   22 +
 .../cordova/lib/list-started-emulators.js       |   18 +
 bin/templates/project/cordova/lib/localize.js   |  204 +
 bin/templates/project/cordova/lib/log           |   24 +
 bin/templates/project/cordova/lib/log.bat       |   21 +
 bin/templates/project/cordova/lib/logger.js     |   40 +
 .../project/cordova/lib/native-packager.js      |  293 +
 .../project/cordova/lib/packager-utils.js       |  198 +
 .../project/cordova/lib/packager-validator.js   |  108 +
 bin/templates/project/cordova/lib/packager.js   |   77 +
 bin/templates/project/cordova/lib/params.js     |   56 +
 bin/templates/project/cordova/lib/run-utils.js  |  298 +
 bin/templates/project/cordova/lib/run.js        |   78 +
 bin/templates/project/cordova/lib/session.js    |  125 +
 .../project/cordova/lib/signing-helper.js       |   89 +
 .../project/cordova/lib/signing-utils.js        |   79 +
 .../project/cordova/lib/start-emulator          |   55 +
 .../project/cordova/lib/start-emulator.bat      |   22 +
 .../project/cordova/lib/target-utils.js         |  282 +
 bin/templates/project/cordova/lib/utils.js      |  385 +
 bin/templates/project/cordova/lib/version.js    |   48 +
 .../project/cordova/lib/xml-helpers.js          |  176 +
 bin/templates/project/cordova/run               |   23 +
 bin/templates/project/cordova/run.bat           |   23 +
 .../cordova/third_party/data2xml/data2xml.js    |   86 +
 bin/templates/project/cordova/version           |   25 +
 bin/templates/project/cordova/version.bat       |   23 +
 .../native/device/plugins/jnext/auth.txt        |    3 +
 bin/templates/project/native/device/wwe         |    2 +
 .../native/simulator/plugins/jnext/auth.txt     |    3 +
 bin/templates/project/native/simulator/wwe      |    2 +
 bin/templates/project/www/config.xml            |   51 +
 bin/templates/project/www/css/index.css         |  115 +
 bin/templates/project/www/img/logo.png          |  Bin 0 -> 21814 bytes
 bin/templates/project/www/index.html            |   43 +
 bin/templates/project/www/js/index.js           |   49 +
 .../www/res/icon/blackberry10/icon-80.png       |  Bin 0 -> 7287 bytes
 .../res/screen/blackberry10/splash-1280x768.png |  Bin 0 -> 60771 bytes
 .../res/screen/blackberry10/splash-720x720.png  |  Bin 0 -> 50431 bytes
 .../res/screen/blackberry10/splash-768x1280.png |  Bin 0 -> 57145 bytes
 bin/templates/project/www/spec.html             |   68 +
 bin/templates/project/www/spec/helper.js        |   33 +
 bin/templates/project/www/spec/index.js         |   67 +
 .../www/spec/lib/jasmine-1.2.0/MIT.LICENSE      |   20 +
 .../www/spec/lib/jasmine-1.2.0/jasmine-html.js  |  616 ++
 .../www/spec/lib/jasmine-1.2.0/jasmine.css      |   81 +
 .../www/spec/lib/jasmine-1.2.0/jasmine.js       | 2529 ++++++
 bin/test/cordova/integration/create.js          |  102 +
 bin/test/cordova/integration/target.js          |  123 +
 bin/test/cordova/unit/config-bare-minimum.xml   |   21 +
 bin/test/cordova/unit/config-license.xml        |   10 +
 bin/test/cordova/unit/config.xml                |   53 +
 bin/test/cordova/unit/configUri.xml             |   53 +
 bin/test/cordova/unit/configUriOrigin.xml       |   57 +
 bin/test/cordova/unit/data/ascii_text.txt       |    1 +
 bin/test/cordova/unit/data/ucs2be_text.txt      |  Bin 0 -> 24 bytes
 bin/test/cordova/unit/data/ucs2le_text.txt      |  Bin 0 -> 24 bytes
 bin/test/cordova/unit/data/utf8_text.txt        |    1 +
 bin/test/cordova/unit/params-bad.json           |   10 +
 bin/test/cordova/unit/params.json               |    9 +
 bin/test/cordova/unit/spec/lib/bar-builder.js   |   55 +
 bin/test/cordova/unit/spec/lib/bbwpignore.js    |  135 +
 bin/test/cordova/unit/spec/lib/cmdline.js       |   98 +
 bin/test/cordova/unit/spec/lib/config-parser.js | 1448 ++++
 bin/test/cordova/unit/spec/lib/file-manager.js  |   88 +
 bin/test/cordova/unit/spec/lib/i18n-manager.js  |  307 +
 bin/test/cordova/unit/spec/lib/logger.js        |  104 +
 .../cordova/unit/spec/lib/native-packager.js    |  357 +
 .../cordova/unit/spec/lib/packager-utils.js     |   86 +
 .../cordova/unit/spec/lib/packager-validator.js |  281 +
 bin/test/cordova/unit/spec/lib/session.js       |  228 +
 .../cordova/unit/spec/lib/signing-helper.js     |   98 +
 bin/test/cordova/unit/spec/lib/signing-utils.js |  403 +
 bin/test/cordova/unit/spec/lib/test-data.js     |   87 +
 .../cordova/unit/spec/lib/test-utilities.js     |  108 +
 bin/test/cordova/unit/test.zip                  |  Bin 0 -> 4984 bytes
 bin/update                                      |   28 +
 bin/update.bat                                  |   21 +
 bin/whereis.cmd                                 |   19 +
 blackberry10/.gitignore                         |   21 -
 blackberry10/.jshintignore                      |    6 -
 blackberry10/.jshintrc                          |   73 -
 blackberry10/.npmignore                         |    2 -
 blackberry10/CONTRIBUTING.md                    |   37 -
 blackberry10/Gruntfile.js                       |   41 -
 blackberry10/LICENSE                            |  268 -
 blackberry10/NOTICE                             |    8 -
 blackberry10/README.md                          |  156 -
 blackberry10/RELEASENOTES.md                    |   59 -
 blackberry10/VERSION                            |    1 -
 blackberry10/bin/check_reqs                     |   23 -
 blackberry10/bin/check_reqs.bat                 |   23 -
 blackberry10/bin/create                         |   33 -
 blackberry10/bin/create.bat                     |   26 -
 blackberry10/bin/init                           |   87 -
 blackberry10/bin/init.bat                       |  127 -
 blackberry10/bin/lib/config.js                  |   50 -
 blackberry10/bin/lib/create.js                  |  205 -
 blackberry10/bin/lib/target.js                  |  154 -
 blackberry10/bin/lib/update.js                  |   88 -
 blackberry10/bin/target                         |   22 -
 blackberry10/bin/target.bat                     |   23 -
 .../templates/project/cordova/bb10-ndk-version  |   25 -
 .../project/cordova/bb10-ndk-version.bat        |   21 -
 .../bin/templates/project/cordova/build         |   25 -
 .../bin/templates/project/cordova/build.bat     |   23 -
 .../bin/templates/project/cordova/clean         |   23 -
 .../bin/templates/project/cordova/clean.bat     |   23 -
 .../templates/project/cordova/default-icon.png  |  Bin 7287 -> 0 bytes
 .../bin/templates/project/cordova/defaults.xml  |   29 -
 .../templates/project/cordova/install-device    |   23 -
 .../project/cordova/install-device.bat          |   23 -
 .../templates/project/cordova/install-emulator  |   23 -
 .../project/cordova/install-emulator.bat        |   23 -
 .../project/cordova/lib/bar-builder.js          |  103 -
 .../templates/project/cordova/lib/bar-conf.js   |   27 -
 .../project/cordova/lib/bb10-ndk-version.js     |   29 -
 .../templates/project/cordova/lib/bbwpignore.js |  129 -
 .../bin/templates/project/cordova/lib/build.js  |  129 -
 .../bin/templates/project/cordova/lib/clean.js  |   23 -
 .../templates/project/cordova/lib/cmdline.js    |   67 -
 .../bin/templates/project/cordova/lib/conf.js   |   48 -
 .../project/cordova/lib/config-parser.js        |  696 --
 .../project/cordova/lib/debugtoken-helper.js    |  202 -
 .../project/cordova/lib/file-manager.js         |  210 -
 .../project/cordova/lib/i18n-manager.js         |  146 -
 .../project/cordova/lib/install-device          |   56 -
 .../project/cordova/lib/install-emulator        |   56 -
 .../templates/project/cordova/lib/list-devices  |   23 -
 .../project/cordova/lib/list-devices.bat        |   22 -
 .../project/cordova/lib/list-devices.js         |   20 -
 .../project/cordova/lib/list-emulator-images    |   23 -
 .../cordova/lib/list-emulator-images.bat        |   22 -
 .../project/cordova/lib/list-emulator-images.js |   19 -
 .../project/cordova/lib/list-started-emulators  |   23 -
 .../cordova/lib/list-started-emulators.bat      |   22 -
 .../cordova/lib/list-started-emulators.js       |   18 -
 .../templates/project/cordova/lib/localize.js   |  204 -
 .../bin/templates/project/cordova/lib/log       |   24 -
 .../bin/templates/project/cordova/lib/log.bat   |   21 -
 .../bin/templates/project/cordova/lib/logger.js |   40 -
 .../project/cordova/lib/native-packager.js      |  293 -
 .../project/cordova/lib/packager-utils.js       |  198 -
 .../project/cordova/lib/packager-validator.js   |  108 -
 .../templates/project/cordova/lib/packager.js   |   77 -
 .../bin/templates/project/cordova/lib/params.js |   56 -
 .../templates/project/cordova/lib/run-utils.js  |  298 -
 .../bin/templates/project/cordova/lib/run.js    |   78 -
 .../templates/project/cordova/lib/session.js    |  125 -
 .../project/cordova/lib/signing-helper.js       |   89 -
 .../project/cordova/lib/signing-utils.js        |   79 -
 .../project/cordova/lib/start-emulator          |   55 -
 .../project/cordova/lib/start-emulator.bat      |   22 -
 .../project/cordova/lib/target-utils.js         |  282 -
 .../bin/templates/project/cordova/lib/utils.js  |  385 -
 .../templates/project/cordova/lib/version.js    |   48 -
 .../project/cordova/lib/xml-helpers.js          |  176 -
 blackberry10/bin/templates/project/cordova/run  |   23 -
 .../bin/templates/project/cordova/run.bat       |   23 -
 .../cordova/third_party/data2xml/data2xml.js    |   86 -
 .../bin/templates/project/cordova/version       |   25 -
 .../bin/templates/project/cordova/version.bat   |   23 -
 .../native/device/plugins/jnext/auth.txt        |    3 -
 .../bin/templates/project/native/device/wwe     |    2 -
 .../native/simulator/plugins/jnext/auth.txt     |    3 -
 .../bin/templates/project/native/simulator/wwe  |    2 -
 .../bin/templates/project/www/config.xml        |   51 -
 .../bin/templates/project/www/css/index.css     |  115 -
 .../bin/templates/project/www/img/logo.png      |  Bin 21814 -> 0 bytes
 .../bin/templates/project/www/index.html        |   43 -
 .../bin/templates/project/www/js/index.js       |   49 -
 .../www/res/icon/blackberry10/icon-80.png       |  Bin 7287 -> 0 bytes
 .../res/screen/blackberry10/splash-1280x768.png |  Bin 60771 -> 0 bytes
 .../res/screen/blackberry10/splash-720x720.png  |  Bin 50431 -> 0 bytes
 .../res/screen/blackberry10/splash-768x1280.png |  Bin 57145 -> 0 bytes
 .../bin/templates/project/www/spec.html         |   68 -
 .../bin/templates/project/www/spec/helper.js    |   33 -
 .../bin/templates/project/www/spec/index.js     |   67 -
 .../www/spec/lib/jasmine-1.2.0/MIT.LICENSE      |   20 -
 .../www/spec/lib/jasmine-1.2.0/jasmine-html.js  |  616 --
 .../www/spec/lib/jasmine-1.2.0/jasmine.css      |   81 -
 .../www/spec/lib/jasmine-1.2.0/jasmine.js       | 2529 ------
 .../bin/test/cordova/integration/create.js      |  102 -
 .../bin/test/cordova/integration/target.js      |  123 -
 .../test/cordova/unit/config-bare-minimum.xml   |   21 -
 .../bin/test/cordova/unit/config-license.xml    |   10 -
 blackberry10/bin/test/cordova/unit/config.xml   |   53 -
 .../bin/test/cordova/unit/configUri.xml         |   53 -
 .../bin/test/cordova/unit/configUriOrigin.xml   |   57 -
 .../bin/test/cordova/unit/data/ascii_text.txt   |    1 -
 .../bin/test/cordova/unit/data/ucs2be_text.txt  |  Bin 24 -> 0 bytes
 .../bin/test/cordova/unit/data/ucs2le_text.txt  |  Bin 24 -> 0 bytes
 .../bin/test/cordova/unit/data/utf8_text.txt    |    1 -
 .../bin/test/cordova/unit/params-bad.json       |   10 -
 blackberry10/bin/test/cordova/unit/params.json  |    9 -
 .../test/cordova/unit/spec/lib/bar-builder.js   |   55 -
 .../test/cordova/unit/spec/lib/bbwpignore.js    |  135 -
 .../bin/test/cordova/unit/spec/lib/cmdline.js   |   98 -
 .../test/cordova/unit/spec/lib/config-parser.js | 1448 ----
 .../test/cordova/unit/spec/lib/file-manager.js  |   88 -
 .../test/cordova/unit/spec/lib/i18n-manager.js  |  307 -
 .../bin/test/cordova/unit/spec/lib/logger.js    |  104 -
 .../cordova/unit/spec/lib/native-packager.js    |  357 -
 .../cordova/unit/spec/lib/packager-utils.js     |   86 -
 .../cordova/unit/spec/lib/packager-validator.js |  281 -
 .../bin/test/cordova/unit/spec/lib/session.js   |  228 -
 .../cordova/unit/spec/lib/signing-helper.js     |   98 -
 .../test/cordova/unit/spec/lib/signing-utils.js |  403 -
 .../bin/test/cordova/unit/spec/lib/test-data.js |   87 -
 .../cordova/unit/spec/lib/test-utilities.js     |  108 -
 blackberry10/bin/test/cordova/unit/test.zip     |  Bin 4984 -> 0 bytes
 blackberry10/bin/update                         |   28 -
 blackberry10/bin/update.bat                     |   21 -
 blackberry10/bin/whereis.cmd                    |   19 -
 blackberry10/framework/bootstrap/index.html     |   42 -
 blackberry10/framework/bootstrap/require.js     |  251 -
 blackberry10/framework/bootstrap/ui.html        |   72 -
 blackberry10/framework/lib/PluginResult.js      |   55 -
 blackberry10/framework/lib/config.js            |   22 -
 blackberry10/framework/lib/config/default.js    |   84 -
 blackberry10/framework/lib/config/user.js       |   54 -
 blackberry10/framework/lib/controllerWebView.js |   72 -
 blackberry10/framework/lib/event.js             |   84 -
 .../framework/lib/events/applicationEvents.js   |   39 -
 .../framework/lib/events/deviceEvents.js        |   39 -
 blackberry10/framework/lib/exception.js         |   69 -
 blackberry10/framework/lib/framework.js         |  179 -
 blackberry10/framework/lib/jnext.js             |  185 -
 blackberry10/framework/lib/overlayWebView.js    |  143 -
 blackberry10/framework/lib/plugins/default.js   |   71 -
 blackberry10/framework/lib/plugins/event.js     |   47 -
 .../framework/lib/policy/folderAccess.js        |  180 -
 .../framework/lib/policy/webkitOriginAccess.js  |  123 -
 blackberry10/framework/lib/policy/whitelist.js  |  322 -
 blackberry10/framework/lib/server.js            |  118 -
 blackberry10/framework/lib/utils.js             |  549 --
 blackberry10/framework/lib/webkitEvent.js       |   87 -
 .../webkitHandlers/networkResourceRequested.js  |  126 -
 blackberry10/framework/lib/webview.js           |  271 -
 blackberry10/framework/test/unit/lib/config.js  |   30 -
 .../test/unit/lib/controllerWebView.js          |  107 -
 blackberry10/framework/test/unit/lib/event.js   |  139 -
 .../test/unit/lib/events/applicationEvents.js   |   87 -
 .../test/unit/lib/events/deviceEvents.js        |   82 -
 .../framework/test/unit/lib/framework.js        |  434 -
 .../framework/test/unit/lib/overlayWebView.js   |  187 -
 .../framework/test/unit/lib/plugins/default.js  |  154 -
 .../framework/test/unit/lib/plugins/event.js    |   78 -
 .../test/unit/lib/policy/webkitOriginAccess.js  |  194 -
 .../framework/test/unit/lib/policy/whitelist.js |  873 --
 blackberry10/framework/test/unit/lib/server.js  |  295 -
 blackberry10/framework/test/unit/lib/utils.js   |  280 -
 .../webkitHandlers/networkResourceRequested.js  |  188 -
 blackberry10/framework/test/unit/lib/webview.js |  357 -
 blackberry10/javascript/cordova.blackberry10.js | 1636 ----
 blackberry10/node_modules/.bin/shjs             |    1 -
 blackberry10/node_modules/.bin/xlocalize        |    1 -
 blackberry10/node_modules/async/LICENSE         |   19 -
 blackberry10/node_modules/async/README.md       | 1414 ----
 blackberry10/node_modules/async/component.json  |   11 -
 blackberry10/node_modules/async/lib/async.js    |  955 ---
 blackberry10/node_modules/async/package.json    |   46 -
 blackberry10/node_modules/commander/.npmignore  |    4 -
 blackberry10/node_modules/commander/.travis.yml |    4 -
 blackberry10/node_modules/commander/History.md  |  107 -
 blackberry10/node_modules/commander/Makefile    |    7 -
 blackberry10/node_modules/commander/Readme.md   |  262 -
 blackberry10/node_modules/commander/index.js    |    2 -
 .../node_modules/commander/lib/commander.js     | 1026 ---
 .../node_modules/commander/package.json         |   38 -
 .../node_modules/elementtree/.npmignore         |    1 -
 .../node_modules/elementtree/.travis.yml        |   10 -
 .../node_modules/elementtree/CHANGES.md         |   34 -
 .../node_modules/elementtree/LICENSE.txt        |  203 -
 blackberry10/node_modules/elementtree/Makefile  |   21 -
 blackberry10/node_modules/elementtree/NOTICE    |    5 -
 blackberry10/node_modules/elementtree/README.md |   27 -
 .../node_modules/elementtree/lib/constants.js   |   20 -
 .../node_modules/elementtree/lib/elementpath.js |  343 -
 .../node_modules/elementtree/lib/elementtree.js |  598 --
 .../node_modules/elementtree/lib/errors.js      |   31 -
 .../node_modules/elementtree/lib/parser.js      |   33 -
 .../elementtree/lib/parsers/index.js            |    1 -
 .../node_modules/elementtree/lib/parsers/sax.js |   56 -
 .../node_modules/elementtree/lib/sprintf.js     |   86 -
 .../node_modules/elementtree/lib/treebuilder.js |   60 -
 .../node_modules/elementtree/lib/utils.js       |   72 -
 .../elementtree/node_modules/sax/AUTHORS        |    9 -
 .../elementtree/node_modules/sax/LICENSE        |   23 -
 .../elementtree/node_modules/sax/README.md      |  213 -
 .../sax/examples/big-not-pretty.xml             | 8002 ------------------
 .../node_modules/sax/examples/example.js        |   41 -
 .../node_modules/sax/examples/get-products.js   |   58 -
 .../node_modules/sax/examples/hello-world.js    |    4 -
 .../node_modules/sax/examples/not-pretty.xml    |    8 -
 .../node_modules/sax/examples/pretty-print.js   |   74 -
 .../node_modules/sax/examples/shopping.xml      |    2 -
 .../node_modules/sax/examples/strict.dtd        |  870 --
 .../node_modules/sax/examples/switch-bench.js   |   45 -
 .../node_modules/sax/examples/test.html         |   15 -
 .../node_modules/sax/examples/test.xml          | 1254 ---
 .../elementtree/node_modules/sax/lib/sax.js     | 1006 ---
 .../elementtree/node_modules/sax/package.json   |   63 -
 .../node_modules/sax/test/buffer-overrun.js     |   25 -
 .../node_modules/sax/test/cdata-chunked.js      |   11 -
 .../node_modules/sax/test/cdata-end-split.js    |   15 -
 .../node_modules/sax/test/cdata-fake-end.js     |   28 -
 .../node_modules/sax/test/cdata-multiple.js     |   15 -
 .../elementtree/node_modules/sax/test/cdata.js  |   10 -
 .../elementtree/node_modules/sax/test/index.js  |   86 -
 .../node_modules/sax/test/issue-23.js           |   43 -
 .../node_modules/sax/test/issue-30.js           |   24 -
 .../node_modules/sax/test/issue-35.js           |   15 -
 .../node_modules/sax/test/issue-47.js           |   13 -
 .../node_modules/sax/test/issue-49.js           |   31 -
 .../node_modules/sax/test/parser-position.js    |   28 -
 .../elementtree/node_modules/sax/test/script.js |   12 -
 .../sax/test/self-closing-child-strict.js       |   40 -
 .../node_modules/sax/test/self-closing-child.js |   40 -
 .../node_modules/sax/test/self-closing-tag.js   |   25 -
 .../node_modules/sax/test/stray-ending.js       |   17 -
 .../sax/test/trailing-non-whitespace.js         |   17 -
 .../node_modules/sax/test/unquoted.js           |   17 -
 .../node_modules/sax/test/xmlns-issue-41.js     |   67 -
 .../node_modules/sax/test/xmlns-rebinding.js    |   59 -
 .../node_modules/sax/test/xmlns-strict.js       |   71 -
 .../node_modules/sax/test/xmlns-unbound.js      |   15 -
 .../test/xmlns-xml-default-prefix-attribute.js  |   35 -
 .../sax/test/xmlns-xml-default-prefix.js        |   20 -
 .../sax/test/xmlns-xml-default-redefine.js      |   40 -
 .../node_modules/elementtree/package.json       |   59 -
 .../elementtree/tests/data/xml1.xml             |   17 -
 .../elementtree/tests/data/xml2.xml             |   14 -
 .../elementtree/tests/test-simple.js            |  299 -
 blackberry10/node_modules/exit/.jshintrc        |   14 -
 blackberry10/node_modules/exit/.npmignore       |    0
 blackberry10/node_modules/exit/.travis.yml      |    6 -
 blackberry10/node_modules/exit/Gruntfile.js     |   48 -
 blackberry10/node_modules/exit/LICENSE-MIT      |   22 -
 blackberry10/node_modules/exit/README.md        |   74 -
 blackberry10/node_modules/exit/lib/exit.js      |   41 -
 blackberry10/node_modules/exit/package.json     |   51 -
 .../node_modules/exit/test/exit_test.js         |  121 -
 .../exit/test/fixtures/10-stderr.txt            |   10 -
 .../exit/test/fixtures/10-stdout-stderr.txt     |   20 -
 .../exit/test/fixtures/10-stdout.txt            |   10 -
 .../exit/test/fixtures/100-stderr.txt           |  100 -
 .../exit/test/fixtures/100-stdout-stderr.txt    |  200 -
 .../exit/test/fixtures/100-stdout.txt           |  100 -
 .../exit/test/fixtures/1000-stderr.txt          | 1000 ---
 .../exit/test/fixtures/1000-stdout-stderr.txt   | 2000 -----
 .../exit/test/fixtures/1000-stdout.txt          | 1000 ---
 .../exit/test/fixtures/create-files.sh          |    8 -
 .../exit/test/fixtures/log-broken.js            |   23 -
 .../node_modules/exit/test/fixtures/log.js      |   25 -
 blackberry10/node_modules/jWorkflow/.npmignore  |    1 -
 blackberry10/node_modules/jWorkflow/LICENSE     |    9 -
 blackberry10/node_modules/jWorkflow/README.md   |  170 -
 blackberry10/node_modules/jWorkflow/Rakefile    |   12 -
 .../jWorkflow/jworkflow-min-0.8.0.js            |    3 -
 .../node_modules/jWorkflow/lib/jWorkflow.js     |  140 -
 .../node_modules/jWorkflow/package.json         |   27 -
 .../node_modules/jWorkflow/test/test.html       |   17 -
 .../jWorkflow/test/test_jworkflow.js            |  521 --
 .../jWorkflow/test/vendor/jquery.js             |   19 -
 .../jWorkflow/test/vendor/qunit.css             |   17 -
 .../node_modules/jWorkflow/test/vendor/qunit.js |  997 ---
 blackberry10/node_modules/localize/README.md    |  267 -
 .../node_modules/localize/bin/translations.json |    6 -
 .../node_modules/localize/bin/xlocalize.js      |  139 -
 .../node_modules/localize/lib/localize.js       |  405 -
 blackberry10/node_modules/localize/package.json |   38 -
 .../node_modules/localize/test/localize.test.js |  179 -
 .../translations/subsitution/translations.json  |    8 -
 .../test/translations/translations.json         |    5 -
 .../translations/translations/helloWorld.es.txt |    1 -
 .../translations/translations/helloWorld.txt    |    1 -
 .../localize/test/xlocalize.test.sh             |   37 -
 .../localize/test/xlocalize.testfile1.json      |    8 -
 .../localize/test/xlocalize.testfile2.json      |    8 -
 .../localize/test/xlocalize.testfile3.json      |    9 -
 .../localize/test/xlocalize.testfile4.json      |    9 -
 .../localize/test/xlocalize/subdir/test2.js     |    3 -
 .../localize/test/xlocalize/test.html           |   13 -
 blackberry10/node_modules/prompt/.jshintrc      |   54 -
 blackberry10/node_modules/prompt/.npmignore     |    3 -
 blackberry10/node_modules/prompt/.travis.yml    |    9 -
 blackberry10/node_modules/prompt/CHANGELOG.md   |   13 -
 blackberry10/node_modules/prompt/LICENSE        |   19 -
 blackberry10/node_modules/prompt/README.md      |  293 -
 blackberry10/node_modules/prompt/docs/docco.css |  194 -
 .../node_modules/prompt/docs/prompt.html        |  296 -
 .../prompt/examples/add-properties.js           |   35 -
 .../prompt/examples/existing-properties.js      |   35 -
 .../node_modules/prompt/examples/history.js     |   44 -
 .../prompt/examples/nested-properties-prompt.js |   37 -
 .../node_modules/prompt/examples/old-schema.js  |   36 -
 .../prompt/examples/override-validation.js      |   52 -
 .../node_modules/prompt/examples/password.js    |   34 -
 .../prompt/examples/prompt-override.js          |   36 -
 .../prompt/examples/property-prompt.js          |   45 -
 .../prompt/examples/simple-prompt.js            |   25 -
 .../prompt/examples/yes-or-no-prompt.js         |   32 -
 blackberry10/node_modules/prompt/lib/prompt.js  |  756 --
 .../prompt/node_modules/pkginfo/.npmignore      |    2 -
 .../prompt/node_modules/pkginfo/LICENSE         |   19 -
 .../prompt/node_modules/pkginfo/README.md       |   86 -
 .../prompt/node_modules/pkginfo/docs/docco.css  |  194 -
 .../node_modules/pkginfo/docs/pkginfo.html      |  101 -
 .../pkginfo/examples/all-properties.js          |   19 -
 .../pkginfo/examples/array-argument.js          |   20 -
 .../pkginfo/examples/multiple-properties.js     |   19 -
 .../pkginfo/examples/object-argument.js         |   22 -
 .../node_modules/pkginfo/examples/package.json  |   10 -
 .../pkginfo/examples/single-property.js         |   19 -
 .../pkginfo/examples/subdir/package.json        |   11 -
 .../node_modules/pkginfo/examples/target-dir.js |   20 -
 .../prompt/node_modules/pkginfo/lib/pkginfo.js  |  136 -
 .../prompt/node_modules/pkginfo/package.json    |   35 -
 .../node_modules/pkginfo/test/pkginfo-test.js   |   83 -
 .../prompt/node_modules/read/.npmignore         |    2 -
 .../prompt/node_modules/read/LICENCE            |   25 -
 .../prompt/node_modules/read/README.md          |   53 -
 .../prompt/node_modules/read/lib/read.js        |  113 -
 .../read/node_modules/mute-stream/LICENSE       |   27 -
 .../read/node_modules/mute-stream/README.md     |   68 -
 .../read/node_modules/mute-stream/mute.js       |  140 -
 .../read/node_modules/mute-stream/package.json  |   37 -
 .../read/node_modules/mute-stream/test/basic.js |  207 -
 .../prompt/node_modules/read/package.json       |   35 -
 .../node_modules/prompt/node_modules/read/rs.js |    4 -
 .../prompt/node_modules/read/test/basic.js      |   60 -
 .../prompt/node_modules/read/test/defaults.js   |   60 -
 .../prompt/node_modules/read/test/many.js       |   83 -
 .../prompt/node_modules/revalidator/.npmignore  |    2 -
 .../prompt/node_modules/revalidator/.travis.yml |   11 -
 .../node_modules/revalidator/CHANGELOG.md       |   25 -
 .../prompt/node_modules/revalidator/LICENSE     |  179 -
 .../prompt/node_modules/revalidator/README.md   |  287 -
 .../node_modules/revalidator/lib/revalidator.js |  422 -
 .../node_modules/revalidator/package.json       |   40 -
 .../revalidator/test/validator-test.js          |  404 -
 .../prompt/node_modules/utile/.npmignore        |    4 -
 .../prompt/node_modules/utile/.travis.yml       |   10 -
 .../prompt/node_modules/utile/CHANGELOG.md      |   16 -
 .../prompt/node_modules/utile/LICENSE           |   19 -
 .../prompt/node_modules/utile/README.md         |   87 -
 .../prompt/node_modules/utile/lib/args.js       |   46 -
 .../prompt/node_modules/utile/lib/base64.js     |   44 -
 .../prompt/node_modules/utile/lib/file.js       |   33 -
 .../prompt/node_modules/utile/lib/format.js     |   25 -
 .../prompt/node_modules/utile/lib/index.js      |  467 -
 .../node_modules/utile/node_modules/.bin/ncp    |    1 -
 .../node_modules/utile/node_modules/.bin/rimraf |    1 -
 .../utile/node_modules/deep-equal/.travis.yml   |    4 -
 .../utile/node_modules/deep-equal/LICENSE       |   18 -
 .../node_modules/deep-equal/README.markdown     |   61 -
 .../utile/node_modules/deep-equal/index.js      |   94 -
 .../node_modules/deep-equal/lib/is_arguments.js |   20 -
 .../utile/node_modules/deep-equal/lib/keys.js   |    9 -
 .../utile/node_modules/deep-equal/package.json  |   65 -
 .../utile/node_modules/deep-equal/test/cmp.js   |   84 -
 .../utile/node_modules/i/.npmignore             |    3 -
 .../utile/node_modules/i/.travis.yml            |    9 -
 .../node_modules/utile/node_modules/i/LICENSE   |   18 -
 .../node_modules/utile/node_modules/i/README.md |  174 -
 .../utile/node_modules/i/lib/defaults.js        |   63 -
 .../utile/node_modules/i/lib/inflect.js         |   11 -
 .../utile/node_modules/i/lib/inflections.js     |  116 -
 .../utile/node_modules/i/lib/methods.js         |  233 -
 .../utile/node_modules/i/lib/native.js          |   26 -
 .../utile/node_modules/i/lib/util.js            |  136 -
 .../utile/node_modules/i/package.json           |   61 -
 .../node_modules/i/test/inflector/cases.js      |  209 -
 .../i/test/inflector/inflections-test.js        |   87 -
 .../i/test/inflector/methods-test.js            |  342 -
 .../node_modules/i/test/utils/array-test.js     |   39 -
 .../node_modules/i/test/utils/string-test.js    |   88 -
 .../utile/node_modules/mkdirp/.npmignore        |    2 -
 .../utile/node_modules/mkdirp/.travis.yml       |    5 -
 .../utile/node_modules/mkdirp/LICENSE           |   21 -
 .../utile/node_modules/mkdirp/examples/pow.js   |    6 -
 .../utile/node_modules/mkdirp/index.js          |   82 -
 .../utile/node_modules/mkdirp/package.json      |   33 -
 .../utile/node_modules/mkdirp/readme.markdown   |   63 -
 .../utile/node_modules/mkdirp/test/chmod.js     |   38 -
 .../utile/node_modules/mkdirp/test/clobber.js   |   37 -
 .../utile/node_modules/mkdirp/test/mkdirp.js    |   28 -
 .../utile/node_modules/mkdirp/test/perm.js      |   32 -
 .../utile/node_modules/mkdirp/test/perm_sync.js |   39 -
 .../utile/node_modules/mkdirp/test/race.js      |   41 -
 .../utile/node_modules/mkdirp/test/rel.js       |   32 -
 .../utile/node_modules/mkdirp/test/return.js    |   25 -
 .../node_modules/mkdirp/test/return_sync.js     |   24 -
 .../utile/node_modules/mkdirp/test/root.js      |   18 -
 .../utile/node_modules/mkdirp/test/sync.js      |   32 -
 .../utile/node_modules/mkdirp/test/umask.js     |   28 -
 .../node_modules/mkdirp/test/umask_sync.js      |   32 -
 .../utile/node_modules/ncp/.npmignore           |    4 -
 .../utile/node_modules/ncp/.travis.yml          |    7 -
 .../utile/node_modules/ncp/LICENSE.md           |   21 -
 .../utile/node_modules/ncp/README.md            |   52 -
 .../node_modules/utile/node_modules/ncp/bin/ncp |   48 -
 .../utile/node_modules/ncp/lib/ncp.js           |  222 -
 .../utile/node_modules/ncp/package.json         |   40 -
 .../utile/node_modules/ncp/test/fixtures/src/a  |    1 -
 .../utile/node_modules/ncp/test/fixtures/src/b  |    1 -
 .../utile/node_modules/ncp/test/fixtures/src/c  |    0
 .../utile/node_modules/ncp/test/fixtures/src/d  |    0
 .../utile/node_modules/ncp/test/fixtures/src/e  |    0
 .../utile/node_modules/ncp/test/fixtures/src/f  |    0
 .../node_modules/ncp/test/fixtures/src/sub/a    |    1 -
 .../node_modules/ncp/test/fixtures/src/sub/b    |    0
 .../utile/node_modules/ncp/test/ncp-test.js     |   86 -
 .../utile/node_modules/rimraf/AUTHORS           |    6 -
 .../utile/node_modules/rimraf/LICENSE           |   23 -
 .../utile/node_modules/rimraf/README.md         |   30 -
 .../utile/node_modules/rimraf/bin.js            |   33 -
 .../utile/node_modules/rimraf/package.json      |   55 -
 .../utile/node_modules/rimraf/rimraf.js         |  178 -
 .../utile/node_modules/rimraf/test/run.sh       |   10 -
 .../utile/node_modules/rimraf/test/setup.sh     |   47 -
 .../node_modules/rimraf/test/test-async.js      |    5 -
 .../utile/node_modules/rimraf/test/test-sync.js |    3 -
 .../prompt/node_modules/utile/package.json      |   44 -
 .../prompt/node_modules/utile/test/file-test.js |   31 -
 .../test/fixtures/read-json-file/config.json    |    9 -
 .../require-directory/directory/index.js        |    2 -
 .../fixtures/require-directory/helloWorld.js    |    2 -
 .../node_modules/utile/test/format-test.js      |   31 -
 .../utile/test/function-args-test.js            |  104 -
 .../node_modules/utile/test/helpers/macros.js   |   37 -
 .../utile/test/random-string-test.js            |   39 -
 .../utile/test/require-directory-test.js        |   35 -
 .../node_modules/utile/test/utile-test.js       |  126 -
 .../prompt/node_modules/winston/.npmignore      |    6 -
 .../prompt/node_modules/winston/.travis.yml     |   12 -
 .../prompt/node_modules/winston/LICENSE         |   19 -
 .../prompt/node_modules/winston/README.md       |  790 --
 .../node_modules/winston/docs/transports.md     |  342 -
 .../node_modules/winston/examples/couchdb.js    |   18 -
 .../node_modules/winston/examples/exception.js  |    4 -
 .../node_modules/winston/examples/raw-mode.js   |   10 -
 .../winston/examples/webhook-post.js            |   17 -
 .../prompt/node_modules/winston/lib/winston.js  |  145 -
 .../node_modules/winston/lib/winston/common.js  |  259 -
 .../node_modules/winston/lib/winston/config.js  |   45 -
 .../winston/lib/winston/config/cli-config.js    |   35 -
 .../winston/lib/winston/config/npm-config.js    |   27 -
 .../winston/lib/winston/config/syslog-config.js |   31 -
 .../winston/lib/winston/container.js            |  101 -
 .../winston/lib/winston/exception.js            |   56 -
 .../node_modules/winston/lib/winston/logger.js  |  668 --
 .../winston/lib/winston/transports.js           |   29 -
 .../winston/lib/winston/transports/console.js   |   88 -
 .../winston/lib/winston/transports/file.js      |  575 --
 .../winston/lib/winston/transports/http.js      |  200 -
 .../winston/lib/winston/transports/transport.js |  120 -
 .../winston/lib/winston/transports/webhook.js   |  136 -
 .../winston/node_modules/async/.gitmodules      |    9 -
 .../winston/node_modules/async/.npmignore       |    4 -
 .../winston/node_modules/async/LICENSE          |   19 -
 .../winston/node_modules/async/Makefile         |   25 -
 .../winston/node_modules/async/README.md        | 1021 ---
 .../winston/node_modules/async/index.js         |    3 -
 .../winston/node_modules/async/lib/async.js     |  692 --
 .../winston/node_modules/async/package.json     |   31 -
 .../winston/node_modules/colors/MIT-LICENSE.txt |   22 -
 .../winston/node_modules/colors/ReadMe.md       |   77 -
 .../winston/node_modules/colors/colors.js       |  342 -
 .../winston/node_modules/colors/example.html    |   76 -
 .../winston/node_modules/colors/example.js      |   77 -
 .../winston/node_modules/colors/package.json    |   29 -
 .../winston/node_modules/colors/test.js         |   70 -
 .../node_modules/colors/themes/winston-dark.js  |   12 -
 .../node_modules/colors/themes/winston-light.js |   12 -
 .../winston/node_modules/cycle/README.md        |   49 -
 .../winston/node_modules/cycle/cycle.js         |  170 -
 .../winston/node_modules/cycle/package.json     |   28 -
 .../winston/node_modules/eyes/LICENSE           |   20 -
 .../winston/node_modules/eyes/Makefile          |    4 -
 .../winston/node_modules/eyes/README.md         |   73 -
 .../winston/node_modules/eyes/lib/eyes.js       |  236 -
 .../winston/node_modules/eyes/package.json      |   40 -
 .../winston/node_modules/eyes/test/eyes-test.js |   56 -
 .../winston/node_modules/pkginfo/.npmignore     |    2 -
 .../winston/node_modules/pkginfo/README.md      |   85 -
 .../winston/node_modules/pkginfo/docs/docco.css |  194 -
 .../node_modules/pkginfo/docs/pkginfo.html      |  101 -
 .../pkginfo/examples/all-properties.js          |   19 -
 .../pkginfo/examples/array-argument.js          |   20 -
 .../pkginfo/examples/multiple-properties.js     |   19 -
 .../pkginfo/examples/object-argument.js         |   22 -
 .../node_modules/pkginfo/examples/package.json  |   10 -
 .../pkginfo/examples/single-property.js         |   19 -
 .../winston/node_modules/pkginfo/lib/pkginfo.js |  132 -
 .../winston/node_modules/pkginfo/package.json   |   35 -
 .../node_modules/pkginfo/test/pkginfo-test.js   |   69 -
 .../winston/node_modules/request/LICENSE        |   55 -
 .../winston/node_modules/request/README.md      |  287 -
 .../winston/node_modules/request/aws.js         |  190 -
 .../winston/node_modules/request/aws2.js        |  128 -
 .../winston/node_modules/request/forever.js     |  103 -
 .../winston/node_modules/request/main.js        |  974 ---
 .../winston/node_modules/request/mimetypes.js   |  152 -
 .../winston/node_modules/request/oauth.js       |   34 -
 .../winston/node_modules/request/package.json   |   33 -
 .../node_modules/request/tests/googledoodle.png |  Bin 38510 -> 0 bytes
 .../winston/node_modules/request/tests/run.js   |   39 -
 .../node_modules/request/tests/server.js        |   82 -
 .../node_modules/request/tests/squid.conf       |   77 -
 .../node_modules/request/tests/ssl/ca/ca.cnf    |   20 -
 .../node_modules/request/tests/ssl/ca/ca.crl    |    0
 .../node_modules/request/tests/ssl/ca/ca.crt    |   17 -
 .../node_modules/request/tests/ssl/ca/ca.csr    |   13 -
 .../node_modules/request/tests/ssl/ca/ca.key    |   18 -
 .../node_modules/request/tests/ssl/ca/ca.srl    |    1 -
 .../request/tests/ssl/ca/server.cnf             |   19 -
 .../request/tests/ssl/ca/server.crt             |   16 -
 .../request/tests/ssl/ca/server.csr             |   11 -
 .../node_modules/request/tests/ssl/ca/server.js |   28 -
 .../request/tests/ssl/ca/server.key             |    9 -
 .../node_modules/request/tests/ssl/npm-ca.crt   |   16 -
 .../node_modules/request/tests/ssl/test.crt     |   15 -
 .../node_modules/request/tests/ssl/test.key     |   15 -
 .../node_modules/request/tests/test-body.js     |   80 -
 .../node_modules/request/tests/test-cookie.js   |   29 -
 .../request/tests/test-cookiejar.js             |   90 -
 .../node_modules/request/tests/test-defaults.js |   68 -
 .../node_modules/request/tests/test-errors.js   |   37 -
 .../node_modules/request/tests/test-headers.js  |   52 -
 .../request/tests/test-httpModule.js            |   94 -
 .../request/tests/test-https-strict.js          |   97 -
 .../node_modules/request/tests/test-https.js    |   86 -
 .../node_modules/request/tests/test-oauth.js    |  117 -
 .../node_modules/request/tests/test-params.js   |   92 -
 .../node_modules/request/tests/test-pipes.js    |  202 -
 .../node_modules/request/tests/test-pool.js     |   16 -
 .../node_modules/request/tests/test-proxy.js    |   39 -
 .../node_modules/request/tests/test-qs.js       |   28 -
 .../node_modules/request/tests/test-redirect.js |  154 -
 .../node_modules/request/tests/test-s3.js       |   13 -
 .../node_modules/request/tests/test-timeout.js  |   87 -
 .../node_modules/request/tests/test-toJSON.js   |   14 -
 .../node_modules/request/tests/test-tunnel.js   |   61 -
 .../winston/node_modules/request/tunnel.js      |  229 -
 .../winston/node_modules/request/uuid.js        |   19 -
 .../node_modules/request/vendor/cookie/index.js |   65 -
 .../node_modules/request/vendor/cookie/jar.js   |   72 -
 .../winston/node_modules/stack-trace/.npmignore |    1 -
 .../winston/node_modules/stack-trace/License    |   19 -
 .../winston/node_modules/stack-trace/Makefile   |   11 -
 .../winston/node_modules/stack-trace/Readme.md  |   98 -
 .../node_modules/stack-trace/lib/stack-trace.js |  111 -
 .../node_modules/stack-trace/package.json       |   31 -
 .../prompt/node_modules/winston/package.json    |   50 -
 .../node_modules/winston/test/cli-test.js       |   40 -
 .../node_modules/winston/test/container-test.js |   99 -
 .../winston/test/custom-timestamp-test.js       |   62 -
 .../node_modules/winston/test/exception-test.js |   47 -
 .../node_modules/winston/test/fixtures/.gitkeep |    0
 .../winston/test/fixtures/keys/agent2-cert.pem  |   13 -
 .../winston/test/fixtures/keys/agent2-key.pem   |    9 -
 .../winston/test/fixtures/logs/.gitkeep         |    0
 .../test/fixtures/scripts/default-exceptions.js |   21 -
 .../test/fixtures/scripts/exit-on-error.js      |   25 -
 .../test/fixtures/scripts/log-exceptions.js     |   25 -
 .../fixtures/scripts/unhandle-exceptions.js     |   26 -
 .../prompt/node_modules/winston/test/helpers.js |  173 -
 .../winston/test/log-exception-test.js          |   60 -
 .../winston/test/log-rewriter-test.js           |   98 -
 .../node_modules/winston/test/logger-test.js    |  200 -
 .../winston/test/transports/console-test.js     |   39 -
 .../test/transports/file-maxfiles-test.js       |  102 -
 .../test/transports/file-maxsize-test.js        |   82 -
 .../winston/test/transports/file-test.js        |   60 -
 .../winston/test/transports/transport.js        |  212 -
 .../winston/test/transports/webhook-test.js     |  125 -
 .../node_modules/winston/test/winston-test.js   |   98 -
 blackberry10/node_modules/prompt/package.json   |   48 -
 .../node_modules/prompt/test/helpers.js         |  156 -
 .../prompt/test/interactive-prompt-test.js      |   49 -
 blackberry10/node_modules/prompt/test/macros.js |   82 -
 .../node_modules/prompt/test/prompt-test.js     |  668 --
 .../node_modules/shelljs/.documentup.json       |    6 -
 blackberry10/node_modules/shelljs/.jshintrc     |    7 -
 blackberry10/node_modules/shelljs/.npmignore    |    2 -
 blackberry10/node_modules/shelljs/.travis.yml   |    5 -
 blackberry10/node_modules/shelljs/LICENSE       |   26 -
 blackberry10/node_modules/shelljs/README.md     |  552 --
 blackberry10/node_modules/shelljs/bin/shjs      |   51 -
 blackberry10/node_modules/shelljs/global.js     |    3 -
 blackberry10/node_modules/shelljs/make.js       |   47 -
 blackberry10/node_modules/shelljs/package.json  |   44 -
 .../shelljs/scripts/generate-docs.js            |   21 -
 .../node_modules/shelljs/scripts/run-tests.js   |   50 -
 blackberry10/node_modules/shelljs/shell.js      |  153 -
 blackberry10/node_modules/shelljs/src/cat.js    |   43 -
 blackberry10/node_modules/shelljs/src/cd.js     |   19 -
 blackberry10/node_modules/shelljs/src/chmod.js  |  208 -
 blackberry10/node_modules/shelljs/src/common.js |  189 -
 blackberry10/node_modules/shelljs/src/cp.js     |  200 -
 blackberry10/node_modules/shelljs/src/dirs.js   |  191 -
 blackberry10/node_modules/shelljs/src/echo.js   |   20 -
 blackberry10/node_modules/shelljs/src/error.js  |   10 -
 blackberry10/node_modules/shelljs/src/exec.js   |  181 -
 blackberry10/node_modules/shelljs/src/find.js   |   51 -
 blackberry10/node_modules/shelljs/src/grep.js   |   52 -
 blackberry10/node_modules/shelljs/src/ls.js     |  126 -
 blackberry10/node_modules/shelljs/src/mkdir.js  |   68 -
 blackberry10/node_modules/shelljs/src/mv.js     |   80 -
 blackberry10/node_modules/shelljs/src/popd.js   |    1 -
 blackberry10/node_modules/shelljs/src/pushd.js  |    1 -
 blackberry10/node_modules/shelljs/src/pwd.js    |   11 -
 blackberry10/node_modules/shelljs/src/rm.js     |  145 -
 blackberry10/node_modules/shelljs/src/sed.js    |   43 -
 .../node_modules/shelljs/src/tempdir.js         |   56 -
 blackberry10/node_modules/shelljs/src/test.js   |   85 -
 blackberry10/node_modules/shelljs/src/to.js     |   29 -
 blackberry10/node_modules/shelljs/src/toEnd.js  |   29 -
 blackberry10/node_modules/shelljs/src/which.js  |   79 -
 blackberry10/node_modules/validator/.npmignore  |    1 -
 blackberry10/node_modules/validator/LICENSE     |   20 -
 blackberry10/node_modules/validator/README.md   |  221 -
 blackberry10/node_modules/validator/index.html  |   15 -
 blackberry10/node_modules/validator/index.js    |    1 -
 .../node_modules/validator/lib/defaultError.js  |   33 -
 .../node_modules/validator/lib/entities.js      |  291 -
 .../node_modules/validator/lib/filter.js        |  102 -
 .../node_modules/validator/lib/index.js         |   16 -
 .../node_modules/validator/lib/validator.js     |   42 -
 .../node_modules/validator/lib/validators.js    |  155 -
 blackberry10/node_modules/validator/lib/xss.js  |  203 -
 .../node_modules/validator/package.json         |   60 -
 blackberry10/node_modules/validator/test.js     |    4 -
 .../node_modules/validator/test/filter.test.js  |  145 -
 blackberry10/node_modules/validator/test/run.js |    8 -
 .../validator/test/validator.test.js            |  604 --
 .../node_modules/validator/validator-min.js     |   22 -
 .../node_modules/validator/validator.js         |  865 --
 blackberry10/node_modules/wrench/.npmignore     |    2 -
 blackberry10/node_modules/wrench/LICENSE        |   21 -
 blackberry10/node_modules/wrench/lib/wrench.js  |  426 -
 blackberry10/node_modules/wrench/lib/x.js       |    1 -
 blackberry10/node_modules/wrench/package.json   |   40 -
 blackberry10/node_modules/wrench/readme.md      |   63 -
 .../wrench/tests/copydirsync_unix.js            |  210 -
 blackberry10/node_modules/wrench/tests/mkdir.js |   26 -
 .../node_modules/wrench/tests/readdir.js        |   52 -
 .../node_modules/wrench/tests/readdir/bar.txt   |    0
 .../wrench/tests/readdir/foo/bar/ipsum.js       |    0
 .../wrench/tests/readdir/foo/dolor.md           |    0
 .../wrench/tests/readdir/foo/lorem.txt          |    0
 .../node_modules/wrench/tests/runner.js         |    8 -
 .../node_modules/wrench/tests/shown/.hidden.txt |    1 -
 .../wrench/tests/shown/.hidden/dolor.md         |    0
 .../node_modules/wrench/tests/shown/bar.txt     |    1 -
 .../wrench/tests/shown/foo/bar/ipsum.js         |    0
 .../wrench/tests/shown/foo/dolor.md             |    0
 .../wrench/tests/shown/foo/lorem.txt            |    0
 .../node_modules/wrench/tests/withsymlinks/test |    1 -
 blackberry10/node_modules/xml2js/.npmignore     |    2 -
 blackberry10/node_modules/xml2js/Cakefile       |   12 -
 blackberry10/node_modules/xml2js/LICENSE        |   19 -
 blackberry10/node_modules/xml2js/README.md      |  139 -
 blackberry10/node_modules/xml2js/lib/xml2js.js  |  152 -
 .../xml2js/node_modules/sax/AUTHORS             |   10 -
 .../xml2js/node_modules/sax/LICENSE             |   32 -
 .../xml2js/node_modules/sax/LICENSE-W3C.html    |  188 -
 .../xml2js/node_modules/sax/README.md           |  216 -
 .../xml2js/node_modules/sax/component.json      |   12 -
 .../sax/examples/big-not-pretty.xml             | 8002 ------------------
 .../xml2js/node_modules/sax/examples/example.js |   29 -
 .../node_modules/sax/examples/get-products.js   |   58 -
 .../node_modules/sax/examples/hello-world.js    |    4 -
 .../node_modules/sax/examples/not-pretty.xml    |    8 -
 .../node_modules/sax/examples/pretty-print.js   |   74 -
 .../node_modules/sax/examples/shopping.xml      |    2 -
 .../xml2js/node_modules/sax/examples/strict.dtd |  870 --
 .../xml2js/node_modules/sax/examples/test.html  |   15 -
 .../xml2js/node_modules/sax/examples/test.xml   | 1254 ---
 .../xml2js/node_modules/sax/lib/sax.js          | 1410 ---
 .../xml2js/node_modules/sax/package.json        |   64 -
 .../node_modules/sax/test/attribute-name.js     |   33 -
 .../node_modules/sax/test/attribute-no-space.js |   75 -
 .../node_modules/sax/test/buffer-overrun.js     |   26 -
 .../xml2js/node_modules/sax/test/case.js        |   50 -
 .../node_modules/sax/test/cdata-chunked.js      |   11 -
 .../node_modules/sax/test/cdata-end-split.js    |   15 -
 .../node_modules/sax/test/cdata-fake-end.js     |   28 -
 .../node_modules/sax/test/cdata-multiple.js     |   15 -
 .../xml2js/node_modules/sax/test/cdata.js       |   10 -
 .../xml2js/node_modules/sax/test/cyrillic.js    |    8 -
 .../sax/test/duplicate-attribute.js             |   13 -
 .../xml2js/node_modules/sax/test/emoji.js       |   12 -
 .../node_modules/sax/test/end_empty_stream.js   |    5 -
 .../xml2js/node_modules/sax/test/entities.js    |   10 -
 .../xml2js/node_modules/sax/test/entity-mega.js |   16 -
 .../xml2js/node_modules/sax/test/flush.js       |   13 -
 .../xml2js/node_modules/sax/test/index.js       |   86 -
 .../xml2js/node_modules/sax/test/issue-23.js    |   43 -
 .../xml2js/node_modules/sax/test/issue-30.js    |   24 -
 .../xml2js/node_modules/sax/test/issue-35.js    |   15 -
 .../xml2js/node_modules/sax/test/issue-47.js    |   12 -
 .../xml2js/node_modules/sax/test/issue-49.js    |   31 -
 .../xml2js/node_modules/sax/test/issue-84.js    |   13 -
 .../node_modules/sax/test/parser-position.js    |   28 -
 .../sax/test/script-close-better.js             |   12 -
 .../xml2js/node_modules/sax/test/script.js      |   12 -
 .../sax/test/self-closing-child-strict.js       |   44 -
 .../node_modules/sax/test/self-closing-child.js |   44 -
 .../node_modules/sax/test/self-closing-tag.js   |   25 -
 .../node_modules/sax/test/stray-ending.js       |   17 -
 .../sax/test/trailing-attribute-no-value.js     |   10 -
 .../sax/test/trailing-non-whitespace.js         |   18 -
 .../node_modules/sax/test/unclosed-root.js      |   11 -
 .../xml2js/node_modules/sax/test/unquoted.js    |   18 -
 .../xml2js/node_modules/sax/test/utf8-split.js  |   32 -
 .../node_modules/sax/test/xmlns-as-tag-name.js  |   15 -
 .../node_modules/sax/test/xmlns-issue-41.js     |   68 -
 .../node_modules/sax/test/xmlns-rebinding.js    |   63 -
 .../node_modules/sax/test/xmlns-strict.js       |   74 -
 .../sax/test/xmlns-unbound-element.js           |   33 -
 .../node_modules/sax/test/xmlns-unbound.js      |   15 -
 .../sax/test/xmlns-xml-default-ns.js            |   31 -
 .../test/xmlns-xml-default-prefix-attribute.js  |   36 -
 .../sax/test/xmlns-xml-default-prefix.js        |   21 -
 .../sax/test/xmlns-xml-default-redefine.js      |   41 -
 blackberry10/node_modules/xml2js/package.json   |   92 -
 .../node_modules/xml2js/src/xml2js.coffee       |  142 -
 .../xml2js/test/fixtures/sample.xml             |   34 -
 .../node_modules/xml2js/test/xml2js.test.coffee |  154 -
 blackberry10/node_modules/zip/CHANGES.md        |   25 -
 blackberry10/node_modules/zip/LICENSE           |   19 -
 blackberry10/node_modules/zip/README.md         |   14 -
 blackberry10/node_modules/zip/inflate.js        |  754 --
 .../zip/node_modules/q-io-buffer/LICENSE        |   19 -
 .../zip/node_modules/q-io-buffer/README         |    1 -
 .../zip/node_modules/q-io-buffer/package.json   |   35 -
 .../zip/node_modules/q-io-buffer/q-io-buffer.js |   61 -
 .../node_modules/zip/node_modules/q-io/CHANGES  |   26 -
 .../node_modules/zip/node_modules/q-io/LICENSE  |   19 -
 .../node_modules/zip/node_modules/q-io/README   |    4 -
 .../zip/node_modules/q-io/package.json          |   35 -
 .../node_modules/zip/node_modules/q-io/q-io.js  |  208 -
 .../zip/node_modules/q-io/test/issues/1.js      |   24 -
 .../node_modules/zip/node_modules/q/.npmignore  |    3 -
 .../node_modules/zip/node_modules/q/CHANGES.md  |  319 -
 .../node_modules/zip/node_modules/q/LICENSE     |   19 -
 .../node_modules/zip/node_modules/q/README.md   |  789 --
 .../node_modules/zip/node_modules/q/TODO        |    1 -
 .../zip/node_modules/q/design/README.js         | 1026 ---
 .../zip/node_modules/q/design/q0.js             |   22 -
 .../zip/node_modules/q/design/q1.js             |   26 -
 .../zip/node_modules/q/design/q2.js             |   33 -
 .../zip/node_modules/q/design/q3.js             |   30 -
 .../zip/node_modules/q/design/q4.js             |   48 -
 .../zip/node_modules/q/design/q5.js             |   56 -
 .../zip/node_modules/q/design/q6.js             |   64 -
 .../zip/node_modules/q/design/q7.js             |  126 -
 .../q/examples/async-generators/0.html          |   43 -
 .../q/examples/async-generators/1-return.html   |   36 -
 .../async-generators/2-error-propagation.html   |   37 -
 .../async-generators/3-wishful-thinking.html    |   36 -
 .../q/examples/async-generators/README.md       |   66 -
 .../zip/node_modules/q/examples/delay.js        |   13 -
 .../zip/node_modules/q/examples/join.js         |   14 -
 .../zip/node_modules/q/examples/shallow-deep.js |   43 -
 .../zip/node_modules/q/examples/step1.js        |   16 -
 .../zip/node_modules/q/examples/step2.js        |   17 -
 .../zip/node_modules/q/examples/step3.js        |   22 -
 .../zip/node_modules/q/examples/then1.js        |   11 -
 .../zip/node_modules/q/examples/then2.js        |   12 -
 .../zip/node_modules/q/examples/then3.js        |   18 -
 .../zip/node_modules/q/examples/view1.js        |   15 -
 .../zip/node_modules/q/examples/view2.js        |   17 -
 .../zip/node_modules/q/examples/view3.js        |   25 -
 .../zip/node_modules/q/markm-mzero.js           |  217 -
 .../node_modules/event-queue/.event-loop.js.un~ |  Bin 9550 -> 0 bytes
 .../event-queue/.event-queue.js.un~             |  Bin 102648 -> 0 bytes
 .../node_modules/event-queue/.package.json.un~  |  Bin 87260 -> 0 bytes
 .../q/node_modules/event-queue/.readme.md.un~   |  Bin 25614 -> 0 bytes
 .../q/node_modules/event-queue/.system.js.un~   |  Bin 18136 -> 0 bytes
 .../q/node_modules/event-queue/event-queue.js   |   97 -
 .../q/node_modules/event-queue/package.json     |   37 -
 .../q/node_modules/event-queue/readme.md        |    5 -
 .../zip/node_modules/q/package.json             |   66 -
 .../node_modules/zip/node_modules/q/q.js        |  811 --
 .../node_modules/zip/node_modules/q/q.min.js    |   11 -
 .../node_modules/zip/node_modules/q/ref_send.md |   26 -
 .../node_modules/zip/node_modules/q/test.js     |   32 -
 .../node_modules/zip/node_modules/q/test/all.js |   16 -
 .../zip/node_modules/q/test/issue/22.js         |   16 -
 .../zip/node_modules/q/test/issue/9.js          |   13 -
 .../zip/node_modules/q/test/join.js             |   10 -
 .../zip/node_modules/q/test/methods.js          |  155 -
 .../node_modules/q/test/multiple-listeners.js   |   60 -
 .../zip/node_modules/q/test/promised-chains.js  |  131 -
 .../zip/node_modules/q/test/reject.js           |   50 -
 .../zip/node_modules/q/test/resolve-reject.js   |  114 -
 .../zip/node_modules/q/test/thenable.js         |   73 -
 .../zip/node_modules/q/test/value-of.js         |   36 -
 blackberry10/node_modules/zip/package.json      |   54 -
 blackberry10/node_modules/zip/test.js           |    5 -
 blackberry10/node_modules/zip/zip.js            |  385 -
 blackberry10/node_modules/zip/zip.zip           |  Bin 1522 -> 0 bytes
 blackberry10/package.json                       |   45 -
 framework/bootstrap/index.html                  |   42 +
 framework/bootstrap/require.js                  |  251 +
 framework/bootstrap/ui.html                     |   72 +
 framework/lib/PluginResult.js                   |   55 +
 framework/lib/config.js                         |   22 +
 framework/lib/config/default.js                 |   84 +
 framework/lib/config/user.js                    |   54 +
 framework/lib/controllerWebView.js              |   72 +
 framework/lib/event.js                          |   84 +
 framework/lib/events/applicationEvents.js       |   39 +
 framework/lib/events/deviceEvents.js            |   39 +
 framework/lib/exception.js                      |   69 +
 framework/lib/framework.js                      |  179 +
 framework/lib/jnext.js                          |  185 +
 framework/lib/overlayWebView.js                 |  143 +
 framework/lib/plugins/default.js                |   71 +
 framework/lib/plugins/event.js                  |   47 +
 framework/lib/policy/folderAccess.js            |  180 +
 framework/lib/policy/webkitOriginAccess.js      |  123 +
 framework/lib/policy/whitelist.js               |  322 +
 framework/lib/server.js                         |  118 +
 framework/lib/utils.js                          |  549 ++
 framework/lib/webkitEvent.js                    |   87 +
 .../webkitHandlers/networkResourceRequested.js  |  126 +
 framework/lib/webview.js                        |  271 +
 framework/test/unit/lib/config.js               |   30 +
 framework/test/unit/lib/controllerWebView.js    |  107 +
 framework/test/unit/lib/event.js                |  139 +
 .../test/unit/lib/events/applicationEvents.js   |   87 +
 framework/test/unit/lib/events/deviceEvents.js  |   82 +
 framework/test/unit/lib/framework.js            |  434 +
 framework/test/unit/lib/overlayWebView.js       |  187 +
 framework/test/unit/lib/plugins/default.js      |  154 +
 framework/test/unit/lib/plugins/event.js        |   78 +
 .../test/unit/lib/policy/webkitOriginAccess.js  |  194 +
 framework/test/unit/lib/policy/whitelist.js     |  873 ++
 framework/test/unit/lib/server.js               |  295 +
 framework/test/unit/lib/utils.js                |  280 +
 .../webkitHandlers/networkResourceRequested.js  |  188 +
 framework/test/unit/lib/webview.js              |  357 +
 javascript/cordova.blackberry10.js              | 1636 ++++
 node_modules/.bin/shjs                          |    1 +
 node_modules/.bin/xlocalize                     |    1 +
 node_modules/async/LICENSE                      |   19 +
 node_modules/async/README.md                    | 1414 ++++
 node_modules/async/component.json               |   11 +
 node_modules/async/lib/async.js                 |  955 +++
 node_modules/async/package.json                 |   46 +
 node_modules/commander/.npmignore               |    4 +
 node_modules/commander/.travis.yml              |    4 +
 node_modules/commander/History.md               |  107 +
 node_modules/commander/Makefile                 |    7 +
 node_modules/commander/Readme.md                |  262 +
 node_modules/commander/index.js                 |    2 +
 node_modules/commander/lib/commander.js         | 1026 +++
 node_modules/commander/package.json             |   38 +
 node_modules/elementtree/.npmignore             |    1 +
 node_modules/elementtree/.travis.yml            |   10 +
 node_modules/elementtree/CHANGES.md             |   34 +
 node_modules/elementtree/LICENSE.txt            |  203 +
 node_modules/elementtree/Makefile               |   21 +
 node_modules/elementtree/NOTICE                 |    5 +
 node_modules/elementtree/README.md              |   27 +
 node_modules/elementtree/lib/constants.js       |   20 +
 node_modules/elementtree/lib/elementpath.js     |  343 +
 node_modules/elementtree/lib/elementtree.js     |  598 ++
 node_modules/elementtree/lib/errors.js          |   31 +
 node_modules/elementtree/lib/parser.js          |   33 +
 node_modules/elementtree/lib/parsers/index.js   |    1 +
 node_modules/elementtree/lib/parsers/sax.js     |   56 +
 node_modules/elementtree/lib/sprintf.js         |   86 +
 node_modules/elementtree/lib/treebuilder.js     |   60 +
 node_modules/elementtree/lib/utils.js           |   72 +
 .../elementtree/node_modules/sax/AUTHORS        |    9 +
 .../elementtree/node_modules/sax/LICENSE        |   23 +
 .../elementtree/node_modules/sax/README.md      |  213 +
 .../sax/examples/big-not-pretty.xml             | 8002 ++++++++++++++++++
 .../node_modules/sax/examples/example.js        |   41 +
 .../node_modules/sax/examples/get-products.js   |   58 +
 .../node_modules/sax/examples/hello-world.js    |    4 +
 .../node_modules/sax/examples/not-pretty.xml    |    8 +
 .../node_modules/sax/examples/pretty-print.js   |   74 +
 .../node_modules/sax/examples/shopping.xml      |    2 +
 .../node_modules/sax/examples/strict.dtd        |  870 ++
 .../node_modules/sax/examples/switch-bench.js   |   45 +
 .../node_modules/sax/examples/test.html         |   15 +
 .../node_modules/sax/examples/test.xml          | 1254 +++
 .../elementtree/node_modules/sax/lib/sax.js     | 1006 +++
 .../elementtree/node_modules/sax/package.json   |   63 +
 .../node_modules/sax/test/buffer-overrun.js     |   25 +
 .../node_modules/sax/test/cdata-chunked.js      |   11 +
 .../node_modules/sax/test/cdata-end-split.js    |   15 +
 .../node_modules/sax/test/cdata-fake-end.js     |   28 +
 .../node_modules/sax/test/cdata-multiple.js     |   15 +
 .../elementtree/node_modules/sax/test/cdata.js  |   10 +
 .../elementtree/node_modules/sax/test/index.js  |   86 +
 .../node_modules/sax/test/issue-23.js           |   43 +
 .../node_modules/sax/test/issue-30.js           |   24 +
 .../node_modules/sax/test/issue-35.js           |   15 +
 .../node_modules/sax/test/issue-47.js           |   13 +
 .../node_modules/sax/test/issue-49.js           |   31 +
 .../node_modules/sax/test/parser-position.js    |   28 +
 .../elementtree/node_modules/sax/test/script.js |   12 +
 .../sax/test/self-closing-child-strict.js       |   40 +
 .../node_modules/sax/test/self-closing-child.js |   40 +
 .../node_modules/sax/test/self-closing-tag.js   |   25 +
 .../node_modules/sax/test/stray-ending.js       |   17 +
 .../sax/test/trailing-non-whitespace.js         |   17 +
 .../node_modules/sax/test/unquoted.js           |   17 +
 .../node_modules/sax/test/xmlns-issue-41.js     |   67 +
 .../node_modules/sax/test/xmlns-rebinding.js    |   59 +
 .../node_modules/sax/test/xmlns-strict.js       |   71 +
 .../node_modules/sax/test/xmlns-unbound.js      |   15 +
 .../test/xmlns-xml-default-prefix-attribute.js  |   35 +
 .../sax/test/xmlns-xml-default-prefix.js        |   20 +
 .../sax/test/xmlns-xml-default-redefine.js      |   40 +
 node_modules/elementtree/package.json           |   59 +
 node_modules/elementtree/tests/data/xml1.xml    |   17 +
 node_modules/elementtree/tests/data/xml2.xml    |   14 +
 node_modules/elementtree/tests/test-simple.js   |  299 +
 node_modules/exit/.jshintrc                     |   14 +
 node_modules/exit/.npmignore                    |    0
 node_modules/exit/.travis.yml                   |    6 +
 node_modules/exit/Gruntfile.js                  |   48 +
 node_modules/exit/LICENSE-MIT                   |   22 +
 node_modules/exit/README.md                     |   74 +
 node_modules/exit/lib/exit.js                   |   41 +
 node_modules/exit/package.json                  |   51 +
 node_modules/exit/test/exit_test.js             |  121 +
 node_modules/exit/test/fixtures/10-stderr.txt   |   10 +
 .../exit/test/fixtures/10-stdout-stderr.txt     |   20 +
 node_modules/exit/test/fixtures/10-stdout.txt   |   10 +
 node_modules/exit/test/fixtures/100-stderr.txt  |  100 +
 .../exit/test/fixtures/100-stdout-stderr.txt    |  200 +
 node_modules/exit/test/fixtures/100-stdout.txt  |  100 +
 node_modules/exit/test/fixtures/1000-stderr.txt | 1000 +++
 .../exit/test/fixtures/1000-stdout-stderr.txt   | 2000 +++++
 node_modules/exit/test/fixtures/1000-stdout.txt | 1000 +++
 node_modules/exit/test/fixtures/create-files.sh |    8 +
 node_modules/exit/test/fixtures/log-broken.js   |   23 +
 node_modules/exit/test/fixtures/log.js          |   25 +
 node_modules/jWorkflow/.npmignore               |    1 +
 node_modules/jWorkflow/LICENSE                  |    9 +
 node_modules/jWorkflow/README.md                |  170 +
 node_modules/jWorkflow/Rakefile                 |   12 +
 node_modules/jWorkflow/jworkflow-min-0.8.0.js   |    3 +
 node_modules/jWorkflow/lib/jWorkflow.js         |  140 +
 node_modules/jWorkflow/package.json             |   27 +
 node_modules/jWorkflow/test/test.html           |   17 +
 node_modules/jWorkflow/test/test_jworkflow.js   |  521 ++
 node_modules/jWorkflow/test/vendor/jquery.js    |   19 +
 node_modules/jWorkflow/test/vendor/qunit.css    |   17 +
 node_modules/jWorkflow/test/vendor/qunit.js     |  997 +++
 node_modules/localize/README.md                 |  267 +
 node_modules/localize/bin/translations.json     |    6 +
 node_modules/localize/bin/xlocalize.js          |  139 +
 node_modules/localize/lib/localize.js           |  405 +
 node_modules/localize/package.json              |   38 +
 node_modules/localize/test/localize.test.js     |  179 +
 .../translations/subsitution/translations.json  |    8 +
 .../test/translations/translations.json         |    5 +
 .../translations/translations/helloWorld.es.txt |    1 +
 .../translations/translations/helloWorld.txt    |    1 +
 node_modules/localize/test/xlocalize.test.sh    |   37 +
 .../localize/test/xlocalize.testfile1.json      |    8 +
 .../localize/test/xlocalize.testfile2.json      |    8 +
 .../localize/test/xlocalize.testfile3.json      |    9 +
 .../localize/test/xlocalize.testfile4.json      |    9 +
 .../localize/test/xlocalize/subdir/test2.js     |    3 +
 node_modules/localize/test/xlocalize/test.html  |   13 +
 node_modules/prompt/.jshintrc                   |   54 +
 node_modules/prompt/.npmignore                  |    3 +
 node_modules/prompt/.travis.yml                 |    9 +
 node_modules/prompt/CHANGELOG.md                |   13 +
 node_modules/prompt/LICENSE                     |   19 +
 node_modules/prompt/README.md                   |  293 +
 node_modules/prompt/docs/docco.css              |  194 +
 node_modules/prompt/docs/prompt.html            |  296 +
 node_modules/prompt/examples/add-properties.js  |   35 +
 .../prompt/examples/existing-properties.js      |   35 +
 node_modules/prompt/examples/history.js         |   44 +
 .../prompt/examples/nested-properties-prompt.js |   37 +
 node_modules/prompt/examples/old-schema.js      |   36 +
 .../prompt/examples/override-validation.js      |   52 +
 node_modules/prompt/examples/password.js        |   34 +
 node_modules/prompt/examples/prompt-override.js |   36 +
 node_modules/prompt/examples/property-prompt.js |   45 +
 node_modules/prompt/examples/simple-prompt.js   |   25 +
 .../prompt/examples/yes-or-no-prompt.js         |   32 +
 node_modules/prompt/lib/prompt.js               |  756 ++
 .../prompt/node_modules/pkginfo/.npmignore      |    2 +
 .../prompt/node_modules/pkginfo/LICENSE         |   19 +
 .../prompt/node_modules/pkginfo/README.md       |   86 +
 .../prompt/node_modules/pkginfo/docs/docco.css  |  194 +
 .../node_modules/pkginfo/docs/pkginfo.html      |  101 +
 .../pkginfo/examples/all-properties.js          |   19 +
 .../pkginfo/examples/array-argument.js          |   20 +
 .../pkginfo/examples/multiple-properties.js     |   19 +
 .../pkginfo/examples/object-argument.js         |   22 +
 .../node_modules/pkginfo/examples/package.json  |   10 +
 .../pkginfo/examples/single-property.js         |   19 +
 .../pkginfo/examples/subdir/package.json        |   11 +
 .../node_modules/pkginfo/examples/target-dir.js |   20 +
 .../prompt/node_modules/pkginfo/lib/pkginfo.js  |  136 +
 .../prompt/node_modules/pkginfo/package.json    |   35 +
 .../node_modules/pkginfo/test/pkginfo-test.js   |   83 +
 .../prompt/node_modules/read/.npmignore         |    2 +
 node_modules/prompt/node_modules/read/LICENCE   |   25 +
 node_modules/prompt/node_modules/read/README.md |   53 +
 .../prompt/node_modules/read/lib/read.js        |  113 +
 .../read/node_modules/mute-stream/LICENSE       |   27 +
 .../read/node_modules/mute-stream/README.md     |   68 +
 .../read/node_modules/mute-stream/mute.js       |  140 +
 .../read/node_modules/mute-stream/package.json  |   37 +
 .../read/node_modules/mute-stream/test/basic.js |  207 +
 .../prompt/node_modules/read/package.json       |   35 +
 node_modules/prompt/node_modules/read/rs.js     |    4 +
 .../prompt/node_modules/read/test/basic.js      |   60 +
 .../prompt/node_modules/read/test/defaults.js   |   60 +
 .../prompt/node_modules/read/test/many.js       |   83 +
 .../prompt/node_modules/revalidator/.npmignore  |    2 +
 .../prompt/node_modules/revalidator/.travis.yml |   11 +
 .../node_modules/revalidator/CHANGELOG.md       |   25 +
 .../prompt/node_modules/revalidator/LICENSE     |  179 +
 .../prompt/node_modules/revalidator/README.md   |  287 +
 .../node_modules/revalidator/lib/revalidator.js |  422 +
 .../node_modules/revalidator/package.json       |   40 +
 .../revalidator/test/validator-test.js          |  404 +
 .../prompt/node_modules/utile/.npmignore        |    4 +
 .../prompt/node_modules/utile/.travis.yml       |   10 +
 .../prompt/node_modules/utile/CHANGELOG.md      |   16 +
 node_modules/prompt/node_modules/utile/LICENSE  |   19 +
 .../prompt/node_modules/utile/README.md         |   87 +
 .../prompt/node_modules/utile/lib/args.js       |   46 +
 .../prompt/node_modules/utile/lib/base64.js     |   44 +
 .../prompt/node_modules/utile/lib/file.js       |   33 +
 .../prompt/node_modules/utile/lib/format.js     |   25 +
 .../prompt/node_modules/utile/lib/index.js      |  467 +
 .../node_modules/utile/node_modules/.bin/ncp    |    1 +
 .../node_modules/utile/node_modules/.bin/rimraf |    1 +
 .../utile/node_modules/deep-equal/.travis.yml   |    4 +
 .../utile/node_modules/deep-equal/LICENSE       |   18 +
 .../node_modules/deep-equal/README.markdown     |   61 +
 .../utile/node_modules/deep-equal/index.js      |   94 +
 .../node_modules/deep-equal/lib/is_arguments.js |   20 +
 .../utile/node_modules/deep-equal/lib/keys.js   |    9 +
 .../utile/node_modules/deep-equal/package.json  |   65 +
 .../utile/node_modules/deep-equal/test/cmp.js   |   84 +
 .../utile/node_modules/i/.npmignore             |    3 +
 .../utile/node_modules/i/.travis.yml            |    9 +
 .../node_modules/utile/node_modules/i/LICENSE   |   18 +
 .../node_modules/utile/node_modules/i/README.md |  174 +
 .../utile/node_modules/i/lib/defaults.js        |   63 +
 .../utile/node_modules/i/lib/inflect.js         |   11 +
 .../utile/node_modules/i/lib/inflections.js     |  116 +
 .../utile/node_modules/i/lib/methods.js         |  233 +
 .../utile/node_modules/i/lib/native.js          |   26 +
 .../utile/node_modules/i/lib/util.js            |  136 +
 .../utile/node_modules/i/package.json           |   61 +
 .../node_modules/i/test/inflector/cases.js      |  209 +
 .../i/test/inflector/inflections-test.js        |   87 +
 .../i/test/inflector/methods-test.js            |  342 +
 .../node_modules/i/test/utils/array-test.js     |   39 +
 .../node_modules/i/test/utils/string-test.js    |   88 +
 .../utile/node_modules/mkdirp/.npmignore        |    2 +
 .../utile/node_modules/mkdirp/.travis.yml       |    5 +
 .../utile/node_modules/mkdirp/LICENSE           |   21 +
 .../utile/node_modules/mkdirp/examples/pow.js   |    6 +
 .../utile/node_modules/mkdirp/index.js          |   82 +
 .../utile/node_modules/mkdirp/package.json      |   33 +
 .../utile/node_modules/mkdirp/readme.markdown   |   63 +
 .../utile/node_modules/mkdirp/test/chmod.js     |   38 +
 .../utile/node_modules/mkdirp/test/clobber.js   |   37 +
 .../utile/node_modules/mkdirp/test/mkdirp.js    |   28 +
 .../utile/node_modules/mkdirp/test/perm.js      |   32 +
 .../utile/node_modules/mkdirp/test/perm_sync.js |   39 +
 .../utile/node_modules/mkdirp/test/race.js      |   41 +
 .../utile/node_modules/mkdirp/test/rel.js       |   32 +
 .../utile/node_modules/mkdirp/test/return.js    |   25 +
 .../node_modules/mkdirp/test/return_sync.js     |   24 +
 .../utile/node_modules/mkdirp/test/root.js      |   18 +
 .../utile/node_modules/mkdirp/test/sync.js      |   32 +
 .../utile/node_modules/mkdirp/test/umask.js     |   28 +
 .../node_modules/mkdirp/test/umask_sync.js      |   32 +
 .../utile/node_modules/ncp/.npmignore           |    4 +
 .../utile/node_modules/ncp/.travis.yml          |    7 +
 .../utile/node_modules/ncp/LICENSE.md           |   21 +
 .../utile/node_modules/ncp/README.md            |   52 +
 .../node_modules/utile/node_modules/ncp/bin/ncp |   48 +
 .../utile/node_modules/ncp/lib/ncp.js           |  222 +
 .../utile/node_modules/ncp/package.json         |   40 +
 .../utile/node_modules/ncp/test/fixtures/src/a  |    1 +
 .../utile/node_modules/ncp/test/fixtures/src/b  |    1 +
 .../utile/node_modules/ncp/test/fixtures/src/c  |    0
 .../utile/node_modules/ncp/test/fixtures/src/d  |    0
 .../utile/node_modules/ncp/test/fixtures/src/e  |    0
 .../utile/node_modules/ncp/test/fixtures/src/f  |    0
 .../node_modules/ncp/test/fixtures/src/sub/a    |    1 +
 .../node_modules/ncp/test/fixtures/src/sub/b    |    0
 .../utile/node_modules/ncp/test/ncp-test.js     |   86 +
 .../utile/node_modules/rimraf/AUTHORS           |    6 +
 .../utile/node_modules/rimraf/LICENSE           |   23 +
 .../utile/node_modules/rimraf/README.md         |   30 +
 .../utile/node_modules/rimraf/bin.js            |   33 +
 .../utile/node_modules/rimraf/package.json      |   55 +
 .../utile/node_modules/rimraf/rimraf.js         |  178 +
 .../utile/node_modules/rimraf/test/run.sh       |   10 +
 .../utile/node_modules/rimraf/test/setup.sh     |   47 +
 .../node_modules/rimraf/test/test-async.js      |    5 +
 .../utile/node_modules/rimraf/test/test-sync.js |    3 +
 .../prompt/node_modules/utile/package.json      |   44 +
 .../prompt/node_modules/utile/test/file-test.js |   31 +
 .../test/fixtures/read-json-file/config.json    |    9 +
 .../require-directory/directory/index.js        |    2 +
 .../fixtures/require-directory/helloWorld.js    |    2 +
 .../node_modules/utile/test/format-test.js      |   31 +
 .../utile/test/function-args-test.js            |  104 +
 .../node_modules/utile/test/helpers/macros.js   |   37 +
 .../utile/test/random-string-test.js            |   39 +
 .../utile/test/require-directory-test.js        |   35 +
 .../node_modules/utile/test/utile-test.js       |  126 +
 .../prompt/node_modules/winston/.npmignore      |    6 +
 .../prompt/node_modules/winston/.travis.yml     |   12 +
 .../prompt/node_modules/winston/LICENSE         |   19 +
 .../prompt/node_modules/winston/README.md       |  790 ++
 .../node_modules/winston/docs/transports.md     |  342 +
 .../node_modules/winston/examples/couchdb.js    |   18 +
 .../node_modules/winston/examples/exception.js  |    4 +
 .../node_modules/winston/examples/raw-mode.js   |   10 +
 .../winston/examples/webhook-post.js            |   17 +
 .../prompt/node_modules/winston/lib/winston.js  |  145 +
 .../node_modules/winston/lib/winston/common.js  |  259 +
 .../node_modules/winston/lib/winston/config.js  |   45 +
 .../winston/lib/winston/config/cli-config.js    |   35 +
 .../winston/lib/winston/config/npm-config.js    |   27 +
 .../winston/lib/winston/config/syslog-config.js |   31 +
 .../winston/lib/winston/container.js            |  101 +
 .../winston/lib/winston/exception.js            |   56 +
 .../node_modules/winston/lib/winston/logger.js  |  668 ++
 .../winston/lib/winston/transports.js           |   29 +
 .../winston/lib/winston/transports/console.js   |   88 +
 .../winston/lib/winston/transports/file.js      |  575 ++
 .../winston/lib/winston/transports/http.js      |  200 +
 .../winston/lib/winston/transports/transport.js |  120 +
 .../winston/lib/winston/transports/webhook.js   |  136 +
 .../winston/node_modules/async/.gitmodules      |    9 +
 .../winston/node_modules/async/.npmignore       |    4 +
 .../winston/node_modules/async/LICENSE          |   19 +
 .../winston/node_modules/async/Makefile         |   25 +
 .../winston/node_modules/async/README.md        | 1021 +++
 .../winston/node_modules/async/index.js         |    3 +
 .../winston/node_modules/async/lib/async.js     |  692 ++
 .../winston/node_modules/async/package.json     |   31 +
 .../winston/node_modules/colors/MIT-LICENSE.txt |   22 +
 .../winston/node_modules/colors/ReadMe.md       |   77 +
 .../winston/node_modules/colors/colors.js       |  342 +
 .../winston/node_modules/colors/example.html    |   76 +
 .../winston/node_modules/colors/example.js      |   77 +
 .../winston/node_modules/colors/package.json    |   29 +
 .../winston/node_modules/colors/test.js         |   70 +
 .../node_modules/colors/themes/winston-dark.js  |   12 +
 .../node_modules/colors/themes/winston-light.js |   12 +
 .../winston/node_modules/cycle/README.md        |   49 +
 .../winston/node_modules/cycle/cycle.js         |  170 +
 .../winston/node_modules/cycle/package.json     |   28 +
 .../winston/node_modules/eyes/LICENSE           |   20 +
 .../winston/node_modules/eyes/Makefile          |    4 +
 .../winston/node_modules/eyes/README.md         |   73 +
 .../winston/node_modules/eyes/lib/eyes.js       |  236 +
 .../winston/node_modules/eyes/package.json      |   40 +
 .../winston/node_modules/eyes/test/eyes-test.js |   56 +
 .../winston/node_modules/pkginfo/.npmignore     |    2 +
 .../winston/node_modules/pkginfo/README.md      |   85 +
 .../winston/node_modules/pkginfo/docs/docco.css |  194 +
 .../node_modules/pkginfo/docs/pkginfo.html      |  101 +
 .../pkginfo/examples/all-properties.js          |   19 +
 .../pkginfo/examples/array-argument.js          |   20 +
 .../pkginfo/examples/multiple-properties.js     |   19 +
 .../pkginfo/examples/object-argument.js         |   22 +
 .../node_modules/pkginfo/examples/package.json  |   10 +
 .../pkginfo/examples/single-property.js         |   19 +
 .../winston/node_modules/pkginfo/lib/pkginfo.js |  132 +
 .../winston/node_modules/pkginfo/package.json   |   35 +
 .../node_modules/pkginfo/test/pkginfo-test.js   |   69 +
 .../winston/node_modules/request/LICENSE        |   55 +
 .../winston/node_modules/request/README.md      |  287 +
 .../winston/node_modules/request/aws.js         |  190 +
 .../winston/node_modules/request/aws2.js        |  128 +
 .../winston/node_modules/request/forever.js     |  103 +
 .../winston/node_modules/request/main.js        |  974 +++
 .../winston/node_modules/request/mimetypes.js   |  152 +
 .../winston/node_modules/request/oauth.js       |   34 +
 .../winston/node_modules/request/package.json   |   33 +
 .../node_modules/request/tests/googledoodle.png |  Bin 0 -> 38510 bytes
 .../winston/node_modules/request/tests/run.js   |   39 +
 .../node_modules/request/tests/server.js        |   82 +
 .../node_modules/request/tests/squid.conf       |   77 +
 .../node_modules/request/tests/ssl/ca/ca.cnf    |   20 +
 .../node_modules/request/tests/ssl/ca/ca.crl    |    0
 .../node_modules/request/tests/ssl/ca/ca.crt    |   17 +
 .../node_modules/request/tests/ssl/ca/ca.csr    |   13 +
 .../node_modules/request/tests/ssl/ca/ca.key    |   18 +
 .../node_modules/request/tests/ssl/ca/ca.srl    |    1 +
 .../request/tests/ssl/ca/server.cnf             |   19 +
 .../request/tests/ssl/ca/server.crt             |   16 +
 .../request/tests/ssl/ca/server.csr             |   11 +
 .../node_modules/request/tests/ssl/ca/server.js |   28 +
 .../request/tests/ssl/ca/server.key             |    9 +
 .../node_modules/request/tests/ssl/npm-ca.crt   |   16 +
 .../node_modules/request/tests/ssl/test.crt     |   15 +
 .../node_modules/request/tests/ssl/test.key     |   15 +
 .../node_modules/request/tests/test-body.js     |   80 +
 .../node_modules/request/tests/test-cookie.js   |   29 +
 .../request/tests/test-cookiejar.js             |   90 +
 .../node_modules/request/tests/test-defaults.js |   68 +
 .../node_modules/request/tests/test-errors.js   |   37 +
 .../node_modules/request/tests/test-headers.js  |   52 +
 .../request/tests/test-httpModule.js            |   94 +
 .../request/tests/test-https-strict.js          |   97 +
 .../node_modules/request/tests/test-https.js    |   86 +
 .../node_modules/request/tests/test-oauth.js    |  117 +
 .../node_modules/request/tests/test-params.js   |   92 +
 .../node_modules/request/tests/test-pipes.js    |  202 +
 .../node_modules/request/tests/test-pool.js     |   16 +
 .../node_modules/request/tests/test-proxy.js    |   39 +
 .../node_modules/request/tests/test-qs.js       |   28 +
 .../node_modules/request/tests/test-redirect.js |  154 +
 .../node_modules/request/tests/test-s3.js       |   13 +
 .../node_modules/request/tests/test-timeout.js  |   87 +
 .../node_modules/request/tests/test-toJSON.js   |   14 +
 .../node_modules/request/tests/test-tunnel.js   |   61 +
 .../winston/node_modules/request/tunnel.js      |  229 +
 .../winston/node_modules/request/uuid.js        |   19 +
 .../node_modules/request/vendor/cookie/index.js |   65 +
 .../node_modules/request/vendor/cookie/jar.js   |   72 +
 .../winston/node_modules/stack-trace/.npmignore |    1 +
 .../winston/node_modules/stack-trace/License    |   19 +
 .../winston/node_modules/stack-trace/Makefile   |   11 +
 .../winston/node_modules/stack-trace/Readme.md  |   98 +
 .../node_modules/stack-trace/lib/stack-trace.js |  111 +
 .../node_modules/stack-trace/package.json       |   31 +
 .../prompt/node_modules/winston/package.json    |   50 +
 .../node_modules/winston/test/cli-test.js       |   40 +
 .../node_modules/winston/test/container-test.js |   99 +
 .../winston/test/custom-timestamp-test.js       |   62 +
 .../node_modules/winston/test/exception-test.js |   47 +
 .../node_modules/winston/test/fixtures/.gitkeep |    0
 .../winston/test/fixtures/keys/agent2-cert.pem  |   13 +
 .../winston/test/fixtures/keys/agent2-key.pem   |    9 +
 .../winston/test/fixtures/logs/.gitkeep         |    0
 .../test/fixtures/scripts/default-exceptions.js |   21 +
 .../test/fixtures/scripts/exit-on-error.js      |   25 +
 .../test/fixtures/scripts/log-exceptions.js     |   25 +
 .../fixtures/scripts/unhandle-exceptions.js     |   26 +
 .../prompt/node_modules/winston/test/helpers.js |  173 +
 .../winston/test/log-exception-test.js          |   60 +
 .../winston/test/log-rewriter-test.js           |   98 +
 .../node_modules/winston/test/logger-test.js    |  200 +
 .../winston/test/transports/console-test.js     |   39 +
 .../test/transports/file-maxfiles-test.js       |  102 +
 .../test/transports/file-maxsize-test.js        |   82 +
 .../winston/test/transports/file-test.js        |   60 +
 .../winston/test/transports/transport.js        |  212 +
 .../winston/test/transports/webhook-test.js     |  125 +
 .../node_modules/winston/test/winston-test.js   |   98 +
 node_modules/prompt/package.json                |   48 +
 node_modules/prompt/test/helpers.js             |  156 +
 .../prompt/test/interactive-prompt-test.js      |   49 +
 node_modules/prompt/test/macros.js              |   82 +
 node_modules/prompt/test/prompt-test.js         |  668 ++
 node_modules/shelljs/.documentup.json           |    6 +
 node_modules/shelljs/.jshintrc                  |    7 +
 node_modules/shelljs/.npmignore                 |    2 +
 node_modules/shelljs/.travis.yml                |    5 +
 node_modules/shelljs/LICENSE                    |   26 +
 node_modules/shelljs/README.md                  |  552 ++
 node_modules/shelljs/bin/shjs                   |   51 +
 node_modules/shelljs/global.js                  |    3 +
 node_modules/shelljs/make.js                    |   47 +
 node_modules/shelljs/package.json               |   44 +
 node_modules/shelljs/scripts/generate-docs.js   |   21 +
 node_modules/shelljs/scripts/run-tests.js       |   50 +
 node_modules/shelljs/shell.js                   |  153 +
 node_modules/shelljs/src/cat.js                 |   43 +
 node_modules/shelljs/src/cd.js                  |   19 +
 node_modules/shelljs/src/chmod.js               |  208 +
 node_modules/shelljs/src/common.js              |  189 +
 node_modules/shelljs/src/cp.js                  |  200 +
 node_modules/shelljs/src/dirs.js                |  191 +
 node_modules/shelljs/src/echo.js                |   20 +
 node_modules/shelljs/src/error.js               |   10 +
 node_modules/shelljs/src/exec.js                |  181 +
 node_modules/shelljs/src/find.js                |   51 +
 node_modules/shelljs/src/grep.js                |   52 +
 node_modules/shelljs/src/ls.js                  |  126 +
 node_modules/shelljs/src/mkdir.js               |   68 +
 node_modules/shelljs/src/mv.js                  |   80 +
 node_modules/shelljs/src/popd.js                |    1 +
 node_modules/shelljs/src/pushd.js               |    1 +
 node_modules/shelljs/src/pwd.js                 |   11 +
 node_modules/shelljs/src/rm.js                  |  145 +
 node_modules/shelljs/src/sed.js                 |   43 +
 node_modules/shelljs/src/tempdir.js             |   56 +
 node_modules/shelljs/src/test.js                |   85 +
 node_modules/shelljs/src/to.js                  |   29 +
 node_modules/shelljs/src/toEnd.js               |   29 +
 node_modules/shelljs/src/which.js               |   79 +
 node_modules/validator/.npmignore               |    1 +
 node_modules/validator/LICENSE                  |   20 +
 node_modules/validator/README.md                |  221 +
 node_modules/validator/index.html               |   15 +
 node_modules/validator/index.js                 |    1 +
 node_modules/validator/lib/defaultError.js      |   33 +
 node_modules/validator/lib/entities.js          |  291 +
 node_modules/validator/lib/filter.js            |  102 +
 node_modules/validator/lib/index.js             |   16 +
 node_modules/validator/lib/validator.js         |   42 +
 node_modules/validator/lib/validators.js        |  155 +
 node_modules/validator/lib/xss.js               |  203 +
 node_modules/validator/package.json             |   60 +
 node_modules/validator/test.js                  |    4 +
 node_modules/validator/test/filter.test.js      |  145 +
 node_modules/validator/test/run.js              |    8 +
 node_modules/validator/test/validator.test.js   |  604 ++
 node_modules/validator/validator-min.js         |   22 +
 node_modules/validator/validator.js             |  865 ++
 node_modules/wrench/.npmignore                  |    2 +
 node_modules/wrench/LICENSE                     |   21 +
 node_modules/wrench/lib/wrench.js               |  426 +
 node_modules/wrench/lib/x.js                    |    1 +
 node_modules/wrench/package.json                |   40 +
 node_modules/wrench/readme.md                   |   63 +
 node_modules/wrench/tests/copydirsync_unix.js   |  210 +
 node_modules/wrench/tests/mkdir.js              |   26 +
 node_modules/wrench/tests/readdir.js            |   52 +
 node_modules/wrench/tests/readdir/bar.txt       |    0
 .../wrench/tests/readdir/foo/bar/ipsum.js       |    0
 node_modules/wrench/tests/readdir/foo/dolor.md  |    0
 node_modules/wrench/tests/readdir/foo/lorem.txt |    0
 node_modules/wrench/tests/runner.js             |    8 +
 node_modules/wrench/tests/shown/.hidden.txt     |    1 +
 .../wrench/tests/shown/.hidden/dolor.md         |    0
 node_modules/wrench/tests/shown/bar.txt         |    1 +
 .../wrench/tests/shown/foo/bar/ipsum.js         |    0
 node_modules/wrench/tests/shown/foo/dolor.md    |    0
 node_modules/wrench/tests/shown/foo/lorem.txt   |    0
 node_modules/wrench/tests/withsymlinks/test     |    1 +
 node_modules/xml2js/.npmignore                  |    2 +
 node_modules/xml2js/Cakefile                    |   12 +
 node_modules/xml2js/LICENSE                     |   19 +
 node_modules/xml2js/README.md                   |  139 +
 node_modules/xml2js/lib/xml2js.js               |  152 +
 node_modules/xml2js/node_modules/sax/AUTHORS    |   10 +
 node_modules/xml2js/node_modules/sax/LICENSE    |   32 +
 .../xml2js/node_modules/sax/LICENSE-W3C.html    |  188 +
 node_modules/xml2js/node_modules/sax/README.md  |  216 +
 .../xml2js/node_modules/sax/component.json      |   12 +
 .../sax/examples/big-not-pretty.xml             | 8002 ++++++++++++++++++
 .../xml2js/node_modules/sax/examples/example.js |   29 +
 .../node_modules/sax/examples/get-products.js   |   58 +
 .../node_modules/sax/examples/hello-world.js    |    4 +
 .../node_modules/sax/examples/not-pretty.xml    |    8 +
 .../node_modules/sax/examples/pretty-print.js   |   74 +
 .../node_modules/sax/examples/shopping.xml      |    2 +
 .../xml2js/node_modules/sax/examples/strict.dtd |  870 ++
 .../xml2js/node_modules/sax/examples/test.html  |   15 +
 .../xml2js/node_modules/sax/examples/test.xml   | 1254 +++
 node_modules/xml2js/node_modules/sax/lib/sax.js | 1410 +++
 .../xml2js/node_modules/sax/package.json        |   64 +
 .../node_modules/sax/test/attribute-name.js     |   33 +
 .../node_modules/sax/test/attribute-no-space.js |   75 +
 .../node_modules/sax/test/buffer-overrun.js     |   26 +
 .../xml2js/node_modules/sax/test/case.js        |   50 +
 .../node_modules/sax/test/cdata-chunked.js      |   11 +
 .../node_modules/sax/test/cdata-end-split.js    |   15 +
 .../node_modules/sax/test/cdata-fake-end.js     |   28 +
 .../node_modules/sax/test/cdata-multiple.js     |   15 +
 .../xml2js/node_modules/sax/test/cdata.js       |   10 +
 .../xml2js/node_modules/sax/test/cyrillic.js    |    8 +
 .../sax/test/duplicate-attribute.js             |   13 +
 .../xml2js/node_modules/sax/test/emoji.js       |   12 +
 .../node_modules/sax/test/end_empty_stream.js   |    5 +
 .../xml2js/node_modules/sax/test/entities.js    |   10 +
 .../xml2js/node_modules/sax/test/entity-mega.js |   16 +
 .../xml2js/node_modules/sax/test/flush.js       |   13 +
 .../xml2js/node_modules/sax/test/index.js       |   86 +
 .../xml2js/node_modules/sax/test/issue-23.js    |   43 +
 .../xml2js/node_modules/sax/test/issue-30.js    |   24 +
 .../xml2js/node_modules/sax/test/issue-35.js    |   15 +
 .../xml2js/node_modules/sax/test/issue-47.js    |   12 +
 .../xml2js/node_modules/sax/test/issue-49.js    |   31 +
 .../xml2js/node_modules/sax/test/issue-84.js    |   13 +
 .../node_modules/sax/test/parser-position.js    |   28 +
 .../sax/test/script-close-better.js             |   12 +
 .../xml2js/node_modules/sax/test/script.js      |   12 +
 .../sax/test/self-closing-child-strict.js       |   44 +
 .../node_modules/sax/test/self-closing-child.js |   44 +
 .../node_modules/sax/test/self-closing-tag.js   |   25 +
 .../node_modules/sax/test/stray-ending.js       |   17 +
 .../sax/test/trailing-attribute-no-value.js     |   10 +
 .../sax/test/trailing-non-whitespace.js         |   18 +
 .../node_modules/sax/test/unclosed-root.js      |   11 +
 .../xml2js/node_modules/sax/test/unquoted.js    |   18 +
 .../xml2js/node_modules/sax/test/utf8-split.js  |   32 +
 .../node_modules/sax/test/xmlns-as-tag-name.js  |   15 +
 .../node_modules/sax/test/xmlns-issue-41.js     |   68 +
 .../node_modules/sax/test/xmlns-rebinding.js    |   63 +
 .../node_modules/sax/test/xmlns-strict.js       |   74 +
 .../sax/test/xmlns-unbound-element.js           |   33 +
 .../node_modules/sax/test/xmlns-unbound.js      |   15 +
 .../sax/test/xmlns-xml-default-ns.js            |   31 +
 .../test/xmlns-xml-default-prefix-attribute.js  |   36 +
 .../sax/test/xmlns-xml-default-prefix.js        |   21 +
 .../sax/test/xmlns-xml-default-redefine.js      |   41 +
 node_modules/xml2js/package.json                |   92 +
 node_modules/xml2js/src/xml2js.coffee           |  142 +
 node_modules/xml2js/test/fixtures/sample.xml    |   34 +
 node_modules/xml2js/test/xml2js.test.coffee     |  154 +
 node_modules/zip/CHANGES.md                     |   25 +
 node_modules/zip/LICENSE                        |   19 +
 node_modules/zip/README.md                      |   14 +
 node_modules/zip/inflate.js                     |  754 ++
 .../zip/node_modules/q-io-buffer/LICENSE        |   19 +
 .../zip/node_modules/q-io-buffer/README         |    1 +
 .../zip/node_modules/q-io-buffer/package.json   |   35 +
 .../zip/node_modules/q-io-buffer/q-io-buffer.js |   61 +
 node_modules/zip/node_modules/q-io/CHANGES      |   26 +
 node_modules/zip/node_modules/q-io/LICENSE      |   19 +
 node_modules/zip/node_modules/q-io/README       |    4 +
 node_modules/zip/node_modules/q-io/package.json |   35 +
 node_modules/zip/node_modules/q-io/q-io.js      |  208 +
 .../zip/node_modules/q-io/test/issues/1.js      |   24 +
 node_modules/zip/node_modules/q/.npmignore      |    3 +
 node_modules/zip/node_modules/q/CHANGES.md      |  319 +
 node_modules/zip/node_modules/q/LICENSE         |   19 +
 node_modules/zip/node_modules/q/README.md       |  789 ++
 node_modules/zip/node_modules/q/TODO            |    1 +
 .../zip/node_modules/q/design/README.js         | 1026 +++
 node_modules/zip/node_modules/q/design/q0.js    |   22 +
 node_modules/zip/node_modules/q/design/q1.js    |   26 +
 node_modules/zip/node_modules/q/design/q2.js    |   33 +
 node_modules/zip/node_modules/q/design/q3.js    |   30 +
 node_modules/zip/node_modules/q/design/q4.js    |   48 +
 node_modules/zip/node_modules/q/design/q5.js    |   56 +
 node_modules/zip/node_modules/q/design/q6.js    |   64 +
 node_modules/zip/node_modules/q/design/q7.js    |  126 +
 .../q/examples/async-generators/0.html          |   43 +
 .../q/examples/async-generators/1-return.html   |   36 +
 .../async-generators/2-error-propagation.html   |   37 +
 .../async-generators/3-wishful-thinking.html    |   36 +
 .../q/examples/async-generators/README.md       |   66 +
 .../zip/node_modules/q/examples/delay.js        |   13 +
 .../zip/node_modules/q/examples/join.js         |   14 +
 .../zip/node_modules/q/examples/shallow-deep.js |   43 +
 .../zip/node_modules/q/examples/step1.js        |   16 +
 .../zip/node_modules/q/examples/step2.js        |   17 +
 .../zip/node_modules/q/examples/step3.js        |   22 +
 .../zip/node_modules/q/examples/then1.js        |   11 +
 .../zip/node_modules/q/examples/then2.js        |   12 +
 .../zip/node_modules/q/examples/then3.js        |   18 +
 .../zip/node_modules/q/examples/view1.js        |   15 +
 .../zip/node_modules/q/examples/view2.js        |   17 +
 .../zip/node_modules/q/examples/view3.js        |   25 +
 node_modules/zip/node_modules/q/markm-mzero.js  |  217 +
 .../node_modules/event-queue/.event-loop.js.un~ |  Bin 0 -> 9550 bytes
 .../event-queue/.event-queue.js.un~             |  Bin 0 -> 102648 bytes
 .../node_modules/event-queue/.package.json.un~  |  Bin 0 -> 87260 bytes
 .../q/node_modules/event-queue/.readme.md.un~   |  Bin 0 -> 25614 bytes
 .../q/node_modules/event-queue/.system.js.un~   |  Bin 0 -> 18136 bytes
 .../q/node_modules/event-queue/event-queue.js   |   97 +
 .../q/node_modules/event-queue/package.json     |   37 +
 .../q/node_modules/event-queue/readme.md        |    5 +
 node_modules/zip/node_modules/q/package.json    |   66 +
 node_modules/zip/node_modules/q/q.js            |  811 ++
 node_modules/zip/node_modules/q/q.min.js        |   11 +
 node_modules/zip/node_modules/q/ref_send.md     |   26 +
 node_modules/zip/node_modules/q/test.js         |   32 +
 node_modules/zip/node_modules/q/test/all.js     |   16 +
 .../zip/node_modules/q/test/issue/22.js         |   16 +
 node_modules/zip/node_modules/q/test/issue/9.js |   13 +
 node_modules/zip/node_modules/q/test/join.js    |   10 +
 node_modules/zip/node_modules/q/test/methods.js |  155 +
 .../node_modules/q/test/multiple-listeners.js   |   60 +
 .../zip/node_modules/q/test/promised-chains.js  |  131 +
 node_modules/zip/node_modules/q/test/reject.js  |   50 +
 .../zip/node_modules/q/test/resolve-reject.js   |  114 +
 .../zip/node_modules/q/test/thenable.js         |   73 +
 .../zip/node_modules/q/test/value-of.js         |   36 +
 node_modules/zip/package.json                   |   54 +
 node_modules/zip/test.js                        |    5 +
 node_modules/zip/zip.js                         |  385 +
 node_modules/zip/zip.zip                        |  Bin 0 -> 1522 bytes
 package.json                                    |   45 +
 1655 files changed, 101619 insertions(+), 101641 deletions(-)
----------------------------------------------------------------------



[14/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/cli-config.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/cli-config.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/cli-config.js
deleted file mode 100644
index ec4c40f..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/cli-config.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * cli-config.js: Config that conform to commonly used CLI logging levels.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var cliConfig = exports;
-
-cliConfig.levels = {
-  silly: 0,
-  input: 1,
-  verbose: 2,
-  prompt: 3,
-  info: 4,
-  data: 5,
-  help: 6,
-  warn: 7,
-  debug: 8,
-  error: 9
-};
-
-cliConfig.colors = {
-  silly: 'magenta',
-  input: 'grey',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/npm-config.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/npm-config.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/npm-config.js
deleted file mode 100644
index 176f9ac..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/npm-config.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * npm-config.js: Config that conform to npm logging levels.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var npmConfig = exports;
-
-npmConfig.levels = {
-  silly: 0,
-  verbose: 1,
-  info: 2,
-  warn: 3,
-  debug: 4,
-  error: 5
-};
-
-npmConfig.colors = {
-  silly: 'magenta',
-  verbose: 'cyan',
-  info: 'green',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/syslog-config.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/syslog-config.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/syslog-config.js
deleted file mode 100644
index 00c1f31..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config/syslog-config.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * syslog-config.js: Config that conform to syslog logging levels.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var syslogConfig = exports;
-
-syslogConfig.levels = {
-  debug: 0,
-  info: 1,
-  notice: 2,
-  warning: 3,
-  error: 4,
-  crit: 5,
-  alert: 6,
-  emerg: 7
-};
-
-syslogConfig.colors = {
-  debug: 'blue',
-  info: 'green',
-  notice: 'yellow',
-  warning: 'red',
-  error: 'red',
-  crit: 'red',
-  alert: 'yellow',
-  emerg: 'red'
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/container.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/container.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/container.js
deleted file mode 100644
index 574f25a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/container.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * container.js: Inversion of control container for winston logger instances
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var common = require('./common'),
-    winston = require('../winston');
-
-//
-// ### function Container (options)
-// #### @options {Object} Default pass-thru options for Loggers
-// Constructor function for the Container object responsible for managing
-// a set of `winston.Logger` instances based on string ids.
-//
-var Container = exports.Container = function (options) {
-  this.loggers = {};
-  this.options = options || {};
-  this.default = {
-    transports: [
-      new winston.transports.Console({
-        level: 'silly',
-        colorize: false
-      })
-    ]
-  }
-};
-
-//
-// ### function get / add (id, options)
-// #### @id {string} Id of the Logger to get
-// #### @options {Object} **Optional** Options for the Logger instance
-// Retreives a `winston.Logger` instance for the specified `id`. If
-// an instance does not exist, one is created.
-//
-Container.prototype.get = Container.prototype.add = function (id, options) {
-  if (!this.loggers[id]) {
-    options = common.clone(options || this.options || this.default);
-    options.transports = options.transports || [];
-
-    if (options.transports.length === 0 && (!options || !options['console'])) {
-      options.transports.push(this.default.transports[0]);
-    }
-
-    Object.keys(options).forEach(function (key) {
-      if (key === 'transports') {
-        return;
-      }
-
-      var name = common.capitalize(key);
-
-      if (!winston.transports[name]) {
-        throw new Error('Cannot add unknown transport: ' + name);
-      }
-
-      var namedOptions = options[key];
-      namedOptions.id = id;
-      options.transports.push(new (winston.transports[name])(namedOptions));
-    });
-
-    this.loggers[id] = new winston.Logger(options);
-  }
-
-  return this.loggers[id];
-};
-
-//
-// ### function close (id)
-// #### @id {string} **Optional** Id of the Logger instance to find
-// Returns a boolean value indicating if this instance
-// has a logger with the specified `id`.
-//
-Container.prototype.has = function (id) {
-  return !!this.loggers[id];
-};
-
-//
-// ### function close (id)
-// #### @id {string} **Optional** Id of the Logger instance to close
-// Closes a `Logger` instance with the specified `id` if it exists.
-// If no `id` is supplied then all Loggers are closed.
-//
-Container.prototype.close = function (id) {
-  var self = this;
-
-  function _close (id) {
-    if (!self.loggers[id]) {
-      return;
-    }
-
-    self.loggers[id].close();
-    delete self.loggers[id];
-  }
-
-  return id ? _close(id) : Object.keys(this.loggers).forEach(function (id) {
-    _close(id);
-  });
-};
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/exception.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/exception.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/exception.js
deleted file mode 100644
index 22717dd..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/exception.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * exception.js: Utility methods for gathing information about uncaughtExceptions.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var os = require('os'),
-    stackTrace = require('stack-trace');
-
-var exception = exports;
-
-exception.getAllInfo = function (err) {
-  return {
-    date:    new Date().toString(),
-    process: exception.getProcessInfo(),
-    os:      exception.getOsInfo(),
-    trace:   exception.getTrace(err),
-    stack:   err.stack && err.stack.split('\n')
-  };
-};
-
-exception.getProcessInfo = function () {
-  return {
-    pid:         process.pid,
-    uid:         process.getuid ? process.getuid() : null,
-    gid:         process.getgid ? process.getgid() : null,
-    cwd:         process.cwd(),
-    execPath:    process.execPath,
-    version:     process.version,
-    argv:        process.argv,
-    memoryUsage: process.memoryUsage()
-  };
-};
-
-exception.getOsInfo = function () {
-  return {
-    loadavg: os.loadavg(),
-    uptime:  os.uptime()
-  };
-};
-
-exception.getTrace = function (err) {
-  var trace = err ? stackTrace.parse(err) : stackTrace.get();
-  return trace.map(function (site) {
-    return {
-      column:   site.getColumnNumber(),
-      file:     site.getFileName(),
-      function: site.getFunctionName(),
-      line:     site.getLineNumber(),
-      method:   site.getMethodName(),
-      native:   site.isNative(),
-    }
-  });
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/logger.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/logger.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/logger.js
deleted file mode 100644
index 49e6d4c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/logger.js
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * logger.js: Core logger object used by winston.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var events = require('events'),
-    util = require('util'),
-    async = require('async'),
-    config = require('./config'),
-    common = require('./common'),
-    exception = require('./exception'),
-    Stream = require('stream').Stream;
-
-//
-// Time constants
-//
-var ticksPerMillisecond = 10000;
-
-//
-// ### function Logger (options)
-// #### @options {Object} Options for this instance.
-// Constructor function for the Logger object responsible
-// for persisting log messages and metadata to one or more transports.
-//
-var Logger = exports.Logger = function (options) {
-  events.EventEmitter.call(this);
-  options = options || {};
-
-  var self = this,
-      handleExceptions = false;
-
-  //
-  // Set Levels and default logging level
-  //
-  this.padLevels = options.padLevels || false;
-  this.setLevels(options.levels);
-  if (options.colors) {
-    config.addColors(options.colors);
-  }
-
-  //
-  // Hoist other options onto this instance.
-  //
-  this.level       = options.level || 'info';
-  this.emitErrs    = options.emitErrs || false;
-  this.stripColors = options.stripColors || false;
-  this.exitOnError = typeof options.exitOnError !== 'undefined'
-    ? options.exitOnError
-    : true;
-
-  //
-  // Setup other intelligent default settings.
-  //
-  this.transports        = {};
-  this.rewriters         = [];
-  this.exceptionHandlers = {};
-  this.profilers         = {};
-  this._names            = [];
-  this._hnames           = [];
-
-  if (options.transports) {
-    options.transports.forEach(function (transport) {
-      self.add(transport, null, true);
-
-      if (transport.handleExceptions) {
-        handleExceptions = true;
-      }
-    });
-  }
-
-  if (options.rewriters) {
-    options.rewriters.forEach(function (rewriter) {
-      self.addRewriter(rewriter);
-    });
-  }
-
-  if (options.exceptionHandlers) {
-    handleExceptions = true;
-    options.exceptionHandlers.forEach(function (handler) {
-      self._hnames.push(handler.name);
-      self.exceptionHandlers[handler.name] = handler;
-    });
-  }
-
-  if (options.handleExceptions || handleExceptions) {
-    this.handleExceptions();
-  }
-};
-
-//
-// Inherit from `events.EventEmitter`.
-//
-util.inherits(Logger, events.EventEmitter);
-
-//
-// ### function extend (target)
-// #### @target {Object} Target to extend.
-// Extends the target object with a 'log' method
-// along with a method for each level in this instance.
-//
-Logger.prototype.extend = function (target) {
-  var self = this;
-  ['log', 'profile', 'startTimer'].concat(Object.keys(this.levels)).forEach(function (method) {
-    target[method] = function () {
-      return self[method].apply(self, arguments);
-    };
-  });
-
-  return this;
-};
-
-//
-// ### function log (level, msg, [meta], callback)
-// #### @level {string} Level at which to log the message.
-// #### @msg {string} Message to log
-// #### @meta {Object} **Optional** Additional metadata to attach
-// #### @callback {function} Continuation to respond to when complete.
-// Core logging method exposed to Winston. Metadata is optional.
-//
-Logger.prototype.log = function (level, msg) {
-  var self = this,
-      callback,
-      meta;
-
-  if (arguments.length === 3) {
-    if (typeof arguments[2] === 'function') {
-      meta = {};
-      callback = arguments[2];
-    }
-    else if (typeof arguments[2] === 'object') {
-      meta = arguments[2];
-    }
-  }
-  else if (arguments.length === 4) {
-    meta = arguments[2];
-    callback = arguments[3];
-  }
-
-  // If we should pad for levels, do so
-  if (this.padLevels) {
-    msg = new Array(this.levelLength - level.length + 1).join(' ') + msg;
-  }
-
-  function onError (err) {
-    if (callback) {
-      callback(err);
-    }
-    else if (self.emitErrs) {
-      self.emit('error', err);
-    };
-  }
-
-  if (this.transports.length === 0) {
-    return onError(new Error('Cannot log with no transports.'));
-  }
-  else if (typeof self.levels[level] === 'undefined') {
-    return onError(new Error('Unknown log level: ' + level));
-  }
-
-  this.rewriters.forEach(function (rewriter) {
-    meta = rewriter(level, msg, meta);
-  });
-
-  //
-  // For consideration of terminal 'color" programs like colors.js,
-  // which can add ANSI escape color codes to strings, we destyle the
-  // ANSI color escape codes when `this.stripColors` is set.
-  //
-  // see: http://en.wikipedia.org/wiki/ANSI_escape_code
-  //
-  if (this.stripColors) {
-    var code = /\u001b\[(\d+(;\d+)*)?m/g;
-    msg = ('' + msg).replace(code, '');
-  }
-
-  //
-  // Log for each transport and emit 'logging' event
-  //
-  function emit(name, next) {
-    var transport = self.transports[name];
-    if ((transport.level && self.levels[transport.level] <= self.levels[level])
-      || (!transport.level && self.levels[self.level] <= self.levels[level])) {
-      transport.log(level, msg, meta, function (err) {
-        if (err) {
-          err.transport = transport;
-          cb(err);
-          return next();
-        }
-        self.emit('logging', transport, level, msg, meta);
-        next();
-      });
-    } else {
-      next();
-    }
-  }
-
-  //
-  // Respond to the callback
-  //
-  function cb(err) {
-    if (callback) {
-      if (err) return callback(err);
-      callback(null, level, msg, meta);
-    }
-    callback = null;
-  }
-
-  async.forEach(this._names, emit, cb);
-
-  return this;
-};
-
-//
-// ### function query (options, callback)
-// #### @options {Object} Query options for this instance.
-// #### @callback {function} Continuation to respond to when complete.
-// Queries the all transports for this instance with the specified `options`.
-// This will aggregate each transport's results into one object containing
-// a property per transport.
-//
-Logger.prototype.query = function (options, callback) {
-  if (typeof options === 'function') {
-    callback = options;
-    options = {};
-  }
-
-  var self = this,
-      options = options || {},
-      results = {},
-      query = common.clone(options.query) || {},
-      transports;
-
-  //
-  // Helper function to query a single transport
-  //
-  function queryTransport(transport, next) {
-    if (options.query) {
-      options.query = transport.formatQuery(query);
-    }
-
-    transport.query(options, function (err, results) {
-      if (err) {
-        return next(err);
-      }
-
-      next(null, transport.formatResults(results, options.format));
-    });
-  }
-
-  //
-  // Helper function to accumulate the results from
-  // `queryTransport` into the `results`.
-  //
-  function addResults (transport, next) {
-    queryTransport(transport, function (err, result) {
-      result = err || result;
-      if (result) {
-        results[transport.name] = result;
-      }
-      next();
-    });
-  }
-
-  //
-  // If an explicit transport is being queried then
-  // respond with the results from only that transport
-  //
-  if (options.transport) {
-    options.transport = options.transport.toLowerCase();
-    return queryTransport(this.transports[options.transport], callback);
-  }
-
-  //
-  // Create a list of all transports for this instance.
-  //
-  transports = this._names.map(function (name) {
-    return self.transports[name];
-  }).filter(function (transport) {
-    return !!transport.query;
-  });
-
-  //
-  // Iterate over the transports in parallel setting the
-  // appropriate key in the `results`
-  //
-  async.forEach(transports, addResults, function () {
-    callback(null, results);
-  });
-};
-
-//
-// ### function stream (options)
-// #### @options {Object} Stream options for this instance.
-// Returns a log stream for all transports. Options object is optional.
-//
-Logger.prototype.stream = function (options) {
-  var self = this,
-      options = options || {},
-      out = new Stream,
-      streams = [],
-      transports;
-
-  if (options.transport) {
-    var transport = this.transports[options.transport];
-    delete options.transport;
-    if (transport && transport.stream) {
-      return transport.stream(options);
-    }
-  }
-
-  out._streams = streams;
-  out.destroy = function () {
-    var i = streams.length;
-    while (i--) streams[i].destroy();
-  };
-
-  //
-  // Create a list of all transports for this instance.
-  //
-  transports = this._names.map(function (name) {
-    return self.transports[name];
-  }).filter(function (transport) {
-    return !!transport.stream;
-  });
-
-  transports.forEach(function (transport) {
-    var stream = transport.stream(options);
-    if (!stream) return;
-
-    streams.push(stream);
-
-    stream.on('log', function (log) {
-      log.transport = log.transport || [];
-      log.transport.push(transport.name);
-      out.emit('log', log);
-    });
-
-    stream.on('error', function (err) {
-      err.transport = err.transport || [];
-      err.transport.push(transport.name);
-      out.emit('error', err);
-    });
-  });
-
-  return out;
-};
-
-//
-// ### function close ()
-// Cleans up resources (streams, event listeners) for all
-// transports associated with this instance (if necessary).
-//
-Logger.prototype.close = function () {
-  var self = this;
-
-  this._names.forEach(function (name) {
-    var transport = self.transports[name];
-    if (transport && transport.close) {
-      transport.close();
-    }
-  });
-};
-
-//
-// ### function handleExceptions ()
-// Handles `uncaughtException` events for the current process
-//
-Logger.prototype.handleExceptions = function () {
-  var args = Array.prototype.slice.call(arguments),
-      handlers = [],
-      self = this;
-
-  args.forEach(function (a) {
-    if (Array.isArray(a)) {
-      handlers = handlers.concat(a);
-    }
-    else {
-      handlers.push(a);
-    }
-  });
-
-  handlers.forEach(function (handler) {
-    self.exceptionHandlers[handler.name] = handler;
-  });
-
-  this._hnames = Object.keys(self.exceptionHandlers);
-
-  if (!this.catchExceptions) {
-    this.catchExceptions = this._uncaughtException.bind(this);
-    process.on('uncaughtException', this.catchExceptions);
-  }
-};
-
-//
-// ### function unhandleExceptions ()
-// Removes any handlers to `uncaughtException` events
-// for the current process
-//
-Logger.prototype.unhandleExceptions = function () {
-  var self = this;
-
-  if (this.catchExceptions) {
-    Object.keys(this.exceptionHandlers).forEach(function (name) {
-      if (handler.close) {
-        handler.close();
-      }
-    });
-
-    this.exceptionHandlers = {};
-    Object.keys(this.transports).forEach(function (name) {
-      var transport = self.transports[name];
-      if (transport.handleExceptions) {
-        transport.handleExceptions = false;
-      }
-    })
-
-    process.removeListener('uncaughtException', this.catchExceptions);
-    this.catchExceptions = false;
-  }
-};
-
-//
-// ### function add (transport, [options])
-// #### @transport {Transport} Prototype of the Transport object to add.
-// #### @options {Object} **Optional** Options for the Transport to add.
-// #### @instance {Boolean} **Optional** Value indicating if `transport` is already instantiated.
-// Adds a transport of the specified type to this instance.
-//
-Logger.prototype.add = function (transport, options, created) {
-  var instance = created ? transport : (new (transport)(options));
-
-  if (!instance.name && !instance.log) {
-    throw new Error('Unknown transport with no log() method');
-  }
-  else if (this.transports[instance.name]) {
-    throw new Error('Transport already attached: ' + instance.name);
-  }
-
-  this.transports[instance.name] = instance;
-  this._names = Object.keys(this.transports);
-
-  //
-  // Listen for the `error` event on the new Transport
-  //
-  instance._onError = this._onError.bind(this, instance)
-  instance.on('error', instance._onError);
-
-  //
-  // If this transport has `handleExceptions` set to `true`
-  // and we are not already handling exceptions, do so.
-  //
-  if (instance.handleExceptions && !this.catchExceptions) {
-    this.handleExceptions();
-  }
-
-  return this;
-};
-
-//
-// ### function addRewriter (transport, [options])
-// #### @transport {Transport} Prototype of the Transport object to add.
-// #### @options {Object} **Optional** Options for the Transport to add.
-// #### @instance {Boolean} **Optional** Value indicating if `transport` is already instantiated.
-// Adds a transport of the specified type to this instance.
-//
-Logger.prototype.addRewriter = function (rewriter) {
-  this.rewriters.push(rewriter);
-}
-
-//
-// ### function clear ()
-// Remove all transports from this instance
-//
-Logger.prototype.clear = function () {
-  for (var name in this.transports) {
-    this.remove({ name: name });
-  }
-};
-
-//
-// ### function remove (transport)
-// #### @transport {Transport} Transport to remove.
-// Removes a transport of the specified type from this instance.
-//
-Logger.prototype.remove = function (transport) {
-  var name = transport.name || transport.prototype.name;
-
-  if (!this.transports[name]) {
-    throw new Error('Transport ' + name + ' not attached to this instance');
-  }
-
-  var instance = this.transports[name];
-  delete this.transports[name];
-  this._names = Object.keys(this.transports);
-
-  if (instance.close) {
-    instance.close();
-  }
-
-  instance.removeListener('error', instance._onError);
-  return this;
-};
-
-var ProfileHandler = function (logger) {
-  this.logger = logger;
-
-  this.start = Date.now();
-
-  this.done = function (msg) {
-    var args, callback, meta;
-    args     = Array.prototype.slice.call(arguments);
-    callback = typeof args[args.length - 1] === 'function' ? args.pop() : null;
-    meta     = typeof args[args.length - 1] === 'object' ? args.pop() : {};
-
-    meta.duration = (Date.now()) - this.start + 'ms';
-
-    return this.logger.info(msg, meta, callback);
-  }
-}
-
-Logger.prototype.startTimer = function () {
-  return new ProfileHandler(this);
-}
-
-//
-// ### function profile (id, [msg, meta, callback])
-// #### @id {string} Unique id of the profiler
-// #### @msg {string} **Optional** Message to log
-// #### @meta {Object} **Optional** Additional metadata to attach
-// #### @callback {function} **Optional** Continuation to respond to when complete.
-// Tracks the time inbetween subsequent calls to this method
-// with the same `id` parameter. The second call to this method
-// will log the difference in milliseconds along with the message.
-//
-Logger.prototype.profile = function (id) {
-  var now = Date.now(), then, args,
-      msg, meta, callback;
-
-  if (this.profilers[id]) {
-    then = this.profilers[id];
-    delete this.profilers[id];
-
-    // Support variable arguments: msg, meta, callback
-    args     = Array.prototype.slice.call(arguments);
-    callback = typeof args[args.length - 1] === 'function' ? args.pop() : null;
-    meta     = typeof args[args.length - 1] === 'object' ? args.pop() : {};
-    msg      = args.length === 2 ? args[1] : id;
-
-    // Set the duration property of the metadata
-    meta.duration = now - then + 'ms';
-    return this.info(msg, meta, callback);
-  }
-  else {
-    this.profilers[id] = now;
-  }
-
-  return this;
-};
-
-//
-// ### function setLevels (target)
-// #### @target {Object} Target levels to use on this instance
-// Sets the `target` levels specified on this instance.
-//
-Logger.prototype.setLevels = function (target) {
-  return common.setLevels(this, this.levels, target);
-};
-
-//
-// ### function cli ()
-// Configures this instance to have the default
-// settings for command-line interfaces: no timestamp,
-// colors enabled, padded output, and additional levels.
-//
-Logger.prototype.cli = function () {
-  this.padLevels = true;
-  this.setLevels(config.cli.levels);
-  config.addColors(config.cli.colors);
-
-  if (this.transports.console) {
-    this.transports.console.colorize = true;
-    this.transports.console.timestamp = false;
-  }
-
-  return this;
-};
-
-//
-// ### @private function _uncaughtException (err)
-// #### @err {Error} Error to handle
-// Logs all relevant information around the `err` and
-// exits the current process.
-//
-Logger.prototype._uncaughtException = function (err) {
-  var self = this,
-      responded = false,
-      info = exception.getAllInfo(err),
-      handlers = this._getExceptionHandlers(),
-      timeout,
-      doExit;
-
-  //
-  // Calculate if we should exit on this error
-  //
-  doExit = typeof this.exitOnError === 'function'
-    ? this.exitOnError(err)
-    : this.exitOnError;
-
-  function logAndWait(transport, next) {
-    transport.logException('uncaughtException', info, next, err);
-  }
-
-  function gracefulExit() {
-    if (doExit && !responded) {
-      //
-      // Remark: Currently ignoring any exceptions from transports
-      //         when catching uncaught exceptions.
-      //
-      clearTimeout(timeout);
-      responded = true;
-      process.exit(1);
-    }
-  }
-
-  if (!handlers || handlers.length === 0) {
-    return gracefulExit();
-  }
-
-  //
-  // Log to all transports and allow the operation to take
-  // only up to `3000ms`.
-  //
-  async.forEach(handlers, logAndWait, gracefulExit);
-  if (doExit) {
-    timeout = setTimeout(gracefulExit, 3000);
-  }
-};
-
-//
-// ### @private function _getExceptionHandlers ()
-// Returns the list of transports and exceptionHandlers
-// for this instance.
-//
-Logger.prototype._getExceptionHandlers = function () {
-  var self = this;
-
-  return this._hnames.map(function (name) {
-    return self.exceptionHandlers[name];
-  }).concat(this._names.map(function (name) {
-    return self.transports[name].handleExceptions && self.transports[name];
-  })).filter(Boolean);
-};
-
-//
-// ### @private function _onError (transport, err)
-// #### @transport {Object} Transport on which the error occured
-// #### @err {Error} Error that occurred on the transport
-// Bubbles the error, `err`, that occured on the specified `transport`
-// up from this instance if `emitErrs` has been set.
-//
-Logger.prototype._onError = function (transport, err) {
-  if (this.emitErrs) {
-    this.emit('error', err, transport);
-  }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports.js
deleted file mode 100644
index 1bd9f05..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * transports.js: Set of all transports Winston knows about
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var fs = require('fs'),
-    path = require('path'),
-    common = require('./common');
-
-var transports = exports;
-
-//
-// Setup all transports as lazy-loaded getters.
-//
-fs.readdirSync(path.join(__dirname, 'transports')).forEach(function (file) {
-  var transport = file.replace('.js', ''),
-      name  = common.capitalize(transport);
-
-  if (transport === 'transport') {
-    return;
-  }
-
-  transports.__defineGetter__(name, function () {
-    return require('./transports/' + transport)[name];
-  });
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/console.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/console.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/console.js
deleted file mode 100644
index 43cdee3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/console.js
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * console.js: Transport for outputting to the console
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var events = require('events'),
-    util = require('util'),
-    colors = require('colors'),
-    common = require('../common'),
-    Transport = require('./transport').Transport;
-
-//
-// ### function Console (options)
-// #### @options {Object} Options for this instance.
-// Constructor function for the Console transport object responsible
-// for persisting log messages and metadata to a terminal or TTY.
-//
-var Console = exports.Console = function (options) {
-  Transport.call(this, options);
-  options = options || {};
-
-  this.name        = 'console';
-  this.json        = options.json        || false;
-  this.colorize    = options.colorize    || false;
-  this.prettyPrint = options.prettyPrint || false;
-  this.timestamp   = typeof options.timestamp !== 'undefined' ? options.timestamp : false;
-
-  if (this.json) {
-    this.stringify = options.stringify || function (obj) {
-      return JSON.stringify(obj, null, 2);
-    };
-  }
-};
-
-//
-// Inherit from `winston.Transport`.
-//
-util.inherits(Console, Transport);
-
-//
-// Expose the name of this Transport on the prototype
-//
-Console.prototype.name = 'console';
-
-//
-// ### function log (level, msg, [meta], callback)
-// #### @level {string} Level at which to log the message.
-// #### @msg {string} Message to log
-// #### @meta {Object} **Optional** Additional metadata to attach
-// #### @callback {function} Continuation to respond to when complete.
-// Core logging method exposed to Winston. Metadata is optional.
-//
-Console.prototype.log = function (level, msg, meta, callback) {
-  if (this.silent) {
-    return callback(null, true);
-  }
-
-  var self = this,
-      output;
-
-  output = common.log({
-    colorize:    this.colorize,
-    json:        this.json,
-    level:       level,
-    message:     msg,
-    meta:        meta,
-    stringify:   this.stringify,
-    timestamp:   this.timestamp,
-    prettyPrint: this.prettyPrint,
-    raw:         this.raw
-  });
-
-  if (level === 'error' || level === 'debug') {
-    console.error(output);
-  } else {
-    console.log(output);
-  }
-
-  //
-  // Emit the `logged` event immediately because the event loop
-  // will not exit until `process.stdout` has drained anyway.
-  //
-  self.emit('logged');
-  callback(null, true);
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/file.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/file.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/file.js
deleted file mode 100644
index 7080e28..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/file.js
+++ /dev/null
@@ -1,575 +0,0 @@
-/*
- * file.js: Transport for outputting to a local log file
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var events = require('events'),
-    fs = require('fs'),
-    path = require('path'),
-    util = require('util'),
-    colors = require('colors'),
-    common = require('../common'),
-    Transport = require('./transport').Transport,
-    Stream = require('stream').Stream;
-
-//
-// ### function File (options)
-// #### @options {Object} Options for this instance.
-// Constructor function for the File transport object responsible
-// for persisting log messages and metadata to one or more files.
-//
-var File = exports.File = function (options) {
-  Transport.call(this, options);
-
-  //
-  // Helper function which throws an `Error` in the event
-  // that any of the rest of the arguments is present in `options`.
-  //
-  function throwIf (target /*, illegal... */) {
-    Array.prototype.slice.call(arguments, 1).forEach(function (name) {
-      if (options[name]) {
-        throw new Error('Cannot set ' + name + ' and ' + target + 'together');
-      }
-    });
-  }
-
-  if (options.filename || options.dirname) {
-    throwIf('filename or dirname', 'stream');
-    this._basename = this.filename = path.basename(options.filename) || 'winston.log';
-    this.dirname   = options.dirname || path.dirname(options.filename);
-    this.options   = options.options || { flags: 'a' };
-  }
-  else if (options.stream) {
-    throwIf('stream', 'filename', 'maxsize');
-    this._stream = options.stream;
-
-    //
-    // We need to listen for drain events when
-    // write() returns false. This can make node
-    // mad at times.
-    //
-    this._stream.setMaxListeners(Infinity);
-  }
-  else {
-    throw new Error('Cannot log to file without filename or stream.');
-  }
-
-  this.json        = options.json !== false;
-  this.colorize    = options.colorize    || false;
-  this.maxsize     = options.maxsize     || null;
-  this.maxFiles    = options.maxFiles    || null;
-  this.prettyPrint = options.prettyPrint || false;
-  this.timestamp   = options.timestamp != null ? options.timestamp : true;
-  
-  if (this.json) {
-    this.stringify = options.stringify;
-  }
-
-  //
-  // Internal state variables representing the number
-  // of files this instance has created and the current
-  // size (in bytes) of the current logfile.
-  //
-  this._size     = 0;
-  this._created  = 0;
-  this._buffer   = [];
-  this._draining = false;
-};
-
-//
-// Inherit from `winston.Transport`.
-//
-util.inherits(File, Transport);
-
-//
-// Expose the name of this Transport on the prototype
-//
-File.prototype.name = 'file';
-
-//
-// ### function log (level, msg, [meta], callback)
-// #### @level {string} Level at which to log the message.
-// #### @msg {string} Message to log
-// #### @meta {Object} **Optional** Additional metadata to attach
-// #### @callback {function} Continuation to respond to when complete.
-// Core logging method exposed to Winston. Metadata is optional.
-//
-File.prototype.log = function (level, msg, meta, callback) {
-  if (this.silent) {
-    return callback(null, true);
-  }
-
-  var self = this;
-
-  var output = common.log({
-    level:       level,
-    message:     msg,
-    meta:        meta,
-    json:        this.json,
-    colorize:    this.colorize,
-    prettyPrint: this.prettyPrint,
-    timestamp:   this.timestamp,
-    stringify:   this.stringify
-  }) + '\n';
-
-  this._size += output.length;
-
-  if (!this.filename) {
-    //
-    // If there is no `filename` on this instance then it was configured
-    // with a raw `WriteableStream` instance and we should not perform any
-    // size restrictions.
-    //
-    this._write(output, callback);
-    this._lazyDrain();
-  }
-  else {
-    this.open(function (err) {
-      if (err) {
-        //
-        // If there was an error enqueue the message
-        //
-        return self._buffer.push([output, callback]);
-      }
-
-      self._write(output, callback);
-      self._lazyDrain();
-    });
-  }
-};
-
-//
-// ### function _write (data, cb)
-// #### @data {String|Buffer} Data to write to the instance's stream.
-// #### @cb {function} Continuation to respond to when complete.
-// Write to the stream, ensure execution of a callback on completion.
-//
-File.prototype._write = function(data, callback) {
-  // If this is a file write stream, we could use the builtin
-  // callback functionality, however, the stream is not guaranteed
-  // to be an fs.WriteStream.
-  var ret = this._stream.write(data);
-  if (!callback) return;
-  if (ret === false) {
-    return this._stream.once('drain', function() {
-      callback(null, true);
-    });
-  }
-  callback(null, true);
-};
-
-//
-// ### function query (options, callback)
-// #### @options {Object} Loggly-like query options for this instance.
-// #### @callback {function} Continuation to respond to when complete.
-// Query the transport. Options object is optional.
-//
-File.prototype.query = function (options, callback) {
-  if (typeof options === 'function') {
-    callback = options;
-    options = {};
-  }
-
-  var file = path.join(this.dirname, this.filename),
-      options = this.normalizeQuery(options),
-      buff = '',
-      results = [],
-      row = 0;
-
-  var stream = fs.createReadStream(file, {
-    encoding: 'utf8'
-  });
-
-  stream.on('error', function (err) {
-    if (stream.readable) {
-      stream.destroy();
-    }
-    if (!callback) return;
-    return err.code !== 'ENOENT'
-      ? callback(err)
-      : callback(null, results);
-  });
-
-  stream.on('data', function (data) {
-    var data = (buff + data).split(/\n+/),
-        l = data.length - 1,
-        i = 0;
-
-    for (; i < l; i++) {
-      if (!options.start || row >= options.start) {
-        add(data[i]);
-      }
-      row++;
-    }
-
-    buff = data[l];
-  });
-
-  stream.on('close', function () {
-    if (buff) add(buff, true);
-    if (options.order === 'desc') {
-      results = results.reverse();
-    }
-    if (callback) callback(null, results);
-  });
-
-  function add(buff, attempt) {
-    try {
-      var log = JSON.parse(buff);
-      if (check(log)) push(log);
-    } catch (e) {
-      if (!attempt) {
-        stream.emit('error', e);
-      }
-    }
-  }
-
-  function push(log) {
-    if (options.rows && results.length >= options.rows) {
-      if (stream.readable) {
-        stream.destroy();
-      }
-      return;
-    }
-
-    if (options.fields) {
-      var obj = {};
-      options.fields.forEach(function (key) {
-        obj[key] = log[key];
-      });
-      log = obj;
-    }
-
-    results.push(log);
-  }
-
-  function check(log) {
-    if (!log) return;
-
-    if (typeof log !== 'object') return;
-
-    var time = new Date(log.timestamp);
-    if ((options.from && time < options.from)
-        || (options.until && time > options.until)) {
-      return;
-    }
-
-    return true;
-  }
-};
-
-//
-// ### function _tail (options, callback)
-// #### @options {Object} Options for tail.
-// #### @callback {function} Callback to execute on every line.
-// `tail -f` a file. Options must include file.
-//
-File.prototype._tail = function tail(options, callback) {
-  var stream = fs.createReadStream(options.file, { encoding: 'utf8' }),
-      buff = '',
-      destroy,
-      row = 0;
-
-  destroy = stream.destroy.bind(stream);
-  stream.destroy = function () {};
-
-  if (options.start === -1) {
-    delete options.start;
-  }
-
-  if (options.start == null) {
-    stream.once('end', bind);
-  } else {
-    bind();
-  }
-
-  function bind() {
-    stream.on('data', function (data) {
-      var data = (buff + data).split(/\n+/),
-          l = data.length - 1,
-          i = 0;
-
-      for (; i < l; i++) {
-        if (options.start == null || row > options.start) {
-          stream.emit('line', data[i]);
-        }
-        row++;
-      }
-
-      buff = data[l];
-    });
-
-    stream.on('line', function (data) {
-      if (callback) callback(data);
-    });
-
-    stream.on('error', function (err) {
-      destroy();
-    });
-
-    stream.on('end', function () {
-      if (buff) {
-        stream.emit('line', buff);
-        buff = '';
-      }
-
-      resume();
-    });
-
-    resume();
-  }
-
-  function resume() {
-    setTimeout(function () {
-      stream.resume();
-    }, 1000);
-  }
-
-  return destroy;
-};
-
-//
-// ### function stream (options)
-// #### @options {Object} Stream options for this instance.
-// Returns a log stream for this transport. Options object is optional.
-//
-File.prototype.stream = function (options) {
-  var file = path.join(this.dirname, this.filename),
-      options = options || {},
-      stream = new Stream;
-
-  var tail = {
-    file: file,
-    start: options.start
-  };
-
-  stream.destroy = this._tail(tail, function (line) {
-    try {
-      stream.emit('data', line);
-      line = JSON.parse(line);
-      stream.emit('log', line);
-    } catch (e) {
-      stream.emit('error', e);
-    }
-  });
-
-  return stream;
-};
-
-//
-// ### function open (callback)
-// #### @callback {function} Continuation to respond to when complete
-// Checks to see if a new file needs to be created based on the `maxsize`
-// (if any) and the current size of the file used.
-//
-File.prototype.open = function (callback) {
-  if (this.opening) {
-    //
-    // If we are already attempting to open the next
-    // available file then respond with a value indicating
-    // that the message should be buffered.
-    //
-    return callback(true);
-  }
-  else if (!this._stream || (this.maxsize && this._size >= this.maxsize)) {
-    //
-    // If we dont have a stream or have exceeded our size, then create
-    // the next stream and respond with a value indicating that
-    // the message should be buffered.
-    //
-    callback(true);
-    return this._createStream();
-  }
-
-  //
-  // Otherwise we have a valid (and ready) stream.
-  //
-  callback();
-};
-
-//
-// ### function close ()
-// Closes the stream associated with this instance.
-//
-File.prototype.close = function () {
-  var self = this;
-
-  if (this._stream) {
-    this._stream.end();
-    this._stream.destroySoon();
-
-    this._stream.once('drain', function () {
-      self.emit('flush');
-      self.emit('closed');
-    });
-  }
-};
-
-//
-// ### function flush ()
-// Flushes any buffered messages to the current `stream`
-// used by this instance.
-//
-File.prototype.flush = function () {
-  var self = this;
-
-  //
-  // Iterate over the `_buffer` of enqueued messaged
-  // and then write them to the newly created stream.
-  //
-  this._buffer.forEach(function (item) {
-    var str = item[0],
-        callback = item[1];
-
-    process.nextTick(function () {
-      self._write(str, callback);
-      self._size += str.length;
-    });
-  });
-
-  //
-  // Quickly truncate the `_buffer` once the write operations
-  // have been started
-  //
-  self._buffer.length = 0;
-
-  //
-  // When the stream has drained we have flushed
-  // our buffer.
-  //
-  self._stream.once('drain', function () {
-    self.emit('flush');
-    self.emit('logged');
-  });
-};
-
-//
-// ### @private function _createStream ()
-// Attempts to open the next appropriate file for this instance
-// based on the common state (such as `maxsize` and `_basename`).
-//
-File.prototype._createStream = function () {
-  var self = this;
-  this.opening = true;
-
-  (function checkFile (target) {
-    var fullname = path.join(self.dirname, target);
-
-    //
-    // Creates the `WriteStream` and then flushes any
-    // buffered messages.
-    //
-    function createAndFlush (size) {
-      if (self._stream) {
-        self._stream.end();
-        self._stream.destroySoon();
-      }
-
-      self._size = size;
-      self.filename = target;
-      self._stream = fs.createWriteStream(fullname, self.options);
-
-      //
-      // We need to listen for drain events when
-      // write() returns false. This can make node
-      // mad at times.
-      //
-      self._stream.setMaxListeners(Infinity);
-
-      //
-      // When the current stream has finished flushing
-      // then we can be sure we have finished opening
-      // and thus can emit the `open` event.
-      //
-      self.once('flush', function () {
-        self.opening = false;
-        self.emit('open', fullname);
-      });
-
-      //
-      // Remark: It is possible that in the time it has taken to find the
-      // next logfile to be written more data than `maxsize` has been buffered,
-      // but for sensible limits (10s - 100s of MB) this seems unlikely in less
-      // than one second.
-      //
-      self.flush();
-    }
-
-    fs.stat(fullname, function (err, stats) {
-      if (err) {
-        if (err.code !== 'ENOENT') {
-          return self.emit('error', err);
-        }
-
-        return createAndFlush(0);
-      }
-
-      if (!stats || (self.maxsize && stats.size >= self.maxsize)) {
-        //
-        // If `stats.size` is greater than the `maxsize` for
-        // this instance then try again
-        //
-        return checkFile(self._getFile(true));
-      }
-
-      createAndFlush(stats.size);
-    });
-  })(this._getFile());
-};
-
-//
-// ### @private function _getFile ()
-// Gets the next filename to use for this instance
-// in the case that log filesizes are being capped.
-//
-File.prototype._getFile = function (inc) {
-  var self = this,
-      ext = path.extname(this._basename),
-      basename = path.basename(this._basename, ext),
-      remaining;
-
-  if (inc) {
-    //
-    // Increment the number of files created or
-    // checked by this instance.
-    //
-    // Check for maxFiles option and delete file
-    if (this.maxFiles && (this._created >= (this.maxFiles - 1))) {
-      remaining = this._created - (this.maxFiles - 1);
-      if (remaining === 0) {
-        fs.unlinkSync(path.join(this.dirname, basename + ext));
-      }
-      else {
-        fs.unlinkSync(path.join(this.dirname, basename + remaining + ext));
-      }
-    }
-
-    this._created += 1;
-  }
-
-  return this._created
-    ? basename + this._created + ext
-    : basename + ext;
-};
-
-//
-// ### @private function _lazyDrain ()
-// Lazily attempts to emit the `logged` event when `this.stream` has
-// drained. This is really just a simple mutex that only works because
-// Node.js is single-threaded.
-//
-File.prototype._lazyDrain = function () {
-  var self = this;
-
-  if (!this._draining && this._stream) {
-    this._draining = true;
-
-    this._stream.once('drain', function () {
-      this._draining = false;
-      self.emit('logged');
-    });
-  }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/http.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/http.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/http.js
deleted file mode 100644
index 9b9c61d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/http.js
+++ /dev/null
@@ -1,200 +0,0 @@
-var util = require('util'),
-    winston = require('../../winston'),
-    request = require('request'),
-    Stream = require('stream').Stream;
-
-//
-// ### function Http (options)
-// #### @options {Object} Options for this instance.
-// Constructor function for the Http transport object responsible
-// for persisting log messages and metadata to a terminal or TTY.
-//
-var Http = exports.Http = function (options) {
-  options = options || {};
-
-  this.name = 'http';
-  this.ssl = !!options.ssl;
-  this.host = options.host || 'localhost';
-  this.port = options.port;
-  this.auth = options.auth;
-  this.path = options.path || '';
-  
-  if (!this.port) {
-    this.port = this.ssl ? 443 : 80;
-  }
-};
-
-util.inherits(Http, winston.Transport);
-
-//
-// Expose the name of this Transport on the prototype
-//
-Http.prototype.name = 'http';
-
-//
-// ### function _request (options, callback)
-// #### @callback {function} Continuation to respond to when complete.
-// Make a request to a winstond server or any http server which can
-// handle json-rpc.
-//
-Http.prototype._request = function (options, callback) {
-  var options = options || {},
-      auth = options.auth || this.auth,
-      path = options.path || this.path || '';
-
-  delete options.auth;
-  delete options.path;
-
-  options = { json: options };
-  options.method = 'POST';
-  options.url = 'http'
-    + (this.ssl ? 's' : '')
-    + '://'
-    + (auth ? auth.username + ':' : '')
-    + (auth ? auth.password + '@' : '')
-    + this.host
-    + ':'
-    + this.port
-    + '/'
-    + path;
-
-  return request(options, callback);
-};
-
-//
-// ### function log (level, msg, [meta], callback)
-// #### @level {string} Level at which to log the message.
-// #### @msg {string} Message to log
-// #### @meta {Object} **Optional** Additional metadata to attach
-// #### @callback {function} Continuation to respond to when complete.
-// Core logging method exposed to Winston. Metadata is optional.
-//
-Http.prototype.log = function (level, msg, meta, callback) {
-  var self = this;
-
-  if (typeof meta === 'function') {
-    callback = meta;
-    meta = {};
-  }
-
-  var options = {
-    method: 'collect',
-    params: {
-      level: level,
-      message: msg,
-      meta: meta
-    }
-  };
-
-  // hack
-  if (meta.auth) {
-    options.auth = meta.auth;
-    delete meta.auth;
-  }
-
-  // hack
-  if (meta.path) {
-    options.path = meta.path;
-    delete meta.path;
-  }
-
-  this._request(options, function (err, res, body) {
-    if (res && res.statusCode !== 200) {
-      err = new Error('HTTP Status Code: ' + res.statusCode);
-    }
-
-    if (err) return callback(err);
-
-    // TODO: emit 'logged' correctly,
-    // keep track of pending logs.
-    self.emit('logged');
-
-    if (callback) callback(null, true);
-  });
-};
-
-//
-// ### function query (options, callback)
-// #### @options {Object} Loggly-like query options for this instance.
-// #### @callback {function} Continuation to respond to when complete.
-// Query the transport. Options object is optional.
-//
-Http.prototype.query = function (options, callback) {
-  if (typeof options === 'function') {
-    callback = options;
-    options = {};
-  }
-
-  var self = this,
-      options = this.normalizeQuery(options);
-
-  options = {
-    method: 'query',
-    params: options
-  };
-
-  this._request(options, function (err, res, body) {
-    if (res && res.statusCode !== 200) {
-      err = new Error('HTTP Status Code: ' + res.statusCode);
-    }
-
-    if (err) return callback(err);
-
-    if (typeof body === 'string') {
-      try {
-        body = JSON.parse(body);
-      } catch (e) {
-        return callback(e);
-      }
-    }
-
-    callback(null, body);
-  });
-};
-
-//
-// ### function stream (options)
-// #### @options {Object} Stream options for this instance.
-// Returns a log stream for this transport. Options object is optional.
-//
-Http.prototype.stream = function (options) {
-  var self = this,
-      options = options || {},
-      stream = new Stream,
-      req,
-      buff;
-
-  stream.destroy = function () {
-    req.destroy();
-  };
-
-  options = {
-    method: 'stream',
-    params: options
-  };
-
-  req = this._request(options);
-  buff = '';
-
-  req.on('data', function (data) {
-    var data = (buff + data).split(/\n+/),
-        l = data.length - 1,
-        i = 0;
-
-    for (; i < l; i++) {
-      try {
-        stream.emit('log', JSON.parse(data[i]));
-      } catch (e) {
-        stream.emit('error', e);
-      }
-    }
-
-    buff = data[l];
-  });
-
-  req.on('error', function (err) {
-    stream.emit('error', err);
-  });
-
-  return stream;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/transport.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/transport.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/transport.js
deleted file mode 100644
index e04410e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/transport.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * transport.js: Base Transport object for all Winston transports.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var events = require('events'),
-    util = require('util');
-
-//
-// ### function Transport (options)
-// #### @options {Object} Options for this instance.
-// Constructor function for the Tranport object responsible
-// base functionality for all winston transports.
-//
-var Transport = exports.Transport = function (options) {
-  events.EventEmitter.call(this);
-
-  options               = options        || {};
-  this.level            = options.level  || 'info';
-  this.silent           = options.silent || false;
-  this.raw              = options.raw    || false;
-
-  this.handleExceptions = options.handleExceptions || false;
-};
-
-//
-// Inherit from `events.EventEmitter`.
-//
-util.inherits(Transport, events.EventEmitter);
-
-//
-// ### function formatQuery (query)
-// #### @query {string|Object} Query to format
-// Formats the specified `query` Object (or string) to conform
-// with the underlying implementation of this transport.
-//
-Transport.prototype.formatQuery = function (query) {
-  return query;
-};
-
-//
-// ### function normalizeQuery (query)
-// #### @options {string|Object} Query to normalize
-// Normalize options for query
-//
-Transport.prototype.normalizeQuery = function (options) {
-  //
-  // Use options similar to loggly.
-  // [See Loggly Search API](http://wiki.loggly.com/retrieve_events#optional)
-  //
-
-  options = options || {};
-
-  // limit
-  options.rows = options.rows || options.limit || 10;
-
-  // starting row offset
-  options.start = options.start || 0;
-
-  // now - 24
-  options.from = options.from || new Date - (24 * 60 * 60 * 1000);
-  if (typeof options.from !== 'object') {
-    options.from = new Date(options.from);
-  }
-
-  // now
-  options.until = options.until || new Date;
-  if (typeof options.until !== 'object') {
-    options.until = new Date(options.until);
-  }
-
-  // 'asc' or 'desc'
-  options.order = options.order || 'desc';
-
-  // which fields to select
-  options.fields = options.fields;
-
-  return options;
-};
-
-//
-// ### function formatResults (results, options)
-// #### @results {Object|Array} Results returned from `.query`.
-// #### @options {Object} **Optional** Formatting options
-// Formats the specified `results` with the given `options` accordinging
-// to the implementation of this transport.
-//
-Transport.prototype.formatResults = function (results, options) {
-  return results;
-};
-
-//
-// ### function logException (msg, meta, callback)
-// #### @msg {string} Message to log
-// #### @meta {Object} **Optional** Additional metadata to attach
-// #### @callback {function} Continuation to respond to when complete.
-// Logs the specified `msg`, `meta` and responds to the callback once the log
-// operation is complete to ensure that the event loop will not exit before
-// all logging has completed.
-//
-Transport.prototype.logException = function (msg, meta, callback) {
-  var self = this;
-
-  function onLogged () {
-    self.removeListener('error', onError);
-    callback();
-  }
-
-  function onError () {
-    self.removeListener('logged', onLogged);
-    callback();
-  }
-
-  this.once('logged', onLogged);
-  this.once('error', onError);
-  this.log('error', msg, meta, function () { });
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/webhook.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/webhook.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/webhook.js
deleted file mode 100644
index 34b4a35..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/transports/webhook.js
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * webhook.js: Transport for logging to remote http endpoints ( POST / RECEIVE webhooks )
- *
- * (C) 2011 Marak Squires
- * MIT LICENCE
- *
- */
-
-var events = require('events'),
-    http = require('http'),
-    https = require('https'),
-    util = require('util'),
-    cycle = require('cycle'),
-    common = require('../common'),
-    Transport = require('./transport').Transport;
-
-//
-// ### function WebHook (options)
-// #### @options {Object} Options for this instance.
-// Constructor function for the Console transport object responsible
-// for making arbitrary HTTP requests whenever log messages and metadata
-// are received.
-//
-var Webhook = exports.Webhook = function (options) {
-  Transport.call(this, options);
-
-  this.name   = 'webhook';
-  this.host   = options.host   || 'localhost';
-  this.port   = options.port   || 8080;
-  this.method = options.method || 'POST';
-  this.path   = options.path   || '/winston-log';
-
-  if (options.auth) {
-    this.auth = {};
-    this.auth.username = options.auth.username || '';
-    this.auth.password = options.auth.password || '';
-  }
-
-  if (options.ssl) {
-    this.ssl      = {};
-    this.ssl.key  = options.ssl.key  || null;
-    this.ssl.cert = options.ssl.cert || null;
-    this.ssl.ca   = options.ssl.ca;
-  }
-};
-
-//
-// Inherit from `winston.Transport`.
-//
-util.inherits(Webhook, Transport);
-
-//
-// Expose the name of this Transport on the prototype
-//
-Webhook.prototype.name = 'webhook';
-
-//
-// ### function log (level, msg, [meta], callback)
-// #### @level {string} Level at which to log the message.
-// #### @msg {string} Message to log
-// #### @meta {Object} **Optional** Additional metadata to attach
-// #### @callback {function} Continuation to respond to when complete.
-// Core logging method exposed to Winston. Metadata is optional.
-//
-Webhook.prototype.log = function (level, msg, meta, callback) {
-  if (this.silent) {
-    return callback(null, true);
-  }
-
-  var self = this,
-      meta = cycle.decycle(meta),
-      message = common.clone(meta),
-      options,
-      req;
-
-  // Prepare options for outgoing HTTP request
-  options = {
-    host: this.host,
-    port: this.port,
-    path: this.path,
-    method: this.method,
-    headers: { 'Content-Type': 'application/json' }
-  };
-
-  if (this.ssl) {
-    options.ca = this.ssl.ca;
-    options.key = this.ssl.key;
-    options.cert = this.ssl.cert;
-  }
-
-  if (this.auth) {
-    // Encode `Authorization` header used by Basic Auth
-    options.headers['Authorization'] = 'Basic ' + new Buffer(
-      this.auth.username + ':' + this.auth.password, 'utf8'
-    ).toString('base64');
-  }
-
-  // Perform HTTP logging request
-  req = (self.ssl ? https : http).request(options, function (res) {
-    // TODO: emit 'logged' correctly,
-    // keep track of pending logs.
-    self.emit('logged');
-    if (callback) callback(null, true);
-    callback = null;
-  });
-
-  req.on('error', function (err) {
-    //
-    // Propagate the `error` back up to the `Logger` that this
-    // instance belongs to.
-    //
-    self.emit('error', err);
-    if (callback) callback(err, false);
-    callback = null;
-  });
-
-  //
-  // Write logging event to the outgoing request body
-  //
-  // jsonMessage is currently conforming to JSON-RPC v1.0,
-  // but without the unique id since there is no anticipated response
-  // see: http://en.wikipedia.org/wiki/JSON-RPC
-  //
-
-  var params = common.clone(meta) || {};
-  params.timestamp = new Date();
-  params.message = msg;
-  params.level = level;
-
-  req.write(JSON.stringify({
-    method: 'log',
-    params: params
-  }));
-
-  req.end();
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.gitmodules
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.gitmodules b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.gitmodules
deleted file mode 100644
index a9aae98..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.gitmodules
+++ /dev/null
@@ -1,9 +0,0 @@
-[submodule "deps/nodeunit"]
-	path = deps/nodeunit
-	url = git://github.com/caolan/nodeunit.git
-[submodule "deps/UglifyJS"]
-	path = deps/UglifyJS
-	url = https://github.com/mishoo/UglifyJS.git
-[submodule "deps/nodelint"]
-	path = deps/nodelint
-	url = https://github.com/tav/nodelint.git

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.npmignore b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.npmignore
deleted file mode 100644
index 9bdfc97..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-deps
-dist
-test
-nodelint.cfg
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/LICENSE b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/LICENSE
deleted file mode 100644
index b7f9d50..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Caolan McMahon
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/Makefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/Makefile b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/Makefile
deleted file mode 100644
index bad647c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-PACKAGE = asyncjs
-NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node)
-CWD := $(shell pwd)
-NODEUNIT = $(CWD)/node_modules/nodeunit/bin/nodeunit
-UGLIFY = $(CWD)/node_modules/uglify-js/bin/uglifyjs
-NODELINT = $(CWD)/node_modules/nodelint/nodelint
-
-BUILDDIR = dist
-
-all: clean test build
-
-build: $(wildcard  lib/*.js)
-	mkdir -p $(BUILDDIR)
-	$(UGLIFY) lib/async.js > $(BUILDDIR)/async.min.js
-
-test:
-	$(NODEUNIT) test
-
-clean:
-	rm -rf $(BUILDDIR)
-
-lint:
-	$(NODELINT) --config nodelint.cfg lib/async.js
-
-.PHONY: test build all


[09/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-httpModule.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-httpModule.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-httpModule.js
deleted file mode 100644
index 1866de2..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-httpModule.js
+++ /dev/null
@@ -1,94 +0,0 @@
-var http = require('http')
-  , https = require('https')
-  , server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-
-
-var faux_requests_made = {'http':0, 'https':0}
-function wrap_request(name, module) {
-  // Just like the http or https module, but note when a request is made.
-  var wrapped = {}
-  Object.keys(module).forEach(function(key) {
-    var value = module[key];
-
-    if(key != 'request')
-      wrapped[key] = value;
-    else
-      wrapped[key] = function(options, callback) {
-        faux_requests_made[name] += 1
-        return value.apply(this, arguments)
-      }
-  })
-
-  return wrapped;
-}
-
-
-var faux_http = wrap_request('http', http)
-  , faux_https = wrap_request('https', https)
-  , plain_server = server.createServer()
-  , https_server = server.createSSLServer()
-
-
-plain_server.listen(plain_server.port, function() {
-  plain_server.on('/plain', function (req, res) {
-    res.writeHead(200)
-    res.end('plain')
-  })
-  plain_server.on('/to_https', function (req, res) {
-    res.writeHead(301, {'location':'https://localhost:'+https_server.port + '/https'})
-    res.end()
-  })
-
-  https_server.listen(https_server.port, function() {
-    https_server.on('/https', function (req, res) {
-      res.writeHead(200)
-      res.end('https')
-    })
-    https_server.on('/to_plain', function (req, res) {
-      res.writeHead(302, {'location':'http://localhost:'+plain_server.port + '/plain'})
-      res.end()
-    })
-
-    run_tests()
-    run_tests({})
-    run_tests({'http:':faux_http})
-    run_tests({'https:':faux_https})
-    run_tests({'http:':faux_http, 'https:':faux_https})
-  })
-})
-
-function run_tests(httpModules) {
-  var to_https = 'http://localhost:'+plain_server.port+'/to_https'
-  var to_plain = 'https://localhost:'+https_server.port+'/to_plain'
-
-  request(to_https, {'httpModules':httpModules}, function (er, res, body) {
-    assert.ok(!er, 'Bounce to SSL worked')
-    assert.equal(body, 'https', 'Received HTTPS server body')
-    done()
-  })
-
-  request(to_plain, {'httpModules':httpModules}, function (er, res, body) {
-    assert.ok(!er, 'Bounce to plaintext server worked')
-    assert.equal(body, 'plain', 'Received HTTPS server body')
-    done()
-  })
-}
-
-
-var passed = 0;
-function done() {
-  passed += 1
-  var expected = 10
-
-  if(passed == expected) {
-    plain_server.close()
-    https_server.close()
-
-    assert.equal(faux_requests_made.http, 4, 'Wrapped http module called appropriately')
-    assert.equal(faux_requests_made.https, 4, 'Wrapped https module called appropriately')
-
-    console.log((expected+2) + ' tests passed.')
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https-strict.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https-strict.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https-strict.js
deleted file mode 100644
index f53fc14..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https-strict.js
+++ /dev/null
@@ -1,97 +0,0 @@
-// a test where we validate the siguature of the keys
-// otherwise exactly the same as the ssl test
-
-var server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-  , fs = require('fs')
-  , path = require('path')
-  , opts = { key: path.resolve(__dirname, 'ssl/ca/server.key')
-           , cert: path.resolve(__dirname, 'ssl/ca/server.crt') }
-  , s = server.createSSLServer(null, opts)
-  , caFile = path.resolve(__dirname, 'ssl/ca/ca.crt')
-  , ca = fs.readFileSync(caFile)
-
-var tests =
-  { testGet :
-    { resp : server.createGetResponse("TESTING!")
-    , expectBody: "TESTING!"
-    }
-  , testGetChunkBreak :
-    { resp : server.createChunkResponse(
-      [ new Buffer([239])
-      , new Buffer([163])
-      , new Buffer([191])
-      , new Buffer([206])
-      , new Buffer([169])
-      , new Buffer([226])
-      , new Buffer([152])
-      , new Buffer([131])
-      ])
-    , expectBody: "Ω☃"
-    }
-  , testGetJSON :
-    { resp : server.createGetResponse('{"test":true}', 'application/json')
-    , json : true
-    , expectBody: {"test":true}
-    }
-  , testPutString :
-    { resp : server.createPostValidator("PUTTINGDATA")
-    , method : "PUT"
-    , body : "PUTTINGDATA"
-    }
-  , testPutBuffer :
-    { resp : server.createPostValidator("PUTTINGDATA")
-    , method : "PUT"
-    , body : new Buffer("PUTTINGDATA")
-    }
-  , testPutJSON :
-    { resp : server.createPostValidator(JSON.stringify({foo: 'bar'}))
-    , method: "PUT"
-    , json: {foo: 'bar'}
-    }
-  , testPutMultipart :
-    { resp: server.createPostValidator(
-        '--frontier\r\n' +
-        'content-type: text/html\r\n' +
-        '\r\n' +
-        '<html><body>Oh hi.</body></html>' +
-        '\r\n--frontier\r\n\r\n' +
-        'Oh hi.' +
-        '\r\n--frontier--'
-        )
-    , method: "PUT"
-    , multipart:
-      [ {'content-type': 'text/html', 'body': '<html><body>Oh hi.</body></html>'}
-      , {'body': 'Oh hi.'}
-      ]
-    }
-  }
-
-s.listen(s.port, function () {
-
-  var counter = 0
-
-  for (i in tests) {
-    (function () {
-      var test = tests[i]
-      s.on('/'+i, test.resp)
-      test.uri = s.url + '/' + i
-      test.strictSSL = true
-      test.ca = ca
-      test.headers = { host: 'testing.request.mikealrogers.com' }
-      request(test, function (err, resp, body) {
-        if (err) throw err
-        if (test.expectBody) {
-          assert.deepEqual(test.expectBody, body)
-        }
-        counter = counter - 1;
-        if (counter === 0) {
-          console.log(Object.keys(tests).length+" tests passed.")
-          s.close()
-        }
-      })
-      counter++
-    })()
-  }
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https.js
deleted file mode 100644
index df7330b..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-https.js
+++ /dev/null
@@ -1,86 +0,0 @@
-var server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-
-var s = server.createSSLServer();
-
-var tests =
-  { testGet :
-    { resp : server.createGetResponse("TESTING!")
-    , expectBody: "TESTING!"
-    }
-  , testGetChunkBreak :
-    { resp : server.createChunkResponse(
-      [ new Buffer([239])
-      , new Buffer([163])
-      , new Buffer([191])
-      , new Buffer([206])
-      , new Buffer([169])
-      , new Buffer([226])
-      , new Buffer([152])
-      , new Buffer([131])
-      ])
-    , expectBody: "Ω☃"
-    }
-  , testGetJSON :
-    { resp : server.createGetResponse('{"test":true}', 'application/json')
-    , json : true
-    , expectBody: {"test":true}
-    }
-  , testPutString :
-    { resp : server.createPostValidator("PUTTINGDATA")
-    , method : "PUT"
-    , body : "PUTTINGDATA"
-    }
-  , testPutBuffer :
-    { resp : server.createPostValidator("PUTTINGDATA")
-    , method : "PUT"
-    , body : new Buffer("PUTTINGDATA")
-    }
-  , testPutJSON :
-    { resp : server.createPostValidator(JSON.stringify({foo: 'bar'}))
-    , method: "PUT"
-    , json: {foo: 'bar'}
-    }
-  , testPutMultipart :
-    { resp: server.createPostValidator(
-        '--frontier\r\n' +
-        'content-type: text/html\r\n' +
-        '\r\n' +
-        '<html><body>Oh hi.</body></html>' +
-        '\r\n--frontier\r\n\r\n' +
-        'Oh hi.' +
-        '\r\n--frontier--'
-        )
-    , method: "PUT"
-    , multipart:
-      [ {'content-type': 'text/html', 'body': '<html><body>Oh hi.</body></html>'}
-      , {'body': 'Oh hi.'}
-      ]
-    }
-  }
-
-s.listen(s.port, function () {
-
-  var counter = 0
-
-  for (i in tests) {
-    (function () {
-      var test = tests[i]
-      s.on('/'+i, test.resp)
-      test.uri = s.url + '/' + i
-      request(test, function (err, resp, body) {
-        if (err) throw err
-        if (test.expectBody) {
-          assert.deepEqual(test.expectBody, body)
-        }
-        counter = counter - 1;
-        if (counter === 0) {
-          console.log(Object.keys(tests).length+" tests passed.")
-          s.close()
-        }
-      })
-      counter++
-    })()
-  }
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-oauth.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-oauth.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-oauth.js
deleted file mode 100644
index 72ca923..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-oauth.js
+++ /dev/null
@@ -1,117 +0,0 @@
-var hmacsign = require('../oauth').hmacsign
-  , assert = require('assert')
-  , qs = require('querystring')
-  , request = require('../main')
-  ;
-
-function getsignature (r) {
-  var sign
-  r.headers.Authorization.slice('OAuth '.length).replace(/,\ /g, ',').split(',').forEach(function (v) {
-    if (v.slice(0, 'oauth_signature="'.length) === 'oauth_signature="') sign = v.slice('oauth_signature="'.length, -1)
-  })
-  return decodeURIComponent(sign)
-}
-
-// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth
-
-var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', 
-  { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11'
-  , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
-  , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk'
-  , oauth_signature_method: 'HMAC-SHA1'
-  , oauth_timestamp: '1272323042'
-  , oauth_version: '1.0'
-  }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98")
-
-console.log(reqsign)
-console.log('8wUi7m5HFQy76nowoCThusfgB+Q=')
-assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=')
-
-var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token',
-  { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
-  , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8'
-  , oauth_signature_method: 'HMAC-SHA1'
-  , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc'
-  , oauth_timestamp: '1272323047'
-  , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY'
-  , oauth_version: '1.0'
-  }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA")
-  
-console.log(accsign)
-console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
-assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
-
-var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', 
-  { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g"
-  , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
-  , oauth_signature_method: "HMAC-SHA1"
-  , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
-  , oauth_timestamp: "1272325550"
-  , oauth_version: "1.0"
-  , status: 'setting up my twitter 私のさえずりを設定する'
-  }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA")
-
-console.log(upsign)
-console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=')
-assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=')
-
-
-var rsign = request.post(
-  { url: 'https://api.twitter.com/oauth/request_token'
-  , oauth: 
-    { callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11'
-    , consumer_key: 'GDdmIQH6jhtmLUypg82g'
-    , nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk'
-    , timestamp: '1272323042'
-    , version: '1.0'
-    , consumer_secret: "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98"
-    }
-  })
-
-setTimeout(function () {
-  console.log(getsignature(rsign))
-  assert.equal(reqsign, getsignature(rsign))
-})
-
-var raccsign = request.post(
-  { url: 'https://api.twitter.com/oauth/access_token'
-  , oauth:  
-    { consumer_key: 'GDdmIQH6jhtmLUypg82g'
-    , nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8'
-    , signature_method: 'HMAC-SHA1'
-    , token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc'
-    , timestamp: '1272323047'
-    , verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY'
-    , version: '1.0'
-    , consumer_secret: "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98"
-    , token_secret: "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA" 
-    }
-  })
-
-setTimeout(function () {
-  console.log(getsignature(raccsign))
-  assert.equal(accsign, getsignature(raccsign))
-}, 1) 
-
-var rupsign = request.post(
-  { url: 'http://api.twitter.com/1/statuses/update.json' 
-  , oauth: 
-    { consumer_key: "GDdmIQH6jhtmLUypg82g"
-    , nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
-    , signature_method: "HMAC-SHA1"
-    , token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
-    , timestamp: "1272325550"
-    , version: "1.0"
-    , consumer_secret: "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98"
-    , token_secret: "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA"
-    }
-  , form: {status: 'setting up my twitter 私のさえずりを設定する'} 
-  })
-setTimeout(function () {
-  console.log(getsignature(rupsign))
-  assert.equal(upsign, getsignature(rupsign))
-}, 1)
-
-
-
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-params.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-params.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-params.js
deleted file mode 100644
index 8354f6d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-params.js
+++ /dev/null
@@ -1,92 +0,0 @@
-var server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-  ;
-
-var s = server.createServer();
-
-var tests =
-  { testGet :
-    { resp : server.createGetResponse("TESTING!")
-    , expectBody: "TESTING!"
-    }
-    , testGetChunkBreak :
-      { resp : server.createChunkResponse(
-        [ new Buffer([239])
-        , new Buffer([163])
-        , new Buffer([191])
-        , new Buffer([206])
-        , new Buffer([169])
-        , new Buffer([226])
-        , new Buffer([152])
-        , new Buffer([131])
-        ])
-      , expectBody: "Ω☃"
-      }
-    , testGetBuffer :
-      { resp : server.createGetResponse(new Buffer("TESTING!"))
-      , encoding: null
-      , expectBody: new Buffer("TESTING!")
-      }
-    , testGetJSON :
-       { resp : server.createGetResponse('{"test":true}', 'application/json')
-       , json : true
-       , expectBody: {"test":true}
-       }
-    , testPutString :
-      { resp : server.createPostValidator("PUTTINGDATA")
-      , method : "PUT"
-      , body : "PUTTINGDATA"
-      }
-    , testPutBuffer :
-      { resp : server.createPostValidator("PUTTINGDATA")
-      , method : "PUT"
-      , body : new Buffer("PUTTINGDATA")
-      }
-    , testPutJSON :
-      { resp : server.createPostValidator(JSON.stringify({foo: 'bar'}))
-      , method: "PUT"
-      , json: {foo: 'bar'}
-      }
-    , testPutMultipart :
-      { resp: server.createPostValidator(
-          '--frontier\r\n' +
-          'content-type: text/html\r\n' +
-          '\r\n' +
-          '<html><body>Oh hi.</body></html>' +
-          '\r\n--frontier\r\n\r\n' +
-          'Oh hi.' +
-          '\r\n--frontier--'
-          )
-      , method: "PUT"
-      , multipart:
-        [ {'content-type': 'text/html', 'body': '<html><body>Oh hi.</body></html>'}
-        , {'body': 'Oh hi.'}
-        ]
-      }
-  }
-
-s.listen(s.port, function () {
-
-  var counter = 0
-
-  for (i in tests) {
-    (function () {
-      var test = tests[i]
-      s.on('/'+i, test.resp)
-      //test.uri = s.url + '/' + i
-      request(s.url + '/' + i, test, function (err, resp, body) {
-        if (err) throw err
-        if (test.expectBody) {
-          assert.deepEqual(test.expectBody, body)
-        }
-        counter = counter - 1;
-        if (counter === 0) {
-          console.log(Object.keys(tests).length+" tests passed.")
-          s.close()
-        }
-      })
-      counter++
-    })()
-  }
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pipes.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pipes.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pipes.js
deleted file mode 100644
index 1869874..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pipes.js
+++ /dev/null
@@ -1,202 +0,0 @@
-var server = require('./server')
-  , events = require('events')
-  , stream = require('stream')
-  , assert = require('assert')
-  , fs = require('fs')
-  , request = require('../main.js')
-  , path = require('path')
-  , util = require('util')
-  ;
-
-var s = server.createServer(3453);
-
-function ValidationStream(str) {
-  this.str = str
-  this.buf = ''
-  this.on('data', function (data) {
-    this.buf += data
-  })
-  this.on('end', function () {
-    assert.equal(this.str, this.buf)
-  })
-  this.writable = true
-}
-util.inherits(ValidationStream, stream.Stream)
-ValidationStream.prototype.write = function (chunk) {
-  this.emit('data', chunk)
-}
-ValidationStream.prototype.end = function (chunk) {
-  if (chunk) emit('data', chunk)
-  this.emit('end')
-}
-
-s.listen(s.port, function () {
-  counter = 0;
-
-  var check = function () {
-    counter = counter - 1
-    if (counter === 0) {
-      console.log('All tests passed.')
-      setTimeout(function () {
-        process.exit();
-      }, 500)
-    }
-  }
-
-  // Test pipeing to a request object
-  s.once('/push', server.createPostValidator("mydata"));
-
-  var mydata = new stream.Stream();
-  mydata.readable = true
-
-  counter++
-  var r1 = request.put({url:'http://localhost:3453/push'}, function () {
-    check();
-  })
-  mydata.pipe(r1)
-
-  mydata.emit('data', 'mydata');
-  mydata.emit('end');
-
-
-  // Test pipeing from a request object.
-  s.once('/pull', server.createGetResponse("mypulldata"));
-
-  var mypulldata = new stream.Stream();
-  mypulldata.writable = true
-
-  counter++
-  request({url:'http://localhost:3453/pull'}).pipe(mypulldata)
-
-  var d = '';
-
-  mypulldata.write = function (chunk) {
-    d += chunk;
-  }
-  mypulldata.end = function () {
-    assert.equal(d, 'mypulldata');
-    check();
-  };
-
-
-  s.on('/cat', function (req, resp) {
-    if (req.method === "GET") {
-      resp.writeHead(200, {'content-type':'text/plain-test', 'content-length':4});
-      resp.end('asdf')
-    } else if (req.method === "PUT") {
-      assert.equal(req.headers['content-type'], 'text/plain-test');
-      assert.equal(req.headers['content-length'], 4)
-      var validate = '';
-
-      req.on('data', function (chunk) {validate += chunk})
-      req.on('end', function () {
-        resp.writeHead(201);
-        resp.end();
-        assert.equal(validate, 'asdf');
-        check();
-      })
-    }
-  })
-  s.on('/pushjs', function (req, resp) {
-    if (req.method === "PUT") {
-      assert.equal(req.headers['content-type'], 'text/javascript');
-      check();
-    }
-  })
-  s.on('/catresp', function (req, resp) {
-    request.get('http://localhost:3453/cat').pipe(resp)
-  })
-  s.on('/doodle', function (req, resp) {
-    if (req.headers['x-oneline-proxy']) {
-      resp.setHeader('x-oneline-proxy', 'yup')
-    }
-    resp.writeHead('200', {'content-type':'image/png'})
-    fs.createReadStream(path.join(__dirname, 'googledoodle.png')).pipe(resp)
-  })
-  s.on('/onelineproxy', function (req, resp) {
-    var x = request('http://localhost:3453/doodle')
-    req.pipe(x)
-    x.pipe(resp)
-  })
-
-  counter++
-  fs.createReadStream(__filename).pipe(request.put('http://localhost:3453/pushjs'))
-
-  counter++
-  request.get('http://localhost:3453/cat').pipe(request.put('http://localhost:3453/cat'))
-
-  counter++
-  request.get('http://localhost:3453/catresp', function (e, resp, body) {
-    assert.equal(resp.headers['content-type'], 'text/plain-test');
-    assert.equal(resp.headers['content-length'], 4)
-    check();
-  })
-
-  var doodleWrite = fs.createWriteStream(path.join(__dirname, 'test.png'))
-
-  counter++
-  request.get('http://localhost:3453/doodle').pipe(doodleWrite)
-
-  doodleWrite.on('close', function () {
-    assert.deepEqual(fs.readFileSync(path.join(__dirname, 'googledoodle.png')), fs.readFileSync(path.join(__dirname, 'test.png')))
-    check()
-  })
-
-  process.on('exit', function () {
-    fs.unlinkSync(path.join(__dirname, 'test.png'))
-  })
-
-  counter++
-  request.get({uri:'http://localhost:3453/onelineproxy', headers:{'x-oneline-proxy':'nope'}}, function (err, resp, body) {
-    assert.equal(resp.headers['x-oneline-proxy'], 'yup')
-    check()
-  })
-
-  s.on('/afterresponse', function (req, resp) {
-    resp.write('d')
-    resp.end()
-  })
-
-  counter++
-  var afterresp = request.post('http://localhost:3453/afterresponse').on('response', function () {
-    var v = new ValidationStream('d')
-    afterresp.pipe(v)
-    v.on('end', check)
-  })
-  
-  s.on('/forward1', function (req, resp) {
-   resp.writeHead(302, {location:'/forward2'})
-    resp.end()
-  })
-  s.on('/forward2', function (req, resp) {
-    resp.writeHead('200', {'content-type':'image/png'})
-    resp.write('d')
-    resp.end()
-  })
-  
-  counter++
-  var validateForward = new ValidationStream('d')
-  validateForward.on('end', check)
-  request.get('http://localhost:3453/forward1').pipe(validateForward)
-
-  // Test pipe options
-  s.once('/opts', server.createGetResponse('opts response'));
-
-  var optsStream = new stream.Stream();
-  optsStream.writable = true
-  
-  var optsData = '';
-  optsStream.write = function (buf) {
-    optsData += buf;
-    if (optsData === 'opts response') {
-      setTimeout(check, 10);
-    }
-  }
-
-  optsStream.end = function () {
-    assert.fail('end called')
-  };
-
-  counter++
-  request({url:'http://localhost:3453/opts'}).pipe(optsStream, { end : false })
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pool.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pool.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pool.js
deleted file mode 100644
index 1e7d578..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-pool.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var request = require('../main')
-  , http = require('http')
-  , assert = require('assert')
-  ;
-
-var s = http.createServer(function (req, resp) {
-  resp.statusCode = 200;
-  resp.end('asdf');
-}).listen(8080, function () {
-  request({'url': 'http://localhost:8080', 'pool': false}, function (e, resp) {
-    var agent = resp.request.agent;
-    assert.strictEqual(typeof agent, 'boolean');
-    assert.strictEqual(agent, false);
-    s.close();
-  });
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-proxy.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-proxy.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-proxy.js
deleted file mode 100644
index 647157c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-proxy.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var server = require('./server')
-  , events = require('events')
-  , stream = require('stream')
-  , assert = require('assert')
-  , fs = require('fs')
-  , request = require('../main.js')
-  , path = require('path')
-  , util = require('util')
-  ;
-
-var port = 6768
-  , called = false
-  , proxiedHost = 'google.com'
-  ;
-
-var s = server.createServer(port)
-s.listen(port, function () {
-  s.on('http://google.com/', function (req, res) {
-    called = true
-    assert.equal(req.headers.host, proxiedHost)
-    res.writeHeader(200)
-    res.end()
-  })
-  request ({
-    url: 'http://'+proxiedHost,
-    proxy: 'http://localhost:'+port
-    /*
-    //should behave as if these arguments where passed:
-    url: 'http://localhost:'+port,
-    headers: {host: proxiedHost}
-    //*/
-  }, function (err, res, body) {
-    s.close()
-  })
-})
-
-process.on('exit', function () {
-  assert.ok(called, 'the request must be made to the proxy server')
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-qs.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-qs.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-qs.js
deleted file mode 100644
index 1aac22b..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-qs.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var request = request = require('../main.js')
-  , assert = require('assert')
-  ;
- 
-
-// Test adding a querystring
-var req1 = request.get({ uri: 'http://www.google.com', qs: { q : 'search' }})
-setTimeout(function() {
-	assert.equal('/?q=search', req1.path)
-}, 1)
-
-// Test replacing a querystring value
-var req2 = request.get({ uri: 'http://www.google.com?q=abc', qs: { q : 'search' }})
-setTimeout(function() {
-	assert.equal('/?q=search', req2.path)
-}, 1)
-
-// Test appending a querystring value to the ones present in the uri
-var req3 = request.get({ uri: 'http://www.google.com?x=y', qs: { q : 'search' }})
-setTimeout(function() {
-	assert.equal('/?x=y&q=search', req3.path)
-}, 1)
-
-// Test leaving a querystring alone
-var req4 = request.get({ uri: 'http://www.google.com?x=y'})
-setTimeout(function() {
-	assert.equal('/?x=y', req4.path)
-}, 1)

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-redirect.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-redirect.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-redirect.js
deleted file mode 100644
index b84844a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-redirect.js
+++ /dev/null
@@ -1,154 +0,0 @@
-var server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-  , Cookie = require('../vendor/cookie')
-  , Jar = require('../vendor/cookie/jar')
-
-var s = server.createServer()
-
-s.listen(s.port, function () {
-  var server = 'http://localhost:' + s.port;
-  var hits = {}
-  var passed = 0;
-
-  bouncer(301, 'temp')
-  bouncer(302, 'perm')
-  bouncer(302, 'nope')
-
-  function bouncer(code, label) {
-    var landing = label+'_landing';
-
-    s.on('/'+label, function (req, res) {
-      hits[label] = true;
-      res.writeHead(code, {
-        'location':server + '/'+landing,
-        'set-cookie': 'ham=eggs'
-      })
-      res.end()
-    })
-
-    s.on('/'+landing, function (req, res) {
-      if (req.method !== 'GET') { // We should only accept GET redirects
-        console.error("Got a non-GET request to the redirect destination URL");
-        res.writeHead(400);
-        res.end();
-        return;
-      }
-      // Make sure the cookie doesn't get included twice, see #139:
-      // Make sure cookies are set properly after redirect
-      assert.equal(req.headers.cookie, 'foo=bar; quux=baz; ham=eggs');
-      hits[landing] = true;
-      res.writeHead(200)
-      res.end(landing)
-    })
-  }
-
-  // Permanent bounce
-  var jar = new Jar()
-  jar.add(new Cookie('quux=baz'))
-  request({uri: server+'/perm', jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 200) throw new Error('Status is not 200: '+res.statusCode)
-    assert.ok(hits.perm, 'Original request is to /perm')
-    assert.ok(hits.perm_landing, 'Forward to permanent landing URL')
-    assert.equal(body, 'perm_landing', 'Got permanent landing content')
-    passed += 1
-    done()
-  })
-  
-  // Temporary bounce
-  request({uri: server+'/temp', jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 200) throw new Error('Status is not 200: '+res.statusCode)
-    assert.ok(hits.temp, 'Original request is to /temp')
-    assert.ok(hits.temp_landing, 'Forward to temporary landing URL')
-    assert.equal(body, 'temp_landing', 'Got temporary landing content')
-    passed += 1
-    done()
-  })
-  
-  // Prevent bouncing.
-  request({uri:server+'/nope', jar: jar, headers: {cookie: 'foo=bar'}, followRedirect:false}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 302) throw new Error('Status is not 302: '+res.statusCode)
-    assert.ok(hits.nope, 'Original request to /nope')
-    assert.ok(!hits.nope_landing, 'No chasing the redirect')
-    assert.equal(res.statusCode, 302, 'Response is the bounce itself')
-    passed += 1
-    done()
-  })
-  
-  // Should not follow post redirects by default
-  request.post(server+'/temp', { jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 301) throw new Error('Status is not 301: '+res.statusCode)
-    assert.ok(hits.temp, 'Original request is to /temp')
-    assert.ok(!hits.temp_landing, 'No chasing the redirect when post')
-    assert.equal(res.statusCode, 301, 'Response is the bounce itself')
-    passed += 1
-    done()
-  })
-  
-  // Should follow post redirects when followAllRedirects true
-  request.post({uri:server+'/temp', followAllRedirects:true, jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 200) throw new Error('Status is not 200: '+res.statusCode)
-    assert.ok(hits.temp, 'Original request is to /temp')
-    assert.ok(hits.temp_landing, 'Forward to temporary landing URL')
-    assert.equal(body, 'temp_landing', 'Got temporary landing content')
-    passed += 1
-    done()
-  })
-  
-  request.post({uri:server+'/temp', followAllRedirects:false, jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 301) throw new Error('Status is not 301: '+res.statusCode)
-    assert.ok(hits.temp, 'Original request is to /temp')
-    assert.ok(!hits.temp_landing, 'No chasing the redirect')
-    assert.equal(res.statusCode, 301, 'Response is the bounce itself')
-    passed += 1
-    done()
-  })
-
-  // Should not follow delete redirects by default
-  request.del(server+'/temp', { jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode < 301) throw new Error('Status is not a redirect.')
-    assert.ok(hits.temp, 'Original request is to /temp')
-    assert.ok(!hits.temp_landing, 'No chasing the redirect when delete')
-    assert.equal(res.statusCode, 301, 'Response is the bounce itself')
-    passed += 1
-    done()
-  })
-  
-  // Should not follow delete redirects even if followRedirect is set to true
-  request.del(server+'/temp', { followRedirect: true, jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 301) throw new Error('Status is not 301: '+res.statusCode)
-    assert.ok(hits.temp, 'Original request is to /temp')
-    assert.ok(!hits.temp_landing, 'No chasing the redirect when delete')
-    assert.equal(res.statusCode, 301, 'Response is the bounce itself')
-    passed += 1
-    done()
-  })
-  
-  // Should follow delete redirects when followAllRedirects true
-  request.del(server+'/temp', {followAllRedirects:true, jar: jar, headers: {cookie: 'foo=bar'}}, function (er, res, body) {
-    if (er) throw er
-    if (res.statusCode !== 200) throw new Error('Status is not 200: '+res.statusCode)
-    assert.ok(hits.temp, 'Original request is to /temp')
-    assert.ok(hits.temp_landing, 'Forward to temporary landing URL')
-    assert.equal(body, 'temp_landing', 'Got temporary landing content')
-    passed += 1
-    done()
-  })
-
-  var reqs_done = 0;
-  function done() {
-    reqs_done += 1;
-    if(reqs_done == 9) {
-      console.log(passed + ' tests passed.')
-      s.close()
-    }
-  }
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-s3.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-s3.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-s3.js
deleted file mode 100644
index 5f59c4a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-s3.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var request = require('../main')
-
-var r = request.get('https://log.curlybracecast.com.s3.amazonaws.com/', 
-  { aws: 
-    { key: 'AKIAI6KIQRRVMGK3WK5Q'
-    , secret: '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'
-    , bucket: 'log.curlybracecast.com'
-    }
-  }, function (e, resp, body) {
-    console.log(r.headers)
-    console.log(body)
-  }
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-timeout.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-timeout.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-timeout.js
deleted file mode 100644
index 673f8ad..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-timeout.js
+++ /dev/null
@@ -1,87 +0,0 @@
-var server = require('./server')
-  , events = require('events')
-  , stream = require('stream')
-  , assert = require('assert')
-  , request = require('../main.js')
-  ;
-
-var s = server.createServer();
-var expectedBody = "waited";
-var remainingTests = 5;
-
-s.listen(s.port, function () {
-  // Request that waits for 200ms
-  s.on('/timeout', function (req, resp) {
-    setTimeout(function(){
-      resp.writeHead(200, {'content-type':'text/plain'})
-      resp.write(expectedBody)
-      resp.end()
-    }, 200);
-  });
-
-  // Scenario that should timeout
-  var shouldTimeout = {
-    url: s.url + "/timeout",
-    timeout:100
-  }
-
-
-  request(shouldTimeout, function (err, resp, body) {
-    assert.equal(err.code, "ETIMEDOUT");
-    checkDone();
-  })
-
-
-  // Scenario that shouldn't timeout
-  var shouldntTimeout = {
-    url: s.url + "/timeout",
-    timeout:300
-  }
-
-  request(shouldntTimeout, function (err, resp, body) {
-    assert.equal(err, null);
-    assert.equal(expectedBody, body)
-    checkDone();
-  })
-
-  // Scenario with no timeout set, so shouldn't timeout
-  var noTimeout = {
-    url: s.url + "/timeout"
-  }
-
-  request(noTimeout, function (err, resp, body) {
-    assert.equal(err);
-    assert.equal(expectedBody, body)
-    checkDone();
-  })
-
-  // Scenario with a negative timeout value, should be treated a zero or the minimum delay
-  var negativeTimeout = {
-    url: s.url + "/timeout",
-    timeout:-1000
-  }
-
-  request(negativeTimeout, function (err, resp, body) {
-    assert.equal(err.code, "ETIMEDOUT");
-    checkDone();
-  })
-
-  // Scenario with a float timeout value, should be rounded by setTimeout anyway
-  var floatTimeout = {
-    url: s.url + "/timeout",
-    timeout: 100.76
-  }
-
-  request(floatTimeout, function (err, resp, body) {
-    assert.equal(err.code, "ETIMEDOUT");
-    checkDone();
-  })
-
-  function checkDone() {
-    if(--remainingTests == 0) {
-      s.close();
-      console.log("All tests passed.");
-    }
-  }
-})
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-toJSON.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-toJSON.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-toJSON.js
deleted file mode 100644
index b7c67ef..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-toJSON.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var request = require('../main')
-  , http = require('http')
-  , assert = require('assert')
-  ;
-
-var s = http.createServer(function (req, resp) {
-  resp.statusCode = 200
-  resp.end('asdf')
-}).listen(8080, function () {
-  var r = request('http://localhost:8080', function (e, resp) {
-    assert.equal(JSON.parse(JSON.stringify(r)).response.statusCode, 200)
-    s.close()
-  })
-})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-tunnel.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-tunnel.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-tunnel.js
deleted file mode 100644
index 58131b9..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-tunnel.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// test that we can tunnel a https request over an http proxy
-// keeping all the CA and whatnot intact.
-//
-// Note: this requires that squid is installed.
-// If the proxy fails to start, we'll just log a warning and assume success.
-
-var server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-  , fs = require('fs')
-  , path = require('path')
-  , caFile = path.resolve(__dirname, 'ssl/npm-ca.crt')
-  , ca = fs.readFileSync(caFile)
-  , child_process = require('child_process')
-  , sqConf = path.resolve(__dirname, 'squid.conf')
-  , sqArgs = ['-f', sqConf, '-N', '-d', '5']
-  , proxy = 'http://localhost:3128'
-  , hadError = null
-
-var squid = child_process.spawn('squid', sqArgs);
-var ready = false
-
-squid.stderr.on('data', function (c) {
-  console.error('SQUIDERR ' + c.toString().trim().split('\n')
-               .join('\nSQUIDERR '))
-  ready = c.toString().match(/ready to serve requests/i)
-})
-
-squid.stdout.on('data', function (c) {
-  console.error('SQUIDOUT ' + c.toString().trim().split('\n')
-               .join('\nSQUIDOUT '))
-})
-
-squid.on('exit', function (c) {
-  console.error('exit '+c)
-  if (c && !ready) {
-    console.error('squid must be installed to run this test.')
-    c = null
-    hadError = null
-    process.exit(0)
-    return
-  }
-
-  if (c) {
-    hadError = hadError || new Error('Squid exited with '+c)
-  }
-  if (hadError) throw hadError
-})
-
-setTimeout(function F () {
-  if (!ready) return setTimeout(F, 100)
-  request({ uri: 'https://registry.npmjs.org/request/'
-          , proxy: 'http://localhost:3128'
-          , ca: ca
-          , json: true }, function (er, body) {
-    hadError = er
-    console.log(er || typeof body)
-    if (!er) console.log("ok")
-    squid.kill('SIGKILL')
-  })
-}, 100)

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tunnel.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tunnel.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tunnel.js
deleted file mode 100644
index 453786c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tunnel.js
+++ /dev/null
@@ -1,229 +0,0 @@
-'use strict';
-
-var net = require('net');
-var tls = require('tls');
-var http = require('http');
-var https = require('https');
-var events = require('events');
-var assert = require('assert');
-var util = require('util');
-
-
-exports.httpOverHttp = httpOverHttp;
-exports.httpsOverHttp = httpsOverHttp;
-exports.httpOverHttps = httpOverHttps;
-exports.httpsOverHttps = httpsOverHttps;
-
-
-function httpOverHttp(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = http.request;
-  return agent;
-}
-
-function httpsOverHttp(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = http.request;
-  agent.createSocket = createSecureSocket;
-  return agent;
-}
-
-function httpOverHttps(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = https.request;
-  return agent;
-}
-
-function httpsOverHttps(options) {
-  var agent = new TunnelingAgent(options);
-  agent.request = https.request;
-  agent.createSocket = createSecureSocket;
-  return agent;
-}
-
-
-function TunnelingAgent(options) {
-  var self = this;
-  self.options = options || {};
-  self.proxyOptions = self.options.proxy || {};
-  self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
-  self.requests = [];
-  self.sockets = [];
-
-  self.on('free', function onFree(socket, host, port) {
-    for (var i = 0, len = self.requests.length; i < len; ++i) {
-      var pending = self.requests[i];
-      if (pending.host === host && pending.port === port) {
-        // Detect the request to connect same origin server,
-        // reuse the connection.
-        self.requests.splice(i, 1);
-        pending.request.onSocket(socket);
-        return;
-      }
-    }
-    socket.destroy();
-    self.removeSocket(socket);
-  });
-}
-util.inherits(TunnelingAgent, events.EventEmitter);
-
-TunnelingAgent.prototype.addRequest = function addRequest(req, host, port) {
-  var self = this;
-
-  if (self.sockets.length >= this.maxSockets) {
-    // We are over limit so we'll add it to the queue.
-    self.requests.push({host: host, port: port, request: req});
-    return;
-  }
-
-  // If we are under maxSockets create a new one.
-  self.createSocket({host: host, port: port, request: req}, function(socket) {
-    socket.on('free', onFree);
-    socket.on('close', onCloseOrRemove);
-    socket.on('agentRemove', onCloseOrRemove);
-    req.onSocket(socket);
-
-    function onFree() {
-      self.emit('free', socket, host, port);
-    }
-
-    function onCloseOrRemove(err) {
-      self.removeSocket();
-      socket.removeListener('free', onFree);
-      socket.removeListener('close', onCloseOrRemove);
-      socket.removeListener('agentRemove', onCloseOrRemove);
-    }
-  });
-};
-
-TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
-  var self = this;
-  var placeholder = {};
-  self.sockets.push(placeholder);
-
-  var connectOptions = mergeOptions({}, self.proxyOptions, {
-    method: 'CONNECT',
-    path: options.host + ':' + options.port,
-    agent: false
-  });
-  if (connectOptions.proxyAuth) {
-    connectOptions.headers = connectOptions.headers || {};
-    connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
-        new Buffer(connectOptions.proxyAuth).toString('base64');
-  }
-
-  debug('making CONNECT request');
-  var connectReq = self.request(connectOptions);
-  connectReq.useChunkedEncodingByDefault = false; // for v0.6
-  connectReq.once('response', onResponse); // for v0.6
-  connectReq.once('upgrade', onUpgrade);   // for v0.6
-  connectReq.once('connect', onConnect);   // for v0.7 or later
-  connectReq.once('error', onError);
-  connectReq.end();
-
-  function onResponse(res) {
-    // Very hacky. This is necessary to avoid http-parser leaks.
-    res.upgrade = true;
-  }
-
-  function onUpgrade(res, socket, head) {
-    // Hacky.
-    process.nextTick(function() {
-      onConnect(res, socket, head);
-    });
-  }
-
-  function onConnect(res, socket, head) {
-    connectReq.removeAllListeners();
-    socket.removeAllListeners();
-
-    if (res.statusCode === 200) {
-      assert.equal(head.length, 0);
-      debug('tunneling connection has established');
-      self.sockets[self.sockets.indexOf(placeholder)] = socket;
-      cb(socket);
-    } else {
-      debug('tunneling socket could not be established, statusCode=%d',
-            res.statusCode);
-      var error = new Error('tunneling socket could not be established, ' +
-                            'sutatusCode=' + res.statusCode);
-      error.code = 'ECONNRESET';
-      options.request.emit('error', error);
-      self.removeSocket(placeholder);
-    }
-  }
-
-  function onError(cause) {
-    connectReq.removeAllListeners();
-
-    debug('tunneling socket could not be established, cause=%s\n',
-          cause.message, cause.stack);
-    var error = new Error('tunneling socket could not be established, ' +
-                          'cause=' + cause.message);
-    error.code = 'ECONNRESET';
-    options.request.emit('error', error);
-    self.removeSocket(placeholder);
-  }
-};
-
-TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
-  var pos = this.sockets.indexOf(socket)
-  if (pos === -1) {
-    return;
-  }
-  this.sockets.splice(pos, 1);
-
-  var pending = this.requests.shift();
-  if (pending) {
-    // If we have pending requests and a socket gets closed a new one
-    // needs to be created to take over in the pool for the one that closed.
-    this.createSocket(pending, function(socket) {
-      pending.request.onSocket(socket);
-    });
-  }
-};
-
-function createSecureSocket(options, cb) {
-  var self = this;
-  TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
-    // 0 is dummy port for v0.6
-    var secureSocket = tls.connect(0, mergeOptions({}, self.options, {
-      socket: socket
-    }));
-    cb(secureSocket);
-  });
-}
-
-
-function mergeOptions(target) {
-  for (var i = 1, len = arguments.length; i < len; ++i) {
-    var overrides = arguments[i];
-    if (typeof overrides === 'object') {
-      var keys = Object.keys(overrides);
-      for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
-        var k = keys[j];
-        if (overrides[k] !== undefined) {
-          target[k] = overrides[k];
-        }
-      }
-    }
-  }
-  return target;
-}
-
-
-var debug;
-if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
-  debug = function() {
-    var args = Array.prototype.slice.call(arguments);
-    if (typeof args[0] === 'string') {
-      args[0] = 'TUNNEL: ' + args[0];
-    } else {
-      args.unshift('TUNNEL:');
-    }
-    console.error.apply(console, args);
-  }
-} else {
-  debug = function() {};
-}
-exports.debug = debug; // for test

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/uuid.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/uuid.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/uuid.js
deleted file mode 100644
index 1d83bd5..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/uuid.js
+++ /dev/null
@@ -1,19 +0,0 @@
-module.exports = function () {
-  var s = [], itoh = '0123456789ABCDEF';
- 
-  // Make array of random hex digits. The UUID only has 32 digits in it, but we
-  // allocate an extra items to make room for the '-'s we'll be inserting.
-  for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10);
- 
-  // Conform to RFC-4122, section 4.4
-  s[14] = 4;  // Set 4 high bits of time_high field to version
-  s[19] = (s[19] & 0x3) | 0x8;  // Specify 2 high bits of clock sequence
- 
-  // Convert to hex chars
-  for (var i = 0; i <36; i++) s[i] = itoh[s[i]];
- 
-  // Insert '-'s
-  s[8] = s[13] = s[18] = s[23] = '-';
- 
-  return s.join('');
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/index.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/index.js
deleted file mode 100644
index ff44b3e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*!
- * Tobi - Cookie
- * Copyright(c) 2010 LearnBoost <de...@learnboost.com>
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var url = require('url');
-
-/**
- * Initialize a new `Cookie` with the given cookie `str` and `req`.
- *
- * @param {String} str
- * @param {IncomingRequest} req
- * @api private
- */
-
-var Cookie = exports = module.exports = function Cookie(str, req) {
-  this.str = str;
-
-  // Map the key/val pairs
-  str.split(/ *; */).reduce(function(obj, pair){
-   var p = pair.indexOf('=');
-   var key = p > 0 ? pair.substring(0, p).trim() : pair.trim();
-   var lowerCasedKey = key.toLowerCase();
-   var value = p > 0 ? pair.substring(p + 1).trim() : true;
-
-   if (!obj.name) {
-    // First key is the name
-    obj.name = key;
-    obj.value = value;
-   }
-   else if (lowerCasedKey === 'httponly') {
-    obj.httpOnly = value;
-   }
-   else {
-    obj[lowerCasedKey] = value;
-   }
-   return obj;
-  }, this);
-
-  // Expires
-  this.expires = this.expires
-    ? new Date(this.expires)
-    : Infinity;
-
-  // Default or trim path
-  this.path = this.path
-    ? this.path.trim(): req 
-    ? url.parse(req.url).pathname: '/';
-};
-
-/**
- * Return the original cookie string.
- *
- * @return {String}
- * @api public
- */
-
-Cookie.prototype.toString = function(){
-  return this.str;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/jar.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/jar.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/jar.js
deleted file mode 100644
index 34920e0..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/vendor/cookie/jar.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*!
-* Tobi - CookieJar
-* Copyright(c) 2010 LearnBoost <de...@learnboost.com>
-* MIT Licensed
-*/
-
-/**
-* Module dependencies.
-*/
-
-var url = require('url');
-
-/**
-* Initialize a new `CookieJar`.
-*
-* @api private
-*/
-
-var CookieJar = exports = module.exports = function CookieJar() {
-  this.cookies = [];
-};
-
-/**
-* Add the given `cookie` to the jar.
-*
-* @param {Cookie} cookie
-* @api private
-*/
-
-CookieJar.prototype.add = function(cookie){
-  this.cookies = this.cookies.filter(function(c){
-    // Avoid duplication (same path, same name)
-    return !(c.name == cookie.name && c.path == cookie.path);
-  });
-  this.cookies.push(cookie);
-};
-
-/**
-* Get cookies for the given `req`.
-*
-* @param {IncomingRequest} req
-* @return {Array}
-* @api private
-*/
-
-CookieJar.prototype.get = function(req){
-  var path = url.parse(req.url).pathname
-    , now = new Date
-    , specificity = {};
-  return this.cookies.filter(function(cookie){
-    if (0 == path.indexOf(cookie.path) && now < cookie.expires
-      && cookie.path.length > (specificity[cookie.name] || 0))
-      return specificity[cookie.name] = cookie.path.length;
-  });
-};
-
-/**
-* Return Cookie string for the given `req`.
-*
-* @param {IncomingRequest} req
-* @return {String}
-* @api private
-*/
-
-CookieJar.prototype.cookieString = function(req){
-  var cookies = this.get(req);
-  if (cookies.length) {
-    return cookies.map(function(cookie){
-      return cookie.name + '=' + cookie.value;
-    }).join('; ');
-  }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/.npmignore b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/.npmignore
deleted file mode 100644
index b59f7e3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/License
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/License b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/License
deleted file mode 100644
index 11ec094..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/License
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011 Felix Geisendörfer (felix@debuggable.com)
-
- 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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Makefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Makefile b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Makefile
deleted file mode 100644
index a7ce31d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-SHELL := /bin/bash
-
-test:
-	@./test/run.js
-
-release:
-	git push
-	git push --tags
-	npm publish .
-
-.PHONY: test

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Readme.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Readme.md b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Readme.md
deleted file mode 100644
index fcd1b97..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/Readme.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# stack-trace
-
-Get v8 stack traces as an array of CallSite objects.
-
-## Install
-
-``` bash
-npm install stack-trace
-```
-
-## Usage
-
-The stack-trace module makes it easy for you to capture the current stack:
-
-``` javascript
-var stackTrace = require('stack-trace');
-var trace = stackTrace.get();
-
-require('assert').strictEqual(trace[0].getFileName(), __filename);
-```
-
-However, sometimes you have already popped the stack you are interested in,
-and all you have left is an `Error` object. This module can help:
-
-``` javascript
-var stackTrace = require('stack-trace');
-var err = new Error('something went wrong');
-var trace = stackTrace.parse(err);
-
-require('assert').strictEqual(trace[0].getFileName(), __filename);
-```
-
-Please note that parsing the `Error#stack` property is not perfect, only
-certain properties can be retrieved with it as noted in the API docs below.
-
-## Long stack traces
-
-stack-trace works great with [long-stack-traces][], when parsing an `err.stack`
-that has crossed the event loop boundary, a `CallSite` object returning
-`'----------------------------------------'` for `getFileName()` is created.
-All other methods of the event loop boundary call site return `null`.
-
-[long-stack-traces]: https://github.com/tlrobinson/long-stack-traces
-
-## API
-
-### stackTrace.get([belowFn])
-
-Returns an array of `CallSite` objects, where element `0` is the current call
-site.
-
-When passing a function on the current stack as the `belowFn` parameter, the
-returned array will only include `CallSite` objects below this function.
-
-### stackTrace.parse(err)
-
-Parses the `err.stack` property of an `Error` object into an array compatible
-with those returned by `stackTrace.get()`. However, only the following methods
-are implemented on the returned `CallSite` objects.
-
-* getTypeName
-* getFunctionName
-* getMethodName
-* getFileName
-* getLineNumber
-* getColumnNumber
-* isNative
-
-Note: Except `getFunctionName()`, all of the above methods return exactly the
-same values as you would get from `stackTrace.get()`. `getFunctionName()`
-is sometimes a little different, but still useful.
-
-### CallSite
-
-The official v8 CallSite object API can be found [here][v8stackapi]. A quick
-excerpt:
-
-> A CallSite object defines the following methods:
->
-> * **getThis**: returns the value of this
-> * **getTypeName**: returns the type of this as a string. This is the name of the function stored in the constructor field of this, if available, otherwise the object's [[Class]] internal property.
-> * **getFunction**: returns the current function
-> * **getFunctionName**: returns the name of the current function, typically its name property. If a name property is not available an attempt will be made to try to infer a name from the function's context.
-> * **getMethodName**: returns the name of the property of this or one of its prototypes that holds the current function
-> * **getFileName**: if this function was defined in a script returns the name of the script
-> * **getLineNumber**: if this function was defined in a script returns the current line number
-> * **getColumnNumber**: if this function was defined in a script returns the current column number
-> * **getEvalOrigin**: if this function was created using a call to eval returns a CallSite object representing the location where eval was called
-> * **isToplevel**: is this a toplevel invocation, that is, is this the global object?
-> * **isEval**: does this call take place in code defined by a call to eval?
-> * **isNative**: is this call in native V8 code?
-> * **isConstructor**: is this a constructor call?
-
-[v8stackapi]: http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
-
-## License
-
-stack-trace is licensed under the MIT license.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/lib/stack-trace.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/lib/stack-trace.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/lib/stack-trace.js
deleted file mode 100644
index a7c38aa..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/lib/stack-trace.js
+++ /dev/null
@@ -1,111 +0,0 @@
-exports.get = function(belowFn) {
-  var oldLimit = Error.stackTraceLimit;
-  Error.stackTraceLimit = Infinity;
-
-  var dummyObject = {};
-
-  var v8Handler = Error.prepareStackTrace;
-  Error.prepareStackTrace = function(dummyObject, v8StackTrace) {
-    return v8StackTrace;
-  };
-  Error.captureStackTrace(dummyObject, belowFn || exports.get);
-
-  var v8StackTrace = dummyObject.stack;
-  Error.prepareStackTrace = v8Handler;
-  Error.stackTraceLimit = oldLimit;
-
-  return v8StackTrace;
-};
-
-exports.parse = function(err) {
-  if (!err.stack) {
-    return [];
-  }
-
-  var self = this;
-  var lines = err.stack.split('\n').slice(1);
-
-  return lines
-    .map(function(line) {
-      if (line.match(/^\s*[-]{4,}$/)) {
-        return self._createParsedCallSite({
-          fileName: line,
-          lineNumber: null,
-          functionName: null,
-          typeName: null,
-          methodName: null,
-          columnNumber: null,
-          'native': null,
-        });
-      }
-
-      var lineMatch = line.match(/at (?:(.+)\s+)?\(?(?:(.+?):(\d+):(\d+)|([^)]+))\)?/);
-      if (!lineMatch) {
-        return;
-      }
-
-      var object = null;
-      var method = null;
-      var functionName = null;
-      var typeName = null;
-      var methodName = null;
-      var isNative = (lineMatch[5] === 'native');
-
-      if (lineMatch[1]) {
-        var methodMatch = lineMatch[1].match(/([^\.]+)(?:\.(.+))?/);
-        object = methodMatch[1];
-        method = methodMatch[2];
-        functionName = lineMatch[1];
-        typeName = 'Object';
-      }
-
-      if (method) {
-        typeName = object;
-        methodName = method;
-      }
-
-      if (method === '<anonymous>') {
-        methodName = null;
-        functionName = '';
-      }
-
-      var properties = {
-        fileName: lineMatch[2] || null,
-        lineNumber: parseInt(lineMatch[3], 10) || null,
-        functionName: functionName,
-        typeName: typeName,
-        methodName: methodName,
-        columnNumber: parseInt(lineMatch[4], 10) || null,
-        'native': isNative,
-      };
-
-      return self._createParsedCallSite(properties);
-    })
-    .filter(function(callSite) {
-      return !!callSite;
-    });
-};
-
-exports._createParsedCallSite = function(properties) {
-  var methods = {};
-  for (var property in properties) {
-    var prefix = 'get';
-    if (property === 'native') {
-      prefix = 'is';
-    }
-    var method = prefix + property.substr(0, 1).toUpperCase() + property.substr(1);
-
-    (function(property) {
-      methods[method] = function() {
-        return properties[property];
-      }
-    })(property);
-  }
-
-  var callSite = Object.create(methods);
-  for (var property in properties) {
-    callSite[property] = properties[property];
-  }
-
-  return callSite;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/package.json
deleted file mode 100644
index f655459..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/stack-trace/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "author": {
-    "name": "Felix Geisendörfer",
-    "email": "felix@debuggable.com",
-    "url": "http://debuggable.com/"
-  },
-  "name": "stack-trace",
-  "description": "Get v8 stack traces as an array of CallSite objects.",
-  "version": "0.0.9",
-  "homepage": "https://github.com/felixge/node-stack-trace",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/felixge/node-stack-trace.git"
-  },
-  "main": "./lib/stack-trace",
-  "engines": {
-    "node": "*"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "far": "0.0.3",
-    "long-stack-traces": "0.1.2"
-  },
-  "readme": "# stack-trace\n\nGet v8 stack traces as an array of CallSite objects.\n\n## Install\n\n``` bash\nnpm install stack-trace\n```\n\n## Usage\n\nThe stack-trace module makes it easy for you to capture the current stack:\n\n``` javascript\nvar stackTrace = require('stack-trace');\nvar trace = stackTrace.get();\n\nrequire('assert').strictEqual(trace[0].getFileName(), __filename);\n```\n\nHowever, sometimes you have already popped the stack you are interested in,\nand all you have left is an `Error` object. This module can help:\n\n``` javascript\nvar stackTrace = require('stack-trace');\nvar err = new Error('something went wrong');\nvar trace = stackTrace.parse(err);\n\nrequire('assert').strictEqual(trace[0].getFileName(), __filename);\n```\n\nPlease note that parsing the `Error#stack` property is not perfect, only\ncertain properties can be retrieved with it as noted in the API docs below.\n\n## Long stack traces\n\nstack-trace works great with [long-stack-traces][], when pa
 rsing an `err.stack`\nthat has crossed the event loop boundary, a `CallSite` object returning\n`'----------------------------------------'` for `getFileName()` is created.\nAll other methods of the event loop boundary call site return `null`.\n\n[long-stack-traces]: https://github.com/tlrobinson/long-stack-traces\n\n## API\n\n### stackTrace.get([belowFn])\n\nReturns an array of `CallSite` objects, where element `0` is the current call\nsite.\n\nWhen passing a function on the current stack as the `belowFn` parameter, the\nreturned array will only include `CallSite` objects below this function.\n\n### stackTrace.parse(err)\n\nParses the `err.stack` property of an `Error` object into an array compatible\nwith those returned by `stackTrace.get()`. However, only the following methods\nare implemented on the returned `CallSite` objects.\n\n* getTypeName\n* getFunctionName\n* getMethodName\n* getFileName\n* getLineNumber\n* getColumnNumber\n* isNative\n\nNote: Except `getFunctionName()`, a
 ll of the above methods return exactly the\nsame values as you would get from `stackTrace.get()`. `getFunctionName()`\nis sometimes a little different, but still useful.\n\n### CallSite\n\nThe official v8 CallSite object API can be found [here][v8stackapi]. A quick\nexcerpt:\n\n> A CallSite object defines the following methods:\n>\n> * **getThis**: returns the value of this\n> * **getTypeName**: returns the type of this as a string. This is the name of the function stored in the constructor field of this, if available, otherwise the object's [[Class]] internal property.\n> * **getFunction**: returns the current function\n> * **getFunctionName**: returns the name of the current function, typically its name property. If a name property is not available an attempt will be made to try to infer a name from the function's context.\n> * **getMethodName**: returns the name of the property of this or one of its prototypes that holds the current function\n> * **getFileName**: if this function
  was defined in a script returns the name of the script\n> * **getLineNumber**: if this function was defined in a script returns the current line number\n> * **getColumnNumber**: if this function was defined in a script returns the current column number\n> * **getEvalOrigin**: if this function was created using a call to eval returns a CallSite object representing the location where eval was called\n> * **isToplevel**: is this a toplevel invocation, that is, is this the global object?\n> * **isEval**: does this call take place in code defined by a call to eval?\n> * **isNative**: is this call in native V8 code?\n> * **isConstructor**: is this a constructor call?\n\n[v8stackapi]: http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n\n## License\n\nstack-trace is licensed under the MIT license.\n",
-  "readmeFilename": "Readme.md",
-  "bugs": {
-    "url": "https://github.com/felixge/node-stack-trace/issues"
-  },
-  "_id": "stack-trace@0.0.9",
-  "_from": "stack-trace@0.0.x"
-}


[16/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/methods-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/methods-test.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/methods-test.js
deleted file mode 100644
index d3f0c84..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/methods-test.js
+++ /dev/null
@@ -1,342 +0,0 @@
-(function() {
-  var assert, cases, vows, util;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  util = require('../../lib/util');
-
-  cases = require('./cases');
-
-  vows.describe('Module Inflector methods').addBatch({
-    'Test inflector method': {
-      topic: require('../../lib/methods'),
-      'camelize': {
-        'word': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.CamelToUnderscore;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.camelize(words[i]), i));
-          }
-          return _results;
-        },
-        'word with first letter lower': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoreToLowerCamel;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.camelize(i, false), words[i]));
-          }
-          return _results;
-        },
-        'path': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.CamelWithModuleToUnderscoreWithSlash;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.camelize(words[i]), i));
-          }
-          return _results;
-        },
-        'path with first letter lower': function(topic) {
-          return assert.equal(topic.camelize('bullet_record/errors', false), 'bulletRecord.Errors');
-        }
-      },
-      'underscore': {
-        'word': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.CamelToUnderscore;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.underscore(i), words[i]);
-          }
-          words = cases.CamelToUnderscoreWithoutReverse;
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.underscore(i), words[i]));
-          }
-          return _results;
-        },
-        'path': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.CamelWithModuleToUnderscoreWithSlash;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.underscore(i), words[i]));
-          }
-          return _results;
-        },
-        'from dasherize': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoresToDashes;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.underscore(topic.dasherize(i)), i));
-          }
-          return _results;
-        }
-      },
-      'dasherize': {
-        'underscored_word': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoresToDashes;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.dasherize(i), words[i]));
-          }
-          return _results;
-        }
-      },
-      'demodulize': {
-        'module name': function(topic) {
-          return assert.equal(topic.demodulize('BulletRecord.CoreExtensions.Inflections'), 'Inflections');
-        },
-        'isolated module name': function(topic) {
-          return assert.equal(topic.demodulize('Inflections'), 'Inflections');
-        }
-      },
-      'foreign_key': {
-        'normal': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.ClassNameToForeignKeyWithoutUnderscore;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.foreign_key(i, false), words[i]));
-          }
-          return _results;
-        },
-        'with_underscore': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.ClassNameToForeignKeyWithUnderscore;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.foreign_key(i), words[i]));
-          }
-          return _results;
-        }
-      },
-      'ordinalize': function(topic) {
-        var i, words, _i, _len, _ref, _results;
-        words = cases.OrdinalNumbers;
-        _ref = Object.keys(words);
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          i = _ref[_i];
-          _results.push(assert.equal(topic.ordinalize(i), words[i]));
-        }
-        return _results;
-      }
-    }
-  }).addBatch({
-    'Test inflector inflection methods': {
-      topic: function() {
-        var Inflector;
-        Inflector = require('../../lib/methods');
-        Inflector.inflections["default"]();
-        return Inflector;
-      },
-      'pluralize': {
-        'empty': function(topic) {
-          return assert.equal(topic.pluralize(''), '');
-        },
-        'uncountable': function(topic) {
-          return assert.equal(topic.pluralize('money'), 'money');
-        },
-        'normal': function(topic) {
-          topic.inflections.irregular('octopus', 'octopi');
-          return assert.equal(topic.pluralize('octopus'), 'octopi');
-        },
-        'cases': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.SingularToPlural;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.pluralize(i), words[i]);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.pluralize(util.string.capitalize(i)), util.string.capitalize(words[i])));
-          }
-          return _results;
-        },
-        'cases plural': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.SingularToPlural;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.pluralize(words[i]), words[i]);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.pluralize(util.string.capitalize(words[i])), util.string.capitalize(words[i])));
-          }
-          return _results;
-        }
-      },
-      'singuralize': {
-        'empty': function(topic) {
-          return assert.equal(topic.singularize(''), '');
-        },
-        'uncountable': function(topic) {
-          return assert.equal(topic.singularize('money'), 'money');
-        },
-        'normal': function(topic) {
-          topic.inflections.irregular('octopus', 'octopi');
-          return assert.equal(topic.singularize('octopi'), 'octopus');
-        },
-        'cases': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.SingularToPlural;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.singularize(words[i]), i);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.singularize(util.string.capitalize(words[i])), util.string.capitalize(i)));
-          }
-          return _results;
-        }
-      },
-      'uncountablility': {
-        'normal': function(topic) {
-          var i, words, _i, _j, _k, _len, _len2, _len3, _results;
-          words = topic.inflections.uncountables;
-          for (_i = 0, _len = words.length; _i < _len; _i++) {
-            i = words[_i];
-            assert.equal(topic.singularize(i), i);
-          }
-          for (_j = 0, _len2 = words.length; _j < _len2; _j++) {
-            i = words[_j];
-            assert.equal(topic.pluralize(i), i);
-          }
-          _results = [];
-          for (_k = 0, _len3 = words.length; _k < _len3; _k++) {
-            i = words[_k];
-            _results.push(assert.equal(topic.singularize(i), topic.pluralize(i)));
-          }
-          return _results;
-        },
-        'greedy': function(topic) {
-          var countable_word, uncountable_word;
-          uncountable_word = "ors";
-          countable_word = "sponsor";
-          topic.inflections.uncountable(uncountable_word);
-          assert.equal(topic.singularize(uncountable_word), uncountable_word);
-          assert.equal(topic.pluralize(uncountable_word), uncountable_word);
-          assert.equal(topic.pluralize(uncountable_word), topic.singularize(uncountable_word));
-          assert.equal(topic.singularize(countable_word), 'sponsor');
-          assert.equal(topic.pluralize(countable_word), 'sponsors');
-          return assert.equal(topic.singularize(topic.pluralize(countable_word)), 'sponsor');
-        }
-      },
-      'humanize': {
-        'normal': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.UnderscoreToHuman;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.humanize(i), words[i]));
-          }
-          return _results;
-        },
-        'with rule': function(topic) {
-          topic.inflections.human(/^(.*)_cnt$/i, '$1_count');
-          topic.inflections.human(/^prefix_(.*)$/i, '$1');
-          assert.equal(topic.humanize('jargon_cnt'), 'Jargon count');
-          return assert.equal(topic.humanize('prefix_request'), 'Request');
-        },
-        'with string': function(topic) {
-          topic.inflections.human('col_rpted_bugs', 'Reported bugs');
-          assert.equal(topic.humanize('col_rpted_bugs'), 'Reported bugs');
-          return assert.equal(topic.humanize('COL_rpted_bugs'), 'Col rpted bugs');
-        },
-        'with _id': function(topic) {
-          return assert.equal(topic.humanize('author_id'), 'Author');
-        }
-      },
-      'titleize': {
-        'normal': function(topic) {
-          var i, words, _i, _len, _ref, _results;
-          words = cases.MixtureToTitleCase;
-          _ref = Object.keys(words);
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            _results.push(assert.equal(topic.titleize(i), words[i]));
-          }
-          return _results;
-        },
-        'with hyphens': function(topic) {
-          return assert.equal(topic.titleize('x-men: the last stand'), 'X Men: The Last Stand');
-        }
-      },
-      'tableize': function(topic) {
-        var i, words, _i, _len, _ref, _results;
-        words = cases.ClassNameToTableName;
-        _ref = Object.keys(words);
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          i = _ref[_i];
-          _results.push(assert.equal(topic.tableize(i), words[i]));
-        }
-        return _results;
-      },
-      'classify': {
-        'underscore': function(topic) {
-          var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
-          words = cases.ClassNameToTableName;
-          _ref = Object.keys(words);
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            i = _ref[_i];
-            assert.equal(topic.classify(words[i]), i);
-          }
-          _ref2 = Object.keys(words);
-          _results = [];
-          for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
-            i = _ref2[_j];
-            _results.push(assert.equal(topic.classify('table_prefix.' + words[i]), i));
-          }
-          return _results;
-        },
-        'normal': function(topic) {
-          topic.inflections.irregular('octopus', 'octopi');
-          return assert.equal(topic.classify('octopi'), 'Octopus');
-        }
-      }
-    }
-  })["export"](module);
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/array-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/array-test.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/array-test.js
deleted file mode 100644
index 95ba2bc..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/array-test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-(function() {
-  var assert, vows, util;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  util = require('../../lib/util');
-
-  vows.describe('Module core extension Array').addBatch({
-    'Testing del': {
-      topic: ['a', 'b', 'c'],
-      'element exists': {
-        'first element': function(topic) {
-          return assert.deepEqual(util.array.del(topic, 'a'), ['b', 'c']);
-        },
-        'middle element': function(topic) {
-          return assert.deepEqual(util.array.del(topic, 'b'), ['a', 'c']);
-        },
-        'last element': function(topic) {
-          return assert.deepEqual(util.array.del(topic, 'c'), ['a', 'b']);
-        }
-      },
-      'element does not exist': function(topic) {
-        return assert.deepEqual(util.array.del(topic, 'd'), ['a', 'b', 'c']);
-      }
-    },
-    'Testing utils': {
-      topic: ['a', 'b', 'c'],
-      'first': function(topic) {
-        return assert.equal(util.array.first(topic), 'a');
-      },
-      'last': function(topic) {
-        return assert.equal(util.array.last(topic), 'c');
-      }
-    }
-  })["export"](module);
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/string-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/string-test.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/string-test.js
deleted file mode 100644
index e932233..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/utils/string-test.js
+++ /dev/null
@@ -1,88 +0,0 @@
-(function() {
-  var assert, vows, util;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  util = require('../../lib/util');
-
-  vows.describe('Module core extension String').addBatch({
-    'Testing value': {
-      topic: 'bullet',
-      'join the keys': function(topic) {
-        return assert.equal(util.string.value(topic), 'bullet');
-      }
-    },
-    'Testing gsub': {
-      topic: 'bullet',
-      'when no args': function(topic) {
-        return assert.equal(util.string.gsub(topic), 'bullet');
-      },
-      'when only 1 arg': function(topic) {
-        return assert.equal(util.string.gsub(topic, /./), 'bullet');
-      },
-      'when given proper args': function(topic) {
-        return assert.equal(util.string.gsub(topic, /[aeiou]/, '*'), 'b*ll*t');
-      },
-      'when replacement is a function': {
-        'with many groups': function(topic) {
-          var str;
-          str = util.string.gsub(topic, /([aeiou])(.)/, function($) {
-            return "<" + $[1] + ">" + $[2];
-          });
-          return assert.equal(str, 'b<u>ll<e>t');
-        },
-        'with no groups': function(topic) {
-          var str;
-          str = util.string.gsub(topic, /[aeiou]/, function($) {
-            return "<" + $[1] + ">";
-          });
-          return assert.equal(str, 'b<u>ll<e>t');
-        }
-      },
-      'when replacement is special': {
-        'with many groups': function(topic) {
-          return assert.equal(util.string.gsub(topic, /([aeiou])(.)/, '<$1>$2'), 'b<u>ll<e>t');
-        },
-        'with no groups': function(topic) {
-          return assert.equal(util.string.gsub(topic, /[aeiou]/, '<$1>'), 'b<u>ll<e>t');
-        }
-      }
-    },
-    'Testing capitalize': {
-      topic: 'employee salary',
-      'normal': function(topic) {
-        return assert.equal(util.string.capitalize(topic), 'Employee Salary');
-      }
-    },
-    'Testing upcase': {
-      topic: 'bullet',
-      'only first letter should be upcase': function(topic) {
-        return assert.equal(util.string.upcase(topic), 'Bullet');
-      },
-      'letter after underscore': function(topic) {
-        return assert.equal(util.string.upcase('bullet_record'), 'Bullet_Record');
-      },
-      'letter after slash': function(topic) {
-        return assert.equal(util.string.upcase('bullet_record/errors'), 'Bullet_Record/Errors');
-      },
-      'no letter after space': function(topic) {
-        return assert.equal(util.string.upcase('employee salary'), 'Employee salary');
-      }
-    },
-    'Testing downcase': {
-      topic: 'BULLET',
-      'only first letter should be downcase': function(topic) {
-        return assert.equal(util.string.downcase(topic), 'bULLET');
-      },
-      'letter after underscore': function(topic) {
-        return assert.equal(util.string.downcase('BULLET_RECORD'), 'bULLET_rECORD');
-      },
-      'letter after slash': function(topic) {
-        return assert.equal(util.string.downcase('BULLET_RECORD/ERRORS'), 'bULLET_rECORD/eRRORS');
-      }
-    }
-  })["export"](module);
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.npmignore b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.npmignore
deleted file mode 100644
index 9303c34..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.travis.yml b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.travis.yml
deleted file mode 100644
index 84fd7ca..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-  - 0.9

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/LICENSE b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/LICENSE
deleted file mode 100644
index 432d1ae..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-
-This project is free software released under the MIT/X11 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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/examples/pow.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/examples/pow.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/examples/pow.js
deleted file mode 100644
index e692421..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/examples/pow.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
-    if (err) console.error(err)
-    else console.log('pow!')
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/index.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/index.js
deleted file mode 100644
index fda6de8..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-
-module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
-
-function mkdirP (p, mode, f, made) {
-    if (typeof mode === 'function' || mode === undefined) {
-        f = mode;
-        mode = 0777 & (~process.umask());
-    }
-    if (!made) made = null;
-
-    var cb = f || function () {};
-    if (typeof mode === 'string') mode = parseInt(mode, 8);
-    p = path.resolve(p);
-
-    fs.mkdir(p, mode, function (er) {
-        if (!er) {
-            made = made || p;
-            return cb(null, made);
-        }
-        switch (er.code) {
-            case 'ENOENT':
-                mkdirP(path.dirname(p), mode, function (er, made) {
-                    if (er) cb(er, made);
-                    else mkdirP(p, mode, cb, made);
-                });
-                break;
-
-            // In the case of any other error, just see if there's a dir
-            // there already.  If so, then hooray!  If not, then something
-            // is borked.
-            default:
-                fs.stat(p, function (er2, stat) {
-                    // if the stat fails, then that's super weird.
-                    // let the original error be the failure reason.
-                    if (er2 || !stat.isDirectory()) cb(er, made)
-                    else cb(null, made);
-                });
-                break;
-        }
-    });
-}
-
-mkdirP.sync = function sync (p, mode, made) {
-    if (mode === undefined) {
-        mode = 0777 & (~process.umask());
-    }
-    if (!made) made = null;
-
-    if (typeof mode === 'string') mode = parseInt(mode, 8);
-    p = path.resolve(p);
-
-    try {
-        fs.mkdirSync(p, mode);
-        made = made || p;
-    }
-    catch (err0) {
-        switch (err0.code) {
-            case 'ENOENT' :
-                made = sync(path.dirname(p), mode, made);
-                sync(p, mode, made);
-                break;
-
-            // In the case of any other error, just see if there's a dir
-            // there already.  If so, then hooray!  If not, then something
-            // is borked.
-            default:
-                var stat;
-                try {
-                    stat = fs.statSync(p);
-                }
-                catch (err1) {
-                    throw err0;
-                }
-                if (!stat.isDirectory()) throw err0;
-                break;
-        }
-    }
-
-    return made;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/package.json b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/package.json
deleted file mode 100644
index bae451a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-  "name": "mkdirp",
-  "description": "Recursively mkdir, like `mkdir -p`",
-  "version": "0.3.5",
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "main": "./index",
-  "keywords": [
-    "mkdir",
-    "directory"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-mkdirp.git"
-  },
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "devDependencies": {
-    "tap": "~0.4.0"
-  },
-  "license": "MIT",
-  "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n    \nmkdirp('/tmp/foo/bar/baz', function (err) {\n    if (err) console.error(err)\n    else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it def
 aults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n",
-  "readmeFilename": "readme.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/node-mkdirp/issues"
-  },
-  "_id": "mkdirp@0.3.5",
-  "_from": "mkdirp@0.x.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/readme.markdown
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/readme.markdown b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/readme.markdown
deleted file mode 100644
index 83b0216..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/readme.markdown
+++ /dev/null
@@ -1,63 +0,0 @@
-# mkdirp
-
-Like `mkdir -p`, but in node.js!
-
-[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
-
-# example
-
-## pow.js
-
-```js
-var mkdirp = require('mkdirp');
-    
-mkdirp('/tmp/foo/bar/baz', function (err) {
-    if (err) console.error(err)
-    else console.log('pow!')
-});
-```
-
-Output
-
-```
-pow!
-```
-
-And now /tmp/foo/bar/baz exists, huzzah!
-
-# methods
-
-```js
-var mkdirp = require('mkdirp');
-```
-
-## mkdirp(dir, mode, cb)
-
-Create a new directory and any necessary subdirectories at `dir` with octal
-permission string `mode`.
-
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-`cb(err, made)` fires with the error or the first directory `made`
-that had to be created, if any.
-
-## mkdirp.sync(dir, mode)
-
-Synchronously create a new directory and any necessary subdirectories at `dir`
-with octal permission string `mode`.
-
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-Returns the first directory that had to be created, if any.
-
-# install
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install mkdirp
-```
-
-# license
-
-MIT

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/chmod.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/chmod.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/chmod.js
deleted file mode 100644
index 520dcb8..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/chmod.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
-    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    ps.push(dir);
-}
-
-var file = ps.join('/');
-
-test('chmod-pre', function (t) {
-    var mode = 0744
-    mkdirp(file, mode, function (er) {
-        t.ifError(er, 'should not error');
-        fs.stat(file, function (er, stat) {
-            t.ifError(er, 'should exist');
-            t.ok(stat && stat.isDirectory(), 'should be directory');
-            t.equal(stat && stat.mode & 0777, mode, 'should be 0744');
-            t.end();
-        });
-    });
-});
-
-test('chmod', function (t) {
-    var mode = 0755
-    mkdirp(file, mode, function (er) {
-        t.ifError(er, 'should not error');
-        fs.stat(file, function (er, stat) {
-            t.ifError(er, 'should exist');
-            t.ok(stat && stat.isDirectory(), 'should be directory');
-            t.end();
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/clobber.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/clobber.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/clobber.js
deleted file mode 100644
index 0eb7099..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/clobber.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
-    var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-    ps.push(dir);
-}
-
-var file = ps.join('/');
-
-// a file in the way
-var itw = ps.slice(0, 3).join('/');
-
-
-test('clobber-pre', function (t) {
-    console.error("about to write to "+itw)
-    fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
-
-    fs.stat(itw, function (er, stat) {
-        t.ifError(er)
-        t.ok(stat && stat.isFile(), 'should be file')
-        t.end()
-    })
-})
-
-test('clobber', function (t) {
-    t.plan(2);
-    mkdirp(file, 0755, function (err) {
-        t.ok(err);
-        t.equal(err.code, 'ENOTDIR');
-        t.end();
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/mkdirp.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/mkdirp.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/mkdirp.js
deleted file mode 100644
index b07cd70..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/mkdirp.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('woo', function (t) {
-    t.plan(2);
-    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 file = '/tmp/' + [x,y,z].join('/');
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm.js
deleted file mode 100644
index 23a7abb..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('async perm', function (t) {
-    t.plan(2);
-    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});
-
-test('async root perm', function (t) {
-    mkdirp('/tmp', 0755, function (err) {
-        if (err) t.fail(err);
-        t.end();
-    });
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm_sync.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm_sync.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm_sync.js
deleted file mode 100644
index f685f60..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/perm_sync.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('sync perm', function (t) {
-    t.plan(2);
-    var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
-    
-    mkdirp.sync(file, 0755);
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, 0755);
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        })
-    });
-});
-
-test('sync root perm', function (t) {
-    t.plan(1);
-    
-    var file = '/tmp';
-    mkdirp.sync(file, 0755);
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/race.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/race.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/race.js
deleted file mode 100644
index 96a0447..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/race.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('race', function (t) {
-    t.plan(4);
-    var ps = [ '', 'tmp' ];
-    
-    for (var i = 0; i < 25; i++) {
-        var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-        ps.push(dir);
-    }
-    var file = ps.join('/');
-    
-    var res = 2;
-    mk(file, function () {
-        if (--res === 0) t.end();
-    });
-    
-    mk(file, function () {
-        if (--res === 0) t.end();
-    });
-    
-    function mk (file, cb) {
-        mkdirp(file, 0755, function (err) {
-            if (err) t.fail(err);
-            else path.exists(file, function (ex) {
-                if (!ex) t.fail('file not created')
-                else fs.stat(file, function (err, stat) {
-                    if (err) t.fail(err)
-                    else {
-                        t.equal(stat.mode & 0777, 0755);
-                        t.ok(stat.isDirectory(), 'target not a directory');
-                        if (cb) cb();
-                    }
-                })
-            })
-        });
-    }
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/rel.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/rel.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/rel.js
deleted file mode 100644
index 7985824..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/rel.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('rel', function (t) {
-    t.plan(2);
-    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 cwd = process.cwd();
-    process.chdir('/tmp');
-    
-    var file = [x,y,z].join('/');
-    
-    mkdirp(file, 0755, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    process.chdir(cwd);
-                    t.equal(stat.mode & 0777, 0755);
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return.js
deleted file mode 100644
index bce68e5..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
-    t.plan(4);
-    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 file = '/tmp/' + [x,y,z].join('/');
-
-    // should return the first dir created.
-    // By this point, it would be profoundly surprising if /tmp didn't
-    // already exist, since every other test makes things in there.
-    mkdirp(file, function (err, made) {
-        t.ifError(err);
-        t.equal(made, '/tmp/' + x);
-        mkdirp(file, function (err, made) {
-          t.ifError(err);
-          t.equal(made, null);
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return_sync.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return_sync.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return_sync.js
deleted file mode 100644
index 7c222d3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/return_sync.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
-    t.plan(2);
-    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 file = '/tmp/' + [x,y,z].join('/');
-
-    // should return the first dir created.
-    // By this point, it would be profoundly surprising if /tmp didn't
-    // already exist, since every other test makes things in there.
-    // Note that this will throw on failure, which will fail the test.
-    var made = mkdirp.sync(file);
-    t.equal(made, '/tmp/' + x);
-
-    // making the same file again should have no effect.
-    made = mkdirp.sync(file);
-    t.equal(made, null);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/root.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/root.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/root.js
deleted file mode 100644
index 97ad7a2..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/root.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('root', function (t) {
-    // '/' on unix, 'c:/' on windows.
-    var file = path.resolve('/');
-
-    mkdirp(file, 0755, function (err) {
-        if (err) throw err
-        fs.stat(file, function (er, stat) {
-            if (er) throw er
-            t.ok(stat.isDirectory(), 'target is a directory');
-            t.end();
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/sync.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/sync.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/sync.js
deleted file mode 100644
index 7530cad..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('sync', function (t) {
-    t.plan(2);
-    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 file = '/tmp/' + [x,y,z].join('/');
-
-    try {
-        mkdirp.sync(file, 0755);
-    } catch (err) {
-        t.fail(err);
-        return t.end();
-    }
-
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, 0755);
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask.js
deleted file mode 100644
index 64ccafe..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('implicit mode from umask', function (t) {
-    t.plan(2);
-    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 file = '/tmp/' + [x,y,z].join('/');
-    
-    mkdirp(file, function (err) {
-        if (err) t.fail(err);
-        else path.exists(file, function (ex) {
-            if (!ex) t.fail('file not created')
-            else fs.stat(file, function (err, stat) {
-                if (err) t.fail(err)
-                else {
-                    t.equal(stat.mode & 0777, 0777 & (~process.umask()));
-                    t.ok(stat.isDirectory(), 'target not a directory');
-                    t.end();
-                }
-            })
-        })
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask_sync.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask_sync.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask_sync.js
deleted file mode 100644
index 35bd5cb..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/mkdirp/test/umask_sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('umask sync modes', function (t) {
-    t.plan(2);
-    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 file = '/tmp/' + [x,y,z].join('/');
-
-    try {
-        mkdirp.sync(file);
-    } catch (err) {
-        t.fail(err);
-        return t.end();
-    }
-
-    path.exists(file, function (ex) {
-        if (!ex) t.fail('file not created')
-        else fs.stat(file, function (err, stat) {
-            if (err) t.fail(err)
-            else {
-                t.equal(stat.mode & 0777, (0777 & (~process.umask())));
-                t.ok(stat.isDirectory(), 'target not a directory');
-                t.end();
-            }
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.npmignore b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.npmignore
deleted file mode 100644
index 9ecd205..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-node_modules
-.*.sw[op]
-.DS_Store
-test/fixtures/out

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.travis.yml b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.travis.yml
deleted file mode 100644
index f686c49..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: node_js
-
-node_js:
-  - 0.4
-  - 0.6
-  - 0.7
-  - 0.8

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/LICENSE.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/LICENSE.md b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/LICENSE.md
deleted file mode 100644
index e2b9b41..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# MIT License
-
-###Copyright (C) 2011 by Charlie McConnell
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/README.md b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/README.md
deleted file mode 100644
index 79ad086..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# ncp - Asynchronous recursive file & directory copying
-
-[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp)
-
-Think `cp -r`, but pure node, and asynchronous.  `ncp` can be used both as a CLI tool and programmatically.
-
-## Command Line usage
-
-Usage is simple: `ncp [source] [dest] [--limit=concurrency limit]
-[--filter=filter] --stopOnErr`
-
-The 'filter' is a Regular Expression - matched files will be copied.
-
-The 'concurrency limit' is an integer that represents how many pending file system requests `ncp` has at a time.
-
-'stopOnErr' is a boolean flag that will tell `ncp` to stop immediately if any
-errors arise, rather than attempting to continue while logging errors.
-
-If there are no errors, `ncp` will output `done.` when complete.  If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue.
-
-## Programmatic usage
-
-Programmatic usage of `ncp` is just as simple.  The only argument to the completion callback is a possible error.  
-
-```javascript
-var ncp = require('ncp').ncp;
-
-ncp.limit = 16;
-
-ncp(source, destination, function (err) {
- if (err) {
-   return console.error(err);
- }
- console.log('done!');
-});
-```
-
-You can also call ncp like `ncp(source, destination, options, callback)`. 
-`options` should be a dictionary. Currently, such options are available:
-
-  * `options.filter` - a `RegExp` instance, against which each file name is
-  tested to determine whether to copy it or not, or a function taking single
-  parameter: copied file name, returning `true` or `false`, determining
-  whether to copy file or not.
-
-  * `options.transform` - a function: `function (read, write) { read.pipe(write) }`
-  used to apply streaming transforms while copying.
-
-  * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite 
-  destination files that already exist.
-
-Please open an issue if any bugs arise.  As always, I accept (working) pull requests, and refunds are available at `/dev/null`.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/bin/ncp
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/bin/ncp b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/bin/ncp
deleted file mode 100755
index 388eaba..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/bin/ncp
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env node
-
-
-
-
-var ncp = require('../lib/ncp'),
-    args = process.argv.slice(2),
-    source, dest;
-
-if (args.length < 2) {
-  console.error('Usage: ncp [source] [destination] [--filter=filter] [--limit=concurrency limit]');
-  process.exit(1);
-}
-
-// parse arguments the hard way
-function startsWith(str, prefix) {
-  return str.substr(0, prefix.length) == prefix;
-}
-
-var options = {};
-args.forEach(function (arg) {
-  if (startsWith(arg, "--limit=")) {
-    options.limit = parseInt(arg.split('=', 2)[1], 10);
-  }
-  if (startsWith(arg, "--filter=")) {
-    options.filter = new RegExp(arg.split('=', 2)[1]);
-  }
-  if (startsWith(arg, "--stoponerr")) {
-    options.stopOnErr = true;
-  }
-});
-
-ncp.ncp(args[0], args[1], options, function (err) {
-  if (Array.isArray(err)) {
-    console.error('There were errors during the copy.');
-    err.forEach(function (err) {
-      console.error(err.stack || err.message);
-    });
-    process.exit(1);
-  }
-  else if (err) {
-    console.error('An error has occurred.');
-    console.error(err.stack || err.message);
-    process.exit(1);
-  }
-});
-
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/lib/ncp.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/lib/ncp.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/lib/ncp.js
deleted file mode 100644
index d871e00..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/lib/ncp.js
+++ /dev/null
@@ -1,222 +0,0 @@
-var fs = require('fs'),
-    path = require('path');
-
-module.exports = ncp
-ncp.ncp = ncp
-
-function ncp (source, dest, options, callback) {
-  if (!callback) {
-    callback = options;
-    options = {};
-  }
-
-  var basePath = process.cwd(),
-      currentPath = path.resolve(basePath, source),
-      targetPath = path.resolve(basePath, dest),
-      filter = options.filter,
-      transform = options.transform,
-      clobber = options.clobber !== false,
-      errs = null,
-      started = 0,
-      finished = 0,
-      running = 0,
-      limit = options.limit || ncp.limit || 16;
-
-  limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit;
-
-  startCopy(currentPath);
-  
-  function startCopy(source) {
-    started++;
-    if (filter) {
-      if (filter instanceof RegExp) {
-        if (!filter.test(source)) {
-          return cb(true);
-        }
-      }
-      else if (typeof filter === 'function') {
-        if (!filter(source)) {
-          return cb(true);
-        }
-      }
-    }
-    return getStats(source);
-  }
-
-  function defer(fn) {
-    if (typeof(setImmediate) === 'function')
-      return setImmediate(fn);
-    return process.nextTick(fn);
-  }
-
-  function getStats(source) {
-    if (running >= limit) {
-      return defer(function () {
-        getStats(source);
-      });
-    }
-    running++;
-    fs.lstat(source, function (err, stats) {
-      var item = {};
-      if (err) {
-        return onError(err);
-      }
-
-      // We need to get the mode from the stats object and preserve it.
-      item.name = source;
-      item.mode = stats.mode;
-
-      if (stats.isDirectory()) {
-        return onDir(item);
-      }
-      else if (stats.isFile()) {
-        return onFile(item);
-      }
-      else if (stats.isSymbolicLink()) {
-        // Symlinks don't really need to know about the mode.
-        return onLink(source);
-      }
-    });
-  }
-
-  function onFile(file) {
-    var target = file.name.replace(currentPath, targetPath);
-    isWritable(target, function (writable) {
-      if (writable) {
-        return copyFile(file, target);
-      }
-      if(clobber)
-        rmFile(target, function () {
-          copyFile(file, target);
-        });
-    });
-  }
-
-  function copyFile(file, target) {
-    var readStream = fs.createReadStream(file.name),
-        writeStream = fs.createWriteStream(target, { mode: file.mode });
-    if(transform) {
-      transform(readStream, writeStream,file);
-    } else {
-      readStream.pipe(writeStream);
-    }
-    readStream.once('end', cb);
-  }
-
-  function rmFile(file, done) {
-    fs.unlink(file, function (err) {
-      if (err) {
-        return onError(err);
-      }
-      return done();
-    });
-  }
-
-  function onDir(dir) {
-    var target = dir.name.replace(currentPath, targetPath);
-    isWritable(target, function (writable) {
-      if (writable) {
-        return mkDir(dir, target);
-      }
-      copyDir(dir.name);
-    });
-  }
-
-  function mkDir(dir, target) {
-    fs.mkdir(target, dir.mode, function (err) {
-      if (err) {
-        return onError(err);
-      }
-      copyDir(dir.name);
-    });
-  }
-
-  function copyDir(dir) {
-    fs.readdir(dir, function (err, items) {
-      if (err) {
-        return onError(err);
-      }
-      items.forEach(function (item) {
-        startCopy(dir + '/' + item);
-      });
-      return cb();
-    });
-  }
-
-  function onLink(link) {
-    var target = link.replace(currentPath, targetPath);
-    fs.readlink(link, function (err, resolvedPath) {
-      if (err) {
-        return onError(err);
-      }
-      checkLink(resolvedPath, target);
-    });
-  }
-
-  function checkLink(resolvedPath, target) {
-    isWritable(target, function (writable) {
-      if (writable) {
-        return makeLink(resolvedPath, target);
-      }
-      fs.readlink(target, function (err, targetDest) {
-        if (err) {
-          return onError(err);
-        }
-        if (targetDest === resolvedPath) {
-          return cb();
-        }
-        return rmFile(target, function () {
-          makeLink(resolvedPath, target);
-        });
-      });
-    });
-  }
-
-  function makeLink(linkPath, target) {
-    fs.symlink(linkPath, target, function (err) {
-      if (err) {
-        return onError(err);
-      }
-      return cb();
-    });
-  }
-
-  function isWritable(path, done) {
-    fs.lstat(path, function (err, stats) {
-      if (err) {
-        if (err.code === 'ENOENT') return done(true);
-        return done(false);
-      }
-      return done(false);
-    });
-  }
-
-  function onError(err) {
-    if (options.stopOnError) {
-      return callback(err);
-    }
-    else if (!errs && options.errs) {
-      errs = fs.createWriteStream(options.errs);
-    }
-    else if (!errs) {
-      errs = [];
-    }
-    if (typeof errs.write === 'undefined') {
-        errs.push(err);
-    }
-    else { 
-        errs.write(err.stack + '\n\n');
-    }
-    return cb();
-  }
-
-  function cb(skipped) {
-    if (!skipped) running--;
-    finished++;
-    if ((started === finished) && (running === 0)) {
-      return errs ? callback(errs) : callback(null);
-    }
-  }
-};
-
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/package.json b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/package.json
deleted file mode 100644
index 42f0568..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "name": "ncp",
-  "version": "0.4.2",
-  "author": {
-    "name": "AvianFlu",
-    "email": "charlie@charlieistheman.com"
-  },
-  "description": "Asynchronous recursive file copy utility.",
-  "bin": {
-    "ncp": "./bin/ncp"
-  },
-  "devDependencies": {
-    "vows": "0.6.x",
-    "rimraf": "1.0.x",
-    "read-dir-files": "0.0.x"
-  },
-  "main": "./lib/ncp.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/AvianFlu/ncp.git"
-  },
-  "keywords": [
-    "cli",
-    "copy"
-  ],
-  "license": "MIT",
-  "engine": {
-    "node": ">=0.4"
-  },
-  "scripts": {
-    "test": "vows --isolate --spec"
-  },
-  "readme": "# ncp - Asynchronous recursive file & directory copying\n\n[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp)\n\nThink `cp -r`, but pure node, and asynchronous.  `ncp` can be used both as a CLI tool and programmatically.\n\n## Command Line usage\n\nUsage is simple: `ncp [source] [dest] [--limit=concurrency limit]\n[--filter=filter] --stopOnErr`\n\nThe 'filter' is a Regular Expression - matched files will be copied.\n\nThe 'concurrency limit' is an integer that represents how many pending file system requests `ncp` has at a time.\n\n'stopOnErr' is a boolean flag that will tell `ncp` to stop immediately if any\nerrors arise, rather than attempting to continue while logging errors.\n\nIf there are no errors, `ncp` will output `done.` when complete.  If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue.\n\n## Programmatic usage\n\nProgramm
 atic usage of `ncp` is just as simple.  The only argument to the completion callback is a possible error.  \n\n```javascript\nvar ncp = require('ncp').ncp;\n\nncp.limit = 16;\n\nncp(source, destination, function (err) {\n if (err) {\n   return console.error(err);\n }\n console.log('done!');\n});\n```\n\nYou can also call ncp like `ncp(source, destination, options, callback)`. \n`options` should be a dictionary. Currently, such options are available:\n\n  * `options.filter` - a `RegExp` instance, against which each file name is\n  tested to determine whether to copy it or not, or a function taking single\n  parameter: copied file name, returning `true` or `false`, determining\n  whether to copy file or not.\n\n  * `options.transform` - a function: `function (read, write) { read.pipe(write) }`\n  used to apply streaming transforms while copying.\n\n  * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite \n  destination files that already exist.\n\nPlease open a
 n issue if any bugs arise.  As always, I accept (working) pull requests, and refunds are available at `/dev/null`.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/AvianFlu/ncp/issues"
-  },
-  "_id": "ncp@0.4.2",
-  "_from": "ncp@0.4.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/a
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/a b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/a
deleted file mode 100644
index 802992c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/a
+++ /dev/null
@@ -1 +0,0 @@
-Hello world

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/b
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/b b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/b
deleted file mode 100644
index 9f6bb18..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/b
+++ /dev/null
@@ -1 +0,0 @@
-Hello ncp

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/c
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/c b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/c
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/d
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/d b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/d
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/e
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/e b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/e
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/f
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/f b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/f
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a
deleted file mode 100644
index cf291b5..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/a
+++ /dev/null
@@ -1 +0,0 @@
-Hello nodejitsu

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/b
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/b b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/fixtures/src/sub/b
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/ncp-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/ncp-test.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/ncp-test.js
deleted file mode 100644
index 3c613f7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/ncp/test/ncp-test.js
+++ /dev/null
@@ -1,86 +0,0 @@
-var assert = require('assert'),
-    path = require('path'),
-    rimraf = require('rimraf'),
-    vows = require('vows'),
-    readDirFiles = require('read-dir-files'),
-    ncp = require('../').ncp;
-
-var fixtures = path.join(__dirname, 'fixtures'),
-    src = path.join(fixtures, 'src'),
-    out = path.join(fixtures, 'out');
-
-vows.describe('ncp').addBatch({
-  'When copying a directory of files': {
-    topic: function () {
-      var cb = this.callback;
-      rimraf(out, function () {
-        ncp(src, out, cb);
-      });
-    },
-    'files should be copied': {
-      topic: function () {
-        var cb = this.callback;
-
-        readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
-          readDirFiles(out, 'utf8', function (outErr, outFiles) {
-            cb(outErr, srcFiles, outFiles);
-          });
-        });
-      },
-      'and the destination should match the source': function (err, srcFiles, outFiles) {
-        assert.isNull(err);
-        assert.deepEqual(srcFiles, outFiles);
-      }
-    }
-  }
-}).addBatch({
-  'When copying files using filter': {
-    topic: function() {
-      var cb = this.callback;
-      var filter = function(name) {
-        return name.substr(name.length - 1) != 'a'
-      }
-      rimraf(out, function () {
-        ncp(src, out, {filter: filter}, cb);
-      });
-    },
-    'it should copy files': {
-      topic: function () {
-        var cb = this.callback;
-
-        readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
-          function filter(files) {
-            for (var fileName in files) {
-              var curFile = files[fileName];
-              if (curFile instanceof Object)
-                return filter(curFile);
-              if (fileName.substr(fileName.length - 1) == 'a')
-                delete files[fileName];
-            }
-          }
-          filter(srcFiles);
-          readDirFiles(out, 'utf8', function (outErr, outFiles) {
-            cb(outErr, srcFiles, outFiles);
-          });
-        });
-      },
-      'and destination files should match source files that pass filter': function (err, srcFiles, outFiles) {
-        assert.isNull(err);
-        assert.deepEqual(srcFiles, outFiles);
-      }
-    }
-  }
-}).addBatch({
-   'When copying files using transform': {
-      'it should pass file descriptors along to transform functions': function() {
-         ncp(src, out, {
-            transform: function(read,write,file) {
-               assert.notEqual(file.name, undefined);
-               assert.strictEqual(typeof file.mode,'number');
-               read.pipe(write);
-            }
-         }, function(){});
-      }
-  }
-}).export(module);
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/AUTHORS
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/AUTHORS b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/AUTHORS
deleted file mode 100644
index 247b754..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/AUTHORS
+++ /dev/null
@@ -1,6 +0,0 @@
-# Authors sorted by whether or not they're me.
-Isaac Z. Schlueter <i...@izs.me> (http://blog.izs.me)
-Wayne Larsen <wa...@larsen.st> (http://github.com/wvl)
-ritch <sk...@gmail.com>
-Marcel Laverdet
-Yosef Dinerstein <yo...@microsoft.com>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/LICENSE b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/LICENSE
deleted file mode 100644
index 05a4010..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
-All rights reserved.
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/README.md b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/README.md
deleted file mode 100644
index cd123b6..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-`rm -rf` for node.
-
-Install with `npm install rimraf`, or just drop rimraf.js somewhere.
-
-## API
-
-`rimraf(f, callback)`
-
-The callback will be called with an error if there is one.  Certain
-errors are handled for you:
-
-* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of
-  `opts.maxBusyTries` times before giving up.
-* `ENOENT` - If the file doesn't exist, rimraf will return
-  successfully, since your desired outcome is already the case.
-
-## rimraf.sync
-
-It can remove stuff synchronously, too.  But that's not so good.  Use
-the async API.  It's better.
-
-## CLI
-
-If installed with `npm install rimraf -g` it can be used as a global
-command `rimraf <path>` which is useful for cross platform support.
-
-## mkdirp
-
-If you need to create a directory recursively, check out
-[mkdirp](https://github.com/substack/node-mkdirp).

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/bin.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/bin.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/bin.js
deleted file mode 100755
index 29bfa8a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/bin.js
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env node
-
-var rimraf = require('./')
-
-var help = false
-var dashdash = false
-var args = process.argv.slice(2).filter(function(arg) {
-  if (dashdash)
-    return !!arg
-  else if (arg === '--')
-    dashdash = true
-  else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
-    help = true
-  else
-    return !!arg
-});
-
-if (help || args.length === 0) {
-  // If they didn't ask for help, then this is not a "success"
-  var log = help ? console.log : console.error
-  log('Usage: rimraf <path>')
-  log('')
-  log('  Deletes all files and folders at "path" recursively.')
-  log('')
-  log('Options:')
-  log('')
-  log('  -h, --help    Display this usage info')
-  process.exit(help ? 0 : 1)
-} else {
-  args.forEach(function(arg) {
-    rimraf.sync(arg)
-  })
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/package.json b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/package.json
deleted file mode 100644
index e357fc8..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-  "name": "rimraf",
-  "version": "2.2.6",
-  "main": "rimraf.js",
-  "description": "A deep deletion module for node (like `rm -rf`)",
-  "author": {
-    "name": "Isaac Z. Schlueter",
-    "email": "i@izs.me",
-    "url": "http://blog.izs.me/"
-  },
-  "license": {
-    "type": "MIT",
-    "url": "https://github.com/isaacs/rimraf/raw/master/LICENSE"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/rimraf.git"
-  },
-  "scripts": {
-    "test": "cd test && bash run.sh"
-  },
-  "bin": {
-    "rimraf": "./bin.js"
-  },
-  "contributors": [
-    {
-      "name": "Isaac Z. Schlueter",
-      "email": "i@izs.me",
-      "url": "http://blog.izs.me"
-    },
-    {
-      "name": "Wayne Larsen",
-      "email": "wayne@larsen.st",
-      "url": "http://github.com/wvl"
-    },
-    {
-      "name": "ritch",
-      "email": "skawful@gmail.com"
-    },
-    {
-      "name": "Marcel Laverdet"
-    },
-    {
-      "name": "Yosef Dinerstein",
-      "email": "yosefd@microsoft.com"
-    }
-  ],
-  "readme": "`rm -rf` for node.\n\nInstall with `npm install rimraf`, or just drop rimraf.js somewhere.\n\n## API\n\n`rimraf(f, callback)`\n\nThe callback will be called with an error if there is one.  Certain\nerrors are handled for you:\n\n* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of\n  `opts.maxBusyTries` times before giving up.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n  successfully, since your desired outcome is already the case.\n\n## rimraf.sync\n\nIt can remove stuff synchronously, too.  But that's not so good.  Use\nthe async API.  It's better.\n\n## CLI\n\nIf installed with `npm install rimraf -g` it can be used as a global\ncommand `rimraf <path>` which is useful for cross platform support.\n\n## mkdirp\n\nIf you need to create a directory recursively, check out\n[mkdirp](https://github.com/substack/node-mkdirp).\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/isaacs/rimraf/issues"
-  },
-  "_id": "rimraf@2.2.6",
-  "_from": "rimraf@2.x.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/rimraf.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/rimraf.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/rimraf.js
deleted file mode 100644
index ce62051..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/rimraf.js
+++ /dev/null
@@ -1,178 +0,0 @@
-module.exports = rimraf
-rimraf.sync = rimrafSync
-
-var path = require("path")
-var fs = require("fs")
-
-// for EMFILE handling
-var timeout = 0
-exports.EMFILE_MAX = 1000
-exports.BUSYTRIES_MAX = 3
-
-var isWindows = (process.platform === "win32")
-
-function rimraf (p, cb) {
-  if (!cb) throw new Error("No callback passed to rimraf()")
-
-  var busyTries = 0
-  rimraf_(p, function CB (er) {
-    if (er) {
-      if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY") &&
-          busyTries < exports.BUSYTRIES_MAX) {
-        busyTries ++
-        var time = busyTries * 100
-        // try again, with the same exact callback as this one.
-        return setTimeout(function () {
-          rimraf_(p, CB)
-        }, time)
-      }
-
-      // this one won't happen if graceful-fs is used.
-      if (er.code === "EMFILE" && timeout < exports.EMFILE_MAX) {
-        return setTimeout(function () {
-          rimraf_(p, CB)
-        }, timeout ++)
-      }
-
-      // already gone
-      if (er.code === "ENOENT") er = null
-    }
-
-    timeout = 0
-    cb(er)
-  })
-}
-
-// Two possible strategies.
-// 1. Assume it's a file.  unlink it, then do the dir stuff on EPERM or EISDIR
-// 2. Assume it's a directory.  readdir, then do the file stuff on ENOTDIR
-//
-// Both result in an extra syscall when you guess wrong.  However, there
-// are likely far more normal files in the world than directories.  This
-// is based on the assumption that a the average number of files per
-// directory is >= 1.
-//
-// If anyone ever complains about this, then I guess the strategy could
-// be made configurable somehow.  But until then, YAGNI.
-function rimraf_ (p, cb) {
-  fs.unlink(p, function (er) {
-    if (er) {
-      if (er.code === "ENOENT")
-        return cb(null)
-      if (er.code === "EPERM")
-        return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb)
-      if (er.code === "EISDIR")
-        return rmdir(p, er, cb)
-    }
-    return cb(er)
-  })
-}
-
-function fixWinEPERM (p, er, cb) {
-  fs.chmod(p, 666, function (er2) {
-    if (er2)
-      cb(er2.code === "ENOENT" ? null : er)
-    else
-      fs.stat(p, function(er3, stats) {
-        if (er3)
-          cb(er3.code === "ENOENT" ? null : er)
-        else if (stats.isDirectory())
-          rmdir(p, er, cb)
-        else
-          fs.unlink(p, cb)
-      })
-  })
-}
-
-function fixWinEPERMSync (p, er, cb) {
-  try {
-    fs.chmodSync(p, 666)
-  } catch (er2) {
-    if (er2.code !== "ENOENT")
-      throw er
-  }
-
-  try {
-    var stats = fs.statSync(p)
-  } catch (er3) {
-    if (er3 !== "ENOENT")
-      throw er
-  }
-
-  if (stats.isDirectory())
-    rmdirSync(p, er)
-  else
-    fs.unlinkSync(p)
-}
-
-function rmdir (p, originalEr, cb) {
-  // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
-  // if we guessed wrong, and it's not a directory, then
-  // raise the original error.
-  fs.rmdir(p, function (er) {
-    if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM"))
-      rmkids(p, cb)
-    else if (er && er.code === "ENOTDIR")
-      cb(originalEr)
-    else
-      cb(er)
-  })
-}
-
-function rmkids(p, cb) {
-  fs.readdir(p, function (er, files) {
-    if (er)
-      return cb(er)
-    var n = files.length
-    if (n === 0)
-      return fs.rmdir(p, cb)
-    var errState
-    files.forEach(function (f) {
-      rimraf(path.join(p, f), function (er) {
-        if (errState)
-          return
-        if (er)
-          return cb(errState = er)
-        if (--n === 0)
-          fs.rmdir(p, cb)
-      })
-    })
-  })
-}
-
-// this looks simpler, and is strictly *faster*, but will
-// tie up the JavaScript thread and fail on excessively
-// deep directory trees.
-function rimrafSync (p) {
-  try {
-    fs.unlinkSync(p)
-  } catch (er) {
-    if (er.code === "ENOENT")
-      return
-    if (er.code === "EPERM")
-      return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er)
-    if (er.code !== "EISDIR")
-      throw er
-    rmdirSync(p, er)
-  }
-}
-
-function rmdirSync (p, originalEr) {
-  try {
-    fs.rmdirSync(p)
-  } catch (er) {
-    if (er.code === "ENOENT")
-      return
-    if (er.code === "ENOTDIR")
-      throw originalEr
-    if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")
-      rmkidsSync(p)
-  }
-}
-
-function rmkidsSync (p) {
-  fs.readdirSync(p).forEach(function (f) {
-    rimrafSync(path.join(p, f))
-  })
-  fs.rmdirSync(p)
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/run.sh
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/run.sh b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/run.sh
deleted file mode 100644
index 598f016..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/run.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-set -e
-for i in test-*.js; do
-  echo -n $i ...
-  bash setup.sh
-  node $i
-  ! [ -d target ]
-  echo "pass"
-done
-rm -rf target

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/setup.sh
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/setup.sh b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/setup.sh
deleted file mode 100644
index 2602e63..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/setup.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-
-set -e
-
-files=10
-folders=2
-depth=4
-target="$PWD/target"
-
-rm -rf target
-
-fill () {
-  local depth=$1
-  local files=$2
-  local folders=$3
-  local target=$4
-
-  if ! [ -d $target ]; then
-    mkdir -p $target
-  fi
-
-  local f
-
-  f=$files
-  while [ $f -gt 0 ]; do
-    touch "$target/f-$depth-$f"
-    let f--
-  done
-
-  let depth--
-
-  if [ $depth -le 0 ]; then
-    return 0
-  fi
-
-  f=$folders
-  while [ $f -gt 0 ]; do
-    mkdir "$target/folder-$depth-$f"
-    fill $depth $files $folders "$target/d-$depth-$f"
-    let f--
-  done
-}
-
-fill $depth $files $folders $target
-
-# sanity assert
-[ -d $target ]

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-async.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-async.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-async.js
deleted file mode 100644
index 9c2e0b7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-async.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var rimraf = require("../rimraf")
-  , path = require("path")
-rimraf(path.join(__dirname, "target"), function (er) {
-  if (er) throw er
-})


[30/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/.npmignore b/blackberry10/node_modules/elementtree/.npmignore
deleted file mode 100644
index 3c3629e..0000000
--- a/blackberry10/node_modules/elementtree/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/.travis.yml b/blackberry10/node_modules/elementtree/.travis.yml
deleted file mode 100644
index 6f27c96..0000000
--- a/blackberry10/node_modules/elementtree/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: node_js
-
-node_js:
-  - 0.6
-
-script: make test
-
-notifications:
-  email:
-    - tomaz+travisci@tomaz.me

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/CHANGES.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/CHANGES.md b/blackberry10/node_modules/elementtree/CHANGES.md
deleted file mode 100644
index 83bd61b..0000000
--- a/blackberry10/node_modules/elementtree/CHANGES.md
+++ /dev/null
@@ -1,34 +0,0 @@
-elementtree v0.1.5 (in development)
-
-* Fix a bug in the find() and findtext() method which could manifest itself
-  under some conditions.
-  [metagriffin]
-
-elementtree v0.1.4
-
-* Allow user to use namespaced attributes when using find* functions.
-  [Andrew Lunny]
-
-elementtree v0.1.3
-
-* Improve the output of text content in the tags (strip unnecessary line break
-  characters).
-
-[Darryl Pogue]
-
-elementtree v0.1.2
-
- * Allow user to pass 'indent' option to ElementTree.write method. If this
-   option is specified (e.g. {'indent': 4}). XML will be pretty printed.
-   [Darryl Pogue, Tomaz Muraus]
-
- * Bump sax dependency version.
-
-elementtree v0.1.1 - 2011-09-23
-
- * Improve special character escaping.
-   [Ryan Phillips]
-
-elementtree v0.1.0 - 2011-09-05
-
- * Initial release.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/LICENSE.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/LICENSE.txt b/blackberry10/node_modules/elementtree/LICENSE.txt
deleted file mode 100644
index 6b0b127..0000000
--- a/blackberry10/node_modules/elementtree/LICENSE.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/Makefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/Makefile b/blackberry10/node_modules/elementtree/Makefile
deleted file mode 100755
index ab7c4e0..0000000
--- a/blackberry10/node_modules/elementtree/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-TESTS := \
-	tests/test-simple.js
-
-
-
-PATH := ./node_modules/.bin:$(PATH)
-
-WHISKEY := $(shell bash -c 'PATH=$(PATH) type -p whiskey')
-
-default: test
-
-test:
-	NODE_PATH=`pwd`/lib/ ${WHISKEY} --scope-leaks --sequential --real-time --tests "${TESTS}"
-
-tap:
-	NODE_PATH=`pwd`/lib/ ${WHISKEY} --test-reporter tap --sequential --real-time --tests "${TESTS}"
-
-coverage:
-	NODE_PATH=`pwd`/lib/ ${WHISKEY} --sequential --coverage  --coverage-reporter html --coverage-dir coverage_html --tests "${TESTS}"
-
-.PHONY: default test coverage tap scope

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/NOTICE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/NOTICE b/blackberry10/node_modules/elementtree/NOTICE
deleted file mode 100644
index 28ad70a..0000000
--- a/blackberry10/node_modules/elementtree/NOTICE
+++ /dev/null
@@ -1,5 +0,0 @@
-node-elementtree
-Copyright (c) 2011, Rackspace, Inc.
-
-The ElementTree toolkit is Copyright (c) 1999-2007 by Fredrik Lundh
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/README.md b/blackberry10/node_modules/elementtree/README.md
deleted file mode 100644
index 8a7e710..0000000
--- a/blackberry10/node_modules/elementtree/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-node-elementtree
-====================
-
-node-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.
-
-Installation
-====================
-
-    $ npm install elementtree
-    
-Using the library
-====================
-
-For the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).
-
-Supported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).
-
-Build status
-====================
-
-[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)
-
-
-License
-====================
-
-node-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/constants.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/constants.js b/blackberry10/node_modules/elementtree/lib/constants.js
deleted file mode 100644
index b057faf..0000000
--- a/blackberry10/node_modules/elementtree/lib/constants.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var DEFAULT_PARSER = 'sax';
-
-exports.DEFAULT_PARSER = DEFAULT_PARSER;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/elementpath.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/elementpath.js b/blackberry10/node_modules/elementtree/lib/elementpath.js
deleted file mode 100644
index 2e93f47..0000000
--- a/blackberry10/node_modules/elementtree/lib/elementpath.js
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var sprintf = require('./sprintf').sprintf;
-
-var utils = require('./utils');
-var SyntaxError = require('./errors').SyntaxError;
-
-var _cache = {};
-
-var RE = new RegExp(
-  "(" +
-  "'[^']*'|\"[^\"]*\"|" +
-  "::|" +
-  "//?|" +
-  "\\.\\.|" +
-  "\\(\\)|" +
-  "[/.*:\\[\\]\\(\\)@=])|" +
-  "((?:\\{[^}]+\\})?[^/\\[\\]\\(\\)@=\\s]+)|" +
-  "\\s+", 'g'
-);
-
-var xpath_tokenizer = utils.findall.bind(null, RE);
-
-function prepare_tag(next, token) {
-  var tag = token[0];
-
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      elem._children.forEach(function(e) {
-        if (e.tag === tag) {
-          rv.push(e);
-        }
-      });
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_star(next, token) {
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      elem._children.forEach(function(e) {
-        rv.push(e);
-      });
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_dot(next, token) {
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      rv.push(elem);
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_iter(next, token) {
-  var tag;
-  token = next();
-
-  if (token[1] === '*') {
-    tag = '*';
-  }
-  else if (!token[1]) {
-    tag = token[0] || '';
-  }
-  else {
-    throw new SyntaxError(token);
-  }
-
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      elem.iter(tag, function(e) {
-        if (e !== elem) {
-          rv.push(e);
-        }
-      });
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_dot_dot(next, token) {
-  function select(context, result) {
-    var i, len, elem, rv = [], parent_map = context.parent_map;
-
-    if (!parent_map) {
-      context.parent_map = parent_map = {};
-
-      context.root.iter(null, function(p) {
-        p._children.forEach(function(e) {
-          parent_map[e] = p;
-        });
-      });
-    }
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-
-      if (parent_map.hasOwnProperty(elem)) {
-        rv.push(parent_map[elem]);
-      }
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-
-function prepare_predicate(next, token) {
-  var tag, key, value, select;
-  token = next();
-
-  if (token[1] === '@') {
-    // attribute
-    token = next();
-
-    if (token[1]) {
-      throw new SyntaxError(token, 'Invalid attribute predicate');
-    }
-
-    key = token[0];
-    token = next();
-
-    if (token[1] === ']') {
-      select = function(context, result) {
-        var i, len, elem, rv = [];
-
-        for (i = 0, len = result.length; i < len; i++) {
-          elem = result[i];
-
-          if (elem.get(key)) {
-            rv.push(elem);
-          }
-        }
-
-        return rv;
-      };
-    }
-    else if (token[1] === '=') {
-      value = next()[1];
-
-      if (value[0] === '"' || value[value.length - 1] === '\'') {
-        value = value.slice(1, value.length - 1);
-      }
-      else {
-        throw new SyntaxError(token, 'Ivalid comparison target');
-      }
-
-      token = next();
-      select = function(context, result) {
-        var i, len, elem, rv = [];
-
-        for (i = 0, len = result.length; i < len; i++) {
-          elem = result[i];
-
-          if (elem.get(key) === value) {
-            rv.push(elem);
-          }
-        }
-
-        return rv;
-      };
-    }
-
-    if (token[1] !== ']') {
-      throw new SyntaxError(token, 'Invalid attribute predicate');
-    }
-  }
-  else if (!token[1]) {
-    tag = token[0] || '';
-    token = next();
-
-    if (token[1] !== ']') {
-      throw new SyntaxError(token, 'Invalid node predicate');
-    }
-
-    select = function(context, result) {
-      var i, len, elem, rv = [];
-
-      for (i = 0, len = result.length; i < len; i++) {
-        elem = result[i];
-
-        if (elem.find(tag)) {
-          rv.push(elem);
-        }
-      }
-
-      return rv;
-    };
-  }
-  else {
-    throw new SyntaxError(null, 'Invalid predicate');
-  }
-
-  return select;
-}
-
-
-
-var ops = {
-  "": prepare_tag,
-  "*": prepare_star,
-  ".": prepare_dot,
-  "..": prepare_dot_dot,
-  "//": prepare_iter,
-  "[": prepare_predicate,
-};
-
-function _SelectorContext(root) {
-  this.parent_map = null;
-  this.root = root;
-}
-
-function findall(elem, path) {
-  var selector, result, i, len, token, value, select, context;
-
-  if (_cache.hasOwnProperty(path)) {
-    selector = _cache[path];
-  }
-  else {
-    // TODO: Use smarter cache purging approach
-    if (Object.keys(_cache).length > 100) {
-      _cache = {};
-    }
-
-    if (path.charAt(0) === '/') {
-      throw new SyntaxError(null, 'Cannot use absolute path on element');
-    }
-
-    result = xpath_tokenizer(path);
-    selector = [];
-
-    function getToken() {
-      return result.shift();
-    }
-
-    token = getToken();
-    while (true) {
-      var c = token[1] || '';
-      value = ops[c](getToken, token);
-
-      if (!value) {
-        throw new SyntaxError(null, sprintf('Invalid path: %s', path));
-      }
-
-      selector.push(value);
-      token = getToken();
-
-      if (!token) {
-        break;
-      }
-      else if (token[1] === '/') {
-        token = getToken();
-      }
-
-      if (!token) {
-        break;
-      }
-    }
-
-    _cache[path] = selector;
-  }
-
-  // Execute slector pattern
-  result = [elem];
-  context = new _SelectorContext(elem);
-
-  for (i = 0, len = selector.length; i < len; i++) {
-    select = selector[i];
-    result = select(context, result);
-  }
-
-  return result || [];
-}
-
-function find(element, path) {
-  var resultElements = findall(element, path);
-
-  if (resultElements && resultElements.length > 0) {
-    return resultElements[0];
-  }
-
-  return null;
-}
-
-function findtext(element, path, defvalue) {
-  var resultElements = findall(element, path);
-
-  if (resultElements && resultElements.length > 0) {
-    return resultElements[0].text;
-  }
-
-  return defvalue;
-}
-
-
-exports.find = find;
-exports.findall = findall;
-exports.findtext = findtext;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/elementtree.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/elementtree.js b/blackberry10/node_modules/elementtree/lib/elementtree.js
deleted file mode 100644
index b46268c..0000000
--- a/blackberry10/node_modules/elementtree/lib/elementtree.js
+++ /dev/null
@@ -1,598 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var sprintf = require('./sprintf').sprintf;
-
-var utils = require('./utils');
-var ElementPath = require('./elementpath');
-var TreeBuilder = require('./treebuilder').TreeBuilder;
-var get_parser = require('./parser').get_parser;
-var constants = require('./constants');
-
-var element_ids = 0;
-
-function Element(tag, attrib)
-{
-  this._id = element_ids++;
-  this.tag = tag;
-  this.attrib = {};
-  this.text = null;
-  this.tail = null;
-  this._children = [];
-
-  if (attrib) {
-    this.attrib = utils.merge(this.attrib, attrib);
-  }
-}
-
-Element.prototype.toString = function()
-{
-  return sprintf("<Element %s at %s>", this.tag, this._id);
-};
-
-Element.prototype.makeelement = function(tag, attrib)
-{
-  return new Element(tag, attrib);
-};
-
-Element.prototype.len = function()
-{
-  return this._children.length;
-};
-
-Element.prototype.getItem = function(index)
-{
-  return this._children[index];
-};
-
-Element.prototype.setItem = function(index, element)
-{
-  this._children[index] = element;
-};
-
-Element.prototype.delItem = function(index)
-{
-  this._children.splice(index, 1);
-};
-
-Element.prototype.getSlice = function(start, stop)
-{
-  return this._children.slice(start, stop);
-};
-
-Element.prototype.setSlice = function(start, stop, elements)
-{
-  var i;
-  var k = 0;
-  for (i = start; i < stop; i++, k++) {
-    this._children[i] = elements[k];
-  }
-};
-
-Element.prototype.delSlice = function(start, stop)
-{
-  this._children.splice(start, stop - start);
-};
-
-Element.prototype.append = function(element)
-{
-  this._children.push(element);
-};
-
-Element.prototype.extend = function(elements)
-{
-  this._children.concat(elements);
-};
-
-Element.prototype.insert = function(index, element)
-{
-  this._children[index] = element;
-};
-
-Element.prototype.remove = function(index, element)
-{
-  this._children = this._children.filter(function(e) {
-    /* TODO: is this the right way to do this? */
-    if (e._id === element._id) {
-      return false;
-    }
-    return true;
-  });
-};
-
-Element.prototype.getchildren = function() {
-  return this._children;
-};
-
-Element.prototype.find = function(path)
-{
-  return ElementPath.find(this, path);
-};
-
-Element.prototype.findtext = function(path, defvalue)
-{
-  return ElementPath.findtext(this, path, defvalue);
-};
-
-Element.prototype.findall = function(path, defvalue)
-{
-  return ElementPath.findall(this, path, defvalue);
-};
-
-Element.prototype.clear = function()
-{
-  this.attrib = {};
-  this._children = [];
-  this.text = null;
-  this.tail = null;
-};
-
-Element.prototype.get = function(key, defvalue)
-{
-  if (this.attrib[key] !== undefined) {
-    return this.attrib[key];
-  }
-  else {
-    return defvalue;
-  }
-};
-
-Element.prototype.set = function(key, value)
-{
-  this.attrib[key] = value;
-};
-
-Element.prototype.keys = function()
-{
-  return Object.keys(this.attrib);
-};
-
-Element.prototype.items = function()
-{
-  return utils.items(this.attrib);
-};
-
-/*
- * In python this uses a generator, but in v8 we don't have em,
- * so we use a callback instead.
- **/
-Element.prototype.iter = function(tag, callback)
-{
-  var self = this;
-  var i, child;
-
-  if (tag === "*") {
-    tag = null;
-  }
-
-  if (tag === null || this.tag === tag) {
-    callback(self);
-  }
-
-  for (i = 0; i < this._children.length; i++) {
-    child = this._children[i];
-    child.iter(tag, function(e) {
-      callback(e);
-    });
-  }
-};
-
-Element.prototype.itertext = function(callback)
-{
-  this.iter(null, function(e) {
-    if (e.text) {
-      callback(e.text);
-    }
-
-    if (e.tail) {
-      callback(e.tail);
-    }
-  });
-};
-
-
-function SubElement(parent, tag, attrib) {
-  var element = parent.makeelement(tag, attrib);
-  parent.append(element);
-  return element;
-}
-
-function Comment(text) {
-  var element = new Element(Comment);
-  if (text) {
-    element.text = text;
-  }
-  return element;
-}
-
-function ProcessingInstruction(target, text)
-{
-  var element = new Element(ProcessingInstruction);
-  element.text = target;
-  if (text) {
-    element.text = element.text + " " + text;
-  }
-  return element;
-}
-
-function QName(text_or_uri, tag)
-{
-  if (tag) {
-    text_or_uri = sprintf("{%s}%s", text_or_uri, tag);
-  }
-  this.text = text_or_uri;
-}
-
-QName.prototype.toString = function() {
-  return this.text;
-};
-
-function ElementTree(element)
-{
-  this._root = element;
-}
-
-ElementTree.prototype.getroot = function() {
-  return this._root;
-};
-
-ElementTree.prototype._setroot = function(element) {
-  this._root = element;
-};
-
-ElementTree.prototype.parse = function(source, parser) {
-  if (!parser) {
-    parser = get_parser(constants.DEFAULT_PARSER);
-    parser = new parser.XMLParser(new TreeBuilder());
-  }
-
-  parser.feed(source);
-  this._root = parser.close();
-  return this._root;
-};
-
-ElementTree.prototype.iter = function(tag, callback) {
-  this._root.iter(tag, callback);
-};
-
-ElementTree.prototype.find = function(path) {
-  return this._root.find(path);
-};
-
-ElementTree.prototype.findtext = function(path, defvalue) {
-  return this._root.findtext(path, defvalue);
-};
-
-ElementTree.prototype.findall = function(path) {
-  return this._root.findall(path);
-};
-
-/**
- * Unlike ElementTree, we don't write to a file, we return you a string.
- */
-ElementTree.prototype.write = function(options) {
-  var sb = [];
-  options = utils.merge({
-    encoding: 'utf-8',
-    xml_declaration: null,
-    default_namespace: null,
-    method: 'xml'}, options);
-
-  if (options.xml_declaration !== false) {
-    sb.push("<?xml version='1.0' encoding='"+options.encoding +"'?>\n");
-  }
-
-  if (options.method === "text") {
-    _serialize_text(sb, self._root, encoding);
-  }
-  else {
-    var qnames, namespaces, indent, indent_string;
-    var x = _namespaces(this._root, options.encoding, options.default_namespace);
-    qnames = x[0];
-    namespaces = x[1];
-
-    if (options.hasOwnProperty('indent')) {
-      indent = 0;
-      indent_string = new Array(options.indent + 1).join(' ');
-    }
-    else {
-      indent = false;
-    }
-
-    if (options.method === "xml") {
-      _serialize_xml(function(data) {
-        sb.push(data);
-      }, this._root, options.encoding, qnames, namespaces, indent, indent_string);
-    }
-    else {
-      /* TODO: html */
-      throw new Error("unknown serialization method "+ options.method);
-    }
-  }
-
-  return sb.join("");
-};
-
-var _namespace_map = {
-    /* "well-known" namespace prefixes */
-    "http://www.w3.org/XML/1998/namespace": "xml",
-    "http://www.w3.org/1999/xhtml": "html",
-    "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
-    "http://schemas.xmlsoap.org/wsdl/": "wsdl",
-    /* xml schema */
-    "http://www.w3.org/2001/XMLSchema": "xs",
-    "http://www.w3.org/2001/XMLSchema-instance": "xsi",
-    /* dublic core */
-    "http://purl.org/dc/elements/1.1/": "dc",
-};
-
-function register_namespace(prefix, uri) {
-  if (/ns\d+$/.test(prefix)) {
-    throw new Error('Prefix format reserved for internal use');
-  }
-
-  if (_namespace_map.hasOwnProperty(uri) && _namespace_map[uri] === prefix) {
-    delete _namespace_map[uri];
-  }
-
-  _namespace_map[uri] = prefix;
-}
-
-
-function _escape(text, encoding, isAttribute, isText) {
-  if (text) {
-    text = text.toString();
-    text = text.replace(/&/g, '&amp;');
-    text = text.replace(/</g, '&lt;');
-    text = text.replace(/>/g, '&gt;');
-    if (!isText) {
-        text = text.replace(/\n/g, '&#xA;');
-        text = text.replace(/\r/g, '&#xD;');
-    }
-    if (isAttribute) {
-      text = text.replace(/"/g, '&quot;');
-    }
-  }
-  return text;
-}
-
-/* TODO: benchmark single regex */
-function _escape_attrib(text, encoding) {
-  return _escape(text, encoding, true);
-}
-
-function _escape_cdata(text, encoding) {
-  return _escape(text, encoding, false);
-}
-
-function _escape_text(text, encoding) {
-  return _escape(text, encoding, false, true);
-}
-
-function _namespaces(elem, encoding, default_namespace) {
-  var qnames = {};
-  var namespaces = {};
-
-  if (default_namespace) {
-    namespaces[default_namespace] = "";
-  }
-
-  function encode(text) {
-    return text;
-  }
-
-  function add_qname(qname) {
-    if (qname[0] === "{") {
-      var tmp = qname.substring(1).split("}", 2);
-      var uri = tmp[0];
-      var tag = tmp[1];
-      var prefix = namespaces[uri];
-
-      if (prefix === undefined) {
-        prefix = _namespace_map[uri];
-        if (prefix === undefined) {
-          prefix = "ns" + Object.keys(namespaces).length;
-        }
-        if (prefix !== "xml") {
-          namespaces[uri] = prefix;
-        }
-      }
-
-      if (prefix) {
-        qnames[qname] = sprintf("%s:%s", prefix, tag);
-      }
-      else {
-        qnames[qname] = tag;
-      }
-    }
-    else {
-      if (default_namespace) {
-        throw new Error('cannot use non-qualified names with default_namespace option');
-      }
-
-      qnames[qname] = qname;
-    }
-  }
-
-
-  elem.iter(null, function(e) {
-    var i;
-    var tag = e.tag;
-    var text = e.text;
-    var items = e.items();
-
-    if (tag instanceof QName && qnames[tag.text] === undefined) {
-      add_qname(tag.text);
-    }
-    else if (typeof(tag) === "string") {
-      add_qname(tag);
-    }
-    else if (tag !== null && tag !== Comment && tag !== ProcessingInstruction) {
-      throw new Error('Invalid tag type for serialization: '+ tag);
-    }
-
-    if (text instanceof QName && qnames[text.text] === undefined) {
-      add_qname(text.text);
-    }
-
-    items.forEach(function(item) {
-      var key = item[0],
-          value = item[1];
-      if (key instanceof QName) {
-        key = key.text;
-      }
-
-      if (qnames[key] === undefined) {
-        add_qname(key);
-      }
-
-      if (value instanceof QName && qnames[value.text] === undefined) {
-        add_qname(value.text);
-      }
-    });
-  });
-  return [qnames, namespaces];
-}
-
-function _serialize_xml(write, elem, encoding, qnames, namespaces, indent, indent_string) {
-  var tag = elem.tag;
-  var text = elem.text;
-  var items;
-  var i;
-
-  var newlines = indent || (indent === 0);
-  write(Array(indent + 1).join(indent_string));
-
-  if (tag === Comment) {
-    write(sprintf("<!--%s-->", _escape_cdata(text, encoding)));
-  }
-  else if (tag === ProcessingInstruction) {
-    write(sprintf("<?%s?>", _escape_cdata(text, encoding)));
-  }
-  else {
-    tag = qnames[tag];
-    if (tag === undefined) {
-      if (text) {
-        write(_escape_text(text, encoding));
-      }
-      elem.iter(function(e) {
-        _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string);
-      });
-    }
-    else {
-      write("<" + tag);
-      items = elem.items();
-
-      if (items || namespaces) {
-        items.sort(); // lexical order
-
-        items.forEach(function(item) {
-          var k = item[0],
-              v = item[1];
-
-            if (k instanceof QName) {
-              k = k.text;
-            }
-
-            if (v instanceof QName) {
-              v = qnames[v.text];
-            }
-            else {
-              v = _escape_attrib(v, encoding);
-            }
-            write(sprintf(" %s=\"%s\"", qnames[k], v));
-        });
-
-        if (namespaces) {
-          items = utils.items(namespaces);
-          items.sort(function(a, b) { return a[1] < b[1]; });
-
-          items.forEach(function(item) {
-            var k = item[1],
-                v = item[0];
-
-            if (k) {
-              k = ':' + k;
-            }
-
-            write(sprintf(" xmlns%s=\"%s\"", k, _escape_attrib(v, encoding)));
-          });
-        }
-      }
-
-      if (text || elem.len()) {
-        if (text && text.toString().match(/^\s*$/)) {
-            text = null;
-        }
-
-        write(">");
-        if (!text && newlines) {
-          write("\n");
-        }
-
-        if (text) {
-          write(_escape_text(text, encoding));
-        }
-        elem._children.forEach(function(e) {
-          _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string);
-        });
-
-        if (!text && indent) {
-          write(Array(indent + 1).join(indent_string));
-        }
-        write("</" + tag + ">");
-      }
-      else {
-        write(" />");
-      }
-    }
-  }
-
-  if (newlines) {
-    write("\n");
-  }
-}
-
-function parse(source, parser) {
-  var tree = new ElementTree();
-  tree.parse(source, parser);
-  return tree;
-}
-
-function tostring(element, options) {
-  return new ElementTree(element).write(options);
-}
-
-exports.PI = ProcessingInstruction;
-exports.Comment = Comment;
-exports.ProcessingInstruction = ProcessingInstruction;
-exports.SubElement = SubElement;
-exports.QName = QName;
-exports.ElementTree = ElementTree;
-exports.ElementPath = ElementPath;
-exports.Element = function(tag, attrib) {
-  return new Element(tag, attrib);
-};
-
-exports.XML = function(data) {
-  var et = new ElementTree();
-  return et.parse(data);
-};
-
-exports.parse = parse;
-exports.register_namespace = register_namespace;
-exports.tostring = tostring;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/errors.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/errors.js b/blackberry10/node_modules/elementtree/lib/errors.js
deleted file mode 100644
index e8742be..0000000
--- a/blackberry10/node_modules/elementtree/lib/errors.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var util = require('util');
-
-var sprintf = require('./sprintf').sprintf;
-
-function SyntaxError(token, msg) {
-  msg = msg || sprintf('Syntax Error at token %s', token.toString());
-  this.token = token;
-  this.message = msg;
-  Error.call(this, msg);
-}
-
-util.inherits(SyntaxError, Error);
-
-exports.SyntaxError = SyntaxError;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/parser.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/parser.js b/blackberry10/node_modules/elementtree/lib/parser.js
deleted file mode 100644
index 7307ee4..0000000
--- a/blackberry10/node_modules/elementtree/lib/parser.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/* TODO: support node-expat C++ module optionally */
-
-var util = require('util');
-var parsers = require('./parsers/index');
-
-function get_parser(name) {
-  if (name === 'sax') {
-    return parsers.sax;
-  }
-  else {
-    throw new Error('Invalid parser: ' + name);
-  }
-}
-
-
-exports.get_parser = get_parser;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/parsers/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/parsers/index.js b/blackberry10/node_modules/elementtree/lib/parsers/index.js
deleted file mode 100644
index 5eac5c8..0000000
--- a/blackberry10/node_modules/elementtree/lib/parsers/index.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.sax = require('./sax');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/parsers/sax.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/parsers/sax.js b/blackberry10/node_modules/elementtree/lib/parsers/sax.js
deleted file mode 100644
index 69b0a59..0000000
--- a/blackberry10/node_modules/elementtree/lib/parsers/sax.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var util = require('util');
-
-var sax = require('sax');
-
-var TreeBuilder = require('./../treebuilder').TreeBuilder;
-
-function XMLParser(target) {
-  this.parser = sax.parser(true);
-
-  this.target = (target) ? target : new TreeBuilder();
-
-  this.parser.onopentag = this._handleOpenTag.bind(this);
-  this.parser.ontext = this._handleText.bind(this);
-  this.parser.oncdata = this._handleCdata.bind(this);
-  this.parser.ondoctype = this._handleDoctype.bind(this);
-  this.parser.oncomment = this._handleComment.bind(this);
-  this.parser.onclosetag = this._handleCloseTag.bind(this);
-  this.parser.onerror = this._handleError.bind(this);
-}
-
-XMLParser.prototype._handleOpenTag = function(tag) {
-  this.target.start(tag.name, tag.attributes);
-};
-
-XMLParser.prototype._handleText = function(text) {
-  this.target.data(text);
-};
-
-XMLParser.prototype._handleCdata = function(text) {
-  this.target.data(text);
-};
-
-XMLParser.prototype._handleDoctype = function(text) {
-};
-
-XMLParser.prototype._handleComment = function(comment) {
-};
-
-XMLParser.prototype._handleCloseTag = function(tag) {
-  this.target.end(tag);
-};
-
-XMLParser.prototype._handleError = function(err) {
-  throw err;
-};
-
-XMLParser.prototype.feed = function(chunk) {
-  this.parser.write(chunk);
-};
-
-XMLParser.prototype.close = function() {
-  this.parser.close();
-  return this.target.close();
-};
-
-exports.XMLParser = XMLParser;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/sprintf.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/sprintf.js b/blackberry10/node_modules/elementtree/lib/sprintf.js
deleted file mode 100644
index f802c1b..0000000
--- a/blackberry10/node_modules/elementtree/lib/sprintf.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var cache = {};
-
-
-// Do any others need escaping?
-var TO_ESCAPE = {
-  '\'': '\\\'',
-  '\n': '\\n'
-};
-
-
-function populate(formatter) {
-  var i, type,
-      key = formatter,
-      prev = 0,
-      arg = 1,
-      builder = 'return \'';
-
-  for (i = 0; i < formatter.length; i++) {
-    if (formatter[i] === '%') {
-      type = formatter[i + 1];
-
-      switch (type) {
-        case 's':
-          builder += formatter.slice(prev, i) + '\' + arguments[' + arg + '] + \'';
-          prev = i + 2;
-          arg++;
-          break;
-        case 'j':
-          builder += formatter.slice(prev, i) + '\' + JSON.stringify(arguments[' + arg + ']) + \'';
-          prev = i + 2;
-          arg++;
-          break;
-        case '%':
-          builder += formatter.slice(prev, i + 1);
-          prev = i + 2;
-          i++;
-          break;
-      }
-
-
-    } else if (TO_ESCAPE[formatter[i]]) {
-      builder += formatter.slice(prev, i) + TO_ESCAPE[formatter[i]];
-      prev = i + 1;
-    }
-  }
-
-  builder += formatter.slice(prev) + '\';';
-  cache[key] = new Function(builder);
-}
-
-
-/**
- * A fast version of sprintf(), which currently only supports the %s and %j.
- * This caches a formatting function for each format string that is used, so
- * you should only use this sprintf() will be called many times with a single
- * format string and a limited number of format strings will ever be used (in
- * general this means that format strings should be string literals).
- *
- * @param {String} formatter A format string.
- * @param {...String} var_args Values that will be formatted by %s and %j.
- * @return {String} The formatted output.
- */
-exports.sprintf = function(formatter, var_args) {
-  if (!cache[formatter]) {
-    populate(formatter);
-  }
-
-  return cache[formatter].apply(null, arguments);
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/treebuilder.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/treebuilder.js b/blackberry10/node_modules/elementtree/lib/treebuilder.js
deleted file mode 100644
index 393a98f..0000000
--- a/blackberry10/node_modules/elementtree/lib/treebuilder.js
+++ /dev/null
@@ -1,60 +0,0 @@
-function TreeBuilder(element_factory) {
-  this._data = [];
-  this._elem = [];
-  this._last = null;
-  this._tail = null;
-  if (!element_factory) {
-    /* evil circular dep */
-    element_factory = require('./elementtree').Element;
-  }
-  this._factory = element_factory;
-}
-
-TreeBuilder.prototype.close = function() {
-  return this._last;
-};
-
-TreeBuilder.prototype._flush = function() {
-  if (this._data) {
-    if (this._last !== null) {
-      var text = this._data.join("");
-      if (this._tail) {
-        this._last.tail = text;
-      }
-      else {
-        this._last.text = text;
-      }
-    }
-    this._data = [];
-  }
-};
-
-TreeBuilder.prototype.data = function(data) {
-  this._data.push(data);
-};
-
-TreeBuilder.prototype.start = function(tag, attrs) {
-  this._flush();
-  var elem = this._factory(tag, attrs);
-  this._last = elem;
-
-  if (this._elem.length) {
-    this._elem[this._elem.length - 1].append(elem);
-  }
-
-  this._elem.push(elem);
-
-  this._tail = null;
-};
-
-TreeBuilder.prototype.end = function(tag) {
-  this._flush();
-  this._last = this._elem.pop();
-  if (this._last.tag !== tag) {
-    throw new Error("end tag mismatch");
-  }
-  this._tail = 1;
-  return this._last;
-};
-
-exports.TreeBuilder = TreeBuilder;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/lib/utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/lib/utils.js b/blackberry10/node_modules/elementtree/lib/utils.js
deleted file mode 100644
index b08a670..0000000
--- a/blackberry10/node_modules/elementtree/lib/utils.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/**
- * @param {Object} hash.
- * @param {Array} ignored.
- */
-function items(hash, ignored) {
-  ignored = ignored || null;
-  var k, rv = [];
-
-  function is_ignored(key) {
-    if (!ignored || ignored.length === 0) {
-      return false;
-    }
-
-    return ignored.indexOf(key);
-  }
-
-  for (k in hash) {
-    if (hash.hasOwnProperty(k) && !(is_ignored(ignored))) {
-      rv.push([k, hash[k]]);
-    }
-  }
-
-  return rv;
-}
-
-
-function findall(re, str) {
-  var match, matches = [];
-
-  while ((match = re.exec(str))) {
-      matches.push(match);
-  }
-
-  return matches;
-}
-
-function merge(a, b) {
-  var c = {}, attrname;
-
-  for (attrname in a) {
-    if (a.hasOwnProperty(attrname)) {
-      c[attrname] = a[attrname];
-    }
-  }
-  for (attrname in b) {
-    if (b.hasOwnProperty(attrname)) {
-      c[attrname] = b[attrname];
-    }
-  }
-  return c;
-}
-
-exports.items = items;
-exports.findall = findall;
-exports.merge = merge;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/AUTHORS
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/AUTHORS b/blackberry10/node_modules/elementtree/node_modules/sax/AUTHORS
deleted file mode 100644
index 26d8659..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/AUTHORS
+++ /dev/null
@@ -1,9 +0,0 @@
-# contributors sorted by whether or not they're me.
-Isaac Z. Schlueter <i...@izs.me>
-Stein Martin Hustad <st...@hustad.com>
-Mikeal Rogers <mi...@gmail.com>
-Laurie Harper <la...@holoweb.net>
-Jann Horn <ja...@Jann-PC.fritz.box>
-Elijah Insua <tm...@gmail.com>
-Henry Rawas <he...@schakra.com>
-Justin Makeig <jm...@makeig.com>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/LICENSE b/blackberry10/node_modules/elementtree/node_modules/sax/LICENSE
deleted file mode 100644
index 05a4010..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
-All rights reserved.
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/README.md b/blackberry10/node_modules/elementtree/node_modules/sax/README.md
deleted file mode 100644
index 9c63dc4..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/README.md
+++ /dev/null
@@ -1,213 +0,0 @@
-# sax js
-
-A sax-style parser for XML and HTML.
-
-Designed with [node](http://nodejs.org/) in mind, but should work fine in
-the browser or other CommonJS implementations.
-
-## What This Is
-
-* A very simple tool to parse through an XML string.
-* A stepping stone to a streaming HTML parser.
-* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML 
-  docs.
-
-## What This Is (probably) Not
-
-* An HTML Parser - That's a fine goal, but this isn't it.  It's just
-  XML.
-* A DOM Builder - You can use it to build an object model out of XML,
-  but it doesn't do that out of the box.
-* XSLT - No DOM = no querying.
-* 100% Compliant with (some other SAX implementation) - Most SAX
-  implementations are in Java and do a lot more than this does.
-* An XML Validator - It does a little validation when in strict mode, but
-  not much.
-* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic 
-  masochism.
-* A DTD-aware Thing - Fetching DTDs is a much bigger job.
-
-## Regarding `<!DOCTYPE`s and `<!ENTITY`s
-
-The parser will handle the basic XML entities in text nodes and attribute
-values: `&amp; &lt; &gt; &apos; &quot;`. It's possible to define additional
-entities in XML by putting them in the DTD. This parser doesn't do anything
-with that. If you want to listen to the `ondoctype` event, and then fetch
-the doctypes, and read the entities and add them to `parser.ENTITIES`, then
-be my guest.
-
-Unknown entities will fail in strict mode, and in loose mode, will pass
-through unmolested.
-
-## Usage
-
-    var sax = require("./lib/sax"),
-      strict = true, // set to false for html-mode
-      parser = sax.parser(strict);
-
-    parser.onerror = function (e) {
-      // an error happened.
-    };
-    parser.ontext = function (t) {
-      // got some text.  t is the string of text.
-    };
-    parser.onopentag = function (node) {
-      // opened a tag.  node has "name" and "attributes"
-    };
-    parser.onattribute = function (attr) {
-      // an attribute.  attr has "name" and "value"
-    };
-    parser.onend = function () {
-      // parser stream is done, and ready to have more stuff written to it.
-    };
-
-    parser.write('<xml>Hello, <who name="world">world</who>!</xml>').close();
-
-    // stream usage
-    // takes the same options as the parser
-    var saxStream = require("sax").createStream(strict, options)
-    saxStream.on("error", function (e) {
-      // unhandled errors will throw, since this is a proper node
-      // event emitter.
-      console.error("error!", e)
-      // clear the error
-      this._parser.error = null
-      this._parser.resume()
-    })
-    saxStream.on("opentag", function (node) {
-      // same object as above
-    })
-    // pipe is supported, and it's readable/writable
-    // same chunks coming in also go out.
-    fs.createReadStream("file.xml")
-      .pipe(saxStream)
-      .pipe(fs.createReadStream("file-copy.xml"))
-
-
-
-## Arguments
-
-Pass the following arguments to the parser function.  All are optional.
-
-`strict` - Boolean. Whether or not to be a jerk. Default: `false`.
-
-`opt` - Object bag of settings regarding string formatting.  All default to `false`.
-
-Settings supported:
-
-* `trim` - Boolean. Whether or not to trim text and comment nodes.
-* `normalize` - Boolean. If true, then turn any whitespace into a single
-  space.
-* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, 
-  rather than uppercasing them.
-* `xmlns` - Boolean. If true, then namespaces are supported.
-
-## Methods
-
-`write` - Write bytes onto the stream. You don't have to do this all at
-once. You can keep writing as much as you want.
-
-`close` - Close the stream. Once closed, no more data may be written until
-it is done processing the buffer, which is signaled by the `end` event.
-
-`resume` - To gracefully handle errors, assign a listener to the `error`
-event. Then, when the error is taken care of, you can call `resume` to
-continue parsing. Otherwise, the parser will not continue while in an error
-state.
-
-## Members
-
-At all times, the parser object will have the following members:
-
-`line`, `column`, `position` - Indications of the position in the XML
-document where the parser currently is looking.
-
-`startTagPosition` - Indicates the position where the current tag starts.
-
-`closed` - Boolean indicating whether or not the parser can be written to.
-If it's `true`, then wait for the `ready` event to write again.
-
-`strict` - Boolean indicating whether or not the parser is a jerk.
-
-`opt` - Any options passed into the constructor.
-
-`tag` - The current tag being dealt with.
-
-And a bunch of other stuff that you probably shouldn't touch.
-
-## Events
-
-All events emit with a single argument. To listen to an event, assign a
-function to `on<eventname>`. Functions get executed in the this-context of
-the parser object. The list of supported events are also in the exported
-`EVENTS` array.
-
-When using the stream interface, assign handlers using the EventEmitter
-`on` function in the normal fashion.
-
-`error` - Indication that something bad happened. The error will be hanging
-out on `parser.error`, and must be deleted before parsing can continue. By
-listening to this event, you can keep an eye on that kind of stuff. Note:
-this happens *much* more in strict mode. Argument: instance of `Error`.
-
-`text` - Text node. Argument: string of text.
-
-`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.
-
-`processinginstruction` - Stuff like `<?xml foo="blerg" ?>`. Argument:
-object with `name` and `body` members. Attributes are not parsed, as
-processing instructions have implementation dependent semantics.
-
-`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`
-would trigger this kind of event. This is a weird thing to support, so it
-might go away at some point. SAX isn't intended to be used to parse SGML,
-after all.
-
-`opentag` - An opening tag. Argument: object with `name` and `attributes`.
-In non-strict mode, tag names are uppercased, unless the `lowercasetags`
-option is set.  If the `xmlns` option is set, then it will contain
-namespace binding information on the `ns` member, and will have a
-`local`, `prefix`, and `uri` member.
-
-`closetag` - A closing tag. In loose mode, tags are auto-closed if their
-parent closes. In strict mode, well-formedness is enforced. Note that
-self-closing tags will have `closeTag` emitted immediately after `openTag`.
-Argument: tag name.
-
-`attribute` - An attribute node.  Argument: object with `name` and `value`,
-and also namespace information if the `xmlns` option flag is set.
-
-`comment` - A comment node.  Argument: the string of the comment.
-
-`opencdata` - The opening tag of a `<![CDATA[` block.
-
-`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get
-quite large, this event may fire multiple times for a single block, if it
-is broken up into multiple `write()`s. Argument: the string of random
-character data.
-
-`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.
-
-`opennamespace` - If the `xmlns` option is set, then this event will
-signal the start of a new namespace binding.
-
-`closenamespace` - If the `xmlns` option is set, then this event will
-signal the end of a namespace binding.
-
-`end` - Indication that the closed stream has ended.
-
-`ready` - Indication that the stream has reset, and is ready to be written
-to.
-
-`noscript` - In non-strict mode, `<script>` tags trigger a `"script"`
-event, and their contents are not checked for special xml characters.
-If you pass `noscript: true`, then this behavior is suppressed.
-
-## Reporting Problems
-
-It's best to write a failing test if you find an issue.  I will always
-accept pull requests with failing tests if they demonstrate intended
-behavior, but it is very hard to figure out what issue you're describing
-without a test.  Writing a test is also the best way for you yourself
-to figure out if you really understand the issue you think you have with
-sax-js.


[06/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/scripts/run-tests.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/scripts/run-tests.js b/blackberry10/node_modules/shelljs/scripts/run-tests.js
deleted file mode 100755
index f9d31e0..0000000
--- a/blackberry10/node_modules/shelljs/scripts/run-tests.js
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env node
-require('../global');
-
-var path = require('path');
-
-var failed = false;
-
-//
-// Lint
-//
-JSHINT_BIN = './node_modules/jshint/bin/jshint';
-cd(__dirname + '/..');
-
-if (!test('-f', JSHINT_BIN)) {
-  echo('JSHint not found. Run `npm install` in the root dir first.');
-  exit(1);
-}
-
-if (exec(JSHINT_BIN + ' *.js test/*.js').code !== 0) {
-  failed = true;
-  echo('*** JSHINT FAILED! (return code != 0)');
-  echo();
-} else {
-  echo('All JSHint tests passed');
-  echo();
-}
-
-//
-// Unit tests
-//
-cd(__dirname + '/../test');
-ls('*.js').forEach(function(file) {
-  echo('Running test:', file);
-  if (exec('node ' + file).code !== 123) { // 123 avoids false positives (e.g. premature exit)
-    failed = true;
-    echo('*** TEST FAILED! (missing exit code "123")');
-    echo();
-  }
-});
-
-if (failed) {
-  echo();
-  echo('*******************************************************');
-  echo('WARNING: Some tests did not pass!');
-  echo('*******************************************************');
-  exit(1);
-} else {
-  echo();
-  echo('All tests passed.');
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/shell.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/shell.js b/blackberry10/node_modules/shelljs/shell.js
deleted file mode 100644
index e56c5de..0000000
--- a/blackberry10/node_modules/shelljs/shell.js
+++ /dev/null
@@ -1,153 +0,0 @@
-//
-// ShellJS
-// Unix shell commands on top of Node's API
-//
-// Copyright (c) 2012 Artur Adib
-// http://github.com/arturadib/shelljs
-//
-
-var common = require('./src/common');
-
-
-//@
-//@ All commands run synchronously, unless otherwise stated.
-//@
-
-//@include ./src/cd
-var _cd = require('./src/cd');
-exports.cd = common.wrap('cd', _cd);
-
-//@include ./src/pwd
-var _pwd = require('./src/pwd');
-exports.pwd = common.wrap('pwd', _pwd);
-
-//@include ./src/ls
-var _ls = require('./src/ls');
-exports.ls = common.wrap('ls', _ls);
-
-//@include ./src/find
-var _find = require('./src/find');
-exports.find = common.wrap('find', _find);
-
-//@include ./src/cp
-var _cp = require('./src/cp');
-exports.cp = common.wrap('cp', _cp);
-
-//@include ./src/rm
-var _rm = require('./src/rm');
-exports.rm = common.wrap('rm', _rm);
-
-//@include ./src/mv
-var _mv = require('./src/mv');
-exports.mv = common.wrap('mv', _mv);
-
-//@include ./src/mkdir
-var _mkdir = require('./src/mkdir');
-exports.mkdir = common.wrap('mkdir', _mkdir);
-
-//@include ./src/test
-var _test = require('./src/test');
-exports.test = common.wrap('test', _test);
-
-//@include ./src/cat
-var _cat = require('./src/cat');
-exports.cat = common.wrap('cat', _cat);
-
-//@include ./src/to
-var _to = require('./src/to');
-String.prototype.to = common.wrap('to', _to);
-
-//@include ./src/toEnd
-var _toEnd = require('./src/toEnd');
-String.prototype.toEnd = common.wrap('toEnd', _toEnd);
-
-//@include ./src/sed
-var _sed = require('./src/sed');
-exports.sed = common.wrap('sed', _sed);
-
-//@include ./src/grep
-var _grep = require('./src/grep');
-exports.grep = common.wrap('grep', _grep);
-
-//@include ./src/which
-var _which = require('./src/which');
-exports.which = common.wrap('which', _which);
-
-//@include ./src/echo
-var _echo = require('./src/echo');
-exports.echo = _echo; // don't common.wrap() as it could parse '-options'
-
-//@include ./src/dirs
-var _dirs = require('./src/dirs').dirs;
-exports.dirs = common.wrap("dirs", _dirs);
-var _pushd = require('./src/dirs').pushd;
-exports.pushd = common.wrap('pushd', _pushd);
-var _popd = require('./src/dirs').popd;
-exports.popd = common.wrap("popd", _popd);
-
-//@
-//@ ### exit(code)
-//@ Exits the current process with the given exit code.
-exports.exit = process.exit;
-
-//@
-//@ ### env['VAR_NAME']
-//@ Object containing environment variables (both getter and setter). Shortcut to process.env.
-exports.env = process.env;
-
-//@include ./src/exec
-var _exec = require('./src/exec');
-exports.exec = common.wrap('exec', _exec, {notUnix:true});
-
-//@include ./src/chmod
-var _chmod = require('./src/chmod');
-exports.chmod = common.wrap('chmod', _chmod);
-
-
-
-//@
-//@ ## Non-Unix commands
-//@
-
-//@include ./src/tempdir
-var _tempDir = require('./src/tempdir');
-exports.tempdir = common.wrap('tempdir', _tempDir);
-
-
-//@include ./src/error
-var _error = require('./src/error');
-exports.error = _error;
-
-
-
-//@
-//@ ## Configuration
-//@
-
-exports.config = common.config;
-
-//@
-//@ ### config.silent
-//@ Example:
-//@
-//@ ```javascript
-//@ var silentState = config.silent; // save old silent state
-//@ config.silent = true;
-//@ /* ... */
-//@ config.silent = silentState; // restore old silent state
-//@ ```
-//@
-//@ Suppresses all command output if `true`, except for `echo()` calls.
-//@ Default is `false`.
-
-//@
-//@ ### config.fatal
-//@ Example:
-//@
-//@ ```javascript
-//@ config.fatal = true;
-//@ cp('this_file_does_not_exist', '/dev/null'); // dies here
-//@ /* more commands... */
-//@ ```
-//@
-//@ If `true` the script will die on errors. Default is `false`.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/cat.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/cat.js b/blackberry10/node_modules/shelljs/src/cat.js
deleted file mode 100644
index f6f4d25..0000000
--- a/blackberry10/node_modules/shelljs/src/cat.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-
-//@
-//@ ### cat(file [, file ...])
-//@ ### cat(file_array)
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ var str = cat('file*.txt');
-//@ var str = cat('file1', 'file2');
-//@ var str = cat(['file1', 'file2']); // same as above
-//@ ```
-//@
-//@ Returns a string containing the given file, or a concatenated string
-//@ containing the files if more than one file is given (a new line character is
-//@ introduced between each file). Wildcard `*` accepted.
-function _cat(options, files) {
-  var cat = '';
-
-  if (!files)
-    common.error('no paths given');
-
-  if (typeof files === 'string')
-    files = [].slice.call(arguments, 1);
-  // if it's array leave it as it is
-
-  files = common.expand(files);
-
-  files.forEach(function(file) {
-    if (!fs.existsSync(file))
-      common.error('no such file or directory: ' + file);
-
-    cat += fs.readFileSync(file, 'utf8') + '\n';
-  });
-
-  if (cat[cat.length-1] === '\n')
-    cat = cat.substring(0, cat.length-1);
-
-  return common.ShellString(cat);
-}
-module.exports = _cat;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/cd.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/cd.js b/blackberry10/node_modules/shelljs/src/cd.js
deleted file mode 100644
index 230f432..0000000
--- a/blackberry10/node_modules/shelljs/src/cd.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var fs = require('fs');
-var common = require('./common');
-
-//@
-//@ ### cd('dir')
-//@ Changes to directory `dir` for the duration of the script
-function _cd(options, dir) {
-  if (!dir)
-    common.error('directory not specified');
-
-  if (!fs.existsSync(dir))
-    common.error('no such file or directory: ' + dir);
-
-  if (!fs.statSync(dir).isDirectory())
-    common.error('not a directory: ' + dir);
-
-  process.chdir(dir);
-}
-module.exports = _cd;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/chmod.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/chmod.js b/blackberry10/node_modules/shelljs/src/chmod.js
deleted file mode 100644
index f288893..0000000
--- a/blackberry10/node_modules/shelljs/src/chmod.js
+++ /dev/null
@@ -1,208 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-var path = require('path');
-
-var PERMS = (function (base) {
-  return {
-    OTHER_EXEC  : base.EXEC,
-    OTHER_WRITE : base.WRITE,
-    OTHER_READ  : base.READ,
-
-    GROUP_EXEC  : base.EXEC  << 3,
-    GROUP_WRITE : base.WRITE << 3,
-    GROUP_READ  : base.READ << 3,
-
-    OWNER_EXEC  : base.EXEC << 6,
-    OWNER_WRITE : base.WRITE << 6,
-    OWNER_READ  : base.READ << 6,
-
-    // Literal octal numbers are apparently not allowed in "strict" javascript.  Using parseInt is
-    // the preferred way, else a jshint warning is thrown.
-    STICKY      : parseInt('01000', 8),
-    SETGID      : parseInt('02000', 8),
-    SETUID      : parseInt('04000', 8),
-
-    TYPE_MASK   : parseInt('0770000', 8)
-  };
-})({
-  EXEC  : 1,
-  WRITE : 2,
-  READ  : 4
-});
-
-//@
-//@ ### chmod(octal_mode || octal_string, file)
-//@ ### chmod(symbolic_mode, file)
-//@
-//@ Available options:
-//@
-//@ + `-v`: output a diagnostic for every file processed//@
-//@ + `-c`: like verbose but report only when a change is made//@
-//@ + `-R`: change files and directories recursively//@
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ chmod(755, '/Users/brandon');
-//@ chmod('755', '/Users/brandon'); // same as above
-//@ chmod('u+x', '/Users/brandon');
-//@ ```
-//@
-//@ Alters the permissions of a file or directory by either specifying the
-//@ absolute permissions in octal form or expressing the changes in symbols.
-//@ This command tries to mimic the POSIX behavior as much as possible.
-//@ Notable exceptions:
-//@
-//@ + In symbolic modes, 'a-r' and '-r' are identical.  No consideration is
-//@   given to the umask.
-//@ + There is no "quiet" option since default behavior is to run silent.
-function _chmod(options, mode, filePattern) {
-  if (!filePattern) {
-    if (options.length > 0 && options.charAt(0) === '-') {
-      // Special case where the specified file permissions started with - to subtract perms, which
-      // get picked up by the option parser as command flags.
-      // If we are down by one argument and options starts with -, shift everything over.
-      filePattern = mode;
-      mode = options;
-      options = '';
-    }
-    else {
-      common.error('You must specify a file.');
-    }
-  }
-
-  options = common.parseOptions(options, {
-    'R': 'recursive',
-    'c': 'changes',
-    'v': 'verbose'
-  });
-
-  if (typeof filePattern === 'string') {
-    filePattern = [ filePattern ];
-  }
-
-  var files;
-
-  if (options.recursive) {
-    files = [];
-    common.expand(filePattern).forEach(function addFile(expandedFile) {
-      var stat = fs.lstatSync(expandedFile);
-
-      if (!stat.isSymbolicLink()) {
-        files.push(expandedFile);
-
-        if (stat.isDirectory()) {  // intentionally does not follow symlinks.
-          fs.readdirSync(expandedFile).forEach(function (child) {
-            addFile(expandedFile + '/' + child);
-          });
-        }
-      }
-    });
-  }
-  else {
-    files = common.expand(filePattern);
-  }
-
-  files.forEach(function innerChmod(file) {
-    file = path.resolve(file);
-    if (!fs.existsSync(file)) {
-      common.error('File not found: ' + file);
-    }
-
-    // When recursing, don't follow symlinks.
-    if (options.recursive && fs.lstatSync(file).isSymbolicLink()) {
-      return;
-    }
-
-    var perms = fs.statSync(file).mode;
-    var type = perms & PERMS.TYPE_MASK;
-
-    var newPerms = perms;
-
-    if (isNaN(parseInt(mode, 8))) {
-      // parse options
-      mode.split(',').forEach(function (symbolicMode) {
-        /*jshint regexdash:true */
-        var pattern = /([ugoa]*)([=\+-])([rwxXst]*)/i;
-        var matches = pattern.exec(symbolicMode);
-
-        if (matches) {
-          var applyTo = matches[1];
-          var operator = matches[2];
-          var change = matches[3];
-
-          var changeOwner = applyTo.indexOf('u') != -1 || applyTo === 'a' || applyTo === '';
-          var changeGroup = applyTo.indexOf('g') != -1 || applyTo === 'a' || applyTo === '';
-          var changeOther = applyTo.indexOf('o') != -1 || applyTo === 'a' || applyTo === '';
-
-          var changeRead   = change.indexOf('r') != -1;
-          var changeWrite  = change.indexOf('w') != -1;
-          var changeExec   = change.indexOf('x') != -1;
-          var changeSticky = change.indexOf('t') != -1;
-          var changeSetuid = change.indexOf('s') != -1;
-
-          var mask = 0;
-          if (changeOwner) {
-            mask |= (changeRead ? PERMS.OWNER_READ : 0) + (changeWrite ? PERMS.OWNER_WRITE : 0) + (changeExec ? PERMS.OWNER_EXEC : 0) + (changeSetuid ? PERMS.SETUID : 0);
-          }
-          if (changeGroup) {
-            mask |= (changeRead ? PERMS.GROUP_READ : 0) + (changeWrite ? PERMS.GROUP_WRITE : 0) + (changeExec ? PERMS.GROUP_EXEC : 0) + (changeSetuid ? PERMS.SETGID : 0);
-          }
-          if (changeOther) {
-            mask |= (changeRead ? PERMS.OTHER_READ : 0) + (changeWrite ? PERMS.OTHER_WRITE : 0) + (changeExec ? PERMS.OTHER_EXEC : 0);
-          }
-
-          // Sticky bit is special - it's not tied to user, group or other.
-          if (changeSticky) {
-            mask |= PERMS.STICKY;
-          }
-
-          switch (operator) {
-            case '+':
-              newPerms |= mask;
-              break;
-
-            case '-':
-              newPerms &= ~mask;
-              break;
-
-            case '=':
-              newPerms = type + mask;
-
-              // According to POSIX, when using = to explicitly set the permissions, setuid and setgid can never be cleared.
-              if (fs.statSync(file).isDirectory()) {
-                newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms;
-              }
-              break;
-          }
-
-          if (options.verbose) {
-            log(file + ' -> ' + newPerms.toString(8));
-          }
-
-          if (perms != newPerms) {
-            if (!options.verbose && options.changes) {
-              log(file + ' -> ' + newPerms.toString(8));
-            }
-            fs.chmodSync(file, newPerms);
-          }
-        }
-        else {
-          common.error('Invalid symbolic mode change: ' + symbolicMode);
-        }
-      });
-    }
-    else {
-      // they gave us a full number
-      newPerms = type + parseInt(mode, 8);
-
-      // POSIX rules are that setuid and setgid can only be added using numeric form, but not cleared.
-      if (fs.statSync(file).isDirectory()) {
-        newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms;
-      }
-
-      fs.chmodSync(file, newPerms);
-    }
-  });
-}
-module.exports = _chmod;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/common.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/common.js b/blackberry10/node_modules/shelljs/src/common.js
deleted file mode 100644
index fe20871..0000000
--- a/blackberry10/node_modules/shelljs/src/common.js
+++ /dev/null
@@ -1,189 +0,0 @@
-var os = require('os');
-var fs = require('fs');
-var _ls = require('./ls');
-
-// Module globals
-var config = {
-  silent: false,
-  fatal: false
-};
-exports.config = config;
-
-var state = {
-  error: null,
-  currentCmd: 'shell.js',
-  tempDir: null
-};
-exports.state = state;
-
-var platform = os.type().match(/^Win/) ? 'win' : 'unix';
-exports.platform = platform;
-
-function log() {
-  if (!config.silent)
-    console.log.apply(this, arguments);
-}
-exports.log = log;
-
-// Shows error message. Throws unless _continue or config.fatal are true
-function error(msg, _continue) {
-  if (state.error === null)
-    state.error = '';
-  state.error += state.currentCmd + ': ' + msg + '\n';
-
-  if (msg.length > 0)
-    log(state.error);
-
-  if (config.fatal)
-    process.exit(1);
-
-  if (!_continue)
-    throw '';
-}
-exports.error = error;
-
-// In the future, when Proxies are default, we can add methods like `.to()` to primitive strings.
-// For now, this is a dummy function to bookmark places we need such strings
-function ShellString(str) {
-  return str;
-}
-exports.ShellString = ShellString;
-
-// Returns {'alice': true, 'bob': false} when passed a dictionary, e.g.:
-//   parseOptions('-a', {'a':'alice', 'b':'bob'});
-function parseOptions(str, map) {
-  if (!map)
-    error('parseOptions() internal error: no map given');
-
-  // All options are false by default
-  var options = {};
-  for (var letter in map)
-    options[map[letter]] = false;
-
-  if (!str)
-    return options; // defaults
-
-  if (typeof str !== 'string')
-    error('parseOptions() internal error: wrong str');
-
-  // e.g. match[1] = 'Rf' for str = '-Rf'
-  var match = str.match(/^\-(.+)/);
-  if (!match)
-    return options;
-
-  // e.g. chars = ['R', 'f']
-  var chars = match[1].split('');
-
-  chars.forEach(function(c) {
-    if (c in map)
-      options[map[c]] = true;
-    else
-      error('option not recognized: '+c);
-  });
-
-  return options;
-}
-exports.parseOptions = parseOptions;
-
-// Expands wildcards with matching (ie. existing) file names.
-// For example:
-//   expand(['file*.js']) = ['file1.js', 'file2.js', ...]
-//   (if the files 'file1.js', 'file2.js', etc, exist in the current dir)
-function expand(list) {
-  var expanded = [];
-  list.forEach(function(listEl) {
-    // Wildcard present?
-    if (listEl.search(/\*/) > -1) {
-      _ls('', listEl).forEach(function(file) {
-        expanded.push(file);
-      });
-    } else {
-      expanded.push(listEl);
-    }
-  });
-  return expanded;
-}
-exports.expand = expand;
-
-// Normalizes _unlinkSync() across platforms to match Unix behavior, i.e.
-// file can be unlinked even if it's read-only, see https://github.com/joyent/node/issues/3006
-function unlinkSync(file) {
-  try {
-    fs.unlinkSync(file);
-  } catch(e) {
-    // Try to override file permission
-    if (e.code === 'EPERM') {
-      fs.chmodSync(file, '0666');
-      fs.unlinkSync(file);
-    } else {
-      throw e;
-    }
-  }
-}
-exports.unlinkSync = unlinkSync;
-
-// e.g. 'shelljs_a5f185d0443ca...'
-function randomFileName() {
-  function randomHash(count) {
-    if (count === 1)
-      return parseInt(16*Math.random(), 10).toString(16);
-    else {
-      var hash = '';
-      for (var i=0; i<count; i++)
-        hash += randomHash(1);
-      return hash;
-    }
-  }
-
-  return 'shelljs_'+randomHash(20);
-}
-exports.randomFileName = randomFileName;
-
-// extend(target_obj, source_obj1 [, source_obj2 ...])
-// Shallow extend, e.g.:
-//    extend({A:1}, {b:2}, {c:3}) returns {A:1, b:2, c:3}
-function extend(target) {
-  var sources = [].slice.call(arguments, 1);
-  sources.forEach(function(source) {
-    for (var key in source)
-      target[key] = source[key];
-  });
-
-  return target;
-}
-exports.extend = extend;
-
-// Common wrapper for all Unix-like commands
-function wrap(cmd, fn, options) {
-  return function() {
-    var retValue = null;
-
-    state.currentCmd = cmd;
-    state.error = null;
-
-    try {
-      var args = [].slice.call(arguments, 0);
-
-      if (options && options.notUnix) {
-        retValue = fn.apply(this, args);
-      } else {
-        if (args.length === 0 || typeof args[0] !== 'string' || args[0][0] !== '-')
-          args.unshift(''); // only add dummy option if '-option' not already present
-        retValue = fn.apply(this, args);
-      }
-    } catch (e) {
-      if (!state.error) {
-        // If state.error hasn't been set it's an error thrown by Node, not us - probably a bug...
-        console.log('shell.js: internal error');
-        console.log(e.stack || e);
-        process.exit(1);
-      }
-      if (config.fatal)
-        throw e;
-    }
-
-    state.currentCmd = 'shell.js';
-    return retValue;
-  };
-} // wrap
-exports.wrap = wrap;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/cp.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/cp.js b/blackberry10/node_modules/shelljs/src/cp.js
deleted file mode 100644
index a1bc529..0000000
--- a/blackberry10/node_modules/shelljs/src/cp.js
+++ /dev/null
@@ -1,200 +0,0 @@
-var fs = require('fs');
-var path = require('path');
-var common = require('./common');
-
-// Buffered file copy, synchronous
-// (Using readFileSync() + writeFileSync() could easily cause a memory overflow
-//  with large files)
-function copyFileSync(srcFile, destFile) {
-  if (!fs.existsSync(srcFile))
-    common.error('copyFileSync: no such file or directory: ' + srcFile);
-
-  var BUF_LENGTH = 64*1024,
-      buf = new Buffer(BUF_LENGTH),
-      bytesRead = BUF_LENGTH,
-      pos = 0,
-      fdr = null,
-      fdw = null;
-
-  try {
-    fdr = fs.openSync(srcFile, 'r');
-  } catch(e) {
-    common.error('copyFileSync: could not read src file ('+srcFile+')');
-  }
-
-  try {
-    fdw = fs.openSync(destFile, 'w');
-  } catch(e) {
-    common.error('copyFileSync: could not write to dest file (code='+e.code+'):'+destFile);
-  }
-
-  while (bytesRead === BUF_LENGTH) {
-    bytesRead = fs.readSync(fdr, buf, 0, BUF_LENGTH, pos);
-    fs.writeSync(fdw, buf, 0, bytesRead);
-    pos += bytesRead;
-  }
-
-  fs.closeSync(fdr);
-  fs.closeSync(fdw);
-
-  fs.chmodSync(destFile, fs.statSync(srcFile).mode);
-}
-
-// Recursively copies 'sourceDir' into 'destDir'
-// Adapted from https://github.com/ryanmcgrath/wrench-js
-//
-// Copyright (c) 2010 Ryan McGrath
-// Copyright (c) 2012 Artur Adib
-//
-// Licensed under the MIT License
-// http://www.opensource.org/licenses/mit-license.php
-function cpdirSyncRecursive(sourceDir, destDir, opts) {
-  if (!opts) opts = {};
-
-  /* Create the directory where all our junk is moving to; read the mode of the source directory and mirror it */
-  var checkDir = fs.statSync(sourceDir);
-  try {
-    fs.mkdirSync(destDir, checkDir.mode);
-  } catch (e) {
-    //if the directory already exists, that's okay
-    if (e.code !== 'EEXIST') throw e;
-  }
-
-  var files = fs.readdirSync(sourceDir);
-
-  for (var i = 0; i < files.length; i++) {
-    var srcFile = sourceDir + "/" + files[i];
-    var destFile = destDir + "/" + files[i];
-    var srcFileStat = fs.lstatSync(srcFile);
-
-    if (srcFileStat.isDirectory()) {
-      /* recursion this thing right on back. */
-      cpdirSyncRecursive(srcFile, destFile, opts);
-    } else if (srcFileStat.isSymbolicLink()) {
-      var symlinkFull = fs.readlinkSync(srcFile);
-      fs.symlinkSync(symlinkFull, destFile);
-    } else {
-      /* At this point, we've hit a file actually worth copying... so copy it on over. */
-      if (fs.existsSync(destFile) && !opts.force) {
-        common.log('skipping existing file: ' + files[i]);
-      } else {
-        copyFileSync(srcFile, destFile);
-      }
-    }
-
-  } // for files
-} // cpdirSyncRecursive
-
-
-//@
-//@ ### cp([options ,] source [,source ...], dest)
-//@ ### cp([options ,] source_array, dest)
-//@ Available options:
-//@
-//@ + `-f`: force
-//@ + `-r, -R`: recursive
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ cp('file1', 'dir1');
-//@ cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');
-//@ cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above
-//@ ```
-//@
-//@ Copies files. The wildcard `*` is accepted.
-function _cp(options, sources, dest) {
-  options = common.parseOptions(options, {
-    'f': 'force',
-    'R': 'recursive',
-    'r': 'recursive'
-  });
-
-  // Get sources, dest
-  if (arguments.length < 3) {
-    common.error('missing <source> and/or <dest>');
-  } else if (arguments.length > 3) {
-    sources = [].slice.call(arguments, 1, arguments.length - 1);
-    dest = arguments[arguments.length - 1];
-  } else if (typeof sources === 'string') {
-    sources = [sources];
-  } else if ('length' in sources) {
-    sources = sources; // no-op for array
-  } else {
-    common.error('invalid arguments');
-  }
-
-  var exists = fs.existsSync(dest),
-      stats = exists && fs.statSync(dest);
-
-  // Dest is not existing dir, but multiple sources given
-  if ((!exists || !stats.isDirectory()) && sources.length > 1)
-    common.error('dest is not a directory (too many sources)');
-
-  // Dest is an existing file, but no -f given
-  if (exists && stats.isFile() && !options.force)
-    common.error('dest file already exists: ' + dest);
-
-  if (options.recursive) {
-    // Recursive allows the shortcut syntax "sourcedir/" for "sourcedir/*"
-    // (see Github issue #15)
-    sources.forEach(function(src, i) {
-      if (src[src.length - 1] === '/')
-        sources[i] += '*';
-    });
-
-    // Create dest
-    try {
-      fs.mkdirSync(dest, parseInt('0777', 8));
-    } catch (e) {
-      // like Unix's cp, keep going even if we can't create dest dir
-    }
-  }
-
-  sources = common.expand(sources);
-
-  sources.forEach(function(src) {
-    if (!fs.existsSync(src)) {
-      common.error('no such file or directory: '+src, true);
-      return; // skip file
-    }
-
-    // If here, src exists
-    if (fs.statSync(src).isDirectory()) {
-      if (!options.recursive) {
-        // Non-Recursive
-        common.log(src + ' is a directory (not copied)');
-      } else {
-        // Recursive
-        // 'cp /a/source dest' should create 'source' in 'dest'
-        var newDest = path.join(dest, path.basename(src)),
-            checkDir = fs.statSync(src);
-        try {
-          fs.mkdirSync(newDest, checkDir.mode);
-        } catch (e) {
-          //if the directory already exists, that's okay
-          if (e.code !== 'EEXIST') throw e;
-        }
-
-        cpdirSyncRecursive(src, newDest, {force: options.force});
-      }
-      return; // done with dir
-    }
-
-    // If here, src is a file
-
-    // When copying to '/path/dir':
-    //    thisDest = '/path/dir/file1'
-    var thisDest = dest;
-    if (fs.existsSync(dest) && fs.statSync(dest).isDirectory())
-      thisDest = path.normalize(dest + '/' + path.basename(src));
-
-    if (fs.existsSync(thisDest) && !options.force) {
-      common.error('dest file already exists: ' + thisDest, true);
-      return; // skip file
-    }
-
-    copyFileSync(src, thisDest);
-  }); // forEach(src)
-}
-module.exports = _cp;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/dirs.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/dirs.js b/blackberry10/node_modules/shelljs/src/dirs.js
deleted file mode 100644
index 58fae8b..0000000
--- a/blackberry10/node_modules/shelljs/src/dirs.js
+++ /dev/null
@@ -1,191 +0,0 @@
-var common = require('./common');
-var _cd = require('./cd');
-var path = require('path');
-
-// Pushd/popd/dirs internals
-var _dirStack = [];
-
-function _isStackIndex(index) {
-  return (/^[\-+]\d+$/).test(index);
-}
-
-function _parseStackIndex(index) {
-  if (_isStackIndex(index)) {
-    if (Math.abs(index) < _dirStack.length + 1) { // +1 for pwd
-      return (/^-/).test(index) ? Number(index) - 1 : Number(index);
-    } else {
-      common.error(index + ': directory stack index out of range');
-    }
-  } else {
-    common.error(index + ': invalid number');
-  }
-}
-
-function _actualDirStack() {
-  return [process.cwd()].concat(_dirStack);
-}
-
-//@
-//@ ### pushd([options,] [dir | '-N' | '+N'])
-//@
-//@ Available options:
-//@
-//@ + `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.
-//@
-//@ Arguments:
-//@
-//@ + `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.
-//@ + `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
-//@ + `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ // process.cwd() === '/usr'
-//@ pushd('/etc'); // Returns /etc /usr
-//@ pushd('+1');   // Returns /usr /etc
-//@ ```
-//@
-//@ Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.
-function _pushd(options, dir) {
-  if (_isStackIndex(options)) {
-    dir = options;
-    options = '';
-  }
-
-  options = common.parseOptions(options, {
-    'n' : 'no-cd'
-  });
-
-  var dirs = _actualDirStack();
-
-  if (dir === '+0') {
-    return dirs; // +0 is a noop
-  } else if (!dir) {
-    if (dirs.length > 1) {
-      dirs = dirs.splice(1, 1).concat(dirs);
-    } else {
-      return common.error('no other directory');
-    }
-  } else if (_isStackIndex(dir)) {
-    var n = _parseStackIndex(dir);
-    dirs = dirs.slice(n).concat(dirs.slice(0, n));
-  } else {
-    if (options['no-cd']) {
-      dirs.splice(1, 0, dir);
-    } else {
-      dirs.unshift(dir);
-    }
-  }
-
-  if (options['no-cd']) {
-    dirs = dirs.slice(1);
-  } else {
-    dir = path.resolve(dirs.shift());
-    _cd('', dir);
-  }
-
-  _dirStack = dirs;
-  return _dirs('');
-}
-exports.pushd = _pushd;
-
-//@
-//@ ### popd([options,] ['-N' | '+N'])
-//@
-//@ Available options:
-//@
-//@ + `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.
-//@
-//@ Arguments:
-//@
-//@ + `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.
-//@ + `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ echo(process.cwd()); // '/usr'
-//@ pushd('/etc');       // '/etc /usr'
-//@ echo(process.cwd()); // '/etc'
-//@ popd();              // '/usr'
-//@ echo(process.cwd()); // '/usr'
-//@ ```
-//@
-//@ When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.
-function _popd(options, index) {
-  if (_isStackIndex(options)) {
-    index = options;
-    options = '';
-  }
-
-  options = common.parseOptions(options, {
-    'n' : 'no-cd'
-  });
-
-  if (!_dirStack.length) {
-    return common.error('directory stack empty');
-  }
-
-  index = _parseStackIndex(index || '+0');
-
-  if (options['no-cd'] || index > 0 || _dirStack.length + index === 0) {
-    index = index > 0 ? index - 1 : index;
-    _dirStack.splice(index, 1);
-  } else {
-    var dir = path.resolve(_dirStack.shift());
-    _cd('', dir);
-  }
-
-  return _dirs('');
-}
-exports.popd = _popd;
-
-//@
-//@ ### dirs([options | '+N' | '-N'])
-//@
-//@ Available options:
-//@
-//@ + `-c`: Clears the directory stack by deleting all of the elements.
-//@
-//@ Arguments:
-//@
-//@ + `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.
-//@ + `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.
-//@
-//@ Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.
-//@
-//@ See also: pushd, popd
-function _dirs(options, index) {
-  if (_isStackIndex(options)) {
-    index = options;
-    options = '';
-  }
-
-  options = common.parseOptions(options, {
-    'c' : 'clear'
-  });
-
-  if (options['clear']) {
-    _dirStack = [];
-    return _dirStack;
-  }
-
-  var stack = _actualDirStack();
-
-  if (index) {
-    index = _parseStackIndex(index);
-
-    if (index < 0) {
-      index = stack.length + index;
-    }
-
-    common.log(stack[index]);
-    return stack[index];
-  }
-
-  common.log(stack.join(' '));
-
-  return stack;
-}
-exports.dirs = _dirs;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/echo.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/echo.js b/blackberry10/node_modules/shelljs/src/echo.js
deleted file mode 100644
index 760ea84..0000000
--- a/blackberry10/node_modules/shelljs/src/echo.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var common = require('./common');
-
-//@
-//@ ### echo(string [,string ...])
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ echo('hello world');
-//@ var str = echo('hello world');
-//@ ```
-//@
-//@ Prints string to stdout, and returns string with additional utility methods
-//@ like `.to()`.
-function _echo() {
-  var messages = [].slice.call(arguments, 0);
-  console.log.apply(this, messages);
-  return common.ShellString(messages.join(' '));
-}
-module.exports = _echo;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/error.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/error.js b/blackberry10/node_modules/shelljs/src/error.js
deleted file mode 100644
index cca3efb..0000000
--- a/blackberry10/node_modules/shelljs/src/error.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var common = require('./common');
-
-//@
-//@ ### error()
-//@ Tests if error occurred in the last command. Returns `null` if no error occurred,
-//@ otherwise returns string explaining the error
-function error() {
-  return common.state.error;
-};
-module.exports = error;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/exec.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/exec.js b/blackberry10/node_modules/shelljs/src/exec.js
deleted file mode 100644
index 7ccdbc0..0000000
--- a/blackberry10/node_modules/shelljs/src/exec.js
+++ /dev/null
@@ -1,181 +0,0 @@
-var common = require('./common');
-var _tempDir = require('./tempdir');
-var _pwd = require('./pwd');
-var path = require('path');
-var fs = require('fs');
-var child = require('child_process');
-
-// Hack to run child_process.exec() synchronously (sync avoids callback hell)
-// Uses a custom wait loop that checks for a flag file, created when the child process is done.
-// (Can't do a wait loop that checks for internal Node variables/messages as
-// Node is single-threaded; callbacks and other internal state changes are done in the
-// event loop).
-function execSync(cmd, opts) {
-  var tempDir = _tempDir();
-  var stdoutFile = path.resolve(tempDir+'/'+common.randomFileName()),
-      codeFile = path.resolve(tempDir+'/'+common.randomFileName()),
-      scriptFile = path.resolve(tempDir+'/'+common.randomFileName()),
-      sleepFile = path.resolve(tempDir+'/'+common.randomFileName());
-
-  var options = common.extend({
-    silent: common.config.silent
-  }, opts);
-
-  var previousStdoutContent = '';
-  // Echoes stdout changes from running process, if not silent
-  function updateStdout() {
-    if (options.silent || !fs.existsSync(stdoutFile))
-      return;
-
-    var stdoutContent = fs.readFileSync(stdoutFile, 'utf8');
-    // No changes since last time?
-    if (stdoutContent.length <= previousStdoutContent.length)
-      return;
-
-    process.stdout.write(stdoutContent.substr(previousStdoutContent.length));
-    previousStdoutContent = stdoutContent;
-  }
-
-  function escape(str) {
-    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
-  }
-
-  cmd += ' > '+stdoutFile+' 2>&1'; // works on both win/unix
-
-  var script =
-   "var child = require('child_process')," +
-   "     fs = require('fs');" +
-   "child.exec('"+escape(cmd)+"', {env: process.env, maxBuffer: 20*1024*1024}, function(err) {" +
-   "  fs.writeFileSync('"+escape(codeFile)+"', err ? err.code.toString() : '0');" +
-   "});";
-
-  if (fs.existsSync(scriptFile)) common.unlinkSync(scriptFile);
-  if (fs.existsSync(stdoutFile)) common.unlinkSync(stdoutFile);
-  if (fs.existsSync(codeFile)) common.unlinkSync(codeFile);
-
-  fs.writeFileSync(scriptFile, script);
-  child.exec('"'+process.execPath+'" '+scriptFile, {
-    env: process.env,
-    cwd: _pwd(),
-    maxBuffer: 20*1024*1024
-  });
-
-  // The wait loop
-  // sleepFile is used as a dummy I/O op to mitigate unnecessary CPU usage
-  // (tried many I/O sync ops, writeFileSync() seems to be only one that is effective in reducing
-  // CPU usage, though apparently not so much on Windows)
-  while (!fs.existsSync(codeFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); }
-  while (!fs.existsSync(stdoutFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); }
-
-  // At this point codeFile exists, but it's not necessarily flushed yet.
-  // Keep reading it until it is.
-  var code = parseInt('', 10);
-  while (isNaN(code)) {
-    code = parseInt(fs.readFileSync(codeFile, 'utf8'), 10);
-  }
-
-  var stdout = fs.readFileSync(stdoutFile, 'utf8');
-
-  // No biggie if we can't erase the files now -- they're in a temp dir anyway
-  try { common.unlinkSync(scriptFile); } catch(e) {}
-  try { common.unlinkSync(stdoutFile); } catch(e) {}
-  try { common.unlinkSync(codeFile); } catch(e) {}
-  try { common.unlinkSync(sleepFile); } catch(e) {}
-
-  // some shell return codes are defined as errors, per http://tldp.org/LDP/abs/html/exitcodes.html
-  if (code === 1 || code === 2 || code >= 126)  {
-      common.error('', true); // unix/shell doesn't really give an error message after non-zero exit codes
-  }
-  // True if successful, false if not
-  var obj = {
-    code: code,
-    output: stdout
-  };
-  return obj;
-} // execSync()
-
-// Wrapper around exec() to enable echoing output to console in real time
-function execAsync(cmd, opts, callback) {
-  var output = '';
-
-  var options = common.extend({
-    silent: common.config.silent
-  }, opts);
-
-  var c = child.exec(cmd, {env: process.env, maxBuffer: 20*1024*1024}, function(err) {
-    if (callback)
-      callback(err ? err.code : 0, output);
-  });
-
-  c.stdout.on('data', function(data) {
-    output += data;
-    if (!options.silent)
-      process.stdout.write(data);
-  });
-
-  c.stderr.on('data', function(data) {
-    output += data;
-    if (!options.silent)
-      process.stdout.write(data);
-  });
-
-  return c;
-}
-
-//@
-//@ ### exec(command [, options] [, callback])
-//@ Available options (all `false` by default):
-//@
-//@ + `async`: Asynchronous execution. Defaults to true if a callback is provided.
-//@ + `silent`: Do not echo program output to console.
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ var version = exec('node --version', {silent:true}).output;
-//@
-//@ var child = exec('some_long_running_process', {async:true});
-//@ child.stdout.on('data', function(data) {
-//@   /* ... do something with data ... */
-//@ });
-//@
-//@ exec('some_long_running_process', function(code, output) {
-//@   console.log('Exit code:', code);
-//@   console.log('Program output:', output);
-//@ });
-//@ ```
-//@
-//@ Executes the given `command` _synchronously_, unless otherwise specified.
-//@ When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's
-//@ `output` (stdout + stderr)  and its exit `code`. Otherwise returns the child process object, and
-//@ the `callback` gets the arguments `(code, output)`.
-//@
-//@ **Note:** For long-lived processes, it's best to run `exec()` asynchronously as
-//@ the current synchronous implementation uses a lot of CPU. This should be getting
-//@ fixed soon.
-function _exec(command, options, callback) {
-  if (!command)
-    common.error('must specify command');
-
-  // Callback is defined instead of options.
-  if (typeof options === 'function') {
-    callback = options;
-    options = { async: true };
-  }
-
-  // Callback is defined with options.
-  if (typeof options === 'object' && typeof callback === 'function') {
-    options.async = true;
-  }
-
-  options = common.extend({
-    silent: common.config.silent,
-    async: false
-  }, options);
-
-  if (options.async)
-    return execAsync(command, options, callback);
-  else
-    return execSync(command, options);
-}
-module.exports = _exec;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/find.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/find.js b/blackberry10/node_modules/shelljs/src/find.js
deleted file mode 100644
index d9eeec2..0000000
--- a/blackberry10/node_modules/shelljs/src/find.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var fs = require('fs');
-var common = require('./common');
-var _ls = require('./ls');
-
-//@
-//@ ### find(path [,path ...])
-//@ ### find(path_array)
-//@ Examples:
-//@
-//@ ```javascript
-//@ find('src', 'lib');
-//@ find(['src', 'lib']); // same as above
-//@ find('.').filter(function(file) { return file.match(/\.js$/); });
-//@ ```
-//@
-//@ Returns array of all files (however deep) in the given paths.
-//@
-//@ The main difference from `ls('-R', path)` is that the resulting file names
-//@ include the base directories, e.g. `lib/resources/file1` instead of just `file1`.
-function _find(options, paths) {
-  if (!paths)
-    common.error('no path specified');
-  else if (typeof paths === 'object')
-    paths = paths; // assume array
-  else if (typeof paths === 'string')
-    paths = [].slice.call(arguments, 1);
-
-  var list = [];
-
-  function pushFile(file) {
-    if (common.platform === 'win')
-      file = file.replace(/\\/g, '/');
-    list.push(file);
-  }
-
-  // why not simply do ls('-R', paths)? because the output wouldn't give the base dirs
-  // to get the base dir in the output, we need instead ls('-R', 'dir/*') for every directory
-
-  paths.forEach(function(file) {
-    pushFile(file);
-
-    if (fs.statSync(file).isDirectory()) {
-      _ls('-RA', file+'/*').forEach(function(subfile) {
-        pushFile(subfile);
-      });
-    }
-  });
-
-  return list;
-}
-module.exports = _find;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/grep.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/grep.js b/blackberry10/node_modules/shelljs/src/grep.js
deleted file mode 100644
index 00c7d6a..0000000
--- a/blackberry10/node_modules/shelljs/src/grep.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-
-//@
-//@ ### grep([options ,] regex_filter, file [, file ...])
-//@ ### grep([options ,] regex_filter, file_array)
-//@ Available options:
-//@
-//@ + `-v`: Inverse the sense of the regex and print the lines not matching the criteria.
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ grep('-v', 'GLOBAL_VARIABLE', '*.js');
-//@ grep('GLOBAL_VARIABLE', '*.js');
-//@ ```
-//@
-//@ Reads input string from given files and returns a string containing all lines of the
-//@ file that match the given `regex_filter`. Wildcard `*` accepted.
-function _grep(options, regex, files) {
-  options = common.parseOptions(options, {
-    'v': 'inverse'
-  });
-
-  if (!files)
-    common.error('no paths given');
-
-  if (typeof files === 'string')
-    files = [].slice.call(arguments, 2);
-  // if it's array leave it as it is
-
-  files = common.expand(files);
-
-  var grep = '';
-  files.forEach(function(file) {
-    if (!fs.existsSync(file)) {
-      common.error('no such file or directory: ' + file, true);
-      return;
-    }
-
-    var contents = fs.readFileSync(file, 'utf8'),
-        lines = contents.split(/\r*\n/);
-    lines.forEach(function(line) {
-      var matched = line.match(regex);
-      if ((options.inverse && !matched) || (!options.inverse && matched))
-        grep += line + '\n';
-    });
-  });
-
-  return common.ShellString(grep);
-}
-module.exports = _grep;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/ls.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/ls.js b/blackberry10/node_modules/shelljs/src/ls.js
deleted file mode 100644
index 3345db4..0000000
--- a/blackberry10/node_modules/shelljs/src/ls.js
+++ /dev/null
@@ -1,126 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-var common = require('./common');
-var _cd = require('./cd');
-var _pwd = require('./pwd');
-
-//@
-//@ ### ls([options ,] path [,path ...])
-//@ ### ls([options ,] path_array)
-//@ Available options:
-//@
-//@ + `-R`: recursive
-//@ + `-A`: all files (include files beginning with `.`, except for `.` and `..`)
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ ls('projs/*.js');
-//@ ls('-R', '/users/me', '/tmp');
-//@ ls('-R', ['/users/me', '/tmp']); // same as above
-//@ ```
-//@
-//@ Returns array of files in the given path, or in current directory if no path provided.
-function _ls(options, paths) {
-  options = common.parseOptions(options, {
-    'R': 'recursive',
-    'A': 'all',
-    'a': 'all_deprecated'
-  });
-
-  if (options.all_deprecated) {
-    // We won't support the -a option as it's hard to image why it's useful
-    // (it includes '.' and '..' in addition to '.*' files)
-    // For backwards compatibility we'll dump a deprecated message and proceed as before
-    common.log('ls: Option -a is deprecated. Use -A instead');
-    options.all = true;
-  }
-
-  if (!paths)
-    paths = ['.'];
-  else if (typeof paths === 'object')
-    paths = paths; // assume array
-  else if (typeof paths === 'string')
-    paths = [].slice.call(arguments, 1);
-
-  var list = [];
-
-  // Conditionally pushes file to list - returns true if pushed, false otherwise
-  // (e.g. prevents hidden files to be included unless explicitly told so)
-  function pushFile(file, query) {
-    // hidden file?
-    if (path.basename(file)[0] === '.') {
-      // not explicitly asking for hidden files?
-      if (!options.all && !(path.basename(query)[0] === '.' && path.basename(query).length > 1))
-        return false;
-    }
-
-    if (common.platform === 'win')
-      file = file.replace(/\\/g, '/');
-
-    list.push(file);
-    return true;
-  }
-
-  paths.forEach(function(p) {
-    if (fs.existsSync(p)) {
-      var stats = fs.statSync(p);
-      // Simple file?
-      if (stats.isFile()) {
-        pushFile(p, p);
-        return; // continue
-      }
-
-      // Simple dir?
-      if (stats.isDirectory()) {
-        // Iterate over p contents
-        fs.readdirSync(p).forEach(function(file) {
-          if (!pushFile(file, p))
-            return;
-
-          // Recursive?
-          if (options.recursive) {
-            var oldDir = _pwd();
-            _cd('', p);
-            if (fs.statSync(file).isDirectory())
-              list = list.concat(_ls('-R'+(options.all?'A':''), file+'/*'));
-            _cd('', oldDir);
-          }
-        });
-        return; // continue
-      }
-    }
-
-    // p does not exist - possible wildcard present
-
-    var basename = path.basename(p);
-    var dirname = path.dirname(p);
-    // Wildcard present on an existing dir? (e.g. '/tmp/*.js')
-    if (basename.search(/\*/) > -1 && fs.existsSync(dirname) && fs.statSync(dirname).isDirectory) {
-      // Escape special regular expression chars
-      var regexp = basename.replace(/(\^|\$|\(|\)|<|>|\[|\]|\{|\}|\.|\+|\?)/g, '\\$1');
-      // Translates wildcard into regex
-      regexp = '^' + regexp.replace(/\*/g, '.*') + '$';
-      // Iterate over directory contents
-      fs.readdirSync(dirname).forEach(function(file) {
-        if (file.match(new RegExp(regexp))) {
-          if (!pushFile(path.normalize(dirname+'/'+file), basename))
-            return;
-
-          // Recursive?
-          if (options.recursive) {
-            var pp = dirname + '/' + file;
-            if (fs.lstatSync(pp).isDirectory())
-              list = list.concat(_ls('-R'+(options.all?'A':''), pp+'/*'));
-          } // recursive
-        } // if file matches
-      }); // forEach
-      return;
-    }
-
-    common.error('no such file or directory: ' + p, true);
-  });
-
-  return list;
-}
-module.exports = _ls;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/mkdir.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/mkdir.js b/blackberry10/node_modules/shelljs/src/mkdir.js
deleted file mode 100644
index 5a7088f..0000000
--- a/blackberry10/node_modules/shelljs/src/mkdir.js
+++ /dev/null
@@ -1,68 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-var path = require('path');
-
-// Recursively creates 'dir'
-function mkdirSyncRecursive(dir) {
-  var baseDir = path.dirname(dir);
-
-  // Base dir exists, no recursion necessary
-  if (fs.existsSync(baseDir)) {
-    fs.mkdirSync(dir, parseInt('0777', 8));
-    return;
-  }
-
-  // Base dir does not exist, go recursive
-  mkdirSyncRecursive(baseDir);
-
-  // Base dir created, can create dir
-  fs.mkdirSync(dir, parseInt('0777', 8));
-}
-
-//@
-//@ ### mkdir([options ,] dir [, dir ...])
-//@ ### mkdir([options ,] dir_array)
-//@ Available options:
-//@
-//@ + `p`: full path (will create intermediate dirs if necessary)
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
-//@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
-//@ ```
-//@
-//@ Creates directories.
-function _mkdir(options, dirs) {
-  options = common.parseOptions(options, {
-    'p': 'fullpath'
-  });
-  if (!dirs)
-    common.error('no paths given');
-
-  if (typeof dirs === 'string')
-    dirs = [].slice.call(arguments, 1);
-  // if it's array leave it as it is
-
-  dirs.forEach(function(dir) {
-    if (fs.existsSync(dir)) {
-      if (!options.fullpath)
-          common.error('path already exists: ' + dir, true);
-      return; // skip dir
-    }
-
-    // Base dir does not exist, and no -p option given
-    var baseDir = path.dirname(dir);
-    if (!fs.existsSync(baseDir) && !options.fullpath) {
-      common.error('no such file or directory: ' + baseDir, true);
-      return; // skip dir
-    }
-
-    if (options.fullpath)
-      mkdirSyncRecursive(dir);
-    else
-      fs.mkdirSync(dir, parseInt('0777', 8));
-  });
-} // mkdir
-module.exports = _mkdir;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/mv.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/mv.js b/blackberry10/node_modules/shelljs/src/mv.js
deleted file mode 100644
index 11f9607..0000000
--- a/blackberry10/node_modules/shelljs/src/mv.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var fs = require('fs');
-var path = require('path');
-var common = require('./common');
-
-//@
-//@ ### mv(source [, source ...], dest')
-//@ ### mv(source_array, dest')
-//@ Available options:
-//@
-//@ + `f`: force
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ mv('-f', 'file', 'dir/');
-//@ mv('file1', 'file2', 'dir/');
-//@ mv(['file1', 'file2'], 'dir/'); // same as above
-//@ ```
-//@
-//@ Moves files. The wildcard `*` is accepted.
-function _mv(options, sources, dest) {
-  options = common.parseOptions(options, {
-    'f': 'force'
-  });
-
-  // Get sources, dest
-  if (arguments.length < 3) {
-    common.error('missing <source> and/or <dest>');
-  } else if (arguments.length > 3) {
-    sources = [].slice.call(arguments, 1, arguments.length - 1);
-    dest = arguments[arguments.length - 1];
-  } else if (typeof sources === 'string') {
-    sources = [sources];
-  } else if ('length' in sources) {
-    sources = sources; // no-op for array
-  } else {
-    common.error('invalid arguments');
-  }
-
-  sources = common.expand(sources);
-
-  var exists = fs.existsSync(dest),
-      stats = exists && fs.statSync(dest);
-
-  // Dest is not existing dir, but multiple sources given
-  if ((!exists || !stats.isDirectory()) && sources.length > 1)
-    common.error('dest is not a directory (too many sources)');
-
-  // Dest is an existing file, but no -f given
-  if (exists && stats.isFile() && !options.force)
-    common.error('dest file already exists: ' + dest);
-
-  sources.forEach(function(src) {
-    if (!fs.existsSync(src)) {
-      common.error('no such file or directory: '+src, true);
-      return; // skip file
-    }
-
-    // If here, src exists
-
-    // When copying to '/path/dir':
-    //    thisDest = '/path/dir/file1'
-    var thisDest = dest;
-    if (fs.existsSync(dest) && fs.statSync(dest).isDirectory())
-      thisDest = path.normalize(dest + '/' + path.basename(src));
-
-    if (fs.existsSync(thisDest) && !options.force) {
-      common.error('dest file already exists: ' + thisDest, true);
-      return; // skip file
-    }
-
-    if (path.resolve(src) === path.dirname(path.resolve(thisDest))) {
-      common.error('cannot move to self: '+src, true);
-      return; // skip file
-    }
-
-    fs.renameSync(src, thisDest);
-  }); // forEach(src)
-} // mv
-module.exports = _mv;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/popd.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/popd.js b/blackberry10/node_modules/shelljs/src/popd.js
deleted file mode 100644
index 11ea24f..0000000
--- a/blackberry10/node_modules/shelljs/src/popd.js
+++ /dev/null
@@ -1 +0,0 @@
-// see dirs.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/pushd.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/pushd.js b/blackberry10/node_modules/shelljs/src/pushd.js
deleted file mode 100644
index 11ea24f..0000000
--- a/blackberry10/node_modules/shelljs/src/pushd.js
+++ /dev/null
@@ -1 +0,0 @@
-// see dirs.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/pwd.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/pwd.js b/blackberry10/node_modules/shelljs/src/pwd.js
deleted file mode 100644
index 41727bb..0000000
--- a/blackberry10/node_modules/shelljs/src/pwd.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var path = require('path');
-var common = require('./common');
-
-//@
-//@ ### pwd()
-//@ Returns the current directory.
-function _pwd(options) {
-  var pwd = path.resolve(process.cwd());
-  return common.ShellString(pwd);
-}
-module.exports = _pwd;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/rm.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/rm.js b/blackberry10/node_modules/shelljs/src/rm.js
deleted file mode 100644
index 3abe6e1..0000000
--- a/blackberry10/node_modules/shelljs/src/rm.js
+++ /dev/null
@@ -1,145 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-
-// Recursively removes 'dir'
-// Adapted from https://github.com/ryanmcgrath/wrench-js
-//
-// Copyright (c) 2010 Ryan McGrath
-// Copyright (c) 2012 Artur Adib
-//
-// Licensed under the MIT License
-// http://www.opensource.org/licenses/mit-license.php
-function rmdirSyncRecursive(dir, force) {
-  var files;
-
-  files = fs.readdirSync(dir);
-
-  // Loop through and delete everything in the sub-tree after checking it
-  for(var i = 0; i < files.length; i++) {
-    var file = dir + "/" + files[i],
-        currFile = fs.lstatSync(file);
-
-    if(currFile.isDirectory()) { // Recursive function back to the beginning
-      rmdirSyncRecursive(file, force);
-    }
-
-    else if(currFile.isSymbolicLink()) { // Unlink symlinks
-      if (force || isWriteable(file)) {
-        try {
-          common.unlinkSync(file);
-        } catch (e) {
-          common.error('could not remove file (code '+e.code+'): ' + file, true);
-        }
-      }
-    }
-
-    else // Assume it's a file - perhaps a try/catch belongs here?
-      if (force || isWriteable(file)) {
-        try {
-          common.unlinkSync(file);
-        } catch (e) {
-          common.error('could not remove file (code '+e.code+'): ' + file, true);
-        }
-      }
-  }
-
-  // Now that we know everything in the sub-tree has been deleted, we can delete the main directory.
-  // Huzzah for the shopkeep.
-
-  var result;
-  try {
-    result = fs.rmdirSync(dir);
-  } catch(e) {
-    common.error('could not remove directory (code '+e.code+'): ' + dir, true);
-  }
-
-  return result;
-} // rmdirSyncRecursive
-
-// Hack to determine if file has write permissions for current user
-// Avoids having to check user, group, etc, but it's probably slow
-function isWriteable(file) {
-  var writePermission = true;
-  try {
-    var __fd = fs.openSync(file, 'a');
-    fs.closeSync(__fd);
-  } catch(e) {
-    writePermission = false;
-  }
-
-  return writePermission;
-}
-
-//@
-//@ ### rm([options ,] file [, file ...])
-//@ ### rm([options ,] file_array)
-//@ Available options:
-//@
-//@ + `-f`: force
-//@ + `-r, -R`: recursive
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ rm('-rf', '/tmp/*');
-//@ rm('some_file.txt', 'another_file.txt');
-//@ rm(['some_file.txt', 'another_file.txt']); // same as above
-//@ ```
-//@
-//@ Removes files. The wildcard `*` is accepted.
-function _rm(options, files) {
-  options = common.parseOptions(options, {
-    'f': 'force',
-    'r': 'recursive',
-    'R': 'recursive'
-  });
-  if (!files)
-    common.error('no paths given');
-
-  if (typeof files === 'string')
-    files = [].slice.call(arguments, 1);
-  // if it's array leave it as it is
-
-  files = common.expand(files);
-
-  files.forEach(function(file) {
-    if (!fs.existsSync(file)) {
-      // Path does not exist, no force flag given
-      if (!options.force)
-        common.error('no such file or directory: '+file, true);
-
-      return; // skip file
-    }
-
-    // If here, path exists
-
-    var stats = fs.lstatSync(file);
-    if (stats.isFile() || stats.isSymbolicLink()) {
-
-      // Do not check for file writing permissions
-      if (options.force) {
-        common.unlinkSync(file);
-        return;
-      }
-
-      if (isWriteable(file))
-        common.unlinkSync(file);
-      else
-        common.error('permission denied: '+file, true);
-
-      return;
-    } // simple file
-
-    // Path is an existing directory, but no -r flag given
-    if (stats.isDirectory() && !options.recursive) {
-      common.error('path is a directory', true);
-      return; // skip path
-    }
-
-    // Recursively remove existing directory
-    if (stats.isDirectory() && options.recursive) {
-      rmdirSyncRecursive(file, options.force);
-    }
-  }); // forEach(file)
-} // rm
-module.exports = _rm;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/sed.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/sed.js b/blackberry10/node_modules/shelljs/src/sed.js
deleted file mode 100644
index 9783252..0000000
--- a/blackberry10/node_modules/shelljs/src/sed.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-
-//@
-//@ ### sed([options ,] search_regex, replace_str, file)
-//@ Available options:
-//@
-//@ + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');
-//@ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js');
-//@ ```
-//@
-//@ Reads an input string from `file` and performs a JavaScript `replace()` on the input
-//@ using the given search regex and replacement string. Returns the new string after replacement.
-function _sed(options, regex, replacement, file) {
-  options = common.parseOptions(options, {
-    'i': 'inplace'
-  });
-
-  if (typeof replacement === 'string')
-    replacement = replacement; // no-op
-  else if (typeof replacement === 'number')
-    replacement = replacement.toString(); // fallback
-  else
-    common.error('invalid replacement string');
-
-  if (!file)
-    common.error('no file given');
-
-  if (!fs.existsSync(file))
-    common.error('no such file or directory: ' + file);
-
-  var result = fs.readFileSync(file, 'utf8').replace(regex, replacement);
-  if (options.inplace)
-    fs.writeFileSync(file, result, 'utf8');
-
-  return common.ShellString(result);
-}
-module.exports = _sed;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/tempdir.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/tempdir.js b/blackberry10/node_modules/shelljs/src/tempdir.js
deleted file mode 100644
index 45953c2..0000000
--- a/blackberry10/node_modules/shelljs/src/tempdir.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var common = require('./common');
-var os = require('os');
-var fs = require('fs');
-
-// Returns false if 'dir' is not a writeable directory, 'dir' otherwise
-function writeableDir(dir) {
-  if (!dir || !fs.existsSync(dir))
-    return false;
-
-  if (!fs.statSync(dir).isDirectory())
-    return false;
-
-  var testFile = dir+'/'+common.randomFileName();
-  try {
-    fs.writeFileSync(testFile, ' ');
-    common.unlinkSync(testFile);
-    return dir;
-  } catch (e) {
-    return false;
-  }
-}
-
-
-//@
-//@ ### tempdir()
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ var tmp = tempdir(); // "/tmp" for most *nix platforms
-//@ ```
-//@
-//@ Searches and returns string containing a writeable, platform-dependent temporary directory.
-//@ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).
-function _tempDir() {
-  var state = common.state;
-  if (state.tempDir)
-    return state.tempDir; // from cache
-
-  state.tempDir = writeableDir(os.tempDir && os.tempDir()) || // node 0.8+
-                  writeableDir(process.env['TMPDIR']) ||
-                  writeableDir(process.env['TEMP']) ||
-                  writeableDir(process.env['TMP']) ||
-                  writeableDir(process.env['Wimp$ScrapDir']) || // RiscOS
-                  writeableDir('C:\\TEMP') || // Windows
-                  writeableDir('C:\\TMP') || // Windows
-                  writeableDir('\\TEMP') || // Windows
-                  writeableDir('\\TMP') || // Windows
-                  writeableDir('/tmp') ||
-                  writeableDir('/var/tmp') ||
-                  writeableDir('/usr/tmp') ||
-                  writeableDir('.'); // last resort
-
-  return state.tempDir;
-}
-module.exports = _tempDir;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/test.js b/blackberry10/node_modules/shelljs/src/test.js
deleted file mode 100644
index 8a4ac7d..0000000
--- a/blackberry10/node_modules/shelljs/src/test.js
+++ /dev/null
@@ -1,85 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-
-//@
-//@ ### test(expression)
-//@ Available expression primaries:
-//@
-//@ + `'-b', 'path'`: true if path is a block device
-//@ + `'-c', 'path'`: true if path is a character device
-//@ + `'-d', 'path'`: true if path is a directory
-//@ + `'-e', 'path'`: true if path exists
-//@ + `'-f', 'path'`: true if path is a regular file
-//@ + `'-L', 'path'`: true if path is a symboilc link
-//@ + `'-p', 'path'`: true if path is a pipe (FIFO)
-//@ + `'-S', 'path'`: true if path is a socket
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ if (test('-d', path)) { /* do something with dir */ };
-//@ if (!test('-f', path)) continue; // skip if it's a regular file
-//@ ```
-//@
-//@ Evaluates expression using the available primaries and returns corresponding value.
-function _test(options, path) {
-  if (!path)
-    common.error('no path given');
-
-  // hack - only works with unary primaries
-  options = common.parseOptions(options, {
-    'b': 'block',
-    'c': 'character',
-    'd': 'directory',
-    'e': 'exists',
-    'f': 'file',
-    'L': 'link',
-    'p': 'pipe',
-    'S': 'socket'
-  });
-
-  var canInterpret = false;
-  for (var key in options)
-    if (options[key] === true) {
-      canInterpret = true;
-      break;
-    }
-
-  if (!canInterpret)
-    common.error('could not interpret expression');
-
-  if (options.link) {
-    try {
-      return fs.lstatSync(path).isSymbolicLink();
-    } catch(e) {
-      return false;
-    }
-  }
-
-  if (!fs.existsSync(path))
-    return false;
-
-  if (options.exists)
-    return true;
-
-  var stats = fs.statSync(path);
-
-  if (options.block)
-    return stats.isBlockDevice();
-
-  if (options.character)
-    return stats.isCharacterDevice();
-
-  if (options.directory)
-    return stats.isDirectory();
-
-  if (options.file)
-    return stats.isFile();
-
-  if (options.pipe)
-    return stats.isFIFO();
-
-  if (options.socket)
-    return stats.isSocket();
-} // test
-module.exports = _test;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/to.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/to.js b/blackberry10/node_modules/shelljs/src/to.js
deleted file mode 100644
index f029999..0000000
--- a/blackberry10/node_modules/shelljs/src/to.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-var path = require('path');
-
-//@
-//@ ### 'string'.to(file)
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ cat('input.txt').to('output.txt');
-//@ ```
-//@
-//@ Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as
-//@ those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_
-function _to(options, file) {
-  if (!file)
-    common.error('wrong arguments');
-
-  if (!fs.existsSync( path.dirname(file) ))
-      common.error('no such file or directory: ' + path.dirname(file));
-
-  try {
-    fs.writeFileSync(file, this.toString(), 'utf8');
-  } catch(e) {
-    common.error('could not write to file (code '+e.code+'): '+file, true);
-  }
-}
-module.exports = _to;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/toEnd.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/toEnd.js b/blackberry10/node_modules/shelljs/src/toEnd.js
deleted file mode 100644
index f6d099d..0000000
--- a/blackberry10/node_modules/shelljs/src/toEnd.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-var path = require('path');
-
-//@
-//@ ### 'string'.toEnd(file)
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ cat('input.txt').toEnd('output.txt');
-//@ ```
-//@
-//@ Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as
-//@ those returned by `cat`, `grep`, etc).
-function _toEnd(options, file) {
-  if (!file)
-    common.error('wrong arguments');
-
-  if (!fs.existsSync( path.dirname(file) ))
-      common.error('no such file or directory: ' + path.dirname(file));
-
-  try {
-    fs.appendFileSync(file, this.toString(), 'utf8');
-  } catch(e) {
-    common.error('could not append to file (code '+e.code+'): '+file, true);
-  }
-}
-module.exports = _toEnd;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/src/which.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/src/which.js b/blackberry10/node_modules/shelljs/src/which.js
deleted file mode 100644
index fadb96c..0000000
--- a/blackberry10/node_modules/shelljs/src/which.js
+++ /dev/null
@@ -1,79 +0,0 @@
-var common = require('./common');
-var fs = require('fs');
-var path = require('path');
-
-// Cross-platform method for splitting environment PATH variables
-function splitPath(p) {
-  for (i=1;i<2;i++) {}
-
-  if (!p)
-    return [];
-
-  if (common.platform === 'win')
-    return p.split(';');
-  else
-    return p.split(':');
-}
-
-//@
-//@ ### which(command)
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ var nodeExec = which('node');
-//@ ```
-//@
-//@ Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.
-//@ Returns string containing the absolute path to the command.
-function _which(options, cmd) {
-  if (!cmd)
-    common.error('must specify command');
-
-  var pathEnv = process.env.path || process.env.Path || process.env.PATH,
-      pathArray = splitPath(pathEnv),
-      where = null;
-
-  // No relative/absolute paths provided?
-  if (cmd.search(/\//) === -1) {
-    // Search for command in PATH
-    pathArray.forEach(function(dir) {
-      if (where)
-        return; // already found it
-
-      var attempt = path.resolve(dir + '/' + cmd);
-      if (fs.existsSync(attempt)) {
-        where = attempt;
-        return;
-      }
-
-      if (common.platform === 'win') {
-        var baseAttempt = attempt;
-        attempt = baseAttempt + '.exe';
-        if (fs.existsSync(attempt)) {
-          where = attempt;
-          return;
-        }
-        attempt = baseAttempt + '.cmd';
-        if (fs.existsSync(attempt)) {
-          where = attempt;
-          return;
-        }
-        attempt = baseAttempt + '.bat';
-        if (fs.existsSync(attempt)) {
-          where = attempt;
-          return;
-        }
-      } // if 'win'
-    });
-  }
-
-  // Command not found anywhere?
-  if (!fs.existsSync(cmd) && !where)
-    return null;
-
-  where = where || path.resolve(cmd);
-
-  return common.ShellString(where);
-}
-module.exports = _which;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/.npmignore b/blackberry10/node_modules/validator/.npmignore
deleted file mode 100644
index e43b0f9..0000000
--- a/blackberry10/node_modules/validator/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-.DS_Store

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/LICENSE b/blackberry10/node_modules/validator/LICENSE
deleted file mode 100755
index c1a825a..0000000
--- a/blackberry10/node_modules/validator/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2010 Chris O'Hara <co...@gmail.com>
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/README.md b/blackberry10/node_modules/validator/README.md
deleted file mode 100755
index 943677c..0000000
--- a/blackberry10/node_modules/validator/README.md
+++ /dev/null
@@ -1,221 +0,0 @@
-**node-validator is a library of string validation, filtering and sanitization methods.**
-
-To install node-validator, use [npm](http://github.com/isaacs/npm):
-
-```bash
-$ npm install validator
-```
-
-To use the library in the browser, include `validator-min.js`
-
-## Example
-
-```javascript
-var check = require('validator').check,
-    sanitize = require('validator').sanitize
-
-//Validate
-check('test@email.com').len(6, 64).isEmail();        //Methods are chainable
-check('abc').isInt();                                //Throws 'Invalid integer'
-check('abc', 'Please enter a number').isInt();       //Throws 'Please enter a number'
-check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);
-
-//Sanitize / Filter
-var int = sanitize('0123').toInt();                  //123
-var bool = sanitize('true').toBoolean();             //true
-var str = sanitize(' \s\t\r hello \n').trim();       //'hello'
-var str = sanitize('aaaaaaaaab').ltrim('a');         //'b'
-var str = sanitize(large_input_str).xss();
-var str = sanitize('&lt;a&gt;').entityDecode();      //'<a>'
-```
-
-## Web development
-
-Often it's more desirable to check or automatically sanitize parameters by name (rather than the actual string). See [this gist](https://gist.github.com/752126) for instructions on binding the library to the `request` prototype.
-
-If you are using the [express.js framework](https://github.com/visionmedia/express) you can use the [express-validator middleware](https://github.com/ctavan/express-validator) to seamlessly integrate node-validator.
-
-Example `http://localhost:8080/?zip=12345&foo=1&textarea=large_string`
-
-```javascript
-get('/', function (req, res) {
-    req.onValidationError(function (msg) {
-        //Redirect the user with error 'msg'
-    });
-
-    //Validate user input
-    req.check('zip', 'Please enter a valid ZIP code').len(4,5).isInt();
-    req.check('email', 'Please enter a valid email').len(6,64).isEmail();
-    req.checkHeader('referer').contains('localhost');
-
-    //Sanitize user input
-    req.sanitize('textarea').xss();
-    req.sanitize('foo').toBoolean();
-
-    //etc.
-});
-```
-
-## List of validation methods
-
-```javascript
-is()                            //Alias for regex()
-not()                           //Alias for notRegex()
-isEmail()
-isUrl()                         //Accepts http, https, ftp
-isIP()
-isAlpha()
-isAlphanumeric()
-isNumeric()
-isInt()                         //isNumeric accepts zero padded numbers, e.g. '001', isInt doesn't
-isLowercase()
-isUppercase()
-isDecimal()
-isFloat()                       //Alias for isDecimal
-notNull()
-isNull()
-notEmpty()                      //i.e. not just whitespace
-equals(equals)
-contains(str)
-notContains(str)
-regex(pattern, modifiers)       //Usage: regex(/[a-z]/i) or regex('[a-z]','i')
-notRegex(pattern, modifiers)
-len(min, max)                   //max is optional
-isUUID(version)                 //Version can be 3 or 4 or empty, see http://en.wikipedia.org/wiki/Universally_unique_identifier
-isDate()                        //Uses Date.parse() - regex is probably a better choice
-isAfter(date)                   //Argument is optional and defaults to today
-isBefore(date)                  //Argument is optional and defaults to today
-isIn(options)                   //Accepts an array or string
-notIn(options)
-max(val)
-min(val)
-isArray()
-isCreditCard()                  //Will work against Visa, MasterCard, American Express, Discover, Diners Club, and JCB card numbering formats
-```
-
-## List of sanitization / filter methods
-
-```javascript
-trim(chars)                     //Trim optional `chars`, default is to trim whitespace (\r\n\t\s)
-ltrim(chars)
-rtrim(chars)
-ifNull(replace)
-toFloat()
-toInt()
-toBoolean()                     //True unless str = '0', 'false', or str.length == 0
-toBooleanStrict()               //False unless str = '1' or 'true'
-entityDecode()                  //Decode HTML entities
-entityEncode()
-xss()                           //Remove common XSS attack vectors from text (default)
-xss(true)                       //Remove common XSS attack vectors from images
-```
-
-## Extending the library
-
-When adding to the Validator prototype, use `this.str` to access the string and `this.error(this.msg || default_msg)` when the string is invalid
-
-```javascript
-var Validator = require('validator').Validator;
-Validator.prototype.contains = function(str) {
-    if (!~this.str.indexOf(str)) {
-        this.error(this.msg || this.str + ' does not contain ' + str);
-    }
-    return this; //Allow method chaining
-}
-```
-
-When adding to the Filter (sanitize) prototype, use `this.str` to access the string and `this.modify(new_str)` to update it
-
-```javascript
-var Filter = require('filter').Filter;
-Filter.prototype.removeNumbers = function() {
-    this.modify(this.str.replace(/[0-9]+/g, ''));
-    return this.str;
-}
-```
-
-## Error handling
-
-By default, the validation methods throw an exception when a check fails
-
-```javascript
-try {
-    check('abc').notNull().isInt()
-} catch (e) {
-    console.log(e.message); //Invalid integer
-}
-```
-
-To set a custom error message, set the second param of `check()`
-
-```javascript
-try {
-    check('abc', 'Please enter a valid integer').notNull().isInt()
-} catch (e) {
-    console.log(e.message); //Please enter a valid integer
-}
-```
-
-To attach a custom error handler, set the `error` method of the validator instance
-
-```javascript
-var Validator = require('validator').Validator;
-var v = new Validator();
-v.error = function(msg) {
-    console.log('Fail');
-}
-v.check('abc').isInt(); //'Fail'
-```
-
-You might want to collect errors instead of throwing each time
-
-```javascript
-Validator.prototype.error = function (msg) {
-    this._errors.push(msg);
-}
-
-Validator.prototype.getErrors = function () {
-    return this._errors;
-}
-
-var validator = new Validator();
-
-validator.check('abc').isEmail();
-validator.check('hello').len(10,30);
-
-var errors = validator.getErrors(); // ['Invalid email', 'String is too small']
-```
-
-## Contributors
-
-- [PING](https://github.com/PlNG) - Fixed entity encoding
-- [Dan VerWeire](https://github.com/wankdanker) - Modified the behaviour of the error handler
-- [ctavan](https://github.com/ctavan) - Added isArray and isUUID()
-- [foxbunny](https://github.com/foxbunny) - Added min(), max(), isAfter(), isBefore(), and improved isDate()
-- [oris](https://github.com/orls) - Added in()
-- [mren](https://github.com/mren) - Decoupled rules
-
-## LICENSE
-
-(MIT License)
-
-Copyright (c) 2010 Chris O'Hara <co...@gmail.com>
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/index.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/index.html b/blackberry10/node_modules/validator/index.html
deleted file mode 100644
index 01eefa4..0000000
--- a/blackberry10/node_modules/validator/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<html>
-<head>
-<script type="text/javascript" src="validator-min.js"></script>
-</head>
-<body>
-<script type="text/javascript">
-try {
-    check('ad>dfds@fsdfsd.com').isEmail();
-} catch (e) {
-    console.log('ok');
-}
-console.log(sanitize('aaa<a>bbb</a>').xss());
-</script>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/index.js b/blackberry10/node_modules/validator/index.js
deleted file mode 100755
index 0f485b9..0000000
--- a/blackberry10/node_modules/validator/index.js
+++ /dev/null
@@ -1 +0,0 @@
-exports = module.exports = require('./lib');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/lib/defaultError.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/lib/defaultError.js b/blackberry10/node_modules/validator/lib/defaultError.js
deleted file mode 100644
index b5a2df1..0000000
--- a/blackberry10/node_modules/validator/lib/defaultError.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var defaultError = module.exports = {
-    isEmail: 'Invalid email',
-    isUrl: 'Invalid URL',
-    isIP: 'Invalid IP',
-    isAlpha: 'Invalid characters',
-    isAlphanumeric: 'Invalid characters',
-    isNumeric: 'Invalid number',
-    isLowercase: 'Invalid characters',
-    isUppercase: 'Invalid characters',
-    isInt: 'Invalid integer',
-    isDecimal: 'Invalid decimal',
-    isDivisibleBy: 'Not divisible',
-    notNull: 'Invalid characters',
-    isNull: 'Invalid characters',
-    notEmpty: 'String is empty',
-    equals: 'Not equal',
-    contains: 'Invalid characters',
-    notContains: 'Invalid characters',
-    regex: 'Invalid characters',
-    notRegex: 'Invalid characters',
-    len: 'String is not in range',
-    isUUID: 'Not a UUID',
-    isDate: 'Not a date',
-    isAfter: 'Invalid date',
-    isBefore: 'Invalid date',
-    isIn: 'Unexpected value or invalid argument',
-    notIn: 'Unexpected value or invalid argument',
-    min: 'Invalid number',
-    max: 'Invalid number',
-    isArray: 'Not an array',
-    isCreditCard: 'Invalid credit card'
-};
-


[13/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/README.md b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/README.md
deleted file mode 100644
index 1bbbc47..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/README.md
+++ /dev/null
@@ -1,1021 +0,0 @@
-# Async.js
-
-Async is a utility module which provides straight-forward, powerful functions
-for working with asynchronous JavaScript. Although originally designed for
-use with [node.js](http://nodejs.org), it can also be used directly in the
-browser.
-
-Async provides around 20 functions that include the usual 'functional'
-suspects (map, reduce, filter, forEach…) as well as some common patterns
-for asynchronous control flow (parallel, series, waterfall…). All these
-functions assume you follow the node.js convention of providing a single
-callback as the last argument of your async function.
-
-
-## Quick Examples
-
-    async.map(['file1','file2','file3'], fs.stat, function(err, results){
-        // results is now an array of stats for each file
-    });
-
-    async.filter(['file1','file2','file3'], path.exists, function(results){
-        // results now equals an array of the existing files
-    });
-
-    async.parallel([
-        function(){ ... },
-        function(){ ... }
-    ], callback);
-
-    async.series([
-        function(){ ... },
-        function(){ ... }
-    ]);
-
-There are many more functions available so take a look at the docs below for a
-full list. This module aims to be comprehensive, so if you feel anything is
-missing please create a GitHub issue for it.
-
-
-## Download
-
-Releases are available for download from
-[GitHub](http://github.com/caolan/async/downloads).
-Alternatively, you can install using Node Package Manager (npm):
-
-    npm install async
-
-
-__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed
-
-__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped
-
-
-## In the Browser
-
-So far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:
-
-    <script type="text/javascript" src="async.js"></script>
-    <script type="text/javascript">
-
-        async.map(data, asyncProcess, function(err, results){
-            alert(results);
-        });
-
-    </script>
-
-
-## Documentation
-
-### Collections
-
-* [forEach](#forEach)
-* [map](#map)
-* [filter](#filter)
-* [reject](#reject)
-* [reduce](#reduce)
-* [detect](#detect)
-* [sortBy](#sortBy)
-* [some](#some)
-* [every](#every)
-* [concat](#concat)
-
-### Control Flow
-
-* [series](#series)
-* [parallel](#parallel)
-* [whilst](#whilst)
-* [until](#until)
-* [waterfall](#waterfall)
-* [queue](#queue)
-* [auto](#auto)
-* [iterator](#iterator)
-* [apply](#apply)
-* [nextTick](#nextTick)
-
-### Utils
-
-* [memoize](#memoize)
-* [unmemoize](#unmemoize)
-* [log](#log)
-* [dir](#dir)
-* [noConflict](#noConflict)
-
-
-## Collections
-
-<a name="forEach" />
-### forEach(arr, iterator, callback)
-
-Applies an iterator function to each item in an array, in parallel.
-The iterator is called with an item from the list and a callback for when it
-has finished. If the iterator passes an error to this callback, the main
-callback for the forEach function is immediately called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed.
-* callback(err) - A callback which is called after all the iterator functions
-  have finished, or an error has occurred.
-
-__Example__
-
-    // assuming openFiles is an array of file names and saveFile is a function
-    // to save the modified contents of that file:
-
-    async.forEach(openFiles, saveFile, function(err){
-        // if any of the saves produced an error, err would equal that error
-    });
-
----------------------------------------
-
-<a name="forEachSeries" />
-### forEachSeries(arr, iterator, callback)
-
-The same as forEach only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. This means the iterator functions will complete in order.
-
-
----------------------------------------
-
-<a name="forEachLimit" />
-### forEachLimit(arr, limit, iterator, callback)
-
-The same as forEach only the iterator is applied to batches of items in the
-array, in series. The next batch of iterators is only called once the current
-one has completed processing.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* limit - How many items should be in each batch.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed.
-* callback(err) - A callback which is called after all the iterator functions
-  have finished, or an error has occurred.
-
-__Example__
-
-    // Assume documents is an array of JSON objects and requestApi is a
-    // function that interacts with a rate-limited REST api.
-
-    async.forEachLimit(documents, 20, requestApi, function(err){
-        // if any of the saves produced an error, err would equal that error
-    });
----------------------------------------
-
-<a name="map" />
-### map(arr, iterator, callback)
-
-Produces a new array of values by mapping each value in the given array through
-the iterator function. The iterator is called with an item from the array and a
-callback for when it has finished processing. The callback takes 2 arguments, 
-an error and the transformed item from the array. If the iterator passes an
-error to this callback, the main callback for the map function is immediately
-called with the error.
-
-Note, that since this function applies the iterator to each item in parallel
-there is no guarantee that the iterator functions will complete in order, however
-the results array will be in the same order as the original array.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed
-  with an error (which can be null) and a transformed item.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array of the
-  transformed items from the original array.
-
-__Example__
-
-    async.map(['file1','file2','file3'], fs.stat, function(err, results){
-        // results is now an array of stats for each file
-    });
-
----------------------------------------
-
-<a name="mapSeries" />
-### mapSeries(arr, iterator, callback)
-
-The same as map only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
-
----------------------------------------
-
-<a name="filter" />
-### filter(arr, iterator, callback)
-
-__Alias:__ select
-
-Returns a new array of all the values which pass an async truth test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like path.exists. This operation is
-performed in parallel, but the results array will be in the same order as the
-original.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed.
-* callback(results) - A callback which is called after all the iterator
-  functions have finished.
-
-__Example__
-
-    async.filter(['file1','file2','file3'], path.exists, function(results){
-        // results now equals an array of the existing files
-    });
-
----------------------------------------
-
-<a name="filterSeries" />
-### filterSeries(arr, iterator, callback)
-
-__alias:__ selectSeries
-
-The same as filter only the iterator is applied to each item in the array in
-series. The next iterator is only called once the current one has completed
-processing. The results array will be in the same order as the original.
-
----------------------------------------
-
-<a name="reject" />
-### reject(arr, iterator, callback)
-
-The opposite of filter. Removes values that pass an async truth test.
-
----------------------------------------
-
-<a name="rejectSeries" />
-### rejectSeries(arr, iterator, callback)
-
-The same as filter, only the iterator is applied to each item in the array
-in series.
-
-
----------------------------------------
-
-<a name="reduce" />
-### reduce(arr, memo, iterator, callback)
-
-__aliases:__ inject, foldl
-
-Reduces a list of values into a single value using an async iterator to return
-each successive step. Memo is the initial state of the reduction. This
-function only operates in series. For performance reasons, it may make sense to
-split a call to this function into a parallel map, then use the normal
-Array.prototype.reduce on the results. This function is for situations where
-each step in the reduction needs to be async, if you can get the data before
-reducing it then its probably a good idea to do so.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* memo - The initial state of the reduction.
-* iterator(memo, item, callback) - A function applied to each item in the
-  array to produce the next step in the reduction. The iterator is passed a
-  callback which accepts an optional error as its first argument, and the state
-  of the reduction as the second. If an error is passed to the callback, the
-  reduction is stopped and the main callback is immediately called with the
-  error.
-* callback(err, result) - A callback which is called after all the iterator
-  functions have finished. Result is the reduced value.
-
-__Example__
-
-    async.reduce([1,2,3], 0, function(memo, item, callback){
-        // pointless async:
-        process.nextTick(function(){
-            callback(null, memo + item)
-        });
-    }, function(err, result){
-        // result is now equal to the last value of memo, which is 6
-    });
-
----------------------------------------
-
-<a name="reduceRight" />
-### reduceRight(arr, memo, iterator, callback)
-
-__Alias:__ foldr
-
-Same as reduce, only operates on the items in the array in reverse order.
-
-
----------------------------------------
-
-<a name="detect" />
-### detect(arr, iterator, callback)
-
-Returns the first value in a list that passes an async truth test. The
-iterator is applied in parallel, meaning the first iterator to return true will
-fire the detect callback with that result. That means the result might not be
-the first item in the original array (in terms of order) that passes the test.
-
-If order within the original array is important then look at detectSeries.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
-  true, or after all the iterator functions have finished. Result will be
-  the first item in the array that passes the truth test (iterator) or the
-  value undefined if none passed.
-
-__Example__
-
-    async.detect(['file1','file2','file3'], path.exists, function(result){
-        // result now equals the first file in the list that exists
-    });
-
----------------------------------------
-
-<a name="detectSeries" />
-### detectSeries(arr, iterator, callback)
-
-The same as detect, only the iterator is applied to each item in the array
-in series. This means the result is always the first in the original array (in
-terms of array order) that passes the truth test.
-
-
----------------------------------------
-
-<a name="sortBy" />
-### sortBy(arr, iterator, callback)
-
-Sorts a list by the results of running each value through an async iterator.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed
-  with an error (which can be null) and a value to use as the sort criteria.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is the items from
-  the original array sorted by the values returned by the iterator calls.
-
-__Example__
-
-    async.sortBy(['file1','file2','file3'], function(file, callback){
-        fs.stat(file, function(err, stats){
-            callback(err, stats.mtime);
-        });
-    }, function(err, results){
-        // results is now the original array of files sorted by
-        // modified date
-    });
-
-
----------------------------------------
-
-<a name="some" />
-### some(arr, iterator, callback)
-
-__Alias:__ any
-
-Returns true if at least one element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like path.exists. Once any iterator
-call returns true, the main callback is immediately called.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed.
-* callback(result) - A callback which is called as soon as any iterator returns
-  true, or after all the iterator functions have finished. Result will be
-  either true or false depending on the values of the async tests.
-
-__Example__
-
-    async.some(['file1','file2','file3'], path.exists, function(result){
-        // if result is true then at least one of the files exists
-    });
-
----------------------------------------
-
-<a name="every" />
-### every(arr, iterator, callback)
-
-__Alias:__ all
-
-Returns true if every element in the array satisfies an async test.
-_The callback for each iterator call only accepts a single argument of true or
-false, it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like path.exists.
-
-__Arguments__
-
-* arr - An array to iterate over.
-* iterator(item, callback) - A truth test to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed.
-* callback(result) - A callback which is called after all the iterator
-  functions have finished. Result will be either true or false depending on
-  the values of the async tests.
-
-__Example__
-
-    async.every(['file1','file2','file3'], path.exists, function(result){
-        // if result is true then every file exists
-    });
-
----------------------------------------
-
-<a name="concat" />
-### concat(arr, iterator, callback)
-
-Applies an iterator to each item in a list, concatenating the results. Returns the
-concatenated list. The iterators are called in parallel, and the results are
-concatenated as they return. There is no guarantee that the results array will
-be returned in the original order of the arguments passed to the iterator function.
-
-__Arguments__
-
-* arr - An array to iterate over
-* iterator(item, callback) - A function to apply to each item in the array.
-  The iterator is passed a callback which must be called once it has completed
-  with an error (which can be null) and an array of results.
-* callback(err, results) - A callback which is called after all the iterator
-  functions have finished, or an error has occurred. Results is an array containing
-  the concatenated results of the iterator function.
-
-__Example__
-
-    async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
-        // files is now a list of filenames that exist in the 3 directories
-    });
-
----------------------------------------
-
-<a name="concatSeries" />
-### concatSeries(arr, iterator, callback)
-
-Same as async.concat, but executes in series instead of parallel.
-
-
-## Control Flow
-
-<a name="series" />
-### series(tasks, [callback])
-
-Run an array of functions in series, each one running once the previous
-function has completed. If any functions in the series pass an error to its
-callback, no more functions are run and the callback for the series is
-immediately called with the value of the error. Once the tasks have completed,
-the results are passed to the final callback as an array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.series.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed
-  a callback it must call on completion.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets an array of all the arguments passed to
-  the callbacks used in the array.
-
-__Example__
-
-    async.series([
-        function(callback){
-            // do some stuff ...
-            callback(null, 'one');
-        },
-        function(callback){
-            // do some more stuff ...
-            callback(null, 'two');
-        },
-    ],
-    // optional callback
-    function(err, results){
-        // results is now equal to ['one', 'two']
-    });
-
-
-    // an example using an object instead of an array
-    async.series({
-        one: function(callback){
-            setTimeout(function(){
-                callback(null, 1);
-            }, 200);
-        },
-        two: function(callback){
-            setTimeout(function(){
-                callback(null, 2);
-            }, 100);
-        },
-    },
-    function(err, results) {
-        // results is now equal to: {one: 1, two: 2}
-    });
-
-
----------------------------------------
-
-<a name="parallel" />
-### parallel(tasks, [callback])
-
-Run an array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its
-callback, the main callback is immediately called with the value of the error.
-Once the tasks have completed, the results are passed to the final callback as an
-array.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final callback as an object
-instead of an array. This can be a more readable way of handling results from
-async.parallel.
-
-
-__Arguments__
-
-* tasks - An array or object containing functions to run, each function is passed a
-  callback it must call on completion.
-* callback(err, results) - An optional callback to run once all the functions
-  have completed. This function gets an array of all the arguments passed to
-  the callbacks used in the array.
-
-__Example__
-
-    async.parallel([
-        function(callback){
-            setTimeout(function(){
-                callback(null, 'one');
-            }, 200);
-        },
-        function(callback){
-            setTimeout(function(){
-                callback(null, 'two');
-            }, 100);
-        },
-    ],
-    // optional callback
-    function(err, results){
-        // the results array will equal ['one','two'] even though
-        // the second function had a shorter timeout.
-    });
-
-
-    // an example using an object instead of an array
-    async.parallel({
-        one: function(callback){
-            setTimeout(function(){
-                callback(null, 1);
-            }, 200);
-        },
-        two: function(callback){
-            setTimeout(function(){
-                callback(null, 2);
-            }, 100);
-        },
-    },
-    function(err, results) {
-        // results is now equals to: {one: 1, two: 2}
-    });
-
-
----------------------------------------
-
-<a name="whilst" />
-### whilst(test, fn, callback)
-
-Repeatedly call fn, while test returns true. Calls the callback when stopped,
-or an error occurs.
-
-__Arguments__
-
-* test() - synchronous truth test to perform before each execution of fn.
-* fn(callback) - A function to call each time the test passes. The function is
-  passed a callback which must be called once it has completed with an optional
-  error as the first argument.
-* callback(err) - A callback which is called after the test fails and repeated
-  execution of fn has stopped.
-
-__Example__
-
-    var count = 0;
-
-    async.whilst(
-        function () { return count < 5; },
-        function (callback) {
-            count++;
-            setTimeout(callback, 1000);
-        },
-        function (err) {
-            // 5 seconds have passed
-        }
-    );
-
-
----------------------------------------
-
-<a name="until" />
-### until(test, fn, callback)
-
-Repeatedly call fn, until test returns true. Calls the callback when stopped,
-or an error occurs.
-
-The inverse of async.whilst.
-
-
----------------------------------------
-
-<a name="waterfall" />
-### waterfall(tasks, [callback])
-
-Runs an array of functions in series, each passing their results to the next in
-the array. However, if any of the functions pass an error to the callback, the
-next function is not executed and the main callback is immediately called with
-the error.
-
-__Arguments__
-
-* tasks - An array of functions to run, each function is passed a callback it
-  must call on completion.
-* callback(err, [results]) - An optional callback to run once all the functions
-  have completed. This will be passed the results of the last task's callback.
-
-
-
-__Example__
-
-    async.waterfall([
-        function(callback){
-            callback(null, 'one', 'two');
-        },
-        function(arg1, arg2, callback){
-            callback(null, 'three');
-        },
-        function(arg1, callback){
-            // arg1 now equals 'three'
-            callback(null, 'done');
-        }
-    ], function (err, result) {
-       // result now equals 'done'    
-    });
-
-
----------------------------------------
-
-<a name="queue" />
-### queue(worker, concurrency)
-
-Creates a queue object with the specified concurrency. Tasks added to the
-queue will be processed in parallel (up to the concurrency limit). If all
-workers are in progress, the task is queued until one is available. Once
-a worker has completed a task, the task's callback is called.
-
-__Arguments__
-
-* worker(task, callback) - An asynchronous function for processing a queued
-  task.
-* concurrency - An integer for determining how many worker functions should be
-  run in parallel.
-
-__Queue objects__
-
-The queue object returned by this function has the following properties and
-methods:
-
-* length() - a function returning the number of items waiting to be processed.
-* concurrency - an integer for determining how many worker functions should be
-  run in parallel. This property can be changed after a queue is created to
-  alter the concurrency on-the-fly.
-* push(task, [callback]) - add a new task to the queue, the callback is called
-  once the worker has finished processing the task.
-  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.
-* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued
-* empty - a callback that is called when the last item from the queue is given to a worker
-* drain - a callback that is called when the last item from the queue has returned from the worker
-
-__Example__
-
-    // create a queue object with concurrency 2
-
-    var q = async.queue(function (task, callback) {
-        console.log('hello ' + task.name);
-        callback();
-    }, 2);
-
-
-    // assign a callback
-    q.drain = function() {
-        console.log('all items have been processed');
-    }
-
-    // add some items to the queue
-
-    q.push({name: 'foo'}, function (err) {
-        console.log('finished processing foo');
-    });
-    q.push({name: 'bar'}, function (err) {
-        console.log('finished processing bar');
-    });
-
-    // add some items to the queue (batch-wise)
-
-    q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
-        console.log('finished processing bar');
-    });
-
-
----------------------------------------
-
-<a name="auto" />
-### auto(tasks, [callback])
-
-Determines the best order for running functions based on their requirements.
-Each function can optionally depend on other functions being completed first,
-and each function is run as soon as its requirements are satisfied. If any of
-the functions pass an error to their callback, that function will not complete
-(so any other functions depending on it will not run) and the main callback
-will be called immediately with the error. Functions also receive an object
-containing the results of functions which have completed so far.
-
-__Arguments__
-
-* tasks - An object literal containing named functions or an array of
-  requirements, with the function itself the last item in the array. The key
-  used for each function or array is used when specifying requirements. The
-  syntax is easier to understand by looking at the example.
-* callback(err, results) - An optional callback which is called when all the
-  tasks have been completed. The callback will receive an error as an argument
-  if any tasks pass an error to their callback. If all tasks complete
-  successfully, it will receive an object containing their results.
-
-__Example__
-
-    async.auto({
-        get_data: function(callback){
-            // async code to get some data
-        },
-        make_folder: function(callback){
-            // async code to create a directory to store a file in
-            // this is run at the same time as getting the data
-        },
-        write_file: ['get_data', 'make_folder', function(callback){
-            // once there is some data and the directory exists,
-            // write the data to a file in the directory
-            callback(null, filename);
-        }],
-        email_link: ['write_file', function(callback, results){
-            // once the file is written let's email a link to it...
-            // results.write_file contains the filename returned by write_file.
-        }]
-    });
-
-This is a fairly trivial example, but to do this using the basic parallel and
-series functions would look like this:
-
-    async.parallel([
-        function(callback){
-            // async code to get some data
-        },
-        function(callback){
-            // async code to create a directory to store a file in
-            // this is run at the same time as getting the data
-        }
-    ],
-    function(results){
-        async.series([
-            function(callback){
-                // once there is some data and the directory exists,
-                // write the data to a file in the directory
-            },
-            email_link: function(callback){
-                // once the file is written let's email a link to it...
-            }
-        ]);
-    });
-
-For a complicated series of async tasks using the auto function makes adding
-new tasks much easier and makes the code more readable.
-
-
----------------------------------------
-
-<a name="iterator" />
-### iterator(tasks)
-
-Creates an iterator function which calls the next function in the array,
-returning a continuation to call the next one after that. Its also possible to
-'peek' the next iterator by doing iterator.next().
-
-This function is used internally by the async module but can be useful when
-you want to manually control the flow of functions in series.
-
-__Arguments__
-
-* tasks - An array of functions to run, each function is passed a callback it
-  must call on completion.
-
-__Example__
-
-    var iterator = async.iterator([
-        function(){ sys.p('one'); },
-        function(){ sys.p('two'); },
-        function(){ sys.p('three'); }
-    ]);
-
-    node> var iterator2 = iterator();
-    'one'
-    node> var iterator3 = iterator2();
-    'two'
-    node> iterator3();
-    'three'
-    node> var nextfn = iterator2.next();
-    node> nextfn();
-    'three'
-
-
----------------------------------------
-
-<a name="apply" />
-### apply(function, arguments..)
-
-Creates a continuation function with some arguments already applied, a useful
-shorthand when combined with other control flow functions. Any arguments
-passed to the returned function are added to the arguments originally passed
-to apply.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to automatically apply when the
-  continuation is called.
-
-__Example__
-
-    // using apply
-
-    async.parallel([
-        async.apply(fs.writeFile, 'testfile1', 'test1'),
-        async.apply(fs.writeFile, 'testfile2', 'test2'),
-    ]);
-
-
-    // the same process without using apply
-
-    async.parallel([
-        function(callback){
-            fs.writeFile('testfile1', 'test1', callback);
-        },
-        function(callback){
-            fs.writeFile('testfile2', 'test2', callback);
-        },
-    ]);
-
-It's possible to pass any number of additional arguments when calling the
-continuation:
-
-    node> var fn = async.apply(sys.puts, 'one');
-    node> fn('two', 'three');
-    one
-    two
-    three
-
----------------------------------------
-
-<a name="nextTick" />
-### nextTick(callback)
-
-Calls the callback on a later loop around the event loop. In node.js this just
-calls process.nextTick, in the browser it falls back to setTimeout(callback, 0),
-which means other higher priority events may precede the execution of the callback.
-
-This is used internally for browser-compatibility purposes.
-
-__Arguments__
-
-* callback - The function to call on a later loop around the event loop.
-
-__Example__
-
-    var call_order = [];
-    async.nextTick(function(){
-        call_order.push('two');
-        // call_order now equals ['one','two]
-    });
-    call_order.push('one')
-
-
-## Utils
-
-<a name="memoize" />
-### memoize(fn, [hasher])
-
-Caches the results of an async function. When creating a hash to store function
-results against, the callback is omitted from the hash and an optional hash
-function can be used.
-
-__Arguments__
-
-* fn - the function you to proxy and cache results from.
-* hasher - an optional function for generating a custom hash for storing
-  results, it has all the arguments applied to it apart from the callback, and
-  must be synchronous.
-
-__Example__
-
-    var slow_fn = function (name, callback) {
-        // do something
-        callback(null, result);
-    };
-    var fn = async.memoize(slow_fn);
-
-    // fn can now be used as if it were slow_fn
-    fn('some name', function () {
-        // callback
-    });
-
-<a name="unmemoize" />
-### unmemoize(fn)
-
-Undoes a memoized function, reverting it to the original, unmemoized
-form. Comes handy in tests.
-
-__Arguments__
-
-* fn - the memoized function
-
-<a name="log" />
-### log(function, arguments)
-
-Logs the result of an async function to the console. Only works in node.js or
-in browsers that support console.log and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.log is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-    var hello = function(name, callback){
-        setTimeout(function(){
-            callback(null, 'hello ' + name);
-        }, 1000);
-    };
-
-    node> async.log(hello, 'world');
-    'hello world'
-
-
----------------------------------------
-
-<a name="dir" />
-### dir(function, arguments)
-
-Logs the result of an async function to the console using console.dir to
-display the properties of the resulting object. Only works in node.js or
-in browsers that support console.dir and console.error (such as FF and Chrome).
-If multiple arguments are returned from the async function, console.dir is
-called on each argument in order.
-
-__Arguments__
-
-* function - The function you want to eventually apply all arguments to.
-* arguments... - Any number of arguments to apply to the function.
-
-__Example__
-
-    var hello = function(name, callback){
-        setTimeout(function(){
-            callback(null, {hello: name});
-        }, 1000);
-    };
-
-    node> async.dir(hello, 'world');
-    {hello: 'world'}
-
-
----------------------------------------
-
-<a name="noConflict" />
-### noConflict()
-
-Changes the value of async back to its original value, returning a reference to the
-async object.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/index.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/index.js
deleted file mode 100644
index 8e23845..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is just added for convenience so this repository can be
-// directly checked out into a project's deps folder
-module.exports = require('./lib/async');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/lib/async.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/lib/async.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/lib/async.js
deleted file mode 100644
index 7cc4f5e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/lib/async.js
+++ /dev/null
@@ -1,692 +0,0 @@
-/*global setTimeout: false, console: false */
-(function () {
-
-    var async = {};
-
-    // global on the server, window in the browser
-    var root = this,
-        previous_async = root.async;
-
-    if (typeof module !== 'undefined' && module.exports) {
-        module.exports = async;
-    }
-    else {
-        root.async = async;
-    }
-
-    async.noConflict = function () {
-        root.async = previous_async;
-        return async;
-    };
-
-    //// cross-browser compatiblity functions ////
-
-    var _forEach = function (arr, iterator) {
-        if (arr.forEach) {
-            return arr.forEach(iterator);
-        }
-        for (var i = 0; i < arr.length; i += 1) {
-            iterator(arr[i], i, arr);
-        }
-    };
-
-    var _map = function (arr, iterator) {
-        if (arr.map) {
-            return arr.map(iterator);
-        }
-        var results = [];
-        _forEach(arr, function (x, i, a) {
-            results.push(iterator(x, i, a));
-        });
-        return results;
-    };
-
-    var _reduce = function (arr, iterator, memo) {
-        if (arr.reduce) {
-            return arr.reduce(iterator, memo);
-        }
-        _forEach(arr, function (x, i, a) {
-            memo = iterator(memo, x, i, a);
-        });
-        return memo;
-    };
-
-    var _keys = function (obj) {
-        if (Object.keys) {
-            return Object.keys(obj);
-        }
-        var keys = [];
-        for (var k in obj) {
-            if (obj.hasOwnProperty(k)) {
-                keys.push(k);
-            }
-        }
-        return keys;
-    };
-
-    //// exported async module functions ////
-
-    //// nextTick implementation with browser-compatible fallback ////
-    if (typeof process === 'undefined' || !(process.nextTick)) {
-        async.nextTick = function (fn) {
-            setTimeout(fn, 0);
-        };
-    }
-    else {
-        async.nextTick = process.nextTick;
-    }
-
-    async.forEach = function (arr, iterator, callback) {
-        callback = callback || function () {};
-        if (!arr.length) {
-            return callback();
-        }
-        var completed = 0;
-        _forEach(arr, function (x) {
-            iterator(x, function (err) {
-                if (err) {
-                    callback(err);
-                    callback = function () {};
-                }
-                else {
-                    completed += 1;
-                    if (completed === arr.length) {
-                        callback(null);
-                    }
-                }
-            });
-        });
-    };
-
-    async.forEachSeries = function (arr, iterator, callback) {
-        callback = callback || function () {};
-        if (!arr.length) {
-            return callback();
-        }
-        var completed = 0;
-        var iterate = function () {
-            iterator(arr[completed], function (err) {
-                if (err) {
-                    callback(err);
-                    callback = function () {};
-                }
-                else {
-                    completed += 1;
-                    if (completed === arr.length) {
-                        callback(null);
-                    }
-                    else {
-                        iterate();
-                    }
-                }
-            });
-        };
-        iterate();
-    };
-
-    async.forEachLimit = function (arr, limit, iterator, callback) {
-        callback = callback || function () {};
-        if (!arr.length || limit <= 0) {
-            return callback();
-        }
-        var completed = 0;
-        var started = 0;
-        var running = 0;
-
-        (function replenish () {
-            if (completed === arr.length) {
-                return callback();
-            }
-
-            while (running < limit && started < arr.length) {
-                started += 1;
-                running += 1;
-                iterator(arr[started - 1], function (err) {
-                    if (err) {
-                        callback(err);
-                        callback = function () {};
-                    }
-                    else {
-                        completed += 1;
-                        running -= 1;
-                        if (completed === arr.length) {
-                            callback();
-                        }
-                        else {
-                            replenish();
-                        }
-                    }
-                });
-            }
-        })();
-    };
-
-
-    var doParallel = function (fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [async.forEach].concat(args));
-        };
-    };
-    var doSeries = function (fn) {
-        return function () {
-            var args = Array.prototype.slice.call(arguments);
-            return fn.apply(null, [async.forEachSeries].concat(args));
-        };
-    };
-
-
-    var _asyncMap = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (err, v) {
-                results[x.index] = v;
-                callback(err);
-            });
-        }, function (err) {
-            callback(err, results);
-        });
-    };
-    async.map = doParallel(_asyncMap);
-    async.mapSeries = doSeries(_asyncMap);
-
-
-    // reduce only has a series version, as doing reduce in parallel won't
-    // work in many situations.
-    async.reduce = function (arr, memo, iterator, callback) {
-        async.forEachSeries(arr, function (x, callback) {
-            iterator(memo, x, function (err, v) {
-                memo = v;
-                callback(err);
-            });
-        }, function (err) {
-            callback(err, memo);
-        });
-    };
-    // inject alias
-    async.inject = async.reduce;
-    // foldl alias
-    async.foldl = async.reduce;
-
-    async.reduceRight = function (arr, memo, iterator, callback) {
-        var reversed = _map(arr, function (x) {
-            return x;
-        }).reverse();
-        async.reduce(reversed, memo, iterator, callback);
-    };
-    // foldr alias
-    async.foldr = async.reduceRight;
-
-    var _filter = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (v) {
-                if (v) {
-                    results.push(x);
-                }
-                callback();
-            });
-        }, function (err) {
-            callback(_map(results.sort(function (a, b) {
-                return a.index - b.index;
-            }), function (x) {
-                return x.value;
-            }));
-        });
-    };
-    async.filter = doParallel(_filter);
-    async.filterSeries = doSeries(_filter);
-    // select alias
-    async.select = async.filter;
-    async.selectSeries = async.filterSeries;
-
-    var _reject = function (eachfn, arr, iterator, callback) {
-        var results = [];
-        arr = _map(arr, function (x, i) {
-            return {index: i, value: x};
-        });
-        eachfn(arr, function (x, callback) {
-            iterator(x.value, function (v) {
-                if (!v) {
-                    results.push(x);
-                }
-                callback();
-            });
-        }, function (err) {
-            callback(_map(results.sort(function (a, b) {
-                return a.index - b.index;
-            }), function (x) {
-                return x.value;
-            }));
-        });
-    };
-    async.reject = doParallel(_reject);
-    async.rejectSeries = doSeries(_reject);
-
-    var _detect = function (eachfn, arr, iterator, main_callback) {
-        eachfn(arr, function (x, callback) {
-            iterator(x, function (result) {
-                if (result) {
-                    main_callback(x);
-                    main_callback = function () {};
-                }
-                else {
-                    callback();
-                }
-            });
-        }, function (err) {
-            main_callback();
-        });
-    };
-    async.detect = doParallel(_detect);
-    async.detectSeries = doSeries(_detect);
-
-    async.some = function (arr, iterator, main_callback) {
-        async.forEach(arr, function (x, callback) {
-            iterator(x, function (v) {
-                if (v) {
-                    main_callback(true);
-                    main_callback = function () {};
-                }
-                callback();
-            });
-        }, function (err) {
-            main_callback(false);
-        });
-    };
-    // any alias
-    async.any = async.some;
-
-    async.every = function (arr, iterator, main_callback) {
-        async.forEach(arr, function (x, callback) {
-            iterator(x, function (v) {
-                if (!v) {
-                    main_callback(false);
-                    main_callback = function () {};
-                }
-                callback();
-            });
-        }, function (err) {
-            main_callback(true);
-        });
-    };
-    // all alias
-    async.all = async.every;
-
-    async.sortBy = function (arr, iterator, callback) {
-        async.map(arr, function (x, callback) {
-            iterator(x, function (err, criteria) {
-                if (err) {
-                    callback(err);
-                }
-                else {
-                    callback(null, {value: x, criteria: criteria});
-                }
-            });
-        }, function (err, results) {
-            if (err) {
-                return callback(err);
-            }
-            else {
-                var fn = function (left, right) {
-                    var a = left.criteria, b = right.criteria;
-                    return a < b ? -1 : a > b ? 1 : 0;
-                };
-                callback(null, _map(results.sort(fn), function (x) {
-                    return x.value;
-                }));
-            }
-        });
-    };
-
-    async.auto = function (tasks, callback) {
-        callback = callback || function () {};
-        var keys = _keys(tasks);
-        if (!keys.length) {
-            return callback(null);
-        }
-
-        var results = {};
-
-        var listeners = [];
-        var addListener = function (fn) {
-            listeners.unshift(fn);
-        };
-        var removeListener = function (fn) {
-            for (var i = 0; i < listeners.length; i += 1) {
-                if (listeners[i] === fn) {
-                    listeners.splice(i, 1);
-                    return;
-                }
-            }
-        };
-        var taskComplete = function () {
-            _forEach(listeners.slice(0), function (fn) {
-                fn();
-            });
-        };
-
-        addListener(function () {
-            if (_keys(results).length === keys.length) {
-                callback(null, results);
-                callback = function () {};
-            }
-        });
-
-        _forEach(keys, function (k) {
-            var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k];
-            var taskCallback = function (err) {
-                if (err) {
-                    callback(err);
-                    // stop subsequent errors hitting callback multiple times
-                    callback = function () {};
-                }
-                else {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    if (args.length <= 1) {
-                        args = args[0];
-                    }
-                    results[k] = args;
-                    taskComplete();
-                }
-            };
-            var requires = task.slice(0, Math.abs(task.length - 1)) || [];
-            var ready = function () {
-                return _reduce(requires, function (a, x) {
-                    return (a && results.hasOwnProperty(x));
-                }, true) && !results.hasOwnProperty(k);
-            };
-            if (ready()) {
-                task[task.length - 1](taskCallback, results);
-            }
-            else {
-                var listener = function () {
-                    if (ready()) {
-                        removeListener(listener);
-                        task[task.length - 1](taskCallback, results);
-                    }
-                };
-                addListener(listener);
-            }
-        });
-    };
-
-    async.waterfall = function (tasks, callback) {
-        callback = callback || function () {};
-        if (!tasks.length) {
-            return callback();
-        }
-        var wrapIterator = function (iterator) {
-            return function (err) {
-                if (err) {
-                    callback(err);
-                    callback = function () {};
-                }
-                else {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    var next = iterator.next();
-                    if (next) {
-                        args.push(wrapIterator(next));
-                    }
-                    else {
-                        args.push(callback);
-                    }
-                    async.nextTick(function () {
-                        iterator.apply(null, args);
-                    });
-                }
-            };
-        };
-        wrapIterator(async.iterator(tasks))();
-    };
-
-    async.parallel = function (tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor === Array) {
-            async.map(tasks, function (fn, callback) {
-                if (fn) {
-                    fn(function (err) {
-                        var args = Array.prototype.slice.call(arguments, 1);
-                        if (args.length <= 1) {
-                            args = args[0];
-                        }
-                        callback.call(null, err, args);
-                    });
-                }
-            }, callback);
-        }
-        else {
-            var results = {};
-            async.forEach(_keys(tasks), function (k, callback) {
-                tasks[k](function (err) {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    if (args.length <= 1) {
-                        args = args[0];
-                    }
-                    results[k] = args;
-                    callback(err);
-                });
-            }, function (err) {
-                callback(err, results);
-            });
-        }
-    };
-
-    async.series = function (tasks, callback) {
-        callback = callback || function () {};
-        if (tasks.constructor === Array) {
-            async.mapSeries(tasks, function (fn, callback) {
-                if (fn) {
-                    fn(function (err) {
-                        var args = Array.prototype.slice.call(arguments, 1);
-                        if (args.length <= 1) {
-                            args = args[0];
-                        }
-                        callback.call(null, err, args);
-                    });
-                }
-            }, callback);
-        }
-        else {
-            var results = {};
-            async.forEachSeries(_keys(tasks), function (k, callback) {
-                tasks[k](function (err) {
-                    var args = Array.prototype.slice.call(arguments, 1);
-                    if (args.length <= 1) {
-                        args = args[0];
-                    }
-                    results[k] = args;
-                    callback(err);
-                });
-            }, function (err) {
-                callback(err, results);
-            });
-        }
-    };
-
-    async.iterator = function (tasks) {
-        var makeCallback = function (index) {
-            var fn = function () {
-                if (tasks.length) {
-                    tasks[index].apply(null, arguments);
-                }
-                return fn.next();
-            };
-            fn.next = function () {
-                return (index < tasks.length - 1) ? makeCallback(index + 1): null;
-            };
-            return fn;
-        };
-        return makeCallback(0);
-    };
-
-    async.apply = function (fn) {
-        var args = Array.prototype.slice.call(arguments, 1);
-        return function () {
-            return fn.apply(
-                null, args.concat(Array.prototype.slice.call(arguments))
-            );
-        };
-    };
-
-    var _concat = function (eachfn, arr, fn, callback) {
-        var r = [];
-        eachfn(arr, function (x, cb) {
-            fn(x, function (err, y) {
-                r = r.concat(y || []);
-                cb(err);
-            });
-        }, function (err) {
-            callback(err, r);
-        });
-    };
-    async.concat = doParallel(_concat);
-    async.concatSeries = doSeries(_concat);
-
-    async.whilst = function (test, iterator, callback) {
-        if (test()) {
-            iterator(function (err) {
-                if (err) {
-                    return callback(err);
-                }
-                async.whilst(test, iterator, callback);
-            });
-        }
-        else {
-            callback();
-        }
-    };
-
-    async.until = function (test, iterator, callback) {
-        if (!test()) {
-            iterator(function (err) {
-                if (err) {
-                    return callback(err);
-                }
-                async.until(test, iterator, callback);
-            });
-        }
-        else {
-            callback();
-        }
-    };
-
-    async.queue = function (worker, concurrency) {
-        var workers = 0;
-        var q = {
-            tasks: [],
-            concurrency: concurrency,
-            saturated: null,
-            empty: null,
-            drain: null,
-            push: function (data, callback) {
-                if(data.constructor !== Array) {
-                    data = [data];
-                }
-                _forEach(data, function(task) {
-                    q.tasks.push({
-                        data: task,
-                        callback: typeof callback === 'function' ? callback : null
-                    });
-                    if (q.saturated && q.tasks.length == concurrency) {
-                        q.saturated();
-                    }
-                    async.nextTick(q.process);
-                });
-            },
-            process: function () {
-                if (workers < q.concurrency && q.tasks.length) {
-                    var task = q.tasks.shift();
-                    if(q.empty && q.tasks.length == 0) q.empty();
-                    workers += 1;
-                    worker(task.data, function () {
-                        workers -= 1;
-                        if (task.callback) {
-                            task.callback.apply(task, arguments);
-                        }
-                        if(q.drain && q.tasks.length + workers == 0) q.drain();
-                        q.process();
-                    });
-                }
-            },
-            length: function () {
-                return q.tasks.length;
-            },
-            running: function () {
-                return workers;
-            }
-        };
-        return q;
-    };
-
-    var _console_fn = function (name) {
-        return function (fn) {
-            var args = Array.prototype.slice.call(arguments, 1);
-            fn.apply(null, args.concat([function (err) {
-                var args = Array.prototype.slice.call(arguments, 1);
-                if (typeof console !== 'undefined') {
-                    if (err) {
-                        if (console.error) {
-                            console.error(err);
-                        }
-                    }
-                    else if (console[name]) {
-                        _forEach(args, function (x) {
-                            console[name](x);
-                        });
-                    }
-                }
-            }]));
-        };
-    };
-    async.log = _console_fn('log');
-    async.dir = _console_fn('dir');
-    /*async.info = _console_fn('info');
-    async.warn = _console_fn('warn');
-    async.error = _console_fn('error');*/
-
-    async.memoize = function (fn, hasher) {
-        var memo = {};
-        var queues = {};
-        hasher = hasher || function (x) {
-            return x;
-        };
-        var memoized = function () {
-            var args = Array.prototype.slice.call(arguments);
-            var callback = args.pop();
-            var key = hasher.apply(null, args);
-            if (key in memo) {
-                callback.apply(null, memo[key]);
-            }
-            else if (key in queues) {
-                queues[key].push(callback);
-            }
-            else {
-                queues[key] = [callback];
-                fn.apply(null, args.concat([function () {
-                    memo[key] = arguments;
-                    var q = queues[key];
-                    delete queues[key];
-                    for (var i = 0, l = q.length; i < l; i++) {
-                      q[i].apply(null, arguments);
-                    }
-                }]));
-            }
-        };
-        memoized.unmemoized = fn;
-        return memoized;
-    };
-
-    async.unmemoize = function (fn) {
-      return function () {
-        return (fn.unmemoized || fn).apply(null, arguments);
-      };
-    };
-
-}());


[17/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/lib/format.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/lib/format.js b/blackberry10/node_modules/prompt/node_modules/utile/lib/format.js
deleted file mode 100644
index 3262dd5..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/lib/format.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * format.js: `util.format` enhancement to allow custom formatting parameters.
- *
- * (C) 2012, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var util = require('util');
-
-exports = module.exports = function(str) {
-  var formats = [].slice.call(arguments, 1, 3);
-
-  if (!(formats[0] instanceof Array && formats[1] instanceof Array) || arguments.length > 3)
-    return util.format.apply(null, arguments);
-
-  var replacements = formats.pop(),
-      formats = formats.shift();
-
-  formats.forEach(function(format, id) {
-    str = str.replace(new RegExp(format), replacements[id]);
-  });
-
-  return str;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/lib/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/lib/index.js b/blackberry10/node_modules/prompt/node_modules/utile/lib/index.js
deleted file mode 100644
index ac9f925..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/lib/index.js
+++ /dev/null
@@ -1,467 +0,0 @@
-/*
- * index.js: Top-level include for the `utile` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var fs = require('fs'),
-    path = require('path'),
-    util = require('util');
-
-var utile = module.exports;
-
-//
-// Extend the `utile` object with all methods from the
-// core node `util` methods.
-//
-Object.keys(util).forEach(function (key) {
-  utile[key] = util[key];
-});
-
-Object.defineProperties(utile, {
-
-  //
-  // ### function async
-  // Simple wrapper to `require('async')`.
-  //
-  'async': {
-    get: function() {
-      return utile.async = require('async');
-    }
-  },
-
-  //
-  // ### function inflect
-  // Simple wrapper to `require('i')`.
-  //
-  'inflect': {
-    get: function() {
-      return utile.inflect = require('i')();
-    }
-  },
-
-  //
-  // ### function mkdirp
-  // Simple wrapper to `require('mkdirp')`
-  //
-  'mkdirp': {
-    get: function() {
-      return utile.mkdirp = require('mkdirp');
-    }
-  },
-
-  //
-  // ### function deepEqual
-  // Simple wrapper to `require('deep-equal')`
-  // Remark: deepEqual is 4x faster then using assert.deepEqual
-  //         see: https://gist.github.com/2790507
-  //
-  'deepEqual': {
-    get: function() {
-      return utile.deepEqual = require('deep-equal');
-    }
-  },
-
-  //
-  // ### function rimraf
-  // Simple wrapper to `require('rimraf')`
-  //
-  'rimraf': {
-    get: function() {
-      return utile.rimraf = require('rimraf');
-    }
-  },
-
-  //
-  // ### function cpr
-  // Simple wrapper to `require('ncp').ncp`
-  //
-  'cpr': {
-    get: function() {
-      return utile.cpr = require('ncp').ncp;
-    }
-  },
-
-  //
-  // ### @file {Object}
-  // Lazy-loaded `file` module
-  //
-  'file': {
-    get: function() {
-      return utile.file = require('./file');
-    }
-  },
-
-  //
-  // ### @args {Object}
-  // Lazy-loaded `args` module
-  //
-  'args': {
-    get: function() {
-      return utile.args = require('./args');
-    }
-  },
-
-  //
-  // ### @base64 {Object}
-  // Lazy-loaded `base64` object
-  //
-  'base64': {
-    get: function() {
-      return utile.base64 = require('./base64');
-    }
-  },
-
-  //
-  // ### @format {Object}
-  // Lazy-loaded `format` object
-  //
-  'format': {
-    get: function() {
-      return utile.format = require('./format');
-    }
-  }
-
-});
-
-
-//
-// ### function rargs(_args)
-// #### _args {Arguments} Original function arguments
-//
-// Top-level method will accept a javascript "arguments" object
-// (the actual keyword "arguments" inside any scope) and return
-// back an Array.
-//
-utile.rargs = function (_args, slice) {
-  if (!slice) {
-    slice = 0;
-  }
-
-  var len = (_args || []).length,
-      args = new Array(len - slice),
-      i;
-
-  //
-  // Convert the raw `_args` to a proper Array.
-  //
-  for (i = slice; i < len; i++) {
-    args[i - slice] = _args[i];
-  }
-
-  return args;
-};
-
-//
-// ### function each (obj, iterator)
-// #### @obj {Object} Object to iterate over
-// #### @iterator {function} Continuation to use on each key. `function (value, key, object)`
-// Iterate over the keys of an object.
-//
-utile.each = function (obj, iterator) {
-  Object.keys(obj).forEach(function (key) {
-    iterator(obj[key], key, obj);
-  });
-};
-
-//
-// ### function find (o)
-//
-//
-utile.find = function (obj, pred) {
-  var value, key;
-
-  for (key in obj) {
-    value = obj[key];
-    if (pred(value, key)) {
-      return value;
-    }
-  }
-};
-
-//
-// ### function pad (str, len, chr)
-// ### @str {String} String to pad
-// ### @len {Number} Number of chars to pad str with
-// ### @chr {String} Optional replacement character, defaults to empty space
-// Appends chr to str until it reaches a length of len
-//
-utile.pad = function pad(str, len, chr) {
-  var s;
-  if (!chr) {
-    chr = ' ';
-  }
-  str = str || '';
-  s = str;
-  if (str.length < len) {
-    for (var i = 0; i < (len - str.length); i++) {
-      s += chr;
-    }
-  }
-  return s;
-}
-
-//
-// ### function path (obj, path, value)
-// ### @obj {Object} Object to insert value into
-// ### @path {Array} List of nested keys to insert value at
-// Retreives a value from given Object, `obj`, located at the
-// nested keys, `path`.
-//
-utile.path = function (obj, path) {
-  var key, i;
-
-  for (i in path) {
-    if (typeof obj === 'undefined') {
-      return undefined;
-    }
-
-    key = path[i];
-    obj = obj[key];
-  }
-
-  return obj;
-};
-
-//
-// ### function createPath (obj, path, value)
-// ### @obj {Object} Object to insert value into
-// ### @path {Array} List of nested keys to insert value at
-// ### @value {*} Value to insert into the object.
-// Inserts the `value` into the given Object, `obj`, creating
-// any keys in `path` along the way if necessary.
-//
-utile.createPath = function (obj, path, value) {
-  var key, i;
-
-  for (i in path) {
-    key = path[i];
-    if (!obj[key]) {
-      obj[key] = ((+i + 1 === path.length) ? value : {});
-    }
-
-    obj = obj[key];
-  }
-};
-
-//
-// ### function mixin (target [source0, source1, ...])
-// Copies enumerable properties from `source0 ... sourceN`
-// onto `target` and returns the resulting object.
-//
-utile.mixin = function (target) {
-  utile.rargs(arguments, 1).forEach(function (o) {
-    Object.getOwnPropertyNames(o).forEach(function(attr) {
-      var getter = Object.getOwnPropertyDescriptor(o, attr).get,
-          setter = Object.getOwnPropertyDescriptor(o, attr).set;
-
-      if (!getter && !setter) {
-        target[attr] = o[attr];
-      }
-      else {
-        Object.defineProperty(target, attr, {
-          get: getter,
-          set: setter
-        });
-      }
-    });
-  });
-
-  return target;
-};
-
-
-//
-// ### function capitalize (str)
-// #### @str {string} String to capitalize
-// Capitalizes the specified `str`.
-//
-utile.capitalize = utile.inflect.camelize;
-
-//
-// ### function escapeRegExp (str)
-// #### @str {string} String to be escaped
-// Escape string for use in Javascript regex
-//
-utile.escapeRegExp = function (str) {
-  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
-};
-
-//
-// ### function randomString (length)
-// #### @length {integer} The number of bits for the random base64 string returned to contain
-// randomString returns a pseude-random ASCII string (subset)
-// the return value is a string of length ⌈bits/6⌉ of characters
-// from the base64 alphabet.
-//
-utile.randomString = function (length) {
-  var chars, rand, i, ret, mod, bits;
-
-  chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-';
-  ret = '';
-  // standard 4
-  mod = 4;
-  // default is 16
-  bits = length * mod || 64;
-
-  // in v8, Math.random() yields 32 pseudo-random bits (in spidermonkey it gives 53)
-  while (bits > 0) {
-    // 32-bit integer
-    rand = Math.floor(Math.random() * 0x100000000);
-    //we use the top bits
-    for (i = 26; i > 0 && bits > 0; i -= mod, bits -= mod) {
-      ret += chars[0x3F & rand >>> i];
-    }
-  }
-
-  return ret;
-};
-
-//
-// ### function filter (object, test)
-// #### @obj {Object} Object to iterate over
-// #### @pred {function} Predicate applied to each property. `function (value, key, object)`
-// Returns an object with properties from `obj` which satisfy
-// the predicate `pred`
-//
-utile.filter = function (obj, pred) {
-  var copy;
-  if (Array.isArray(obj)) {
-    copy = [];
-    utile.each(obj, function (val, key) {
-      if (pred(val, key, obj)) {
-        copy.push(val);
-      }
-    });
-  }
-  else {
-    copy = {};
-    utile.each(obj, function (val, key) {
-      if (pred(val, key, obj)) {
-        copy[key] = val;
-      }
-    });
-  }
-  return copy;
-};
-
-//
-// ### function requireDir (directory)
-// #### @directory {string} Directory to require
-// Requires all files and directories from `directory`, returning an object
-// with keys being filenames (without trailing `.js`) and respective values
-// being return values of `require(filename)`.
-//
-utile.requireDir = function (directory) {
-  var result = {},
-      files = fs.readdirSync(directory);
-
-  files.forEach(function (file) {
-    if (file.substr(-3) === '.js') {
-      file = file.substr(0, file.length - 3);
-    }
-    result[file] = require(path.resolve(directory, file));
-  });
-  return result;
-};
-
-//
-// ### function requireDirLazy (directory)
-// #### @directory {string} Directory to require
-// Lazily requires all files and directories from `directory`, returning an
-// object with keys being filenames (without trailing `.js`) and respective
-// values (getters) being return values of `require(filename)`.
-//
-utile.requireDirLazy = function (directory) {
-  var result = {},
-      files = fs.readdirSync(directory);
-
-  files.forEach(function (file) {
-    if (file.substr(-3) === '.js') {
-      file = file.substr(0, file.length - 3);
-    }
-    Object.defineProperty(result, file, {
-      get: function() {
-        return result[file] = require(path.resolve(directory, file));
-      }
-    });
-  });
-  
-  return result;
-};
-
-//
-// ### function clone (object, filter)
-// #### @object {Object} Object to clone
-// #### @filter {Function} Filter to be used
-// Shallow clones the specified object.
-//
-utile.clone = function (object, filter) {
-  return Object.keys(object).reduce(filter ? function (obj, k) {
-    if (filter(k)) obj[k] = object[k];
-    return obj;
-  } : function (obj, k) {
-    obj[k] = object[k];
-    return obj;
-  }, {});
-};
-
-//
-// ### function camelToUnderscore (obj)
-// #### @obj {Object} Object to convert keys on.
-// Converts all keys of the type `keyName` to `key_name` on the
-// specified `obj`.
-//
-utile.camelToUnderscore = function (obj) {
-  if (typeof obj !== 'object' || obj === null) {
-    return obj;
-  }
-
-  if (Array.isArray(obj)) {
-    obj.forEach(utile.camelToUnderscore);
-    return obj;
-  }
-
-  Object.keys(obj).forEach(function (key) {
-    var k = utile.inflect.underscore(key);
-    if (k !== key) {
-      obj[k] = obj[key];
-      delete obj[key];
-      key = k;
-    }
-    utile.camelToUnderscore(obj[key]);
-  });
-
-  return obj;
-};
-
-//
-// ### function underscoreToCamel (obj)
-// #### @obj {Object} Object to convert keys on.
-// Converts all keys of the type `key_name` to `keyName` on the
-// specified `obj`.
-//
-utile.underscoreToCamel = function (obj) {
-  if (typeof obj !== 'object' || obj === null) {
-    return obj;
-  }
-
-  if (Array.isArray(obj)) {
-    obj.forEach(utile.underscoreToCamel);
-    return obj;
-  }
-
-  Object.keys(obj).forEach(function (key) {
-    var k = utile.inflect.camelize(key, false);
-    if (k !== key) {
-      obj[k] = obj[key];
-      delete obj[key];
-      key = k;
-    }
-    utile.underscoreToCamel(obj[key]);
-  });
-
-  return obj;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/ncp
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/ncp b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/ncp
deleted file mode 120000
index 1c02648..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/ncp
+++ /dev/null
@@ -1 +0,0 @@
-../ncp/bin/ncp
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/rimraf
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/rimraf b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/rimraf
deleted file mode 120000
index 4cd49a4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/.bin/rimraf
+++ /dev/null
@@ -1 +0,0 @@
-../rimraf/bin.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/.travis.yml b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/.travis.yml
deleted file mode 100644
index f1d0f13..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - 0.4
-  - 0.6

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/LICENSE b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/LICENSE
deleted file mode 100644
index ee27ba4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/README.markdown
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/README.markdown b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/README.markdown
deleted file mode 100644
index f489c2a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/README.markdown
+++ /dev/null
@@ -1,61 +0,0 @@
-# deep-equal
-
-Node's `assert.deepEqual() algorithm` as a standalone module.
-
-This module is around [5 times faster](https://gist.github.com/2790507)
-than wrapping `assert.deepEqual()` in a `try/catch`.
-
-[![browser support](https://ci.testling.com/substack/node-deep-equal.png)](https://ci.testling.com/substack/node-deep-equal)
-
-[![build status](https://secure.travis-ci.org/substack/node-deep-equal.png)](https://travis-ci.org/substack/node-deep-equal)
-
-# example
-
-``` js
-var equal = require('deep-equal');
-console.dir([
-    equal(
-        { a : [ 2, 3 ], b : [ 4 ] },
-        { a : [ 2, 3 ], b : [ 4 ] }
-    ),
-    equal(
-        { x : 5, y : [6] },
-        { x : 5, y : 6 }
-    )
-]);
-```
-
-# methods
-
-``` js
-var deepEqual = require('deep-equal')
-```
-
-## deepEqual(a, b, opts)
-
-Compare objects `a` and `b`, returning whether they are equal according to a
-recursive equality algorithm.
-
-If `opts.strict` is `true`, use strict equality (`===`) to compare leaf nodes.
-The default is to use coercive equality (`==`) because that's how
-`assert.deepEqual()` works by default.
-
-# install
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install deep-equal
-```
-
-# test
-
-With [npm](http://npmjs.org) do:
-
-```
-npm test
-```
-
-# license
-
-MIT. Derived largely from node's assert module.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/index.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/index.js
deleted file mode 100644
index fd2c4f3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-var pSlice = Array.prototype.slice;
-var objectKeys = require('./lib/keys.js');
-var isArguments = require('./lib/is_arguments.js');
-
-var deepEqual = module.exports = function (actual, expected, opts) {
-  if (!opts) opts = {};
-  // 7.1. All identical values are equivalent, as determined by ===.
-  if (actual === expected) {
-    return true;
-
-  } else if (actual instanceof Date && expected instanceof Date) {
-    return actual.getTime() === expected.getTime();
-
-  // 7.3. Other pairs that do not both pass typeof value == 'object',
-  // equivalence is determined by ==.
-  } else if (typeof actual != 'object' && typeof expected != 'object') {
-    return opts.strict ? actual === expected : actual == expected;
-
-  // 7.4. For all other Object pairs, including Array objects, equivalence is
-  // determined by having the same number of owned properties (as verified
-  // with Object.prototype.hasOwnProperty.call), the same set of keys
-  // (although not necessarily the same order), equivalent values for every
-  // corresponding key, and an identical 'prototype' property. Note: this
-  // accounts for both named and indexed properties on Arrays.
-  } else {
-    return objEquiv(actual, expected, opts);
-  }
-}
-
-function isUndefinedOrNull(value) {
-  return value === null || value === undefined;
-}
-
-function isBuffer (x) {
-  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
-  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
-    return false;
-  }
-  if (x.length > 0 && typeof x[0] !== 'number') return false;
-  return true;
-}
-
-function objEquiv(a, b, opts) {
-  var i, key;
-  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
-    return false;
-  // an identical 'prototype' property.
-  if (a.prototype !== b.prototype) return false;
-  //~~~I've managed to break Object.keys through screwy arguments passing.
-  //   Converting to array solves the problem.
-  if (isArguments(a)) {
-    if (!isArguments(b)) {
-      return false;
-    }
-    a = pSlice.call(a);
-    b = pSlice.call(b);
-    return deepEqual(a, b, opts);
-  }
-  if (isBuffer(a)) {
-    if (!isBuffer(b)) {
-      return false;
-    }
-    if (a.length !== b.length) return false;
-    for (i = 0; i < a.length; i++) {
-      if (a[i] !== b[i]) return false;
-    }
-    return true;
-  }
-  try {
-    var ka = objectKeys(a),
-        kb = objectKeys(b);
-  } catch (e) {//happens when one is a string literal and the other isn't
-    return false;
-  }
-  // having the same number of owned properties (keys incorporates
-  // hasOwnProperty)
-  if (ka.length != kb.length)
-    return false;
-  //the same set of keys (although not necessarily the same order),
-  ka.sort();
-  kb.sort();
-  //~~~cheap key test
-  for (i = ka.length - 1; i >= 0; i--) {
-    if (ka[i] != kb[i])
-      return false;
-  }
-  //equivalent values for every corresponding key, and
-  //~~~possibly expensive deep test
-  for (i = ka.length - 1; i >= 0; i--) {
-    key = ka[i];
-    if (!deepEqual(a[key], b[key], opts)) return false;
-  }
-  return true;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js
deleted file mode 100644
index 1ff150f..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/is_arguments.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var supportsArgumentsClass = (function(){
-  return Object.prototype.toString.call(arguments)
-})() == '[object Arguments]';
-
-exports = module.exports = supportsArgumentsClass ? supported : unsupported;
-
-exports.supported = supported;
-function supported(object) {
-  return Object.prototype.toString.call(object) == '[object Arguments]';
-};
-
-exports.unsupported = unsupported;
-function unsupported(object){
-  return object &&
-    typeof object == 'object' &&
-    typeof object.length == 'number' &&
-    Object.prototype.hasOwnProperty.call(object, 'callee') &&
-    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
-    false;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/keys.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/keys.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/keys.js
deleted file mode 100644
index 13af263..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/lib/keys.js
+++ /dev/null
@@ -1,9 +0,0 @@
-exports = module.exports = typeof Object.keys === 'function'
-  ? Object.keys : shim;
-
-exports.shim = shim;
-function shim (obj) {
-  var keys = [];
-  for (var key in obj) keys.push(key);
-  return keys;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/package.json b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/package.json
deleted file mode 100644
index 3b6789c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "name": "deep-equal",
-  "version": "0.2.1",
-  "description": "node's assert.deepEqual algorithm",
-  "main": "index.js",
-  "directories": {
-    "lib": ".",
-    "example": "example",
-    "test": "test"
-  },
-  "scripts": {
-    "test": "tape test/*.js"
-  },
-  "devDependencies": {
-    "tape": "~2.3.2"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-deep-equal.git"
-  },
-  "keywords": [
-    "equality",
-    "equal",
-    "compare"
-  ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "license": "MIT",
-  "testling": {
-    "files": "test/*.js",
-    "browsers": {
-      "ie": [
-        6,
-        7,
-        8,
-        9
-      ],
-      "ff": [
-        3.5,
-        10,
-        15
-      ],
-      "chrome": [
-        10,
-        22
-      ],
-      "safari": [
-        5.1
-      ],
-      "opera": [
-        12
-      ]
-    }
-  },
-  "readme": "# deep-equal\n\nNode's `assert.deepEqual() algorithm` as a standalone module.\n\nThis module is around [5 times faster](https://gist.github.com/2790507)\nthan wrapping `assert.deepEqual()` in a `try/catch`.\n\n[![browser support](https://ci.testling.com/substack/node-deep-equal.png)](https://ci.testling.com/substack/node-deep-equal)\n\n[![build status](https://secure.travis-ci.org/substack/node-deep-equal.png)](https://travis-ci.org/substack/node-deep-equal)\n\n# example\n\n``` js\nvar equal = require('deep-equal');\nconsole.dir([\n    equal(\n        { a : [ 2, 3 ], b : [ 4 ] },\n        { a : [ 2, 3 ], b : [ 4 ] }\n    ),\n    equal(\n        { x : 5, y : [6] },\n        { x : 5, y : 6 }\n    )\n]);\n```\n\n# methods\n\n``` js\nvar deepEqual = require('deep-equal')\n```\n\n## deepEqual(a, b, opts)\n\nCompare objects `a` and `b`, returning whether they are equal according to a\nrecursive equality algorithm.\n\nIf `opts.strict` is `true`, use strict equality (`===`) to 
 compare leaf nodes.\nThe default is to use coercive equality (`==`) because that's how\n`assert.deepEqual()` works by default.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install deep-equal\n```\n\n# test\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm test\n```\n\n# license\n\nMIT. Derived largely from node's assert module.\n",
-  "readmeFilename": "readme.markdown",
-  "bugs": {
-    "url": "https://github.com/substack/node-deep-equal/issues"
-  },
-  "_id": "deep-equal@0.2.1",
-  "_from": "deep-equal@*"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/test/cmp.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/test/cmp.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/test/cmp.js
deleted file mode 100644
index a10186a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/deep-equal/test/cmp.js
+++ /dev/null
@@ -1,84 +0,0 @@
-var test = require('tape');
-var equal = require('../');
-var isArguments = require('../lib/is_arguments.js');
-var objectKeys = require('../lib/keys.js');
-
-test('equal', function (t) {
-    t.ok(equal(
-        { a : [ 2, 3 ], b : [ 4 ] },
-        { a : [ 2, 3 ], b : [ 4 ] }
-    ));
-    t.end();
-});
-
-test('not equal', function (t) {
-    t.notOk(equal(
-        { x : 5, y : [6] },
-        { x : 5, y : 6 }
-    ));
-    t.end();
-});
-
-test('nested nulls', function (t) {
-    t.ok(equal([ null, null, null ], [ null, null, null ]));
-    t.end();
-});
-
-test('strict equal', function (t) {
-    t.notOk(equal(
-        [ { a: 3 }, { b: 4 } ],
-        [ { a: '3' }, { b: '4' } ],
-        { strict: true }
-    ));
-    t.end();
-});
-
-test('non-objects', function (t) {
-    t.ok(equal(3, 3));
-    t.ok(equal('beep', 'beep'));
-    t.ok(equal('3', 3));
-    t.notOk(equal('3', 3, { strict: true }));
-    t.notOk(equal('3', [3]));
-    t.end();
-});
-
-test('arguments class', function (t) {
-    t.ok(equal(
-        (function(){return arguments})(1,2,3),
-        (function(){return arguments})(1,2,3),
-        "compares arguments"
-    ));
-    t.notOk(equal(
-        (function(){return arguments})(1,2,3),
-        [1,2,3],
-        "differenciates array and arguments"
-    ));
-    t.end();
-});
-
-test('test the arguments shim', function (t) {
-    t.ok(isArguments.supported((function(){return arguments})()));
-    t.notOk(isArguments.supported([1,2,3]));
-    
-    t.ok(isArguments.unsupported((function(){return arguments})()));
-    t.notOk(isArguments.unsupported([1,2,3]));
-    
-    t.end();
-});
-
-test('test the keys shim', function (t) {
-    t.deepEqual(objectKeys.shim({ a: 1, b : 2 }), [ 'a', 'b' ]);
-    t.end();
-});
-
-test('dates', function (t) {
-    var d0 = new Date(1387585278000);
-    var d1 = new Date('Fri Dec 20 2013 16:21:18 GMT-0800 (PST)');
-    t.ok(equal(d0, d1));
-    t.end();
-});
-
-test('buffers', function (t) {
-    t.ok(equal(Buffer('xyz'), Buffer('xyz')));
-    t.end();
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.npmignore b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.npmignore
deleted file mode 100644
index 435e4bb..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-npm-debug.log
-*.swp

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.travis.yml b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.travis.yml
deleted file mode 100644
index 24a76b0..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
-  - 0.4
-  - 0.6
-  - 0.7
-notifications:
-  irc: "irc.freenode.net#pksunkara"
-  email:
-    on_success: never

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/LICENSE b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/LICENSE
deleted file mode 100644
index c9b44cb..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/README.md b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/README.md
deleted file mode 100644
index dbfa6d4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/README.md
+++ /dev/null
@@ -1,174 +0,0 @@
-# inflect
-
-customizable inflections for nodejs
-
-## Installation
-
-```bash
-npm install i
-```
-
-## Usage
-
-Require the module before using
-
-```js
-var inflect = require('i')();
-```
-
-All the below api functions can be called directly on a string
-
-```js
-inflect.titleize('messages to store') // === 'Messages To Store'
-'messages to store'.titleize // === 'Messages To Store'
-```
-
-only if `true` is passed while initiating
-
-```js
-var inflect = require('i')(true);
-```
-
-### Pluralize
-
-```js
-inflect.pluralize('person'); // === 'people'
-inflect.pluralize('octopus'); // === 'octopi'
-inflect.pluralize('Hat'); // === 'Hats'
-```
-
-### Singularize
-
-```js
-inflect.singularize('people'); // === 'person'
-inflect.singularize('octopi'); // === 'octopus'
-inflect.singularize('Hats'); // === 'Hat'
-```
-
-### Camelize
-
-```js
-inflect.camelize('message_properties'); // === 'MessageProperties'
-inflect.camelize('message_properties', false); // === 'messageProperties'
-```
-
-### Underscore
-
-```js
-inflect.underscore('MessageProperties'); // === 'message_properties'
-inflect.underscore('messageProperties'); // === 'message_properties'
-```
-
-### Humanize
-
-```js
-inflect.humanize('message_id'); // === 'Message'
-```
-
-### Dasherize
-
-```js
-inflect.dasherize('message_properties'); // === 'message-properties'
-inflect.dasherize('Message Properties'); // === 'Message Properties'
-```
-
-### Titleize
-
-```js
-inflect.titleize('message_properties'); // === 'Message Properties'
-inflect.titleize('message properties to keep'); // === 'Message Properties to Keep'
-```
-
-### Demodulize
-
-```js
-inflect.demodulize('Message.Bus.Properties'); // === 'Properties'
-```
-
-### Tableize
-
-```js
-inflect.tableize('MessageBusProperty'); // === 'message_bus_properties'
-```
-
-### Classify
-
-```js
-inflect.classify('message_bus_properties'); // === 'MessageBusProperty'
-```
-
-### Foreign key
-
-```js
-inflect.foreign_key('MessageBusProperty'); // === 'message_bus_property_id'
-inflect.foreign_key('MessageBusProperty', false); // === 'message_bus_propertyid'
-```
-
-### Ordinalize
-
-```js
-inflect.ordinalize( '1' ); // === '1st'
-```
-
-## Custom rules for inflection
-
-### Custom plural
-
-We can use regexp in any of these custom rules
-
-```js
-inflect.inflections.plural('person', 'guys');
-inflect.pluralize('person'); // === 'guys'
-inflect.singularize('guys'); // === 'guy'
-```
-
-### Custom singular
-
-```js
-inflect.inflections.singular('guys', 'person')
-inflect.singularize('guys'); // === 'person'
-inflect.pluralize('person'); // === 'people'
-```
-
-### Custom irregular
-
-```js
-inflect.inflections.irregular('person', 'guys')
-inflect.pluralize('person'); // === 'guys'
-inflect.singularize('guys'); // === 'person'
-```
-
-### Custom human
-
-```js
-inflect.inflections.human(/^(.*)_cnt$/i, '$1_count');
-inflect.inflections.humanize('jargon_cnt'); // === 'Jargon count'
-```
-
-### Custom uncountable
-
-```js
-inflect.inflections.uncountable('oil')
-inflect.pluralize('oil'); // === 'oil'
-inflect.singularize('oil'); // === 'oil'
-```
-
-## Contributors
-Here is a list of [Contributors](http://github.com/pksunkara/inflect/contributors)
-
-### TODO
-
-- More obscure test cases
-
-__I accept pull requests and guarantee a reply back within a day__
-
-## License
-MIT/X11
-
-## Bug Reports
-Report [here](http://github.com/pksunkara/inflect/issues). __Guaranteed reply within a day__.
-
-## Contact
-Pavan Kumar Sunkara (pavan.sss1991@gmail.com)
-
-Follow me on [github](https://github.com/users/follow?target=pksunkara), [twitter](http://twitter.com/pksunkara)

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/defaults.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/defaults.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/defaults.js
deleted file mode 100644
index ac26a50..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/defaults.js
+++ /dev/null
@@ -1,63 +0,0 @@
-// Default inflections
-module.exports = function (inflect) {
-
-  inflect.plural(/$/, 's');
-  inflect.plural(/s$/i, 's');
-  inflect.plural(/(ax|test)is$/i, '$1es');
-  inflect.plural(/(octop|vir)us$/i, '$1i');
-  inflect.plural(/(octop|vir)i$/i, '$1i');
-  inflect.plural(/(alias|status)$/i, '$1es');
-  inflect.plural(/(bu)s$/i, '$1ses');
-  inflect.plural(/(buffal|tomat)o$/i, '$1oes');
-  inflect.plural(/([ti])um$/i, '$1a');
-  inflect.plural(/([ti])a$/i, '$1a');
-  inflect.plural(/sis$/i, 'ses');
-  inflect.plural(/(?:([^f])fe|([lr])f)$/i, '$1ves');
-  inflect.plural(/(hive)$/i, '$1s');
-  inflect.plural(/([^aeiouy]|qu)y$/i, '$1ies');
-  inflect.plural(/(x|ch|ss|sh)$/i, '$1es');
-  inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '$1ices');
-  inflect.plural(/([m|l])ouse$/i, '$1ice');
-  inflect.plural(/([m|l])ice$/i, '$1ice');
-  inflect.plural(/^(ox)$/i, '$1en');
-  inflect.plural(/^(oxen)$/i, '$1');
-  inflect.plural(/(quiz)$/i, '$1zes');
-
-
-  inflect.singular(/s$/i, '');
-  inflect.singular(/(n)ews$/i, '$1ews');
-  inflect.singular(/([ti])a$/i, '$1um');
-  inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '$1sis');
-  inflect.singular(/(^analy)ses$/i, '$1sis');
-  inflect.singular(/([^f])ves$/i, '$1fe');
-  inflect.singular(/(hive)s$/i, '$1');
-  inflect.singular(/(tive)s$/i, '$1');
-  inflect.singular(/([lr])ves$/i, '$1f');
-  inflect.singular(/([^aeiouy]|qu)ies$/i, '$1y');
-  inflect.singular(/(s)eries$/i, '$1eries');
-  inflect.singular(/(m)ovies$/i, '$1ovie');
-  inflect.singular(/(x|ch|ss|sh)es$/i, '$1');
-  inflect.singular(/([m|l])ice$/i, '$1ouse');
-  inflect.singular(/(bus)es$/i, '$1');
-  inflect.singular(/(o)es$/i, '$1');
-  inflect.singular(/(shoe)s$/i, '$1');
-  inflect.singular(/(cris|ax|test)es$/i, '$1is');
-  inflect.singular(/(octop|vir)i$/i, '$1us');
-  inflect.singular(/(alias|status)es$/i, '$1');
-  inflect.singular(/^(ox)en/i, '$1');
-  inflect.singular(/(vert|ind)ices$/i, '$1ex');
-  inflect.singular(/(matr)ices$/i, '$1ix');
-  inflect.singular(/(quiz)zes$/i, '$1');
-  inflect.singular(/(database)s$/i, '$1');
-
-  inflect.irregular('child', 'children');
-  inflect.irregular('person', 'people');
-  inflect.irregular('man', 'men');
-  inflect.irregular('child', 'children');
-  inflect.irregular('sex', 'sexes');
-  inflect.irregular('move', 'moves');
-  inflect.irregular('cow', 'kine');
-  inflect.irregular('zombie', 'zombies');
-
-  inflect.uncountable(['equipment', 'information', 'rice', 'money', 'species', 'series', 'fish', 'sheep', 'jeans']);
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflect.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflect.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflect.js
deleted file mode 100644
index 5e0cc70..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflect.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// Requiring modules
-
-module.exports = function (attach) {
-  var methods = require('./methods');
-
-  if (attach) {
-    require('./native')(methods);
-  }
-
-  return methods
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflections.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflections.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflections.js
deleted file mode 100644
index 2808a48..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/inflections.js
+++ /dev/null
@@ -1,116 +0,0 @@
-// A singleton instance of this class is yielded by Inflector.inflections, which can then be used to specify additional
-// inflection rules. Examples:
-//
-//     BulletSupport.Inflector.inflect ($) ->
-//       $.plural /^(ox)$/i, '$1en'
-//       $.singular /^(ox)en/i, '$1'
-//
-//       $.irregular 'octopus', 'octopi'
-//
-//       $.uncountable "equipment"
-//
-// New rules are added at the top. So in the example above, the irregular rule for octopus will now be the first of the
-// pluralization and singularization rules that is runs. This guarantees that your rules run before any of the rules that may
-// already have been loaded.
-
-var util = require('./util');
-
-var Inflections = function () {
-  this.plurals = [];
-  this.singulars = [];
-  this.uncountables = [];
-  this.humans = [];
-  require('./defaults')(this);
-  return this;
-};
-
-// Specifies a new pluralization rule and its replacement. The rule can either be a string or a regular expression.
-// The replacement should always be a string that may include references to the matched data from the rule.
-Inflections.prototype.plural = function (rule, replacement) {
-  if (typeof rule == 'string') {
-    this.uncountables = util.array.del(this.uncountables, rule);
-  }
-  this.uncountables = util.array.del(this.uncountables, replacement);
-  this.plurals.unshift([rule, replacement]);
-};
-
-// Specifies a new singularization rule and its replacement. The rule can either be a string or a regular expression.
-// The replacement should always be a string that may include references to the matched data from the rule.
-Inflections.prototype.singular = function (rule, replacement) {
-  if (typeof rule == 'string') {
-    this.uncountables = util.array.del(this.uncountables, rule);
-  }
-  this.uncountables = util.array.del(this.uncountables, replacement);
-  this.singulars.unshift([rule, replacement]);
-};
-
-// Specifies a new irregular that applies to both pluralization and singularization at the same time. This can only be used
-// for strings, not regular expressions. You simply pass the irregular in singular and plural form.
-//
-//     irregular 'octopus', 'octopi'
-//     irregular 'person', 'people'
-Inflections.prototype.irregular =  function (singular, plural) {
-  this.uncountables = util.array.del(this.uncountables, singular);
-  this.uncountables = util.array.del(this.uncountables, plural);
-  if (singular[0].toUpperCase() == plural[0].toUpperCase()) {
-    this.plural(new RegExp("(" + singular[0] + ")" + singular.slice(1) + "$", "i"), '$1' + plural.slice(1));
-    this.plural(new RegExp("(" + plural[0] + ")" + plural.slice(1) + "$", "i"), '$1' + plural.slice(1));
-    this.singular(new RegExp("(" + plural[0] + ")" + plural.slice(1) + "$", "i"), '$1' + singular.slice(1));
-  } else {
-    this.plural(new RegExp("" + (singular[0].toUpperCase()) + singular.slice(1) + "$"), plural[0].toUpperCase() + plural.slice(1));
-    this.plural(new RegExp("" + (singular[0].toLowerCase()) + singular.slice(1) + "$"), plural[0].toLowerCase() + plural.slice(1));
-    this.plural(new RegExp("" + (plural[0].toUpperCase()) + plural.slice(1) + "$"), plural[0].toUpperCase() + plural.slice(1));
-    this.plural(new RegExp("" + (plural[0].toLowerCase()) + plural.slice(1) + "$"), plural[0].toLowerCase() + plural.slice(1));
-    this.singular(new RegExp("" + (plural[0].toUpperCase()) + plural.slice(1) + "$"), singular[0].toUpperCase() + singular.slice(1));
-    this.singular(new RegExp("" + (plural[0].toLowerCase()) + plural.slice(1) + "$"), singular[0].toLowerCase() + singular.slice(1));
-  }
-};
-
-// Specifies a humanized form of a string by a regular expression rule or by a string mapping.
-// When using a regular expression based replacement, the normal humanize formatting is called after the replacement.
-// When a string is used, the human form should be specified as desired (example: 'The name', not 'the_name')
-//
-//     human /(.*)_cnt$/i, '$1_count'
-//     human "legacy_col_person_name", "Name"
-Inflections.prototype.human = function (rule, replacement) {
-  this.humans.unshift([rule, replacement]);
-}
-
-// Add uncountable words that shouldn't be attempted inflected.
-//
-//     uncountable "money"
-//     uncountable ["money", "information"]
-Inflections.prototype.uncountable = function (words) {
-  this.uncountables = this.uncountables.concat(words);
-}
-
-// Clears the loaded inflections within a given scope (default is _'all'_).
-// Give the scope as a symbol of the inflection type, the options are: _'plurals'_,
-// _'singulars'_, _'uncountables'_, _'humans'_.
-//
-//     clear 'all'
-//     clear 'plurals'
-Inflections.prototype.clear = function (scope) {
-  if (scope == null) scope = 'all';
-  switch (scope) {
-    case 'all':
-      this.plurals = [];
-      this.singulars = [];
-      this.uncountables = [];
-      this.humans = [];
-    default:
-      this[scope] = [];
-  }
-}
-
-// Clears the loaded inflections and initializes them to [default](../inflections.html)
-Inflections.prototype.default = function () {
-  this.plurals = [];
-  this.singulars = [];
-  this.uncountables = [];
-  this.humans = [];
-  require('./defaults')(this);
-  return this;
-};
-
-module.exports = new Inflections();

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/methods.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/methods.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/methods.js
deleted file mode 100644
index 293dd9d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/methods.js
+++ /dev/null
@@ -1,233 +0,0 @@
-// The Inflector transforms words from singular to plural, class names to table names, modularized class names to ones without,
-// and class names to foreign keys. The default inflections for pluralization, singularization, and uncountable words are kept
-// in inflections.coffee
-//
-// If you discover an incorrect inflection and require it for your application, you'll need
-// to correct it yourself (explained below).
-
-var util = require('./util');
-
-var inflect = module.exports;
-
-// Import [inflections](inflections.html) instance
-inflect.inflections = require('./inflections')
-
-// Gives easy access to add inflections to this class
-inflect.inflect = function (inflections_function) {
-  inflections_function(inflect.inflections);
-};
-
-// By default, _camelize_ converts strings to UpperCamelCase. If the argument to _camelize_
-// is set to _false_ then _camelize_ produces lowerCamelCase.
-//
-// _camelize_ will also convert '/' to '.' which is useful for converting paths to namespaces.
-//
-//     "bullet_record".camelize()             // => "BulletRecord"
-//     "bullet_record".camelize(false)        // => "bulletRecord"
-//     "bullet_record/errors".camelize()      // => "BulletRecord.Errors"
-//     "bullet_record/errors".camelize(false) // => "bulletRecord.Errors"
-//
-// As a rule of thumb you can think of _camelize_ as the inverse of _underscore_,
-// though there are cases where that does not hold:
-//
-//     "SSLError".underscore.camelize // => "SslError"
-inflect.camelize = function(lower_case_and_underscored_word, first_letter_in_uppercase) {
-  var result;
-  if (first_letter_in_uppercase == null) first_letter_in_uppercase = true;
-  result = util.string.gsub(lower_case_and_underscored_word, /\/(.?)/, function($) {
-    return "." + (util.string.upcase($[1]));
-  });
-  result = util.string.gsub(result, /(?:_)(.)/, function($) {
-    return util.string.upcase($[1]);
-  });
-  if (first_letter_in_uppercase) {
-    return util.string.upcase(result);
-  } else {
-    return util.string.downcase(result);
-  }
-};
-
-// Makes an underscored, lowercase form from the expression in the string.
-//
-// Changes '.' to '/' to convert namespaces to paths.
-//
-//     "BulletRecord".underscore()         // => "bullet_record"
-//     "BulletRecord.Errors".underscore()  // => "bullet_record/errors"
-//
-// As a rule of thumb you can think of +underscore+ as the inverse of +camelize+,
-// though there are cases where that does not hold:
-//
-//     "SSLError".underscore().camelize() // => "SslError"
-inflect.underscore = function (camel_cased_word) {
-  var self;
-  self = util.string.gsub(camel_cased_word, /\./, '/');
-  self = util.string.gsub(self, /([A-Z]+)([A-Z][a-z])/, "$1_$2");
-  self = util.string.gsub(self, /([a-z\d])([A-Z])/, "$1_$2");
-  self = util.string.gsub(self, /-/, '_');
-  return self.toLowerCase();
-};
-
-// Replaces underscores with dashes in the string.
-//
-//     "puni_puni".dasherize()   // => "puni-puni"
-inflect.dasherize = function (underscored_word) {
-  return util.string.gsub(underscored_word, /_/, '-');
-};
-
-// Removes the module part from the expression in the string.
-//
-//     "BulletRecord.String.Inflections".demodulize() // => "Inflections"
-//     "Inflections".demodulize()                     // => "Inflections"
-inflect.demodulize = function (class_name_in_module) {
-  return util.string.gsub(class_name_in_module, /^.*\./, '');
-};
-
-// Creates a foreign key name from a class name.
-// _separate_class_name_and_id_with_underscore_ sets whether
-// the method should put '_' between the name and 'id'.
-//
-//     "Message".foreign_key()      // => "message_id"
-//     "Message".foreign_key(false) // => "messageid"
-//     "Admin::Post".foreign_key()  // => "post_id"
-inflect.foreign_key = function (class_name, separate_class_name_and_id_with_underscore) {
-  if (separate_class_name_and_id_with_underscore == null) {
-    separate_class_name_and_id_with_underscore = true;
-  }
-  return inflect.underscore(inflect.demodulize(class_name)) + (separate_class_name_and_id_with_underscore ? "_id" : "id");
-};
-
-// Turns a number into an ordinal string used to denote the position in an
-// ordered sequence such as 1st, 2nd, 3rd, 4th.
-//
-//     ordinalize(1)     // => "1st"
-//     ordinalize(2)     // => "2nd"
-//     ordinalize(1002)  // => "1002nd"
-//     ordinalize(1003)  // => "1003rd"
-//     ordinalize(-11)   // => "-11th"
-//     ordinalize(-1021) // => "-1021st"
-inflect.ordinalize = function (number) {
-  var _ref;
-  number = parseInt(number);
-  if ((_ref = Math.abs(number) % 100) === 11 || _ref === 12 || _ref === 13) {
-    return "" + number + "th";
-  } else {
-    switch (Math.abs(number) % 10) {
-      case 1:
-        return "" + number + "st";
-      case 2:
-        return "" + number + "nd";
-      case 3:
-        return "" + number + "rd";
-      default:
-        return "" + number + "th";
-    }
-  }
-};
-
-// Checks a given word for uncountability
-//
-//     "money".uncountability()     // => true
-//     "my money".uncountability()  // => true
-inflect.uncountability = function (word) {
-  return inflect.inflections.uncountables.some(function(ele, ind, arr) {
-    return word.match(new RegExp("(\\b|_)" + ele + "$", 'i')) != null;
-  });
-};
-
-// Returns the plural form of the word in the string.
-//
-//     "post".pluralize()             // => "posts"
-//     "octopus".pluralize()          // => "octopi"
-//     "sheep".pluralize()            // => "sheep"
-//     "words".pluralize()            // => "words"
-//     "CamelOctopus".pluralize()     // => "CamelOctopi"
-inflect.pluralize = function (word) {
-  var plural, result;
-  result = word;
-  if (word === '' || inflect.uncountability(word)) {
-    return result;
-  } else {
-    for (var i = 0; i < inflect.inflections.plurals.length; i++) {
-      plural = inflect.inflections.plurals[i];
-      result = util.string.gsub(result, plural[0], plural[1]);
-      if (word.match(plural[0]) != null) break;
-    }
-    return result;
-  }
-};
-
-// The reverse of _pluralize_, returns the singular form of a word in a string.
-//
-//     "posts".singularize()            // => "post"
-//     "octopi".singularize()           // => "octopus"
-//     "sheep".singularize()            // => "sheep"
-//     "word".singularize()             // => "word"
-//     "CamelOctopi".singularize()      // => "CamelOctopus"
-inflect.singularize = function (word) {
-  var result, singular;
-  result = word;
-  if (word === '' || inflect.uncountability(word)) {
-    return result;
-  } else {
-    for (var i = 0; i < inflect.inflections.singulars.length; i++) {
-      singular = inflect.inflections.singulars[i];
-      result = util.string.gsub(result, singular[0], singular[1]);
-      if (word.match(singular[0])) break;
-    }
-    return result;
-  }
-};
-
-// Capitalizes the first word and turns underscores into spaces and strips a
-// trailing "_id", if any. Like _titleize_, this is meant for creating pretty output.
-//
-//     "employee_salary".humanize()   // => "Employee salary"
-//     "author_id".humanize()         // => "Author"
-inflect.humanize = function (lower_case_and_underscored_word) {
-  var human, result;
-  result = lower_case_and_underscored_word;
-  for (var i = 0; i < inflect.inflections.humans.length; i++) {
-    human = inflect.inflections.humans[i];
-    result = util.string.gsub(result, human[0], human[1]);
-  }
-  result = util.string.gsub(result, /_id$/, "");
-  result = util.string.gsub(result, /_/, " ");
-  return util.string.capitalize(result, true);
-};
-
-// Capitalizes all the words and replaces some characters in the string to create
-// a nicer looking title. _titleize_ is meant for creating pretty output. It is not
-// used in the Bullet internals.
-//
-//
-//     "man from the boondocks".titleize()   // => "Man From The Boondocks"
-//     "x-men: the last stand".titleize()    // => "X Men: The Last Stand"
-inflect.titleize = function (word) {
-  var self;
-  self = inflect.humanize(inflect.underscore(word));
-  self = util.string.gsub(self, /[^a-zA-Z:']/, ' ');
-  return util.string.capitalize(self);
-};
-
-// Create the name of a table like Bullet does for models to table names. This method
-// uses the _pluralize_ method on the last word in the string.
-//
-//     "RawScaledScorer".tableize()   // => "raw_scaled_scorers"
-//     "egg_and_ham".tableize()       // => "egg_and_hams"
-//     "fancyCategory".tableize()     // => "fancy_categories"
-inflect.tableize = function (class_name) {
-  return inflect.pluralize(inflect.underscore(class_name));
-};
-
-// Create a class name from a plural table name like Bullet does for table names to models.
-// Note that this returns a string and not a Class.
-//
-//     "egg_and_hams".classify()   // => "EggAndHam"
-//     "posts".classify()          // => "Post"
-//
-// Singular names are not handled correctly:
-//
-//     "business".classify()       // => "Busines"
-inflect.classify = function (table_name) {
-  return inflect.camelize(inflect.singularize(util.string.gsub(table_name, /.*\./, '')));
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/native.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/native.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/native.js
deleted file mode 100644
index d2c8de1..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/native.js
+++ /dev/null
@@ -1,26 +0,0 @@
-module.exports = function (obj) {
-
-  var addProperty = function (method, func) {
-    String.prototype.__defineGetter__(method, func);
-  }
-
-  var stringPrototypeBlacklist = [
-    '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor',
-    'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt',
-    'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring',
-    'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight', 'gsub'
-  ];
-
-  Object.keys(obj).forEach(function (key) {
-    if (key != 'inflect' && key != 'inflections') {
-      if (stringPrototypeBlacklist.indexOf(key) !== -1) {
-        console.log('warn: You should not override String.prototype.' + key);
-      } else {
-        addProperty(key, function () {
-          return obj[key](this);
-        });
-      }
-    }
-  });
-
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/util.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/util.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/util.js
deleted file mode 100644
index 87ebd3e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/lib/util.js
+++ /dev/null
@@ -1,136 +0,0 @@
-// Some utility functions in js
-
-var u = module.exports = {
-  array: {
-    // Returns a copy of the array with the value removed once
-    //
-    //     [1, 2, 3, 1].del 1 #=> [2, 3, 1]
-    //     [1, 2, 3].del 4    #=> [1, 2, 3]
-    del: function (arr, val) {
-      var index = arr.indexOf(val);
-      if (index != -1) {
-        if (index == 0) {
-         return arr.slice(1)
-        } else {
-          return arr.slice(0, index).concat(arr.slice(index+1));
-        }
-      } else {
-        return arr;
-      }
-    },
-
-    // Returns the first element of the array
-    //
-    //     [1, 2, 3].first() #=> 1
-    first: function(arr) {
-      return arr[0];
-    },
-
-    // Returns the last element of the array
-    //
-    //     [1, 2, 3].last()  #=> 3
-    last: function(arr) {
-      return arr[arr.length-1];
-    }
-  },
-  string: {
-    // Returns a copy of str with all occurrences of pattern replaced with either replacement or the return value of a function.
-    // The pattern will typically be a Regexp; if it is a String then no regular expression metacharacters will be interpreted
-    // (that is /\d/ will match a digit, but ‘\d’ will match a backslash followed by a ‘d’).
-    //
-    // In the function form, the current match object is passed in as a parameter to the function, and variables such as
-    // $[1], $[2], $[3] (where $ is the match object) will be set appropriately. The value returned by the function will be
-    // substituted for the match on each call.
-    //
-    // The result inherits any tainting in the original string or any supplied replacement string.
-    //
-    //     "hello".gsub /[aeiou]/, '*'      #=> "h*ll*"
-    //     "hello".gsub /[aeiou]/, '<$1>'   #=> "h<e>ll<o>"
-    //     "hello".gsub /[aeiou]/, ($) {
-    //       "<#{$[1]}>"                    #=> "h<e>ll<o>"
-    //
-    gsub: function (str, pattern, replacement) {
-      var i, match, matchCmpr, matchCmprPrev, replacementStr, result, self;
-      if (!((pattern != null) && (replacement != null))) return u.string.value(str);
-      result = '';
-      self = str;
-      while (self.length > 0) {
-        if ((match = self.match(pattern))) {
-          result += self.slice(0, match.index);
-          if (typeof replacement === 'function') {
-            match[1] = match[1] || match[0];
-            result += replacement(match);
-          } else if (replacement.match(/\$[1-9]/)) {
-            matchCmprPrev = match;
-            matchCmpr = u.array.del(match, void 0);
-            while (matchCmpr !== matchCmprPrev) {
-              matchCmprPrev = matchCmpr;
-              matchCmpr = u.array.del(matchCmpr, void 0);
-            }
-            match[1] = match[1] || match[0];
-            replacementStr = replacement;
-            for (i = 1; i <= 9; i++) {
-              if (matchCmpr[i]) {
-                replacementStr = u.string.gsub(replacementStr, new RegExp("\\\$" + i), matchCmpr[i]);
-              }
-            }
-            result += replacementStr;
-          } else {
-            result += replacement;
-          }
-          self = self.slice(match.index + match[0].length);
-        } else {
-          result += self;
-          self = '';
-        }
-      }
-      return result;
-    },
-
-    // Returns a copy of the String with the first letter being upper case
-    //
-    //     "hello".upcase #=> "Hello"
-    upcase: function(str) {
-      var self = u.string.gsub(str, /_([a-z])/, function ($) {
-        return "_" + $[1].toUpperCase();
-      });
-      self = u.string.gsub(self, /\/([a-z])/, function ($) {
-        return "/" + $[1].toUpperCase();
-      });
-      return self[0].toUpperCase() + self.substr(1);
-    },
-
-    // Returns a copy of capitalized string
-    //
-    //     "employee salary" #=> "Employee Salary"
-    capitalize: function (str, spaces) {
-      var self = str.toLowerCase();
-      if(!spaces) {
-        self = u.string.gsub(self, /\s([a-z])/, function ($) {
-          return " " + $[1].toUpperCase();
-        });
-      }
-      return self[0].toUpperCase() + self.substr(1);
-    },
-
-    // Returns a copy of the String with the first letter being lower case
-    //
-    //     "HELLO".downcase #=> "hELLO"
-    downcase: function(str) {
-      var self = u.string.gsub(str, /_([A-Z])/, function ($) {
-        return "_" + $[1].toLowerCase();
-      });
-      self = u.string.gsub(self, /\/([A-Z])/, function ($) {
-        return "/" + $[1].toLowerCase();
-      });
-      return self[0].toLowerCase() + self.substr(1);
-    },
-
-    // Returns a string value for the String object
-    //
-    //     "hello".value() #=> "hello"
-    value: function (str) {
-      return str.substr(0);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/package.json b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/package.json
deleted file mode 100644
index 4df7e83..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "name": "i",
-  "version": "0.3.2",
-  "author": {
-    "name": "Pavan Kumar Sunkara",
-    "email": "pavan.sss1991@gmail.com",
-    "url": "pksunkara.github.com"
-  },
-  "description": "custom inflections for nodejs",
-  "main": "./lib/inflect",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/pksunkara/inflect.git"
-  },
-  "keywords": [
-    "singular",
-    "plural",
-    "camelize",
-    "underscore",
-    "dasherize",
-    "demodulize",
-    "ordinalize",
-    "uncountable",
-    "pluralize",
-    "singularize",
-    "titleize",
-    "tableize",
-    "classify",
-    "foreign_key"
-  ],
-  "homepage": "http://pksunkara.github.com/inflect",
-  "scripts": {
-    "test": "./node_modules/.bin/vows --spec $(find test -name '*-test.js')"
-  },
-  "contributors": [
-    {
-      "name": "Pavan Kumar Sunkara",
-      "email": "pavan.sss1991@gmail.com"
-    }
-  ],
-  "dependencies": {},
-  "devDependencies": {
-    "vows": "~0.6.1"
-  },
-  "engines": {
-    "node": ">=0.4"
-  },
-  "bugs": {
-    "url": "https://github.com/pksunkara/inflect/issues"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "https://github.com/pksunkara/inflect/raw/master/LICENSE"
-    }
-  ],
-  "readme": "# inflect\n\ncustomizable inflections for nodejs\n\n## Installation\n\n```bash\nnpm install i\n```\n\n## Usage\n\nRequire the module before using\n\n```js\nvar inflect = require('i')();\n```\n\nAll the below api functions can be called directly on a string\n\n```js\ninflect.titleize('messages to store') // === 'Messages To Store'\n'messages to store'.titleize // === 'Messages To Store'\n```\n\nonly if `true` is passed while initiating\n\n```js\nvar inflect = require('i')(true);\n```\n\n### Pluralize\n\n```js\ninflect.pluralize('person'); // === 'people'\ninflect.pluralize('octopus'); // === 'octopi'\ninflect.pluralize('Hat'); // === 'Hats'\n```\n\n### Singularize\n\n```js\ninflect.singularize('people'); // === 'person'\ninflect.singularize('octopi'); // === 'octopus'\ninflect.singularize('Hats'); // === 'Hat'\n```\n\n### Camelize\n\n```js\ninflect.camelize('message_properties'); // === 'MessageProperties'\ninflect.camelize('message_properties', false); // === 'messagePr
 operties'\n```\n\n### Underscore\n\n```js\ninflect.underscore('MessageProperties'); // === 'message_properties'\ninflect.underscore('messageProperties'); // === 'message_properties'\n```\n\n### Humanize\n\n```js\ninflect.humanize('message_id'); // === 'Message'\n```\n\n### Dasherize\n\n```js\ninflect.dasherize('message_properties'); // === 'message-properties'\ninflect.dasherize('Message Properties'); // === 'Message Properties'\n```\n\n### Titleize\n\n```js\ninflect.titleize('message_properties'); // === 'Message Properties'\ninflect.titleize('message properties to keep'); // === 'Message Properties to Keep'\n```\n\n### Demodulize\n\n```js\ninflect.demodulize('Message.Bus.Properties'); // === 'Properties'\n```\n\n### Tableize\n\n```js\ninflect.tableize('MessageBusProperty'); // === 'message_bus_properties'\n```\n\n### Classify\n\n```js\ninflect.classify('message_bus_properties'); // === 'MessageBusProperty'\n```\n\n### Foreign key\n\n```js\ninflect.foreign_key('MessageBusProperty')
 ; // === 'message_bus_property_id'\ninflect.foreign_key('MessageBusProperty', false); // === 'message_bus_propertyid'\n```\n\n### Ordinalize\n\n```js\ninflect.ordinalize( '1' ); // === '1st'\n```\n\n## Custom rules for inflection\n\n### Custom plural\n\nWe can use regexp in any of these custom rules\n\n```js\ninflect.inflections.plural('person', 'guys');\ninflect.pluralize('person'); // === 'guys'\ninflect.singularize('guys'); // === 'guy'\n```\n\n### Custom singular\n\n```js\ninflect.inflections.singular('guys', 'person')\ninflect.singularize('guys'); // === 'person'\ninflect.pluralize('person'); // === 'people'\n```\n\n### Custom irregular\n\n```js\ninflect.inflections.irregular('person', 'guys')\ninflect.pluralize('person'); // === 'guys'\ninflect.singularize('guys'); // === 'person'\n```\n\n### Custom human\n\n```js\ninflect.inflections.human(/^(.*)_cnt$/i, '$1_count');\ninflect.inflections.humanize('jargon_cnt'); // === 'Jargon count'\n```\n\n### Custom uncountable\n\n```js\nin
 flect.inflections.uncountable('oil')\ninflect.pluralize('oil'); // === 'oil'\ninflect.singularize('oil'); // === 'oil'\n```\n\n## Contributors\nHere is a list of [Contributors](http://github.com/pksunkara/inflect/contributors)\n\n### TODO\n\n- More obscure test cases\n\n__I accept pull requests and guarantee a reply back within a day__\n\n## License\nMIT/X11\n\n## Bug Reports\nReport [here](http://github.com/pksunkara/inflect/issues). __Guaranteed reply within a day__.\n\n## Contact\nPavan Kumar Sunkara (pavan.sss1991@gmail.com)\n\nFollow me on [github](https://github.com/users/follow?target=pksunkara), [twitter](http://twitter.com/pksunkara)\n",
-  "readmeFilename": "README.md",
-  "_id": "i@0.3.2",
-  "_from": "i@0.3.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/cases.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/cases.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/cases.js
deleted file mode 100644
index 04c6030..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/cases.js
+++ /dev/null
@@ -1,209 +0,0 @@
-(function() {
-
-  module.exports = {
-    SingularToPlural: {
-      "search": "searches",
-      "switch": "switches",
-      "fix": "fixes",
-      "box": "boxes",
-      "process": "processes",
-      "address": "addresses",
-      "case": "cases",
-      "stack": "stacks",
-      "wish": "wishes",
-      "fish": "fish",
-      "jeans": "jeans",
-      "funky jeans": "funky jeans",
-      "my money": "my money",
-      "category": "categories",
-      "query": "queries",
-      "ability": "abilities",
-      "agency": "agencies",
-      "movie": "movies",
-      "archive": "archives",
-      "index": "indices",
-      "wife": "wives",
-      "safe": "saves",
-      "half": "halves",
-      "move": "moves",
-      "salesperson": "salespeople",
-      "person": "people",
-      "spokesman": "spokesmen",
-      "man": "men",
-      "woman": "women",
-      "basis": "bases",
-      "diagnosis": "diagnoses",
-      "diagnosis_a": "diagnosis_as",
-      "datum": "data",
-      "medium": "media",
-      "stadium": "stadia",
-      "analysis": "analyses",
-      "node_child": "node_children",
-      "child": "children",
-      "experience": "experiences",
-      "day": "days",
-      "comment": "comments",
-      "foobar": "foobars",
-      "newsletter": "newsletters",
-      "old_news": "old_news",
-      "news": "news",
-      "series": "series",
-      "species": "species",
-      "quiz": "quizzes",
-      "perspective": "perspectives",
-      "ox": "oxen",
-      "photo": "photos",
-      "buffalo": "buffaloes",
-      "tomato": "tomatoes",
-      "dwarf": "dwarves",
-      "elf": "elves",
-      "information": "information",
-      "equipment": "equipment",
-      "bus": "buses",
-      "status": "statuses",
-      "status_code": "status_codes",
-      "mouse": "mice",
-      "louse": "lice",
-      "house": "houses",
-      "octopus": "octopi",
-      "virus": "viri",
-      "alias": "aliases",
-      "portfolio": "portfolios",
-      "vertex": "vertices",
-      "matrix": "matrices",
-      "matrix_fu": "matrix_fus",
-      "axis": "axes",
-      "testis": "testes",
-      "crisis": "crises",
-      "rice": "rice",
-      "shoe": "shoes",
-      "horse": "horses",
-      "prize": "prizes",
-      "edge": "edges",
-      "cow": "kine",
-      "database": "databases"
-    },
-    CamelToUnderscore: {
-      "Product": "product",
-      "SpecialGuest": "special_guest",
-      "ApplicationController": "application_controller",
-      "Area51Controller": "area51_controller"
-    },
-    UnderscoreToLowerCamel: {
-      "product": "product",
-      "Widget": "widget",
-      "special_guest": "specialGuest",
-      "application_controller": "applicationController",
-      "area51_controller": "area51Controller"
-    },
-    CamelToUnderscoreWithoutReverse: {
-      "HTMLTidy": "html_tidy",
-      "HTMLTidyGenerator": "html_tidy_generator",
-      "FreeBSD": "free_bsd",
-      "HTML": "html"
-    },
-    CamelWithModuleToUnderscoreWithSlash: {
-      "Admin.Product": "admin/product",
-      "Users.Commission.Department": "users/commission/department",
-      "UsersSection.CommissionDepartment": "users_section/commission_department"
-    },
-    ClassNameToForeignKeyWithUnderscore: {
-      "Person": "person_id",
-      "MyApplication.Billing.Account": "account_id"
-    },
-    ClassNameToForeignKeyWithoutUnderscore: {
-      "Person": "personid",
-      "MyApplication.Billing.Account": "accountid"
-    },
-    ClassNameToTableName: {
-      "PrimarySpokesman": "primary_spokesmen",
-      "NodeChild": "node_children"
-    },
-    UnderscoreToHuman: {
-      "employee_salary": "Employee salary",
-      "employee_id": "Employee",
-      "underground": "Underground"
-    },
-    MixtureToTitleCase: {
-      'bullet_record': 'Bullet Record',
-      'BulletRecord': 'Bullet Record',
-      'bullet web service': 'Bullet Web Service',
-      'Bullet Web Service': 'Bullet Web Service',
-      'Bullet web service': 'Bullet Web Service',
-      'bulletwebservice': 'Bulletwebservice',
-      'Bulletwebservice': 'Bulletwebservice',
-      "pavan's code": "Pavan's Code",
-      "Pavan's code": "Pavan's Code",
-      "pavan's Code": "Pavan's Code"
-    },
-    OrdinalNumbers: {
-      "-1": "-1st",
-      "-2": "-2nd",
-      "-3": "-3rd",
-      "-4": "-4th",
-      "-5": "-5th",
-      "-6": "-6th",
-      "-7": "-7th",
-      "-8": "-8th",
-      "-9": "-9th",
-      "-10": "-10th",
-      "-11": "-11th",
-      "-12": "-12th",
-      "-13": "-13th",
-      "-14": "-14th",
-      "-20": "-20th",
-      "-21": "-21st",
-      "-22": "-22nd",
-      "-23": "-23rd",
-      "-24": "-24th",
-      "-100": "-100th",
-      "-101": "-101st",
-      "-102": "-102nd",
-      "-103": "-103rd",
-      "-104": "-104th",
-      "-110": "-110th",
-      "-111": "-111th",
-      "-112": "-112th",
-      "-113": "-113th",
-      "-1000": "-1000th",
-      "-1001": "-1001st",
-      "0": "0th",
-      "1": "1st",
-      "2": "2nd",
-      "3": "3rd",
-      "4": "4th",
-      "5": "5th",
-      "6": "6th",
-      "7": "7th",
-      "8": "8th",
-      "9": "9th",
-      "10": "10th",
-      "11": "11th",
-      "12": "12th",
-      "13": "13th",
-      "14": "14th",
-      "20": "20th",
-      "21": "21st",
-      "22": "22nd",
-      "23": "23rd",
-      "24": "24th",
-      "100": "100th",
-      "101": "101st",
-      "102": "102nd",
-      "103": "103rd",
-      "104": "104th",
-      "110": "110th",
-      "111": "111th",
-      "112": "112th",
-      "113": "113th",
-      "1000": "1000th",
-      "1001": "1001st"
-    },
-    UnderscoresToDashes: {
-      "street": "street",
-      "street_address": "street-address",
-      "person_street_address": "person-street-address"
-    }
-  };
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/inflections-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/inflections-test.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/inflections-test.js
deleted file mode 100644
index be8d960..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/i/test/inflector/inflections-test.js
+++ /dev/null
@@ -1,87 +0,0 @@
-(function() {
-  var assert, vows;
-
-  vows = require('vows');
-
-  assert = require('assert');
-
-  vows.describe('Module Inflector inflections').addBatch({
-    'Test inflector inflections': {
-      topic: require('../../lib/inflections'),
-      'clear': {
-        'single': function(topic) {
-          topic.uncountables = [1, 2, 3];
-          topic.humans = [1, 2, 3];
-          topic.clear('uncountables');
-          assert.isEmpty(topic.uncountables);
-          return assert.deepEqual(topic.humans, [1, 2, 3]);
-        },
-        'all': function(topic) {
-          assert.deepEqual(topic.humans, [1, 2, 3]);
-          topic.uncountables = [1, 2, 3];
-          topic.clear();
-          assert.isEmpty(topic.uncountables);
-          return assert.isEmpty(topic.humans);
-        }
-      },
-      'uncountable': {
-        'one item': function(topic) {
-          topic.clear();
-          assert.isEmpty(topic.uncountables);
-          topic.uncountable('money');
-          return assert.deepEqual(topic.uncountables, ['money']);
-        },
-        'many items': function(topic) {
-          topic.clear();
-          assert.isEmpty(topic.uncountables);
-          topic.uncountable(['money', 'rice']);
-          return assert.deepEqual(topic.uncountables, ['money', 'rice']);
-        }
-      },
-      'human': function(topic) {
-        topic.clear();
-        assert.isEmpty(topic.humans);
-        topic.human("legacy_col_person_name", "Name");
-        return assert.deepEqual(topic.humans, [["legacy_col_person_name", "Name"]]);
-      },
-      'plural': function(topic) {
-        topic.clear();
-        assert.isEmpty(topic.plurals);
-        topic.plural('ox', 'oxen');
-        assert.deepEqual(topic.plurals, [['ox', 'oxen']]);
-        topic.uncountable('money');
-        assert.deepEqual(topic.uncountables, ['money']);
-        topic.uncountable('monies');
-        topic.plural('money', 'monies');
-        assert.deepEqual(topic.plurals, [['money', 'monies'], ['ox', 'oxen']]);
-        return assert.isEmpty(topic.uncountables);
-      },
-      'singular': function(topic) {
-        topic.clear();
-        assert.isEmpty(topic.singulars);
-        topic.singular('ox', 'oxen');
-        assert.deepEqual(topic.singulars, [['ox', 'oxen']]);
-        topic.uncountable('money');
-        assert.deepEqual(topic.uncountables, ['money']);
-        topic.uncountable('monies');
-        topic.singular('money', 'monies');
-        assert.deepEqual(topic.singulars, [['money', 'monies'], ['ox', 'oxen']]);
-        return assert.isEmpty(topic.uncountables);
-      },
-      'irregular': function(topic) {
-        topic.clear();
-        topic.uncountable(['octopi', 'octopus']);
-        assert.deepEqual(topic.uncountables, ['octopi', 'octopus']);
-        topic.irregular('octopus', 'octopi');
-        assert.isEmpty(topic.uncountables);
-        assert.equal(topic.singulars[0][0].toString(), /(o)ctopi$/i.toString());
-        assert.equal(topic.singulars[0][1], '$1ctopus');
-        assert.equal(topic.plurals[0][0].toString(), /(o)ctopi$/i.toString());
-        assert.equal(topic.plurals[0][1], '$1ctopi');
-        assert.equal(topic.plurals[1][0].toString(), /(o)ctopus$/i.toString());
-        return assert.equal(topic.plurals[1][1].toString(), '$1ctopi');
-      }
-    }
-  })["export"](module);
-
-}).call(this);


[02/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/node_modules/sax/examples/big-not-pretty.xml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/node_modules/sax/examples/big-not-pretty.xml b/blackberry10/node_modules/xml2js/node_modules/sax/examples/big-not-pretty.xml
deleted file mode 100644
index fb5265d..0000000
--- a/blackberry10/node_modules/xml2js/node_modules/sax/examples/big-not-pretty.xml
+++ /dev/null
@@ -1,8002 +0,0 @@
-<big>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COM

<TRUNCATED>

[37/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/i18n-manager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/i18n-manager.js b/blackberry10/bin/test/cordova/unit/spec/lib/i18n-manager.js
deleted file mode 100644
index 91df758..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/i18n-manager.js
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var testData = require("./test-data"),
-    i18nMgr = require(testData.libPath + "/i18n-manager"),
-    session = testData.session,
-    fs = require("fs"),
-    wrench = require("wrench"),
-    pkgrUtils = require(testData.libPath + "/packager-utils");
-
-function mockOSReturnFiles(files) {
-    if (pkgrUtils.isWindows()) {
-        var newFiles = [];
-        files.forEach(function (f) {
-            newFiles.push(session.sourceDir + "\\locales\\" + f.split("/").join("\\"));
-        });
-        return newFiles;
-    } else {
-        return files;
-    }
-}
-
-describe("i18n manager", function () {
-    it("generate correct metadata for icon", function () {
-        var config = {
-                icon: ["logo.png"]
-            },
-            xmlObject = {};
-
-        spyOn(fs, "existsSync").andReturn(true);
-        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
-            'fr',
-            'fr/logo.png'
-        ]));
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
-
-        expect(xmlObject.icon).toBeDefined();
-        expect(xmlObject.icon.image).toBeDefined();
-        expect(xmlObject.icon.image.length).toBe(2);
-        expect(xmlObject.icon.image).toContain({
-            _value: "logo.png"
-        });
-        expect(xmlObject.icon.image).toContain({
-            text: {
-                _attr: {
-                    "xml:lang": "fr"
-                },
-                _value: "locales/fr/logo.png"
-            }
-        });
-    });
-
-    it("generate correct metadata for icon when locales folder does not exist", function () {
-        var config = {
-                icon: ["logo.png"]
-            },
-            xmlObject = {};
-
-        spyOn(fs, "existsSync").andReturn(false);
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
-
-        expect(xmlObject.icon).toBeDefined();
-        expect(xmlObject.icon.image).toBeDefined();
-        expect(xmlObject.icon.image.length).toBe(1);
-        expect(xmlObject.icon.image).toContain({
-            _value: "logo.png"
-        });
-    });
-
-    it("generate correct metadata for icon when locale folder does not contain matching image", function () {
-        var config = {
-                icon: ["logo.png"]
-            },
-            xmlObject = {};
-
-        spyOn(fs, "existsSync").andReturn(true);
-        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
-            'fr',
-            'fr/logo-mismatch.png'
-        ]));
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
-
-        expect(xmlObject.icon).toBeDefined();
-        expect(xmlObject.icon.image).toBeDefined();
-        expect(xmlObject.icon.image.length).toBe(1);
-        expect(xmlObject.icon.image).toContain({
-            _value: "logo.png"
-        });
-    });
-
-    it("generate correct metadata for icon when image is in subfolder", function () {
-        var config = {
-                icon: ["assets\\images\\logo.png"]
-            },
-            xmlObject = {};
-
-        spyOn(fs, "existsSync").andReturn(true);
-        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
-            'fr',
-            'fr/assets/images/logo.png'
-        ]));
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
-
-        expect(xmlObject.icon).toBeDefined();
-        expect(xmlObject.icon.image).toBeDefined();
-        expect(xmlObject.icon.image.length).toBe(2);
-        expect(xmlObject.icon.image).toContain({
-            _value: "assets/images/logo.png"
-        });
-        expect(xmlObject.icon.image).toContain({
-            text: {
-                _attr: {
-                    "xml:lang": "fr"
-                },
-                _value: "locales/fr/assets/images/logo.png"
-            }
-        });
-    });
-
-    it("generate correct metadata for icon when image is in subfolder and OS is windows", function () {
-        if (pkgrUtils.isWindows()) {
-            var config = {
-                    icon: ["assets\\images\\logo.png"]
-                },
-                xmlObject = {};
-
-            spyOn(fs, "existsSync").andReturn(true);
-            spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
-                'fr',
-                'fr\\assets\\images\\logo.png'
-            ]));
-
-            i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
-
-            expect(xmlObject.icon).toBeDefined();
-            expect(xmlObject.icon.image).toBeDefined();
-            expect(xmlObject.icon.image.length).toBe(2);
-            expect(xmlObject.icon.image).toContain({
-                _value: "assets/images/logo.png"
-            });
-            expect(xmlObject.icon.image).toContain({
-                text: {
-                    _attr: {
-                        "xml:lang": "fr"
-                    },
-                    _value: "locales/fr/assets/images/logo.png"
-                }
-            });
-        }
-    });
-
-    it("generate correct metadata for splash and OS is *nx", function () {
-        var config = {
-                "rim:splash": ["splash-1280x768.jpg", "splash-768x1280.jpg"]
-            },
-            xmlObject = {};
-
-        spyOn(pkgrUtils, 'isWindows').andReturn(false);
-        spyOn(fs, "existsSync").andReturn(true);
-        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
-            'fr',
-            'fr/splash-1280x768.jpg',
-            'fr/splash-768x1280.jpg'
-        ]));
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
-
-        expect(xmlObject.splashScreens).toBeDefined();
-        expect(xmlObject.splashScreens.image).toBeDefined();
-        expect(xmlObject.splashScreens.image.length).toBe(4);
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "splash-1280x768.jpg"
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "splash-768x1280.jpg"
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            text: {
-                _attr: {
-                    "xml:lang": "fr"
-                },
-                _value: "locales/fr/splash-1280x768.jpg"
-            }
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            text: {
-                _attr: {
-                    "xml:lang": "fr"
-                },
-                _value: "locales/fr/splash-768x1280.jpg"
-            }
-        });
-    });
-
-    it("generate correct metadata for splash when locales folder does not exist", function () {
-        var config = {
-                "rim:splash": ["splash-1280x768.jpg", "splash-768x1280.jpg"]
-            },
-            xmlObject = {};
-
-        spyOn(fs, "existsSync").andReturn(false);
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
-
-        expect(xmlObject.splashScreens).toBeDefined();
-        expect(xmlObject.splashScreens.image).toBeDefined();
-        expect(xmlObject.splashScreens.image.length).toBe(2);
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "splash-1280x768.jpg"
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "splash-768x1280.jpg"
-        });
-    });
-
-    it("generate correct metadata for splash when locale folder does not contain matching image", function () {
-        var config = {
-                "rim:splash": ["splash-1280x768.jpg", "splash-768x1280.jpg"]
-            },
-            xmlObject = {};
-
-        spyOn(fs, "existsSync").andReturn(true);
-        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
-            'fr',
-            'fr/splash-1280x768-mismatch.jpg',
-            'fr/splash-768x1280.jpg'
-        ]));
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
-
-        expect(xmlObject.splashScreens).toBeDefined();
-        expect(xmlObject.splashScreens.image).toBeDefined();
-        expect(xmlObject.splashScreens.image.length).toBe(3);
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "splash-1280x768.jpg"
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "splash-768x1280.jpg"
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            text: {
-                _attr: {
-                    "xml:lang": "fr"
-                },
-                _value: "locales/fr/splash-768x1280.jpg"
-            }
-        });
-    });
-
-    it("generate correct metadata for splash when image is in subfolder", function () {
-        var config = {
-                "rim:splash": ["assets\\images\\splash-1280x768.jpg", "assets\\images\\splash-768x1280.jpg"]
-            },
-            xmlObject = {};
-
-        spyOn(fs, "existsSync").andReturn(true);
-        spyOn(wrench, "readdirSyncRecursive").andReturn(mockOSReturnFiles([
-            'fr',
-            'fr/assets/images/splash-1280x768.jpg',
-            'fr/assets/images/splash-768x1280.jpg'
-        ]));
-
-        i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
-
-        expect(xmlObject.splashScreens).toBeDefined();
-        expect(xmlObject.splashScreens.image).toBeDefined();
-        expect(xmlObject.splashScreens.image.length).toBe(4);
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "assets/images/splash-1280x768.jpg"
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            _value: "assets/images/splash-768x1280.jpg"
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            text: {
-                _attr: {
-                    "xml:lang": "fr"
-                },
-                _value: "locales/fr/assets/images/splash-1280x768.jpg"
-            }
-        });
-        expect(xmlObject.splashScreens.image).toContain({
-            text: {
-                _attr: {
-                    "xml:lang": "fr"
-                },
-                _value: "locales/fr/assets/images/splash-768x1280.jpg"
-            }
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/logger.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/logger.js b/blackberry10/bin/test/cordova/unit/spec/lib/logger.js
deleted file mode 100644
index c934ada..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/logger.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    logger = require(srcPath + "logger");
-
-describe("logger", function () {
-    describe("when the log level is verbose", function () {
-        beforeEach(function () {
-            spyOn(console, "log");
-            spyOn(console, "error");
-            logger.level('verbose');
-        });
-
-        it("logs info messages", function () {
-            logger.info("cheese is made from milk");
-            expect(console.log).toHaveBeenCalledWith("[INFO]    cheese is made from milk");
-        });
-
-        it("logs error messages", function () {
-            logger.error("PC LOAD LETTER");
-            expect(console.error).toHaveBeenCalledWith("[ERROR]   PC LOAD LETTER");
-        });
-
-        it("logs warning messages", function () {
-            logger.warn("beware the ides of march");
-            expect(console.log).toHaveBeenCalledWith("[WARN]    beware the ides of march");
-        });
-
-        it("logs messages", function () {
-            logger.log("Hulk Smash!");
-            expect(console.log).toHaveBeenCalledWith("[INFO]    Hulk Smash!");
-        });
-    });
-
-    describe("when the log level is warn", function () {
-        beforeEach(function () {
-            spyOn(console, "log");
-            spyOn(console, "error");
-            logger.level('warn');
-        });
-
-        it("doesn't log info messages", function () {
-            logger.info("cheese is made from milk");
-            expect(console.log).not.toHaveBeenCalledWith("[INFO]    cheese is made from milk");
-        });
-
-        it("logs error messages", function () {
-            logger.error("PC LOAD LETTER");
-            expect(console.error).toHaveBeenCalledWith("[ERROR]   PC LOAD LETTER");
-        });
-
-        it("logs warning messages", function () {
-            logger.warn("beware the ides of march");
-            expect(console.log).toHaveBeenCalledWith("[WARN]    beware the ides of march");
-        });
-
-        it("doesn't log messages", function () {
-            logger.log("Hulk Smash!");
-            expect(console.log).not.toHaveBeenCalledWith("[INFO]    Hulk Smash!");
-        });
-    });
-
-    describe("when the log level is error", function () {
-        beforeEach(function () {
-            spyOn(console, "log");
-            spyOn(console, "error");
-            logger.level('error');
-        });
-
-        it("doesn't log info messages", function () {
-            logger.info("cheese is made from milk");
-            expect(console.log).not.toHaveBeenCalledWith("[INFO]    cheese is made from milk");
-        });
-
-        it("logs error messages", function () {
-            logger.error("PC LOAD LETTER");
-            expect(console.error).toHaveBeenCalledWith("[ERROR]   PC LOAD LETTER");
-        });
-
-        it("doesn't log warning messages", function () {
-            logger.warn("beware the ides of march");
-            expect(console.log).not.toHaveBeenCalledWith("[WARN]    beware the ides of march");
-        });
-
-        it("doesn't log messages", function () {
-            logger.log("Hulk Smash!");
-            expect(console.log).not.toHaveBeenCalledWith("[INFO]    Hulk Smash!");
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/native-packager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/native-packager.js b/blackberry10/bin/test/cordova/unit/spec/lib/native-packager.js
deleted file mode 100644
index 6f2359d..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/native-packager.js
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var path = require("path"),
-    util = require("util"),
-    fs = require("fs"),
-    childProcess = require("child_process"),
-    wrench = require("wrench"),
-    srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    nativePkgr = require(srcPath + "/native-packager"),
-    pkgrUtils = require(srcPath + "/packager-utils"),
-    testUtils = require("./test-utilities"),
-    testData = require("./test-data"),
-    logger = require(srcPath + "logger"),
-    localize = require(srcPath + "/localize"),
-    conf = require(srcPath + "./conf"),
-    callback,
-    config,
-    session,
-    target,
-    result,
-    orgDebugEnabled,
-    orgDebugTokenPath,
-    NL = pkgrUtils.isWindows() ? "\r\n" : "\n";
-
-describe("Native packager", function () {
-    beforeEach(function () {
-        process.env.CORDOVA_BBTOOLS = "";
-        callback = jasmine.createSpy();
-        config = testData.config;
-        session = testData.session;
-        target = session.targets[0];
-        result = {
-            stdout: {
-                on: jasmine.createSpy()
-            },
-            stderr: {
-                on: jasmine.createSpy()
-            },
-            on: function (eventName, callback) {
-                callback(0);
-            }
-        };
-
-        // Store original debug token setting and later restore them in afterEach
-        // to be able to test positive and negative cases of each.
-        orgDebugEnabled = session.debug;
-        orgDebugTokenPath = session.conf.DEBUG_TOKEN;
-
-        spyOn(wrench, "readdirSyncRecursive").andReturn(["abc", "xyz"]);
-        spyOn(fs, "statSync").andReturn({
-            isDirectory: function () {
-                return false;
-            }
-        });
-        spyOn(fs, "writeFileSync");
-        spyOn(childProcess, "spawn").andReturn(result);
-        spyOn(fs, "existsSync").andCallFake(function (path) {
-            //Return true if this is the bbndk folder check
-            return path.indexOf("bbndk") !== -1;
-        });
-    });
-
-    afterEach(function () {
-        session.debug = orgDebugEnabled;
-        session.conf.DEBUG_TOKEN = orgDebugTokenPath;
-    });
-
-    it("should not display empty messages in logger", function () {
-        spyOn(pkgrUtils, "writeFile");
-        spyOn(logger, "warn");
-        spyOn(logger, "error");
-        spyOn(logger, "info");
-
-        nativePkgr.exec(session, target, testData.config, callback);
-
-        expect(logger.warn).not.toHaveBeenCalledWith("");
-        expect(logger.error).not.toHaveBeenCalledWith("");
-        expect(logger.info).not.toHaveBeenCalledWith("");
-    });
-
-    it("shows debug token warning when path to file is not valid", function () {
-        spyOn(pkgrUtils, "writeFile");
-        spyOn(logger, "warn");
-
-        session.debug = true;
-        //Current time will ensure that the file doesn't exist.
-        session.conf.DEBUG_TOKEN = new Date().getTime() + ".bar";
-
-        nativePkgr.exec(session, target, testData.config, callback);
-
-        expect(logger.warn).toHaveBeenCalled();
-    });
-
-    it("won't show debug token warning when -d options wasn't provided", function () {
-        spyOn(pkgrUtils, "writeFile");
-        spyOn(logger, "warn");
-
-        session.debug = false;
-        //Current time will ensure that the file doesn't exist.
-        session.conf.DEBUG_TOKEN = new Date().getTime() + ".bar";
-
-        nativePkgr.exec(session, target, testData.config, callback);
-
-        expect(logger.warn).not.toHaveBeenCalled();
-    });
-
-    it("exec blackberry-nativepackager", function () {
-        var bbTabletXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
-            "<qnx><id>" + config.id + "</id>" +
-            "<versionNumber>" + config.version + "</versionNumber>" +
-            "<author>" + config.author + "</author>" +
-            "<asset entry=\"true\" type=\"qnx/elf\">wwe</asset>" +
-            "<asset>abc</asset>" +
-            "<asset>xyz</asset>" +
-            "<entryPointType>Qnx/WebKit</entryPointType>" +
-            "<cascadesTheme>" + config.theme + "</cascadesTheme>" +
-            "<initialWindow><systemChrome>none</systemChrome><transparent>true</transparent><autoOrients>true</autoOrients></initialWindow>",
-            bbTabletXML2 = "<permission system=\"true\">run_native</permission>" +
-            "<permission system=\"false\">access_internet</permission>" +
-            "<name>" + config.name['default'] + "</name>" +
-            "<description>" + config.description['default'] + "</description></qnx>",
-            cmd = "blackberry-nativepackager" + (pkgrUtils.isWindows() ? ".bat" : "");
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (sourceDir, outputDir, data) {
-            expect(sourceDir).toEqual(session.sourceDir);
-            expect(outputDir).toEqual(conf.BAR_DESCRIPTOR);
-
-            //We have to validate the xml data in 2 chucks, because the WEBWORKS_VERSION env variable
-            //has a different value for SCM builds and we can't mock the webworks-info file
-            expect(data).toContain(bbTabletXML);
-            expect(data).toContain(bbTabletXML2);
-        });
-        nativePkgr.exec(session, target, testData.config, callback);
-
-        expect(fs.writeFileSync).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(String));
-        expect(childProcess.spawn).toHaveBeenCalledWith(cmd, ["@../options"], {"cwd": session.sourceDir, "env": process.env});
-        expect(callback).toHaveBeenCalledWith(0);
-    });
-
-    it("makes sure slog2 logging is enabled in debug mode", function () {
-        var tabletXMLEntry = "<env value=\"slog2\" var=\"CONSOLE_MODE\"></env>";
-
-        //Silence the logger during unit tests
-        spyOn(logger, "warn").andCallFake(function () { });
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (sourceDir, outputDir, data) {
-            expect(data).toContain(tabletXMLEntry);
-        });
-
-        session.debug = true;
-        nativePkgr.exec(session, target, testData.config, callback);
-    });
-
-    it("makes sure slog2 logging is not enabled when not in debug mode", function () {
-        var tabletXMLEntry = "<env value=\"slog2\" var=\"CONSOLE_MODE\"></env>";
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (sourceDir, outputDir, data) {
-            expect(data).not.toContain(tabletXMLEntry);
-        });
-
-        session.debug = false;
-        nativePkgr.exec(session, target, testData.config, callback);
-    });
-
-    it("can process application name", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.name = {"default": "API Smoke Test"};
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain("<name>API Smoke Test</name>");
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-
-    });
-
-    it("can process localized application name", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.name = {"FR": "API Smoke Test - FR"};
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain('<name><text xml:lang="FR">API Smoke Test - FR</text></name>');
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-    });
-
-    it("can process mutiple application names", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.name = {
-            "default": "API Smoke Test",
-            "EN": "API Smoke Test - EN",
-            "FR": "API Smoke Test - FR"
-        };
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain('<name>API Smoke Test<text xml:lang="EN">API Smoke Test - EN</text><text xml:lang="FR">API Smoke Test - FR</text></name>');
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-    });
-
-    it("can process application description", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.description = {"default": "My app description"};
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain("<description>My app description</description>");
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-
-    });
-
-    it("can process localized application description", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.description = {"FR": "My app description - FR"};
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain('<description><text xml:lang="FR">My app description - FR</text></description>');
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-    });
-
-    it("can process mutiple application descriptions", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.description = {
-            "default": "My app description",
-            "EN": "My app description - EN",
-            "FR": "My app description - FR"
-        };
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain('<description>My app description<text xml:lang="EN">My app description - EN</text><text xml:lang="FR">My app description - FR</text></description>');
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-    });
-
-    it("can process permissions with no attributes", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.permissions = ['read_device_identifying_information'];
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain("<permission>read_device_identifying_information</permission>");
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-
-    });
-
-    it("can process permissions with attributes", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.permissions = [{ '#': 'systemPerm', '@': {"system": "true"}}];
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain("<permission system=\"true\">systemPerm</permission>");
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-
-    });
-
-    it("adds the mandatory permissions for webworks", function () {
-        var config = testUtils.cloneObj(testData.config);
-        config.permissions = [];
-
-        spyOn(pkgrUtils, "writeFile").andCallFake(function (fileLocation, fileName, fileData) {
-            expect(fileData).toContain("<permission system=\"false\">access_internet</permission>");
-            expect(fileData).toContain("<permission system=\"true\">run_native</permission>");
-        });
-
-        nativePkgr.exec(session, target, config, callback);
-
-    });
-
-    it("omits -devMode when signing and specifying -d", function () {
-        testUtils.mockResolve(path);
-        spyOn(pkgrUtils, "writeFile");
-
-        var session = testUtils.cloneObj(testData.session),
-            config = testUtils.cloneObj(testData.config),
-            target = "device",
-            optionsFile = "-package" + NL +
-                "-buildId" + NL +
-                "100" + NL +
-                path.normalize("c:/device/Demo.bar") + NL +
-                "-barVersion" + NL +
-                "1.5" + NL +
-                "-C" + NL +
-                path.normalize("c:/src/") + NL +
-                conf.BAR_DESCRIPTOR + NL +
-                path.normalize("c:/src/abc") + NL +
-                path.normalize("c:/src/xyz") + NL;
-
-        //Set signing params [-g --buildId]
-        session.keystore = path.normalize("c:/author.p12");
-        session.storepass = "password";
-        config.buildId = "100";
-
-        session.barPath = path.normalize("c:/%s/" + "Demo.bar");
-        session.sourceDir = path.normalize("c:/src/");
-        session.isSigningRequired = function () {
-            return true;
-        };
-
-        //Set -d param
-        session.debug = "";
-
-        nativePkgr.exec(session, target, config, callback);
-
-        //options file should NOT contain -devMode
-        expect(fs.writeFileSync).toHaveBeenCalledWith(jasmine.any(String), optionsFile);
-    });
-
-    it("exec blackberry-nativepackager with additional params", function () {
-        var cmd = "blackberry-nativepackager" + (pkgrUtils.isWindows() ? ".bat" : "");
-        spyOn(pkgrUtils, "writeFile");
-
-        session.getParams = jasmine.createSpy("session getParams").andReturn({
-            "-installApp": "",
-            "-device": "192.168.1.114",
-            "-password": "abc"
-        });
-
-        nativePkgr.exec(session, "simulator", testData.config, callback);
-
-        expect(fs.writeFileSync.mostRecentCall.args[0]).toBe(path.resolve(session.sourceDir + "/../", "options"));
-        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-package" + NL);
-        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-password" + NL);
-        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("abc" + NL);
-        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-device" + NL);
-        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("192.168.1.114" + NL);
-        expect(fs.writeFileSync.mostRecentCall.args[1]).toContain("-installApp" + NL);
-        expect(childProcess.spawn).toHaveBeenCalledWith(cmd, ["@../options"], {"cwd": session.sourceDir, "env": process.env});
-        expect(callback).toHaveBeenCalledWith(0);
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/packager-utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/packager-utils.js b/blackberry10/bin/test/cordova/unit/spec/lib/packager-utils.js
deleted file mode 100644
index 493298c..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/packager-utils.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var testData = require("./test-data"),
-    utils = require(testData.libPath + "/packager-utils"),
-    fs = require("fs"),
-    path = require("path"),
-    asciiFile = path.resolve("bin/test/cordova/unit/data/ascii_text.txt"),
-    utf8File = path.resolve("bin/test/cordova/unit/data/utf8_text.txt"),
-    ucs2beFile = path.resolve("bin/test/cordova/unit/data/ucs2be_text.txt"),
-    ucs2leFile = path.resolve("bin/test/cordova/unit/data/ucs2le_text.txt"),
-    helloWorld = "Hello World";
-
-describe("Encoded Buffer data to String", function () {
-    it("Ascii text to String", function () {
-        // Read text file encoded in ascii
-        var fileData = fs.readFileSync(asciiFile);
-        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
-    });
-
-    it("Utf8 text to String", function () {
-        // Read text file encoded in utf8
-        var fileData = fs.readFileSync(utf8File);
-        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
-    });
-
-    it("Ucs2BE text to String", function () {
-        // Read text file encoded in 2 byte Unicode big endian
-        var fileData = fs.readFileSync(ucs2beFile);
-        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
-    });
-
-    it("Ucs2LE text to String", function () {
-        // Read text file encoded in 2 byte Unicode little endian
-        var fileData = fs.readFileSync(ucs2leFile);
-        expect(utils.bufferToString(fileData)).toEqual(helloWorld);
-    });
-});
-
-describe("property wrapper", function () {
-    it("wraps a property of an object in an array", function () {
-        var obj = {
-            prop: "value"
-        };
-
-        utils.wrapPropertyInArray(obj, "prop");
-        expect(obj.prop[0]).toEqual("value");
-    });
-
-    it("does not wrap an array object in an array", function () {
-        var obj = {
-            prop: ["value"]
-        };
-
-        utils.wrapPropertyInArray(obj, "prop");
-        expect(obj.prop[0][0]).not.toEqual("value");
-        expect(obj.prop[0]).toEqual("value");
-    });
-
-    it("does not wrap a property that doesn't exist in the object", function () {
-        var obj = {
-            prop: "value"
-        };
-
-        utils.wrapPropertyInArray(obj, "secondValue");
-        expect(obj.secondValue).not.toBeDefined();
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js b/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js
deleted file mode 100644
index 40e3b3c..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    testData = require("./test-data"),
-    testUtilities = require("./test-utilities"),
-    localize = require(srcPath + "localize"),
-    logger = require(srcPath + "logger"),
-    packagerValidator = require(srcPath + "packager-validator"),
-    signingUtils = require(srcPath + "signing-utils"),
-    fs = require("fs"),
-    cmd,
-    extManager = {
-        getExtensionBasenameByFeatureId: function (featureId) {
-            if (featureId && featureId.indexOf("blackberry.") >= 0) {
-                return featureId.substring(featureId.indexOf(".") + 1);
-            } else {
-                return null;
-            }
-        }
-    };
-
-describe("Packager Validator", function () {
-    it("throws an exception when -g set and keys were not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = undefined;
-        session.storepass = "myPassword";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "author.p12"));
-    });
-
-    it("throws an exception when --buildId set and keys were not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = undefined;
-        session.buildId = "100";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "author.p12"));
-    });
-
-    it("throws an exception when -g set and bbidtoken.csk or barsigner.csk was not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = undefined;
-        session.storepass = "myPassword";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "bbidtoken.csk"));
-    });
-
-    it("does not throw an exception when -g set and barsigner.csk was found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = "barsigner.csk";
-        session.keystoreDb = "barsigner.db";
-        session.storepass = "myPassword";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).not.toThrow();
-    });
-
-    it("throws an exception when --buildId set and bbbidtoken.csk was not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = undefined;
-        session.buildId = "100";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "bbidtoken.csk"));
-    });
-
-    it("throws an exception when -g set and barsigner.db was not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = "c:/barsigner.csk";
-        session.keystoreDb = undefined;
-        session.storepass = "myPassword";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "barsigner.db"));
-    });
-
-    it("throws an exception when --buildId set and barsigner.db was not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = "c:/barsigner.csk";
-        session.keystoreDb = undefined;
-        session.buildId = "100";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", "barsigner.db"));
-    });
-
-    it("generated a warning when Build ID is set in config and keys were not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //Mock the logger
-        spyOn(logger, "warn");
-
-        //setup signing parameters
-        session.keystore = undefined;
-        session.buildId = undefined;
-        configObj.buildId = "100";
-
-        packagerValidator.validateSession(session, configObj);
-        expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", "author.p12"));
-    });
-
-    it("generated a warning when Build ID is set in config and bbidtoken.csk was not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //Mock the logger
-        spyOn(logger, "warn");
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = undefined;
-        session.buildId = undefined;
-        configObj.buildId = "100";
-
-        packagerValidator.validateSession(session, configObj);
-        expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", "bbidtoken.csk"));
-    });
-
-    it("generated a warning when Build ID is set in config and barsigner.db was not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //Mock the logger
-        spyOn(logger, "warn");
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = "c:/barsigner.csk";
-        session.keystoreDb = undefined;
-        session.buildId = undefined;
-        configObj.buildId = "100";
-
-        packagerValidator.validateSession(session, configObj);
-        expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", "barsigner.db"));
-    });
-
-    it("throws an exception when appdesc was not found", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup appdesc which is not existing
-        session.buildId = undefined;
-        configObj.buildId = undefined;
-        session.appdesc = "c:/bardescriptor.xml";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_APPDESC_NOT_FOUND", "c:/bardescriptor.xml"));
-    });
-
-    it("throws an exception when --buildId was set with no password [-g]", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = signingUtils.getDefaultPath("author.p12");
-        session.keystoreCsk = "c:/barsigner.csk";
-        session.keystoreDb = "c:/barsigner.db";
-        session.storepass = undefined;
-        session.buildId = "100";
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_PASSWORD"));
-    });
-});
-
-describe("Packager Validator: validateConfig", function () {
-    it("does not remove APIs that do exist from features whitelist", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = {
-                accessList: [{
-                    features: [{
-                        id: "blackberry.identity",
-                        required: true,
-                        version: "1.0.0.0"
-                    }, {
-                        version: "1.0.0.0",
-                        required: true,
-                        id: "blackberry.event"
-                    }],
-                    uri: "WIDGET_LOCAL",
-                    allowSubDomain: true
-                }]
-            };
-
-        spyOn(fs, "existsSync").andCallFake(function () {
-            //since both of these APIs exist, existsSync would return true
-            return true;
-        });
-
-        packagerValidator.validateConfig(session, configObj, extManager);
-        expect(configObj.accessList[0].features.length).toEqual(2);
-
-
-    });
-
-    it("does not crash if user whitelists a feature with no id", function () {
-        var session = testUtilities.cloneObj(testData.session),
-        configObj = {
-            accessList: [{
-                features: [{
-                    id: "blackberry.identity",
-                    required: true,
-                    version: "1.0.0.0"
-                }, {
-                    version: "1.0.0.0",
-                    required: true,
-                }],
-                uri: "WIDGET_LOCAL",
-                allowSubDomain: true
-            }]
-        };
-        spyOn(logger, "warn");
-
-        spyOn(fs, "existsSync").andCallFake(function () {
-            //since both of these APIs exist, existsSync would return true
-            return true;
-        });
-
-        expect(function () {
-            packagerValidator.validateConfig(session, configObj, extManager);
-        }).not.toThrow();
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/session.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/session.js b/blackberry10/bin/test/cordova/unit/spec/lib/session.js
deleted file mode 100644
index 524b040..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/session.js
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var session = require(__dirname + "/../../../../../templates/project/cordova/lib/session"),
-    localize = require(__dirname + "/../../../../../templates/project/cordova/lib/localize"),
-    testUtils = require("./test-utilities"),
-    utils = require(__dirname + "/../../../../../templates/project/cordova/lib/utils"),
-    path = require("path"),
-    fs = require("fs"),
-    wrench = require("wrench"),
-    zipLocation = __dirname + "/../../config.xml";
-
-describe("Session", function () {
-    beforeEach(function () {
-        //Do not create the source folder
-        spyOn(wrench, "mkdirSyncRecursive");
-        spyOn(utils, "getProperties").andReturn({});
-    });
-
-    it("sets the source directory correctly when specified [-s C:/sampleApp/mySource]", function () {
-        testUtils.mockResolve(path);
-
-        var data = {
-            args: [ 'C:/sampleApp/sample.zip' ],
-            output: 'C:/sampleApp/bin',
-            source: 'C:/sampleApp/mySource'//equivalent to [-s C:/sampleApp/mySource]
-        },
-        result = session.initialize(data);
-
-        expect(result.sourceDir).toEqual(path.normalize("C:/sampleApp/mySource/src"));
-    });
-
-    it("sets the source directory correctly when unspecified [-s] and output path set [-o]", function () {
-        testUtils.mockResolve(path);
-
-        var data = {
-            args: [ 'C:/sampleApp/sample.zip' ],
-            output: 'C:/sampleApp/bin',
-            source: true//equivalent to [-s]
-        },
-        result = session.initialize(data);
-
-        //src folder should be created in output directory
-        expect(result.sourceDir).toEqual(path.normalize("C:/sampleApp/bin/src"));
-    });
-
-    it("sets the source directory correctly when unspecified [-s] and no output path is set", function () {
-        testUtils.mockResolve(path);
-
-        var data = {
-            args: [ zipLocation ],
-            source: true//equivalent to [-s]
-        },
-        result = session.initialize(data);
-
-        //src folder should be created in output directory
-        expect(result.sourceDir).toEqual(path.join(path.dirname(zipLocation), "src"));
-    });
-
-    it("sets the password when specified using -g", function () {
-        var data = {
-            args: [ 'C:/sampleApp/sample.zip' ],
-            output: 'C:/sampleApp/bin',
-            source: 'C:/sampleApp/mySource',//equivalent to [-s C:/sampleApp/mySource]
-            password: 'myPassword'
-        },
-        result = session.initialize(data);
-        expect(result.storepass).toEqual('myPassword');
-    });
-
-    it("does not set the password when not a string", function () {
-        //Commander sometimes improperly sets password to a function, when no value provided
-        var data = {
-            args: [ 'C:/sampleApp/sample.zip' ],
-            output: 'C:/sampleApp/bin',
-            source: 'C:/sampleApp/mySource',//equivalent to [-s C:/sampleApp/mySource]
-            password: function () {}
-        },
-        result = session.initialize(data);
-        expect(result.storepass).toBeUndefined();
-    });
-
-    it("sets the buildId when specified [-buildId]", function () {
-        var data = {
-            args: [ 'C:/sampleApp/sample.zip' ],
-            output: 'C:/sampleApp/bin',
-            source: 'C:/sampleApp/mySource',//equivalent to [-s C:/sampleApp/mySource]
-            buildId: '100'
-        },
-        result = session.initialize(data);
-        expect(result.buildId).toEqual('100');
-    });
-
-    it("sets the appdesc correctly when specified [--appdesc C:/path/bardescriptor.xml]", function () {
-        testUtils.mockResolve(path);
-
-        var data = {
-            args: [ 'C:/sampleApp/sample.zip' ],
-            appdesc: 'C:/path/bardescriptor.xml' //equivalent to [--appdesc C:/path/bardescriptor.xml]
-        },
-        result = session.initialize(data);
-
-        expect(result.appdesc).toEqual(path.normalize("C:/path/bardescriptor.xml"));
-    });
-
-    it("sets the appdesc correctly when not specified", function () {
-        testUtils.mockResolve(path);
-
-        var data = {
-            args: [ 'C:/sampleApp/sample.zip' ]
-        },
-        result = session.initialize(data);
-
-        expect(result.appdesc).toBeUndefined();
-    });
-
-    it("sets the output directory correctly when specified with a relative path [-o myOutput]", function () {
-        var bbwpDir = __dirname + "/../../../../../../",
-        data = {
-            args: [ 'C:/sampleApp/sample.zip' ],
-            output: 'myOutput',
-        },
-        result = session.initialize(data);
-
-        //output should be set to bbwp location + outputFolder
-        expect(result.outputDir).toEqual(path.normalize(path.join(bbwpDir, "myOutput")));
-    });
-
-    describe("get params", function () {
-        beforeEach(function () {
-            delete require.cache[require.resolve(__dirname + "/../../../../../templates/project/cordova/lib/session")];
-            session = require(__dirname + "/../../../../../templates/project/cordova/lib/session");
-        });
-
-        it("get params from external file", function () {
-            var data = {
-                    args: [ 'C:/sampleApp/sample.zip' ],
-                    params: "params.json"
-                },
-                result;
-
-            spyOn(path, "resolve").andReturn(path.normalize(__dirname + "../../../params.json"));
-            spyOn(fs, "existsSync").andReturn(true);
-
-            result = session.initialize(data);
-
-            expect(result.getParams("blackberry-signer")).toEqual({
-                "-proxyhost": "abc.com",
-                "-proxyport": "80"
-            });
-        });
-
-        it("get params from non-existent file should throw error", function () {
-            var data = {
-                    args: [ 'C:/sampleApp/sample.zip' ],
-                    params: "blah.json",
-                    keystorepass: "test"
-                };
-
-            spyOn(fs, "existsSync").andReturn(false);
-
-            expect(function () {
-                session.initialize(data);
-            }).toThrow(localize.translate("EXCEPTION_PARAMS_FILE_NOT_FOUND", path.resolve("blah.json")));
-        });
-
-        it("get params from bad JSON file should throw error", function () {
-            var data = {
-                    args: [ 'C:/sampleApp/sample.zip' ],
-                    params: "params-bad.json"
-                },
-                result;
-
-            spyOn(path, "resolve").andReturn("test/params-bad.json");
-            spyOn(fs, "existsSync").andReturn(true);
-
-            expect(function () {
-                session.initialize(data);
-            }).toThrow(localize.translate("EXCEPTION_PARAMS_FILE_ERROR", path.resolve("blah.json")));
-        });
-    });
-
-    describe("when setting the log level", function () {
-        var logger = require(__dirname + "/../../../../../templates/project/cordova/lib/logger");
-
-        beforeEach(function () {
-            spyOn(logger, "level");
-        });
-
-        it("defaults to verbose with no args", function () {
-            session.initialize({args: []});
-            expect(logger.level).toHaveBeenCalledWith("verbose");
-        });
-
-        it("sets level to verbose", function () {
-            session.initialize({args: [], loglevel: 'verbose'});
-            expect(logger.level).toHaveBeenCalledWith("verbose");
-        });
-
-        it("sets level to warn", function () {
-            session.initialize({args: [], loglevel: 'warn'});
-            expect(logger.level).toHaveBeenCalledWith("warn");
-        });
-
-        it("sets level to error", function () {
-            session.initialize({args: [], loglevel: 'error'});
-            expect(logger.level).toHaveBeenCalledWith("error");
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/signing-helper.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/signing-helper.js b/blackberry10/bin/test/cordova/unit/spec/lib/signing-helper.js
deleted file mode 100644
index 8618f21..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/signing-helper.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var testData = require('./test-data'),
-    signingHelper = require(testData.libPath + '/signing-helper'),
-    localize = require(testData.libPath + '/localize'),
-    pkgrUtils = require(testData.libPath + "/packager-utils"),
-    conf = require(testData.libPath + "/conf"),
-    path = require('path'),
-    fs = require('fs'),
-    os = require('os'),
-    childProcess = require("child_process"),
-    properties = {
-        homepath: "",
-        homedrive: ""
-    },
-    session;
-
-describe("signing-helper", function () {
-
-    describe("Exec blackberry-signer", function () {
-        var stdoutOn = jasmine.createSpy("stdout on"),
-            stderrOn = jasmine.createSpy("stderr on");
-
-        beforeEach(function () {
-            session = testData.session;
-            session.keystore = "/blah/author.p12";
-            session.storepass = "123";
-            session.barPath = path.normalize("c:/%s/" + "Demo.bar");
-
-            spyOn(childProcess, "exec").andReturn({
-                stdout: {
-                    on: stdoutOn
-                },
-                stderr: {
-                    on: stderrOn
-                },
-                on: jasmine.createSpy("on").andCallFake(function (event, callback) {
-                    if (callback && typeof callback === "function") {
-                        callback(0);
-                    }
-                })
-            });
-        });
-
-        it("exec blackberry-signer without extra params", function () {
-            var callback = jasmine.createSpy("callback"),
-                cmd = "blackberry-signer";
-
-            session.getParams = jasmine.createSpy("session getParams").andReturn(null);
-            signingHelper.execSigner(session, "device", callback);
-            expect(childProcess.exec).toHaveBeenCalledWith([cmd, "-keystore", session.keystore, "-storepass", session.storepass, path.resolve("c:/device/Demo.bar")].join(" "), jasmine.any(Object), callback);
-            expect(stdoutOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
-            expect(stderrOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
-        });
-
-        it("exec blackberry-signer with extra params", function () {
-            var callback = jasmine.createSpy("callback"),
-                cmd = "blackberry-signer";
-
-            session.getParams = jasmine.createSpy("session getParams").andReturn({
-                "-proxyhost": "abc.com",
-                "-proxyport": "80"
-            });
-            signingHelper.execSigner(session, "device", callback);
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain(cmd);
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-keystore");
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain(session.keystore);
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-storepass");
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain(session.storepass);
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-proxyport");
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain("80");
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain("-proxyhost");
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain("abc.com");
-            expect(childProcess.exec.mostRecentCall.args[0]).toContain(path.resolve("c:/device/Demo.bar"));
-            expect(stdoutOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
-            expect(stderrOn).toHaveBeenCalledWith("data", pkgrUtils.handleProcessOutput);
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/signing-utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/signing-utils.js b/blackberry10/bin/test/cordova/unit/spec/lib/signing-utils.js
deleted file mode 100644
index 1ba5c01..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/signing-utils.js
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var testData = require('./test-data'),
-    signingUtils = require(testData.libPath + '/signing-utils'),
-    localize = require(testData.libPath + '/localize'),
-    pkgrUtils = require(testData.libPath + "/packager-utils"),
-    conf = require(testData.libPath + "/conf"),
-    path = require('path'),
-    fs = require('fs'),
-    os = require('os'),
-    childProcess = require("child_process"),
-    properties = {
-        homepath: "",
-        homedrive: ""
-    },
-    session;
-
-describe("signing-utils", function () {
-
-    describe("on windows", function () {
-
-        beforeEach(function () {
-
-            /* Preserve the value of the USERPROFILE environment
-             * variable if it is defined. If it is not defined, mark
-             * the variable for deletion after the test.*/
-            if (typeof process.env.USERPROFILE === 'undefined') {
-                properties.userprofile = "delete";
-            } else {
-                properties.userprofile = process.env.USERPROFILE;
-            }
-
-            spyOn(os, "type").andReturn("windows");
-        });
-
-        afterEach(function () {
-
-            /* Restore the value of the USERPROFILE environment
-             * variable if it is defined. If it is not defined, delete
-             * the property if it was defined in the test.*/
-            if (typeof process.env.USERPROFILE === 'string') {
-                if (properties.userprofile === 'delete') {
-                    delete process.env.USERPROFILE;
-                } else {
-                    process.env.USERPROFILE = properties.userprofile;
-                }
-            }
-        });
-
-        it("can find keys in Local Settings", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find bbidtoken.csk in Local Settings", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePathBBID();
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find barsigner.csk in Local Settings", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getCskPath();
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find barsigner.db in Local Settings", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getDbPath();
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find keys in AppData", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("\\AppData");
-        });
-
-        it("can find bbidtoken.csk in AppData", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePathBBID();
-            expect(result).toContain("\\AppData");
-        });
-
-        it("can find barsigner.csk in AppData", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getCskPath();
-            expect(result).toContain("\\AppData");
-        });
-
-        it("can find barsigner.db in AppData", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getDbPath();
-            expect(result).toContain("\\AppData");
-        });
-
-        it("can find keys in home path", function () {
-            process.env.USERPROFILE = "C:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (p) {
-                return p.indexOf("\\Users\\user") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("\\Users\\user");
-        });
-
-        it("can find keys on C drive", function () {
-            process.env.USERPROFILE = "C:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (p) {
-                return p.indexOf("C:") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("C:");
-        });
-
-        it("can find keys on a drive other than C", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("D:");
-        });
-
-        it("can find bbidtoken.csk on a drive other than C", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePathBBID();
-            expect(result).toContain("D:");
-        });
-
-        it("can find barsigner.csk on a drive other than C", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1;
-            });
-
-            var result = signingUtils.getCskPath();
-            expect(result).toContain("D:");
-        });
-
-        it("can find barsigner.db on a drive other than C", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1;
-            });
-
-            var result = signingUtils.getDbPath();
-            expect(result).toContain("D:");
-        });
-
-        it("can find keys in Local Settings on the correct drive", function () {
-            process.env.USERPROFILE = "C:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("C:") !== -1 &&
-                        path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("C:");
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find bbidtoken.csk in Local Settings on the correct drive", function () {
-            process.env.USERPROFILE = "C:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("C:") !== -1 &&
-                        path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePathBBID();
-            expect(result).toContain("C:");
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find barsigner.csk in Local Settings on the correct drive", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1 &&
-                        path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getCskPath();
-            expect(result).toContain("D:");
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find barsigner.db in Local Settings on the correct drive", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1 &&
-                        path.indexOf("\\Local Settings") !== -1;
-            });
-
-            var result = signingUtils.getDbPath();
-            expect(result).toContain("D:");
-            expect(result).toContain("\\Local Settings");
-        });
-
-        it("can find keys in AppData on the correct drive", function () {
-            process.env.USERPROFILE = "C:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("C:") !== -1 &&
-                        path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("C:");
-            expect(result).toContain("\\AppData");
-        });
-
-        it("can find bbidtoken.csk in AppData on the correct drive", function () {
-            process.env.USERPROFILE = "C:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("C:") !== -1 &&
-                        path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePathBBID();
-            expect(result).toContain("C:");
-            expect(result).toContain("\\AppData");
-        });
-
-        it("can find barsigner.csk in AppData on the correct drive", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1 &&
-                        path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getCskPath();
-            expect(result).toContain("D:");
-            expect(result).toContain("\\AppData");
-        });
-
-        it("can find barsigner.db in AppData on the correct drive", function () {
-            process.env.USERPROFILE = "D:\\Users\\user";
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("D:") !== -1 &&
-                        path.indexOf("\\AppData") !== -1;
-            });
-
-            var result = signingUtils.getDbPath();
-            expect(result).toContain("D:");
-            expect(result).toContain("\\AppData");
-        });
-
-        it("returns undefined when keys cannot be found", function () {
-            spyOn(fs, "existsSync").andReturn(false);
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toBeUndefined();
-        });
-
-        it("returns undefined when barsigner.csk cannot be found", function () {
-            spyOn(fs, "existsSync").andReturn(false);
-
-            var result = signingUtils.getCskPath();
-            expect(result).toBeUndefined();
-        });
-
-        it("returns undefined when barsigner.db cannot be found", function () {
-            spyOn(fs, "existsSync").andReturn(false);
-
-            var result = signingUtils.getDbPath();
-            expect(result).toBeUndefined();
-        });
-    });
-
-    describe("on mac", function () {
-
-        beforeEach(function () {
-            spyOn(os, "type").andReturn("darwin");
-        });
-
-        it("can find keys in the Library folder", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("/Library/Research In Motion/") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toContain("/Library/Research In Motion/");
-        });
-
-        it("can find bbidtoken.csk in the Library folder", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("/Library/Research In Motion/") !== -1;
-            });
-
-            var result = signingUtils.getKeyStorePathBBID();
-            expect(result).toContain("/Library/Research In Motion/");
-        });
-
-        it("can find barsigner.csk in the Library folder", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("/Library/Research In Motion/") !== -1;
-            });
-
-            var result = signingUtils.getCskPath();
-            expect(result).toContain("/Library/Research In Motion/");
-        });
-
-        it("can find barsigner.db in the Library folder", function () {
-
-            spyOn(fs, "existsSync").andCallFake(function (path) {
-                return path.indexOf("/Library/Research In Motion/") !== -1;
-            });
-
-            var result = signingUtils.getDbPath();
-            expect(result).toContain("/Library/Research In Motion/");
-        });
-
-        it("returns undefined when keys cannot be found", function () {
-
-            spyOn(fs, "existsSync").andReturn(false);
-
-            var result = signingUtils.getKeyStorePath();
-            expect(result).toBeUndefined();
-        });
-
-        it("returns undefined when barsigner.csk cannot be found", function () {
-
-            spyOn(fs, "existsSync").andReturn(false);
-
-            var result = signingUtils.getCskPath();
-            expect(result).toBeUndefined();
-        });
-
-        it("returns undefined when barsigner.db cannot be found", function () {
-
-            spyOn(fs, "existsSync").andReturn(false);
-
-            var result = signingUtils.getDbPath();
-            expect(result).toBeUndefined();
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/test-data.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/test-data.js b/blackberry10/bin/test/cordova/unit/spec/lib/test-data.js
deleted file mode 100644
index 11ec335..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/test-data.js
+++ /dev/null
@@ -1,87 +0,0 @@
-var path = require("path"),
-    outputDir = path.resolve("../packager.test"),
-    libPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    barConf = require(libPath + "/bar-conf"),
-    configPath = path.resolve("test") + "/config.xml";
-
-module.exports = {
-    libPath: libPath,
-    configPath: configPath,
-    session: {
-        "barPath": outputDir + "/%s/" + "Demo.bar",
-        "outputDir": outputDir,
-        "sourceDir": path.resolve(outputDir + "/src"),
-        "sourcePaths": {
-            "ROOT": path.resolve(outputDir + "/src"),
-            "CHROME": path.normalize(path.resolve(outputDir + "/src") + barConf.CHROME),
-            "LIB": path.normalize(path.resolve(outputDir + "/src") + barConf.LIB),
-            "UI": path.normalize(path.resolve(outputDir + "/src") + barConf.UI),
-            "EXT": path.normalize(path.resolve(outputDir + "/src") + barConf.EXT),
-            "PLUGINS": path.normalize(path.resolve(outputDir + "/src") + barConf.PLUGINS),
-            "JNEXT_PLUGINS": path.normalize(path.resolve(outputDir + "/src") + barConf.JNEXT_PLUGINS)
-        },
-        "archivePath": path.resolve("bin/test/cordova/unit/test.zip"),
-        "conf": require(path.resolve(libPath + "/conf")),
-        "targets": ["simulator"],
-        isSigningRequired: function () {
-            return false;
-        },
-        getParams: function () {
-            return null;
-        }
-    },
-    config: {
-        "id": 'Demo',
-        "name": { 'default': 'Demo' },
-        "version": '1.0.0',
-        "author": 'Research In Motion Ltd.',
-        "description": { 'default': 'This is a test!' },
-        "image": 'test.png',
-        "autoOrientation": true,
-        "theme": "default"
-    },
-    accessList: [{
-        uri: "http://google.com",
-        allowSubDomain: false,
-        features: [{
-            id: "blackberry.app",
-            required: true,
-            version: "1.0.0"
-        }, {
-            id: "blackberry.system",
-            required:  true,
-            version: "1.0.0"
-        }]
-    }, {
-        uri: "WIDGET_LOCAL",
-        allowSubDomain: false,
-        features: [{
-            id: "blackberry.system",
-            required: true,
-            version: "1.0.0"
-        }]
-    }],
-    xml2jsConfig: {
-        "@": {
-            "xmlns": " http://www.w3.org/ns/widgets",
-            "xmlns:rim": "http://www.blackberry.com/ns/widgets",
-            "version": "1.0.0",
-            "id": "myID",
-            "rim:header" : "RIM-Widget:rim/widget",
-            "rim:userAgent" : "A Test-User-Agent/(Blackberry-Agent)"
-        },
-        "name": "Demo",
-        "content": {
-            "@": {
-                "src": "local:///startPage.html"
-            }
-        },
-        "author": "Research In Motion Ltd.",
-        "license": {
-            "#": "Licensed under the Apache License, Version 2.0 (the \"License\"); #you may not use this file except in compliance with the License. #You may obtain a copy of the License at # #http://www.apache.org/licenses/LICENSE-2.0 # #Unless required by applicable law or agreed to in writing, software #distributed under the License is distributed on an \"AS IS\" BASIS, #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #See the License for the specific language governing permissions and limitations under the License.",
-            "@": {
-                "href": "http://www.apache.org/licenses/LICENSE-2.0"
-            }
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/test-utilities.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/test-utilities.js b/blackberry10/bin/test/cordova/unit/spec/lib/test-utilities.js
deleted file mode 100644
index 8b53c8e..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/test-utilities.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var xml2js = require("xml2js");
-
-function getObjectByProperty(array, propertyName, propertyValue) {
-    for (var i = 0; i < array.length; i++) {
-        if (propertyValue === array[i][propertyName]) {
-            return array[i];
-        }
-    }
-}
-
-module.exports = {
-    getAccessList: function (accessListArray, value) {
-        if (accessListArray[0].hasOwnProperty("uri") === true) {
-            return getObjectByProperty(accessListArray, "uri", value);
-        } else {
-            return getObjectByProperty(accessListArray, "origin", value);
-        }
-    },
-
-    getFeatureByID: function (featureArray, featureID) {
-        return getObjectByProperty(featureArray, "id", featureID);
-    },
-
-    mockResolve: function (path) {
-        //Mock resolve because of a weird issue where resolve would return an
-        //invalid path on Mac if it cannot find the directory (c:/ doesnt exist on mac)
-        spyOn(path, "resolve").andCallFake(function (to) {
-            if (arguments.length === 2) {
-                //Handle optional from attribute
-                return path.normalize(path.join(arguments[0], arguments[1]));
-            } else {
-                return path.normalize(to);
-            }
-        });
-    },
-
-    cloneObj: function (obj) {
-        var newObj = (obj instanceof Array) ? [] : {}, i;
-        /* jshint ignore:start */
-        for (i in obj) {
-            if (i === 'clone') continue;
-
-            if (obj[i] && typeof obj[i] === "object") {
-                newObj[i] = this.cloneObj(obj[i]);
-            } else {
-                newObj[i] = obj[i];
-            }
-        }
-        /* jshint ignore:end */
-
-        return newObj;
-    },
-
-    mockParsing: function (data, error) {
-        spyOn(xml2js, "Parser").andReturn({
-            parseString: function (fileData, callback) {
-                //call callback with no error and altered xml2jsConfig data
-                callback(error, data);
-            }
-        });
-    }
-};
-
-describe("test-utilities", function () {
-    var testUtilities = require("./test-utilities");
-
-    it("can clone objects using cloneObj", function () {
-        var obj = {
-                A: "A",
-                B: "B",
-                C: {
-                    CA: "CA",
-                    CB: "CB",
-                    CC: {
-                        CCA: "CCA"
-                    }
-                }
-            },
-            clonedObj = testUtilities.cloneObj(obj);
-
-        //not the same object
-        expect(clonedObj).not.toBe(obj);
-
-        //has the same data
-        expect(clonedObj).toEqual(obj);
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/test.zip
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/test.zip b/blackberry10/bin/test/cordova/unit/test.zip
deleted file mode 100644
index 8859a66..0000000
Binary files a/blackberry10/bin/test/cordova/unit/test.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/update
----------------------------------------------------------------------
diff --git a/blackberry10/bin/update b/blackberry10/bin/update
deleted file mode 100755
index 342984a..0000000
--- a/blackberry10/bin/update
+++ /dev/null
@@ -1,28 +0,0 @@
-#! /bin/bash
-<<COMMENT
-    Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-
-COMMENT
-# update a cordova/blackberry10 project
-#
-# USAGE
-#   ./update [projectpath]
-
-BIN_DIR=$(dirname "$0")
-source "$BIN_DIR/init"
-"$CORDOVA_NODE/node" "$BIN_DIR/lib/update.js" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/update.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/update.bat b/blackberry10/bin/update.bat
deleted file mode 100644
index 5a71671..0000000
--- a/blackberry10/bin/update.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\update.js" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/whereis.cmd
----------------------------------------------------------------------
diff --git a/blackberry10/bin/whereis.cmd b/blackberry10/bin/whereis.cmd
deleted file mode 100644
index 372bcef..0000000
--- a/blackberry10/bin/whereis.cmd
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-setlocal enabledelayedexpansion
-set var_a=%1
-call :sub %var_a%
-if exist %var_b% if not exist %var_b%\nul goto exit
-for %%i in (.com .exe .cmd .bat) do (
-  call :sub %var_a%%%i
-  if exist !var_b! goto exit
-)
-echo INFO: could not find files for the given pattern(s) 1>&2
-exit /b 1
-
-:sub
-set var_b=%~$PATH:1
-goto :EOF
-
-:exit
-echo %var_b%
-exit /b 0

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/bootstrap/index.html
----------------------------------------------------------------------
diff --git a/blackberry10/framework/bootstrap/index.html b/blackberry10/framework/bootstrap/index.html
deleted file mode 100644
index df2a3c3..0000000
--- a/blackberry10/framework/bootstrap/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
--->
-
-<!DOCTYPE HTML>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="user-scalable=no, target-densitydpi=device-dpi, width=device-width">
-    <script src="./require.js"></script>
-    <script src="platform:///webplatform.js"></script>
-    <script src="./frameworkModules.js"></script>
-    <script>
-        function start() {
-            //Must load jnext first, as there seemed to be a race condition for if it was defined before it was used
-            require("lib/jnext.js");
-            require(frameworkModules, function () {
-                require('lib/framework').start();
-            });
-        }
-    </script>
-  </head>
-  <body onload="start();" aria-hidden="true">
-  </body>
-</html>


[08/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/package.json b/blackberry10/node_modules/prompt/node_modules/winston/package.json
deleted file mode 100644
index e6dff6d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "name": "winston",
-  "description": "A multi-transport async logging library for Node.js",
-  "version": "0.6.2",
-  "author": {
-    "name": "Nodejitsu Inc.",
-    "email": "info@nodejitsu.com"
-  },
-  "maintainers": [
-    {
-      "name": "indexzero",
-      "email": "charlie@nodejitsu.com"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/flatiron/winston.git"
-  },
-  "keywords": [
-    "logging",
-    "sysadmin",
-    "tools"
-  ],
-  "dependencies": {
-    "async": "0.1.x",
-    "colors": "0.x.x",
-    "cycle": "1.0.x",
-    "eyes": "0.1.x",
-    "pkginfo": "0.2.x",
-    "request": "2.9.x",
-    "stack-trace": "0.0.x"
-  },
-  "devDependencies": {
-    "vows": "0.6.x"
-  },
-  "main": "./lib/winston",
-  "scripts": {
-    "test": "vows --spec --isolate"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
-  },
-  "readme": "# winston [![Build Status](https://secure.travis-ci.org/flatiron/winston.png)](http://travis-ci.org/flatiron/winston)\n\nA multi-transport async logging library for node.js. <span style=\"font-size:28px; font-weight:bold;\">&quot;CHILL WINSTON! ... I put it in the logs.&quot;</span>\n\n## Motivation\nWinston is designed to be a simple and universal logging library with support for multiple transports. A transport is essentially a storage device for your logs. Each instance of a winston logger can have multiple transports configured at different levels. For example, one may want error logs to be stored in a persistent remote location (like a database), but all logs output to the console or a local file.\n\nThere also seemed to be a lot of logging libraries out there that coupled their implementation of logging (i.e. how the logs are stored / indexed) to the API that they exposed to the programmer. This library aims to decouple those parts of the process to make it more f
 lexible and extensible.\n\n## Usage\nThere are two different ways to use winston: directly via the default logger, or by instantiating your own Logger. The former is merely intended to be a convenient shared logger to use throughout your application if you so choose.\n\n* [Logging](#logging)\n  * [Using the Default Logger](#using-the-default-logger)\n  * [Instantiating your own Logger](#instantiating-your-own-logger)\n  * [Logging with Metadata](#logging-with-metadata)\n* [Transports](https://github.com/flatiron/winston/blob/master/docs/transports.md)\n* [Profiling](#profiling)\n* [Streaming Logs](#streaming-logs)\n* [Querying Logs](#querying-logs)  \n* [Exceptions](#exceptions)\n  * [Handling Uncaught Exceptions with winston](#handling-uncaught-exceptions-with-winston)\n  * [To Exit or Not to Exit](#to-exit-or-not-to-exit)\n* [Logging Levels](#logging-levels)\n  * [Using Logging Levels](#using-logging-levels)\n  * [Using Custom Logging Levels](#using-custom-logging-levels)\n* [Furt
 her Reading](#further-reading)\n  * [Events and Callbacks in Winston](#events-and-callbacks-in-winston)\n  * [Working with multiple Loggers in winston](#working-with-multiple-loggers-in-winston)\n  * [Using winston in a CLI tool](#using-winston-in-a-cli-tool)\n  * [Extending another object with Logging](#extending-another-object-with-logging)\n  * [Adding Custom Transports](#adding-custom-transports)\n\n## Logging\n\n### Using the Default Logger\nThe default logger is accessible through the winston module directly. Any method that you could call on an instance of a logger is available on the default logger:\n\n``` js\n  var winston = require('winston');\n\n  winston.log('info', 'Hello distributed log files!');\n  winston.info('Hello again distributed logs');\n```\n\nBy default, only the Console transport is set on the default logger. You can add or remove transports via the add() and remove() methods:\n\n``` js\n  winston.add(winston.transports.File, { filename: 'somefile.log' });\n
   winston.remove(winston.transports.Console);\n```\n\nFor more documenation about working with each individual transport supported by Winston see the \"Working with Transports\" section below.\n\n### Instantiating your own Logger\nIf you would prefer to manage the object lifetime of loggers you are free to instantiate them yourself:\n\n``` js\n  var logger = new (winston.Logger)({\n    transports: [\n      new (winston.transports.Console)(),\n      new (winston.transports.File)({ filename: 'somefile.log' })\n    ]\n  });\n```\n\nYou can work with this logger in the same way that you work with the default logger:\n\n``` js\n  //\n  // Logging\n  //\n  logger.log('info', 'Hello distributed log files!');\n  logger.info('Hello again distributed logs');\n\n  //\n  // Adding / Removing Transports\n  //   (Yes It's chainable)\n  //\n  logger.add(winston.transports.File)\n        .remove(winston.transports.Console);\n```\n\n### Logging with Metadata\nIn addition to logging string messages, 
 winston will also optionally log additional JSON metadata objects. Adding metadata is simple:\n\n``` js\n  winston.log('info', 'Test Log Message', { anything: 'This is metadata' });\n```\n\nThe way these objects is stored varies from transport to transport (to best support the storage mechanisms offered). Here's a quick summary of how each transports handles metadata:\n\n1. __Console:__ Logged via util.inspect(meta)\n2. __File:__ Logged via util.inspect(meta)\n\n## Profiling\nIn addition to logging messages and metadata, winston also has a simple profiling mechanism implemented for any logger:\n\n``` js\n  //\n  // Start profile of 'test'\n  // Remark: Consider using Date.now() with async operations\n  //\n  winston.profile('test');\n\n  setTimeout(function () {\n    //\n    // Stop profile of 'test'. Logging will now take place:\n    //   \"17 Jan 21:00:00 - info: test duration=1000ms\"\n    //\n    winston.profile('test');\n  }, 1000);\n```\n\nAll profile messages are set to the '
 info' by default and both message and metadata are optional There are no plans in the Roadmap to make this configurable, but I'm open to suggestions / issues.\n\n\n## Querying Logs\nWinston supports querying of logs with Loggly-like options.\nSpecifically: `File`, `Couchdb`, `Redis`, `Loggly`, `Nssocket`, and `Http`.\n\n``` js\n  var options = {\n    from: new Date - 24 * 60 * 60 * 1000,\n    until: new Date\n  };\n\n  //\n  // Find items logged between today and yesterday.\n  //\n  winston.query(options, function (err, results) {\n    if (err) {\n      throw err;\n    }\n    \n    console.log(results);\n  });\n```\n\n## Streaming Logs\nStreaming allows you to stream your logs back from your chosen transport.\n\n``` js\n  //\n  // Start at the end.\n  //\n  winston.stream({ start: -1 }).on('log', function(log) {\n    console.log(log);\n  });\n```\n\n## Exceptions\n\n### Handling Uncaught Exceptions with winston\n\nWith `winston`, it is possible to catch and log `uncaughtException` e
 vents from your process. There are two distinct ways of enabling this functionality either through the default winston logger or your own logger instance.\n\nIf you want to use this feature with the default logger simply call `.handleExceptions()` with a transport instance.\n\n``` js\n  //\n  // You can add a separate exception logger by passing it to `.handleExceptions`\n  //\n  winston.handleExceptions(new winston.transports.File({ filename: 'path/to/exceptions.log' }))\n\n  //\n  // Alternatively you can set `.handleExceptions` to true when adding transports to winston\n  //\n  winston.add(winston.transports.File, {\n    filename: 'path/to/all-logs.log',\n    handleExceptions: true\n  });\n```\n\n### To Exit or Not to Exit\n\nby default, winston will exit after logging an uncaughtException. if this is not the behavior you want,\nset `exitOnError = false`\n\n``` js\n  var logger = new (winston.Logger)({ exitOnError: false });\n\n  //\n  // or, like this:\n  //\n  logger.exitOnErro
 r = false;\n```\n\nWhen working with custom logger instances, you can pass in separate transports to the `exceptionHandlers` property or set `.handleExceptions` on any transport.\n\nExample 1\n\n``` js\n  var logger = new (winston.Logger)({\n    transports: [\n      new winston.transports.File({ filename: 'path/to/all-logs.log' })\n    ]\n    exceptionHandlers: [\n      new winston.transports.File({ filename: 'path/to/exceptions.log' })\n    ]\n  });\n```\n\nExample 2\n\n```\nvar logger = new winston.Logger({\n  transports: [\n    new winston.transports.Console({\n      handleExceptions: true,\n      json: true\n    })\n  ],\n  exitOnError: false\n});\n```\n\nThe `exitOnError` option can also be a function to prevent exit on only certain types of errors:\n\n``` js\n  function ignoreEpipe(err) {\n    return err.code !== 'EPIPE';\n  }\n\n  var logger = new (winston.Logger)({ exitOnError: ignoreEpipe });\n\n  //\n  // or, like this:\n  //\n  logger.exitOnError = ignoreEpipe;\n```\n\n##
  Logging Levels\n\n### Using Logging Levels\nSetting the level for your logging message can be accomplished in one of two ways. You can pass a string representing the logging level to the log() method or use the level specified methods defined on every winston Logger.\n\n``` js\n  //\n  // Any logger instance\n  //\n  logger.log('info', \"127.0.0.1 - there's no place like home\");\n  logger.log('warn', \"127.0.0.1 - there's no place like home\");\n  logger.log('error', \"127.0.0.1 - there's no place like home\");\n  logger.info(\"127.0.0.1 - there's no place like home\");\n  logger.warn(\"127.0.0.1 - there's no place like home\");\n  logger.error(\"127.0.0.1 - there's no place like home\");\n\n  //\n  // Default logger\n  //\n  winston.log('info', \"127.0.0.1 - there's no place like home\");\n  winston.info(\"127.0.0.1 - there's no place like home\");\n```\n\nWinston allows you to set a `level` on each transport that specifies the level of messages this transport should log. For exa
 mple, you could log only errors to the console, with the full logs in a file:\n\n``` js\n  var logger = new (winston.Logger)({\n    transports: [\n      new (winston.transports.Console)({ level: 'error' }),\n      new (winston.transports.File)({ filename: 'somefile.log' })\n    ]\n  });\n```\n\nAs of 0.2.0, winston supports customizable logging levels, defaulting to [npm][0] style logging levels. Changing logging levels is easy:\n\n``` js\n  //\n  // Change levels on the default winston logger\n  //\n  winston.setLevels(winston.config.syslog.levels);\n\n  //\n  // Change levels on an instance of a logger\n  //\n  logger.setLevels(winston.config.syslog.levels);\n```\n\nCalling `.setLevels` on a logger will remove all of the previous helper methods for the old levels and define helper methods for the new levels. Thus, you should be careful about the logging statements you use when changing levels. For example, if you ran this code after changing to the syslog levels:\n\n``` js\n  //\n
   // Logger does not have 'silly' defined since that level is not in the syslog levels\n  //\n  logger.silly('some silly message');\n```\n\n### Using Custom Logging Levels\nIn addition to the predefined `npm` and `syslog` levels available in Winston, you can also choose to define your own:\n\n``` js\n  var myCustomLevels = {\n    levels: {\n      foo: 0,\n      bar: 1,\n      baz: 2,\n      foobar: 3\n    },\n    colors: {\n      foo: 'blue',\n      bar: 'green',\n      baz: 'yellow',\n      foobar: 'red'\n    }\n  };\n\n  var customLevelLogger = new (winston.Logger)({ levels: myCustomLevels.levels });\n  customLevelLogger.foobar('some foobar level-ed message');\n```\n\nAlthough there is slight repetition in this data structure, it enables simple encapsulation if you not to have colors. If you do wish to have colors, in addition to passing the levels to the Logger itself, you must make winston aware of them:\n\n``` js\n  //\n  // Make winston aware of these colors\n  //\n  winston.a
 ddColors(myCustomLevels.colors);\n```\n\nThis enables transports with the 'colorize' option set to appropriately color the output of custom levels.\n\n## Further Reading\n\n### Events and Callbacks in Winston\nEach instance of winston.Logger is also an instance of an [EventEmitter][1]. A log event will be raised each time a transport successfully logs a message:\n\n``` js\n  logger.on('logging', function (transport, level, msg, meta) {\n    // [msg] and [meta] have now been logged at [level] to [transport]\n  });\n\n  logger.info('CHILL WINSTON!', { seriously: true });\n```\n\nIt is also worth mentioning that the logger also emits an 'error' event which you should handle or suppress if you don't want unhandled exceptions:\n\n``` js\n  //\n  // Handle errors\n  //\n  logger.on('error', function (err) { /* Do Something */ });\n\n  //\n  // Or just suppress them.\n  //\n  logger.emitErrs = false;\n```\n\nEvery logging method described in the previous section also takes an optional call
 back which will be called only when all of the transports have logged the specified message.\n\n``` js\n  logger.info('CHILL WINSTON!', { seriously: true }, function (err, level, msg, meta) {\n    // [msg] and [meta] have now been logged at [level] to **every** transport.\n  });\n```\n\n### Working with multiple Loggers in winston\n\nOften in larger, more complex applications it is necessary to have multiple logger instances with different settings. Each logger is responsible for a different feature area (or category). This is exposed in `winston` in two ways: through `winston.loggers` and instances of `winston.Container`. In fact, `winston.loggers` is just a predefined instance of `winston.Container`:\n\n``` js\n  var winston = require('winston');\n\n  //\n  // Configure the logger for `category1`\n  //\n  winston.loggers.add('category1', {\n    console: {\n      level: 'silly',\n      colorize: 'true'\n    },\n    file: {\n      filename: '/path/to/some/file'\n    }\n  });\n\n  //
 \n  // Configure the logger for `category2`\n  //\n  winston.loggers.add('category2', {\n    couchdb: {\n      host: '127.0.0.1',\n      port: 5984\n    }\n  });\n```\n\nNow that your loggers are setup you can require winston _in any file in your application_ and access these pre-configured loggers:\n\n``` js\n  var winston = require('winston');\n\n  //\n  // Grab your preconfigured logger\n  //\n  var category1 = winston.loggers.get('category1');\n\n  category1.info('logging from your IoC container-based logger');\n```\n\nIf you prefer to manage the `Container` yourself you can simply instantiate one:\n\n``` js\n  var winston = require('winston'),\n      container = new winston.Container();\n\n  container.add('category1', {\n    console: {\n      level: 'silly',\n      colorize: 'true'\n    },\n    file: {\n      filename: '/path/to/some/file'\n    }\n  });\n```\n\n### Sharing transports between Loggers in winston\n\n``` js\n  var winston = require('winston');\n\n  //\n  // Setup t
 ransports to be shared across all loggers\n  // in three ways:\n  //\n  // 1. By setting it on the default Container\n  // 2. By passing `transports` into the constructor function of winston.Container\n  // 3. By passing `transports` into the `.get()` or `.add()` methods\n  //\n\n  //\n  // 1. By setting it on the default Container\n  //\n  winston.loggers.options.transports = [\n    // Setup your shared transports here\n  ];\n\n  //\n  // 2. By passing `transports` into the constructor function of winston.Container\n  //\n  var container = new winston.Container({\n    transports: [\n      // Setup your shared transports here\n    ]\n  });\n\n  //\n  // 3. By passing `transports` into the `.get()` or `.add()` methods\n  //\n  winston.loggers.add('some-category', {\n    transports: [\n      // Setup your shared transports here\n    ]\n  });\n\n  container.add('some-category', {\n    transports: [\n      // Setup your shared transports here\n    ]\n  });\n```\n\n### Using winston in a
  CLI tool\nA common use-case for logging is output to a CLI tool. Winston has a special helper method which will pretty print output from your CLI tool. Here's an example from the [require-analyzer][2] written by [Nodejitsu][3]:\n\n```\n  info:   require-analyzer starting in /Users/Charlie/Nodejitsu/require-analyzer\n  info:   Found existing dependencies\n  data:   {\n  data:     colors: '0.x.x',\n  data:     eyes: '0.1.x',\n  data:     findit: '0.0.x',\n  data:     npm: '1.0.x',\n  data:     optimist: '0.2.x',\n  data:     semver: '1.0.x',\n  data:     winston: '0.2.x'\n  data:   }\n  info:   Analyzing dependencies...\n  info:   Done analyzing raw dependencies\n  info:   Retrieved packages from npm\n  warn:   No additional dependencies found\n```\n\nConfiguring output for this style is easy, just use the `.cli()` method on `winston` or an instance of `winston.Logger`:\n\n``` js\n  var winston = require('winston');\n\n  //\n  // Configure CLI output on the default logger\n  //\n  wi
 nston.cli();\n\n  //\n  // Configure CLI on an instance of winston.Logger\n  //\n  var logger = new winston.Logger({\n    transports: [\n      new (winston.transports.Console)()\n    ]\n  });\n\n  logger.cli();\n```\n\n### Extending another object with Logging\nOften in a given code base with lots of Loggers it is useful to add logging methods a different object so that these methods can be called with less syntax. Winston exposes this functionality via the 'extend' method:\n\n``` js\n  var myObject = {};\n\n  logger.extend(myObject);\n\n  //\n  // You can now call logger methods on 'myObject'\n  //\n  myObject.info('127.0.0.1 - there's no place like home');\n```\n\n## Working with Transports\nRight now there are four transports supported by winston core. If you have a transport you would like to add either open an issue or fork and submit a pull request. Commits are welcome, but I'll give you extra street cred if you __add tests too :D__\n   \n1. __Console:__ Output to the terminal
 \n2. __Files:__ Append to a file\n3. __Loggly:__ Log to Logging-as-a-Service platform Loggly\n\n### Console Transport\n``` js\n  winston.add(winston.transports.Console, options)\n```\n\nThe Console transport takes two simple options:\n\n* __level:__ Level of messages that this transport should log (default 'info').\n* __silent:__ Boolean flag indicating whether to suppress output (default false).\n* __colorize:__ Boolean flag indicating if we should colorize output (default false).\n* __timestamp:__ Boolean flag indicating if we should prepend output with timestamps (default false). If function is specified, its return value will be used instead of timestamps.\n\n*Metadata:* Logged via util.inspect(meta);\n\n### File Transport\n``` js\n  winston.add(winston.transports.File, options)\n```\n\nThe File transport should really be the 'Stream' transport since it will accept any [WritableStream][14]. It is named such because it will also accept filenames via the 'filename' option:\n\n* __
 level:__ Level of messages that this transport should log.\n* __silent:__ Boolean flag indicating whether to suppress output.\n* __colorize:__ Boolean flag indicating if we should colorize output.\n* __timestamp:__ Boolean flag indicating if we should prepend output with timestamps (default true). If function is specified, its return value will be used instead of timestamps.\n* __filename:__ The filename of the logfile to write output to.\n* __maxsize:__ Max size in bytes of the logfile, if the size is exceeded then a new file is created.\n* __maxFiles:__ Limit the number of files created when the size of the logfile is exceeded.\n* __stream:__ The WriteableStream to write output to.\n* __json:__ If true, messages will be logged as JSON (default true).\n\n*Metadata:* Logged via util.inspect(meta);\n\n### Loggly Transport\n``` js\n  var Loggly = require('winston-loggly').Loggly\n  winston.add(Loggly, options);\n```\n\nThe Loggly transport is based on [Nodejitsu's][5] [node-loggly][6]
  implementation of the [Loggly][7] API. If you haven't heard of Loggly before, you should probably read their [value proposition][8]. The Loggly transport takes the following options. Either 'inputToken' or 'inputName' is required:\n\n* __level:__ Level of messages that this transport should log. \n* __subdomain:__ The subdomain of your Loggly account. *[required]*\n* __auth__: The authentication information for your Loggly account. *[required with inputName]*\n* __inputName:__ The name of the input this instance should log to.\n* __inputToken:__ The input token of the input this instance should log to.\n* __json:__ If true, messages will be sent to Loggly as JSON.\n\n*Metadata:* Logged in suggested [Loggly format][2]\n\n### Riak Transport\nAs of `0.3.0` the Riak transport has been broken out into a new module: [winston-riak][17]. Using it is just as easy:\n\n``` js\n  var Riak = require('winston-riak').Riak;\n  winston.add(Riak, options);\n```\n\nIn addition to the options accepted
  by the [riak-js][3] [client][4], the Riak transport also accepts the following options. It is worth noting that the riak-js debug option is set to *false* by default:\n\n* __level:__ Level of messages that this transport should log.\n* __bucket:__ The name of the Riak bucket you wish your logs to be in or a function to generate bucket names dynamically.\n\n``` js\n  // Use a single bucket for all your logs\n  var singleBucketTransport = new (Riak)({ bucket: 'some-logs-go-here' });\n  \n  // Generate a dynamic bucket based on the date and level\n  var dynamicBucketTransport = new (Riak)({\n    bucket: function (level, msg, meta, now) {\n      var d = new Date(now);\n      return level + [d.getDate(), d.getMonth(), d.getFullYear()].join('-');\n    }\n  });\n```\n\n*Metadata:* Logged as JSON literal in Riak\n\n### MongoDB Transport\nAs of `0.3.0` the MongoDB transport has been broken out into a new module: [winston-mongodb][16]. Using it is just as easy:\n\n``` js\n  var MongoDB = req
 uire('winston-mongodb').MongoDB;\n  winston.add(MongoDB, options);\n```\n\nThe MongoDB transport takes the following options. 'db' is required:\n\n* __level:__ Level of messages that this transport should log. \n* __silent:__ Boolean flag indicating whether to suppress output.\n* __db:__ The name of the database you want to log to. *[required]*\n* __collection__: The name of the collection you want to store log messages in, defaults to 'log'.\n* __safe:__ Boolean indicating if you want eventual consistency on your log messages, if set to true it requires an extra round trip to the server to ensure the write was committed, defaults to true.\n* __host:__ The host running MongoDB, defaults to localhost.\n* __port:__ The port on the host that MongoDB is running on, defaults to MongoDB's default port.\n\n*Metadata:* Logged as a native JSON object.\n\n### SimpleDB Transport\n\nThe [winston-simpledb][18] transport is just as easy:\n\n``` js\n  var SimpleDB = require('winston-simpledb').Sim
 pleDB;\n  winston.add(SimpleDB, options);\n```\n\nThe SimpleDB transport takes the following options. All items marked with an asterisk are required:\n\n* __awsAccessKey__:* your AWS Access Key\n* __secretAccessKey__:* your AWS Secret Access Key\n* __awsAccountId__:* your AWS Account Id\n* __domainName__:* a string or function that returns the domain name to log to\n* __region__:* the region your domain resides in\n* __itemName__: a string ('uuid', 'epoch', 'timestamp') or function that returns the item name to log\n\n*Metadata:* Logged as a native JSON object to the 'meta' attribute of the item.\n\n### Mail Transport\n\nThe [winston-mail][19] is an email transport:\n\n``` js\n  var Mail = require('winston-mail').Mail;\n  winston.add(Mail, options);\n```\n\nThe Mail transport uses [emailjs](https://github.com/eleith/emailjs) behind the scenes.  Options are the following:\n\n* __to:__ The address(es) you want to send to. *[required]*\n* __from:__ The address you want to send from. (d
 efault: `winston@[server-host-name]`)\n* __host:__ SMTP server hostname (default: localhost)\n* __port:__ SMTP port (default: 587 or 25)\n* __username__ User for server auth\n* __password__ Password for server auth\n* __ssl:__ Use SSL (boolean or object { key, ca, cert })\n* __tls:__ Boolean (if true, use starttls)\n* __level:__ Level of messages that this transport should log. \n* __silent:__ Boolean flag indicating whether to suppress output.\n\n*Metadata:* Stringified as JSON in email.\n\n### Amazon SNS (Simple Notification System) Transport\n\nThe [winston-sns][21] transport uses amazon SNS to send emails, texts, or a bunch of other notifications.\n\n``` js\n  require('winston-sns').SNS;\n  winston.add(winston.transports.SNS, options);\n```\n\nOptions:\n\n* __aws_key:__ Your Amazon Web Services Key. *[required]*\n* __aws_secret:__ Your Amazon Web Services Secret. *[required]*\n* __subscriber:__ Subscriber number - found in your SNS AWS Console, after clicking on a topic. Same as
  AWS Account ID. *[required]*\n* __topic_arn:__ Also found in SNS AWS Console - listed under a topic as Topic ARN. *[required]*\n* __region:__ AWS Region to use. Can be one of: `us-east-1`,`us-west-1`,`eu-west-1`,`ap-southeast-1`,`ap-northeast-1`,`us-gov-west-1`,`sa-east-1`. (default: `us-east-1`)\n* __subject:__ Subject for notifications. (default: \"Winston Error Report\")\n* __message:__ Message of notifications. Uses placeholders for level (%l), error message (%e), and metadata (%m). (default: \"Level '%l' Error:\\n%e\\n\\nMetadata:\\n%m\")\n* __level:__ lowest level this transport will log. (default: `info`)\n\n### Graylog2 Transport\n\n[winston-graylog2][22] is a Graylog2 transport:\n\n``` js\n  var Graylog2 = require('winston-graylog2').Graylog2;\n  winston.add(Graylog2, options);\n```\n\nThe Graylog2 transport connects to a Graylog2 server over UDP using the following options:\n\n* __level:__ Level of messages this transport should log. (default: info)\n* __silent:__ Boolean
  flag indicating whether to suppress output. (default: false)\n\n* __graylogHost:__ IP address or hostname of the graylog2 server. (default: localhost)\n* __graylogPort:__ Port to send messages to on the graylog2 server. (default: 12201)\n* __graylogHostname:__ The hostname associated with graylog2 messages. (default: require('os').hostname())\n* __graylogFacility:__ The graylog2 facility to send log messages.. (default: nodejs)\n\n*Metadata:* Stringified as JSON in the full message GELF field.\n\n### Adding Custom Transports\nAdding a custom transport (say for one of the datastore on the Roadmap) is actually pretty easy. All you need to do is accept a couple of options, set a name, implement a log() method, and add it to the set of transports exposed by winston.\n\n``` js\n  var util = require('util'),\n      winston = require('winston');\n\n  var CustomLogger = winston.transports.CustomerLogger = function (options) {\n    //\n    // Name this logger\n    //\n    this.name = 'custo
 mLogger';\n\n    //\n    // Set the level from your options\n    //\n    this.level = options.level || 'info';\n\n    //\n    // Configure your storage backing as you see fit\n    //\n  };\n\n  //\n  // Inherit from `winston.Transport` so you can take advantage\n  // of the base functionality and `.handleExceptions()`.\n  //\n  util.inherits(CustomLogger, winston.Transport);\n\n  CustomLogger.prototype.log = function (level, msg, meta, callback) {\n    //\n    // Store this message and metadata, maybe use some custom logic\n    // then callback indicating success.\n    //\n    callback(null, true);\n  };\n```\n\n### Inspirations\n1. [npm][0]\n2. [log.js][4]\n3. [socket.io][5]\n4. [node-rlog][6]\n5. [BigBrother][7]\n6. [Loggly][8]\n\n## Installation\n\n### Installing npm (node package manager)\n```\n  curl http://npmjs.org/install.sh | sh\n```\n\n### Installing winston\n```\n  [sudo] npm install winston\n```\n\n## Run Tests\nAll of the winston tests are written in [vows][9], and desi
 gned to be run with npm. \n\n``` bash\n  $ npm test\n```\n\n#### Author: [Charlie Robbins](http://twitter.com/indexzero)\n#### Contributors: [Matthew Bergman](http://github.com/fotoverite), [Marak Squires](http://github.com/marak)\n\n[0]: https://github.com/isaacs/npm/blob/master/lib/utils/log.js\n[1]: http://nodejs.org/docs/v0.3.5/api/events.html#events.EventEmitter\n[2]: http://github.com/nodejitsu/require-analyzer\n[3]: http://nodejitsu.com\n[4]: https://github.com/visionmedia/log.js\n[5]: http://socket.io\n[6]: https://github.com/jbrisbin/node-rlog\n[7]: https://github.com/feisty/BigBrother\n[8]: http://loggly.com\n[9]: http://vowsjs.org\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/flatiron/winston/issues"
-  },
-  "_id": "winston@0.6.2",
-  "_from": "winston@0.6.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/cli-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/cli-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/cli-test.js
deleted file mode 100644
index 365fba3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/cli-test.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * cli-test.js: Tests for the cli levels available in winston.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var path = require('path'),
-    vows = require('vows'),
-    assert = require('assert'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers');
-
-vows.describe('winston/logger/cli').addBatch({
-  "When an instance of winston.Logger": {
-    topic: function () {
-      return new winston.Logger({
-        transports: [
-          new winston.transports.Console()
-        ]
-      })
-    },
-    "the cli() method": {
-      "should set the appropriate values on the logger": function (logger) {
-        logger.cli();
-        assert.isTrue(logger.padLevels);
-        assert.isTrue(logger.transports.console.colorize);
-        assert.isFalse(logger.transports.console.timestamp);
-        Object.keys(winston.config.cli.levels).forEach(function (level) {
-          assert.isNumber(logger.levels[level]);
-        });
-        
-        Object.keys(winston.config.cli.colors).forEach(function (color) {
-          assert.isString(winston.config.allColors[color]);
-        });
-      }
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/container-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/container-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/container-test.js
deleted file mode 100644
index 2fcc26a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/container-test.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * container-test.js: Tests for the Container object
- *
- * (C) 2011 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    fs = require('fs'),
-    http = require('http'),
-    path = require('path'),
-    vows = require('vows'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers');
-
-vows.describe('winston/container').addBatch({
-  "An instance of winston.Container": {
-    topic: new winston.Container(),
-    "the add() method": {
-      topic: function (container) {
-        return container.add('default-test');
-      },
-      "should correctly instantiate a Logger": function (logger) {
-        assert.instanceOf(logger, winston.Logger);
-      },
-      "the get() method": {
-        topic: function (logger, container) {
-          this.callback.apply(this, arguments);
-        },
-        "should respond with the logger previously created": function (existing, container) {
-          var logger = container.get('default-test');
-          assert.isTrue(existing === logger);
-        }
-      },
-      "the has() method": {
-        topic: function (logger, container) {
-          this.callback.apply(this, arguments);
-        },
-        "should indicate `default-test` logger exists": function (existing, container) {
-          assert.isTrue(container.has('default-test'));
-        },
-        "should indicate `not-has` logger doesnt exists": function (existing, container) {
-          assert.isFalse(container.has('not-has'));
-        }
-      },
-      "the close() method": {
-        topic: function (logger, container) {
-          this.callback.apply(this, arguments);
-        },
-        "should remove the specified logger": function (logger, container) {
-          container.close('default-test');
-          assert.isTrue(!container.loggers['default-test']);
-        }
-      }
-    }
-  },
-  "An instance of winston.Container with explicit transports": {
-    topic: function () {
-      this.port = 9412;
-      this.transports = [
-        new winston.transports.Webhook({
-          port: this.port
-        })
-      ];
-      
-      this.container = new winston.Container({
-        transports: this.transports
-      });
-      
-      return null;
-    },
-    "the get() method": {
-      topic: function (container) {
-        var server = http.createServer(function (req, res) {
-          res.end();
-        });
-
-        server.listen(this.port, this.callback.bind(this, null));
-      },
-      "should add the logger correctly": function () {
-        this.someLogger = this.container.get('some-logger');
-        assert.isObject(this.someLogger.transports);
-        assert.instanceOf(this.someLogger.transports['webhook'], winston.transports.Webhook);
-        assert.strictEqual(this.someLogger.transports['webhook'], this.transports[0]);
-      },
-      "a second call to get()": {
-        "should respond with the same transport object": function () {
-          this.someOtherLogger = this.container.get('some-other-logger');
-
-          assert.isObject(this.someOtherLogger.transports);
-          assert.instanceOf(this.someOtherLogger.transports['webhook'], winston.transports.Webhook);
-          assert.strictEqual(this.someOtherLogger.transports['webhook'], this.transports[0]);
-          assert.strictEqual(this.someOtherLogger.transports['webhook'], this.someLogger.transports['webhook']);
-        }
-      }
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/custom-timestamp-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/custom-timestamp-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/custom-timestamp-test.js
deleted file mode 100644
index efdc40f..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/custom-timestamp-test.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * custom-timestamp-test.js: Test function as timestamp option for transport `{ timestamp: function () {} }`
- *
- * (C) 2011 Charlie Robbins, Tom Shinnick
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    events = require('events'),
-    fs = require('fs'),
-    path = require('path'),
-    vows = require('vows'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers');
-
-function assertTimestamp (basename, options) {
-  var filename = path.join(__dirname, 'fixtures', 'logs', basename + '.log');
-  
-  try { fs.unlinkSync(filename) }
-  catch (ex) { }
-  
-  return {
-    topic: function () {
-      options.filename = filename;
-      var transport = new (winston.transports.File)(options);
-
-      // We must wait until transport file has emitted the 'flush' 
-      // event to be sure the file has been created and written
-      transport.once('flush', this.callback.bind(this, null, filename));
-      transport.log('info', 'When a fake tree falls in the forest...', null, function () {});
-    },
-    "should log with the appropriate timestamp": function (_, filename) {
-      var data = fs.readFileSync(filename, 'utf8');
-      assert.isNotNull(data.match(options.pattern));
-    }
-  }
-}
-
-vows.describe('winston/transport/timestamp').addBatch({
-  "When timestamp option is used": {
-    "with file transport": {
-      "with value set to false": assertTimestamp('noTimestamp', { 
-        pattern: /^info\:/, 
-        json: false,
-        timestamp: false 
-      }),
-      "with value set to true ": assertTimestamp('defaultTimestamp', { 
-        pattern: /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z/,
-        json: false,
-        timestamp: true 
-      }),
-      "and function value": assertTimestamp('customTimestamp', {
-        pattern: /^\d{8}\./,
-        json: false,
-        timestamp: function () {
-          return '20110803.171657';
-        }
-      })
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/exception-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/exception-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/exception-test.js
deleted file mode 100644
index 3c3178e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/exception-test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * exception-test.js: Tests for exception data gathering in winston.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var path = require('path'),
-    vows = require('vows'),
-    assert = require('assert'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers');
-
-vows.describe('winston/exception').addBatch({
-  "When using the winston exception module": {
-    "the getProcessInfo() method": {
-      topic: winston.exception.getProcessInfo(),
-      "should respond with the appropriate data": function (info) {
-        helpers.assertProcessInfo(info);
-      }
-    },
-    "the getOsInfo() method": {
-      topic: winston.exception.getOsInfo(),
-      "should respond with the appropriate data": function (info) {
-        helpers.assertOsInfo(info);
-      }
-    },
-    "the getTrace() method": {
-      topic: winston.exception.getTrace(new Error()),
-      "should have the appropriate info": function (trace) {
-        helpers.assertTrace(trace);
-      }
-    },
-    "the getAllInfo() method": {
-      topic: winston.exception.getAllInfo(new Error()),
-      "should have the appropriate info": function (info) {
-        assert.isObject(info);
-        assert.isArray(info.stack);
-        helpers.assertDateInfo(info.date);
-        helpers.assertProcessInfo(info.process);
-        helpers.assertOsInfo(info.os);
-        helpers.assertTrace(info.trace);
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/.gitkeep
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/.gitkeep b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/.gitkeep
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-cert.pem
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-cert.pem b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-cert.pem
deleted file mode 100644
index 8e4354d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-cert.pem
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIB7DCCAZYCCQC7gs0MDNn6MTANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJV
-UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO
-BgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEgMB4GCSqGSIb3DQEJARYR
-cnlAdGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEy
-WjB9MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYD
-VQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEg
-MB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEF
-AANLADBIAkEAyXb8FrRdKbhrKLgLSsn61i1C7w7fVVVd7OQsmV/7p9WB2lWFiDlC
-WKGU9SiIz/A6wNZDUAuc2E+VwtpCT561AQIDAQABMA0GCSqGSIb3DQEBBQUAA0EA
-C8HzpuNhFLCI3A5KkBS5zHAQax6TFUOhbpBCR0aTDbJ6F1liDTK1lmU/BjvPoj+9
-1LHwrmh29rK8kBPEjmymCQ==
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-key.pem
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-key.pem b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-key.pem
deleted file mode 100644
index 522903c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/keys/agent2-key.pem
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIBOgIBAAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf+6fVgdpVhYg5
-QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAQJBAMT6Bf34+UHKY1ObpsbH
-9u2jsVblFq1rWvs8GPMY6oertzvwm3DpuSUp7PTgOB1nLTLYtCERbQ4ovtN8tn3p
-OHUCIQDzIEGsoCr5vlxXvy2zJwu+fxYuhTZWMVuo1397L0VyhwIhANQh+yzqUgaf
-WRtSB4T2W7ADtJI35ET61jKBty3CqJY3AiAIwju7dVW3A5WeD6Qc1SZGKZvp9yCb
-AFI2BfVwwaY11wIgXF3PeGcvACMyMWsuSv7aPXHfliswAbkWuzcwA4TW01ECIGWa
-cgsDvVFxmfM5NPSuT/UDTa6R5BFISB5ea0N0AR3I
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/logs/.gitkeep
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/logs/.gitkeep b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/logs/.gitkeep
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/default-exceptions.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/default-exceptions.js b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/default-exceptions.js
deleted file mode 100644
index ab26aa5..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/default-exceptions.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * default-exceptions.js: A test fixture for logging exceptions with the default winston logger.
- *
- * (C) 2011 Charlie Robbins
- * MIT LICENCE
- *
- */
- 
-var path = require('path'),
-    winston = require('../../../lib/winston');
-
-winston.handleExceptions([
-  new (winston.transports.File)({ 
-    filename: path.join(__dirname, '..', 'logs', 'default-exception.log'),
-    handleExceptions: true
-  })
-]);
-
-setTimeout(function () {
-  throw new Error('OH NOES! It failed!');
-}, 1000);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/exit-on-error.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/exit-on-error.js b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/exit-on-error.js
deleted file mode 100644
index fa3dd65..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/exit-on-error.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * default-exceptions.js: A test fixture for logging exceptions with the default winston logger.
- *
- * (C) 2011 Charlie Robbins
- * MIT LICENCE
- *
- */
- 
-var path = require('path'),
-    winston = require('../../../lib/winston');
-
-winston.exitOnError = function (err) {
-  return err.message !== 'Ignore this error';
-};
-
-winston.handleExceptions([
-  new (winston.transports.File)({ 
-    filename: path.join(__dirname, '..', 'logs', 'exit-on-error.log'),
-    handleExceptions: true
-  })
-]);
-
-setTimeout(function () {
-  throw new Error('Ignore this error');
-}, 1000);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/log-exceptions.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/log-exceptions.js b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/log-exceptions.js
deleted file mode 100644
index 43ce7eb..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/log-exceptions.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * log-exceptions.js: A test fixture for logging exceptions in winston.
- *
- * (C) 2011 Charlie Robbins
- * MIT LICENCE
- *
- */
- 
-var path = require('path'),
-    winston = require('../../../lib/winston');
-
-var logger = new (winston.Logger)({
-  transports: [
-    new (winston.transports.File)({ 
-      filename: path.join(__dirname, '..', 'logs', 'exception.log'),
-      handleExceptions: true
-    })
-  ]
-});
-
-logger.handleExceptions();
-
-setTimeout(function () {
-  throw new Error('OH NOES! It failed!');
-}, 1000);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/unhandle-exceptions.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/unhandle-exceptions.js b/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/unhandle-exceptions.js
deleted file mode 100644
index 5d722a7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/fixtures/scripts/unhandle-exceptions.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * unhandle-exceptions.js: A test fixture for using `.unhandleExceptions()` winston.
- *
- * (C) 2011 Charlie Robbins
- * MIT LICENCE
- *
- */
- 
-var path = require('path'),
-    winston = require('../../../lib/winston');
-
-var logger = new (winston.Logger)({
-  transports: [
-    new (winston.transports.File)({ 
-      filename: path.join(__dirname, '..', 'logs', 'unhandle-exception.log'),
-      handleExceptions: true
-    })
-  ]
-});
-
-logger.handleExceptions();
-logger.unhandleExceptions();
-
-setTimeout(function () {
-  throw new Error('OH NOES! It failed!');
-}, 1000);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/helpers.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/helpers.js b/blackberry10/node_modules/prompt/node_modules/winston/test/helpers.js
deleted file mode 100644
index 2564f79..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/helpers.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * helpers.js: Test helpers for winston
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    fs = require('fs'),
-    path = require('path'),
-    spawn = require('child_process').spawn,
-    util = require('util'),
-    vows = require('vows'),
-    winston = require('../lib/winston');    
-    
-var helpers = exports;
-
-helpers.size = function (obj) {
-  var size = 0, key;
-  for (key in obj) {
-    if (obj.hasOwnProperty(key)) {
-      size++;
-    }
-  }
-  
-  return size;
-};
-
-helpers.tryUnlink = function (file) {
-  try { fs.unlinkSync(file) }
-  catch (ex) { }
-};
-
-helpers.assertDateInfo = function (info) {
-  assert.isNumber(Date.parse(info));
-};
-
-helpers.assertProcessInfo = function (info) {
-  assert.isNumber(info.pid);
-  assert.isNumber(info.uid);
-  assert.isNumber(info.gid);
-  assert.isString(info.cwd);
-  assert.isString(info.execPath);
-  assert.isString(info.version);
-  assert.isArray(info.argv);
-  assert.isObject(info.memoryUsage);
-};
-
-helpers.assertOsInfo = function (info) {
-  assert.isArray(info.loadavg);
-  assert.isNumber(info.uptime);
-};
-
-helpers.assertTrace = function (trace) {
-  trace.forEach(function (site) {
-    assert.isTrue(!site.column || typeof site.column === 'number');
-    assert.isTrue(!site.line || typeof site.line === 'number');
-    assert.isTrue(!site.file || typeof site.file === 'string');
-    assert.isTrue(!site.method || typeof site.method === 'string');
-    assert.isTrue(!site.function || typeof site.function === 'string');
-    assert.isTrue(typeof site.native === 'boolean');
-  });
-};
-
-helpers.assertLogger = function (logger, level) {
-  assert.instanceOf(logger, winston.Logger);
-  assert.isFunction(logger.log);
-  assert.isFunction(logger.add);
-  assert.isFunction(logger.remove);
-  assert.equal(logger.level, level || "info");
-  Object.keys(logger.levels).forEach(function (method) {
-    assert.isFunction(logger[method]);
-  });
-};
-
-helpers.assertConsole = function (transport) {
-  assert.instanceOf(transport, winston.transports.Console);
-  assert.isFunction(transport.log);
-};
-
-helpers.assertFile = function (transport) {
-  assert.instanceOf(transport, winston.transports.File);
-  assert.isFunction(transport.log);
-}
-
-helpers.assertWebhook = function (transport) {
-  assert.instanceOf(transport, winston.transports.Webhook);
-  assert.isFunction(transport.log);
-};
-
-helpers.assertCouchdb = function (transport) {
-  assert.instanceOf(transport, winston.transports.Couchdb);
-  assert.isFunction(transport.log);
-};
-
-helpers.assertHandleExceptions = function (options) {
-  return {
-    topic: function () {
-      var that = this,
-          child = spawn('node', [options.script]);
-
-      helpers.tryUnlink(options.logfile);
-      child.on('exit', function () {
-        fs.readFile(options.logfile, that.callback);
-      });
-    },
-    "should save the error information to the specified file": function (err, data) {
-      assert.isTrue(!err);
-      data = JSON.parse(data);
-
-      assert.isObject(data);
-      helpers.assertProcessInfo(data.process);
-      helpers.assertOsInfo(data.os);
-      helpers.assertTrace(data.trace);
-    }
-  }
-}
-
-helpers.testNpmLevels = function (transport, assertMsg, assertFn) {
-  return helpers.testLevels(winston.config.npm.levels, transport, assertMsg, assertFn);
-};
-
-helpers.testSyslogLevels = function (transport, assertMsg, assertFn) {
-  return helpers.testLevels(winston.config.syslog.levels, transport, assertMsg, assertFn);
-};
-
-helpers.testLevels = function (levels, transport, assertMsg, assertFn) {
-  var tests = {};
-  
-  Object.keys(levels).forEach(function (level) {
-    var test = {
-      topic: function () {
-        transport.log(level, 'test message', {}, this.callback.bind(this, null));
-      }
-    };
-   
-    test[assertMsg] = assertFn;
-    tests['with the ' + level + ' level'] = test;
-  });
-  
-  var metadatatest = {
-    topic: function () {
-      transport.log('info', 'test message', { metadata: true }, this.callback.bind(this, null));
-    }
-  };
-  
-  metadatatest[assertMsg] = assertFn;
-  tests['when passed metadata'] = metadatatest;
-
-  var primmetadatatest = {
-    topic: function () {
-      transport.log('info', 'test message', 'metadata', this.callback.bind(this, null));
-    }
-  };
-
-  primmetadatatest[assertMsg] = assertFn;
-  tests['when passed primitive metadata'] = primmetadatatest;
-
-  var circmetadata = { }; 
-  circmetadata['metadata'] = circmetadata;
-
-  var circmetadatatest = {
-    topic: function () {
-      transport.log('info', 'test message', circmetadata, this.callback.bind(this, null));
-    }
-  };
-
-  circmetadatatest[assertMsg] = assertFn;
-  tests['when passed circular metadata'] = circmetadatatest;
-
-  return tests;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/log-exception-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/log-exception-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/log-exception-test.js
deleted file mode 100644
index 164dcdf..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/log-exception-test.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * exception-test.js: Tests for exception data gathering in winston.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    path = require('path'),
-    fs = require('fs'),
-    spawn = require('child_process').spawn,
-    vows = require('vows'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers'),
-    exists = (fs.exists || path.exists);
-
-vows.describe('winston/logger/exceptions').addBatch({
-  "When using winston": {
-    "the handleException() method": {
-      "with a custom winston.Logger instance": helpers.assertHandleExceptions({
-        script: path.join(__dirname, 'fixtures', 'scripts', 'log-exceptions.js'),
-        logfile: path.join(__dirname, 'fixtures', 'logs', 'exception.log')
-      }),
-      "with the default winston logger": helpers.assertHandleExceptions({
-        script: path.join(__dirname, 'fixtures', 'scripts', 'default-exceptions.js'),
-        logfile: path.join(__dirname, 'fixtures', 'logs', 'default-exception.log')
-      }),
-      "when a custom exitOnError function is set": {
-        topic: function () {
-          var that = this,
-              scriptDir = path.join(__dirname, 'fixtures', 'scripts');
-          
-          that.child = spawn('node', [path.join(scriptDir, 'exit-on-error.js')]);
-          setTimeout(this.callback.bind(this), 1500);
-        },
-        "should not exit the process": function () {
-          assert.isFalse(this.child.killed);
-          this.child.kill();
-        }
-      }
-    },
-    "the unhandleException() method": {
-      topic: function () {
-        var that = this,
-            child = spawn('node', [path.join(__dirname, 'fixtures', 'scripts', 'unhandle-exceptions.js')]),
-            exception = path.join(__dirname, 'fixtures', 'logs', 'unhandle-exception.log');
-        
-        helpers.tryUnlink(exception);
-        child.on('exit', function () {
-          exists(exception, that.callback.bind(this, null));
-        });
-      },
-      "should not write to the specified error file": function (err, exists) {
-        assert.isTrue(!err);
-        assert.isFalse(exists);
-      }
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/log-rewriter-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/log-rewriter-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/log-rewriter-test.js
deleted file mode 100644
index f1deeba..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/log-rewriter-test.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * log-rewriter-test.js: Tests for rewriting metadata in winston.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    vows = require('vows'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers');
-
-vows.describe('winston/logger/rewriter').addBatch({
-  "An instance of winston.Logger": {
-    topic: new (winston.Logger)({transports: [
-      new (winston.transports.Console)({ level: 'info' })
-    ]}),
-    "the addRewriter() method": {
-      topic: function (logger) {
-        logger.addRewriter(function (level, msg, meta) {
-          meta.level = level;
-          meta.msg = msg;
-          meta.foo = 'bar';
-          return meta;
-        });
-        return logger;
-      },
-      "should add the rewriter": function (logger) {
-        assert.equal(helpers.size(logger.rewriters), 1);
-      },
-      "the log() method": {
-        topic: function (logger) {
-          logger.once('logging', this.callback);
-          logger.log('info', 'test message', {"a": "b"});
-        },
-        "should run the rewriter": function (transport, level, msg, meta) {
-          assert.equal(meta.a, 'b');
-          assert.equal(meta.level, 'info');
-          assert.equal(meta.msg, 'test message');
-          assert.equal(meta.foo, 'bar');
-        }
-      }
-    }
-  }
-}).addBatch({
-  "An instance of winston.Logger with explicit rewriter": {
-    topic: new (winston.Logger)({transports: [
-      new (winston.transports.Console)({ level: 'info'})
-    ], rewriters: [
-      function (level, msg, meta) {
-        meta.level = level;
-        meta.msg = msg;
-        meta.foo = 'bar';
-        return meta;
-      }
-    ]}),
-    "should add the rewriter": function (logger) {
-      assert.equal(helpers.size(logger.rewriters), 1);
-    },
-    "the log() method": {
-      topic: function (logger) {
-        logger.once('logging', this.callback);
-        logger.log('info', 'test message', {"a": "b"});
-      },
-      "should run the rewriter": function (transport, level, msg, meta) {
-        assert.equal(meta.a, 'b');
-        assert.equal(meta.level, 'info');
-        assert.equal(meta.msg, 'test message');
-        assert.equal(meta.foo, 'bar');
-      }
-    }
-  }
-}).addBatch({
-  "An instance of winston.Logger with rewriters": {
-    topic: new (winston.Logger)({transports: [
-      new (winston.transports.Console)({ level: 'info' })
-    ], rewriters: [
-      function (level, msg, meta) {
-        meta.numbers.push(1);
-        return meta;
-      },
-      function (level, msg, meta) {
-        meta.numbers.push(2);
-        return meta;
-      }
-    ]}),
-    "the log() method": {
-      topic: function (logger) {
-        logger.once('logging', this.callback);
-        logger.log('info', 'test message', {"numbers": [0]});
-      },
-      "should run the rewriters in correct order": function (transport, level, msg, meta) {
-        assert.deepEqual(meta.numbers, [0, 1, 2]);
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/logger-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/logger-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/logger-test.js
deleted file mode 100644
index 0074f20..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/logger-test.js
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * logger-test.js: Tests for instances of the winston Logger
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var path = require('path'),
-    vows = require('vows'),
-    assert = require('assert'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers'),
-    transport = require('./transports/transport');
-
-vows.describe('winton/logger').addBatch({
-  "An instance of winston.Logger": {
-    topic: new (winston.Logger)({ transports: [new (winston.transports.Console)({ level: 'info' })] }),
-    "should have the correct methods / properties defined": function (logger) {
-      helpers.assertLogger(logger);
-    },
-    "the add() with an unsupported transport": {
-      "should throw an error": function () {
-        assert.throws(function () { logger.add('unsupported') }, Error);
-      }
-    }
-  }
-}).addBatch({
-  "An instance of winston.Logger with no transports": {
-    topic: new (winston.Logger)({ emitErrs: true }),
-    "the log() method should throw an error": function (logger) {
-      assert.throws(function () { logger.log('anything') }, Error);
-    },
-    "the extend() method called on an empty object": {
-      topic: function (logger) {
-        var empty = {};
-        logger.extend(empty);
-        return empty;
-      },
-      "should define the appropriate methods": function (extended) {
-        ['log', 'profile', 'startTimer'].concat(Object.keys(winston.config.npm.levels)).forEach(function (method) {
-          assert.isFunction(extended[method]);
-        });
-      }
-    },
-    "the add() method with a supported transport": {
-      topic: function (logger) {
-        return logger.add(winston.transports.Console);
-      },
-      "should add the console Transport onto transports": function (logger) {
-        assert.equal(helpers.size(logger.transports), 1);
-        helpers.assertConsole(logger.transports.console);
-      },
-      "should throw an error when the same Transport is added": function (logger) {
-        assert.throws(function () { logger.add(winston.transports.Console) }, Error);
-      },
-      "the log() method": {
-        topic: function (logger) {
-          logger.once('logging', this.callback);
-          logger.log('info', 'test message');
-        },
-        "should emit the 'log' event with the appropriate transport": function (transport, ign) {
-          helpers.assertConsole(transport);
-        }
-      },
-      "the profile() method": {
-        "when passed a callback": {
-          topic: function (logger) {
-            var that = this;
-            logger.profile('test1');
-            setTimeout(function () {
-              logger.profile('test1', function (err, level, msg, meta) {
-                that.callback(err, level, msg, meta, logger);
-              });
-            }, 1000);
-          },
-          "should respond with the appropriate profile message": function (err, level, msg, meta, logger) {
-            assert.isNull(err);
-            assert.equal(level, 'info');
-            assert.match(meta.duration, /(\d+)ms/);
-            assert.isTrue(typeof logger.profilers['test'] === 'undefined');
-          }
-        },
-        "when not passed a callback": {
-          topic: function (logger) {
-            var that = this;
-            logger.profile('test2');
-            logger.once('logging', that.callback.bind(null, null));
-            setTimeout(function () {
-              logger.profile('test2');
-            }, 1000);
-          },
-          "should respond with the appropriate profile message": function (err, transport, level, msg, meta) {
-            assert.isNull(err);
-            assert.equal(level, 'info');
-            assert.match(meta.duration, /(\d+)ms/);
-          }
-        }
-      },
-      "the startTimer() method": {
-        "when passed a callback": {
-          topic: function (logger) {
-            var that = this;
-            var timer = logger.startTimer()
-            setTimeout(function () {
-              timer.done('test', function (err, level, msg, meta) {
-                that.callback(err, level, msg, meta, logger);
-              });
-            }, 1000);
-          },
-          "should respond with the appropriate message": function (err, level, msg, meta, logger) {
-            assert.isNull(err);
-            assert.equal(level, 'info');
-            assert.match(meta.duration, /(\d+)ms/);
-          }
-        },
-        "when not passed a callback": {
-          topic: function (logger) {
-            var that = this;
-            var timer = logger.startTimer()
-            logger.once('logging', that.callback.bind(null, null));
-            setTimeout(function () {
-              timer.done();
-            }, 1000);
-          },
-          "should respond with the appropriate message": function (err, transport, level, msg, meta) {
-            assert.isNull(err);
-            assert.equal(level, 'info');
-            assert.match(meta.duration, /(\d+)ms/);
-
-            var duration = parseInt(meta.duration);
-            assert.isNumber(duration);
-            assert.isTrue(duration > 900 && duration < 1100);
-          }
-        }
-      },
-      "and adding an additional transport": {
-        topic: function (logger) {
-          return logger.add(winston.transports.File, {
-            filename: path.join(__dirname, 'fixtures', 'logs', 'testfile2.log')
-          });
-        },
-        "should be able to add multiple transports": function (logger) {
-          assert.equal(helpers.size(logger.transports), 2);
-          helpers.assertConsole(logger.transports.console);
-          helpers.assertFile(logger.transports.file);
-        }
-      }
-    }
-  }
-}).addBatch({
-  "The winston logger": {
-    topic: new (winston.Logger)({
-      transports: [
-        new (winston.transports.Console)(),
-        new (winston.transports.File)({ filename: path.join(__dirname, 'fixtures', 'logs', 'filelog.log' )})
-      ]
-    }),
-    "should return have two transports": function (logger) {
-      assert.equal(helpers.size(logger.transports), 2);
-    },
-    "the remove() with an unadded transport": {
-      "should throw an Error": function (logger) {
-        assert.throws(function () { logger.remove(winston.transports.Webhook) }, Error);
-      }
-    },
-    "the remove() method with an added transport": {
-      topic: function (logger) {
-         return logger.remove(winston.transports.Console);
-      },
-      "should remove the Console transport from transports": function (logger) {
-        assert.equal(helpers.size(logger.transports), 1);
-        helpers.assertFile(logger.transports.file);
-      },
-      "and removing an additional transport": {
-        topic: function (logger) {
-           return logger.remove(winston.transports.File);
-        },
-        "should remove File transport from transports": function (logger) {
-          assert.equal(helpers.size(logger.transports), 0);
-        }
-      }
-    }
-  }
-}).addBatch({
-  "The winston logger": {
-    topic: new (winston.Logger)({
-      transports: [
-        new (winston.transports.Console)(),
-        new (winston.transports.File)({ filename: path.join(__dirname, 'fixtures', 'logs', 'filelog.log' )})
-      ]
-    }),
-    "the clear() method": {
-      "should remove all transports": function (logger) {
-        logger.clear();
-        assert.equal(helpers.size(logger.transports), 0);
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/transports/console-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/console-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/transports/console-test.js
deleted file mode 100644
index 07f5a6e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/console-test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * console-test.js: Tests for instances of the Console transport
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var path = require('path'),
-    vows = require('vows'),
-    assert = require('assert'),
-    winston = require('../../lib/winston'),
-    helpers = require('../helpers');
-
-var npmTransport = new (winston.transports.Console)(),
-    syslogTransport = new (winston.transports.Console)({ levels: winston.config.syslog.levels });
-
-vows.describe('winston/transports/console').addBatch({
-  "An instance of the Console Transport": {
-    "with npm levels": {
-      "should have the proper methods defined": function () {
-        helpers.assertConsole(npmTransport);
-      },
-      "the log() method": helpers.testNpmLevels(npmTransport, "should respond with true", function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isTrue(logged);
-      })
-    },
-    "with syslog levels": {
-      "should have the proper methods defined": function () {
-        helpers.assertConsole(syslogTransport);
-      },
-      "the log() method": helpers.testSyslogLevels(syslogTransport, "should respond with true", function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isTrue(logged);
-      })
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxfiles-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxfiles-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxfiles-test.js
deleted file mode 100644
index a9fa89e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxfiles-test.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * file-maxfiles-test.js: Tests for instances of the File transport setting the max file size,
- * and setting a number for max files created.
- * maxSize * maxFiles = total storage used by winston.
- *
- * (C) 2011 Daniel Aristizabal
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    exec = require('child_process').exec,
-    fs = require('fs'),
-    path = require('path'),
-    vows = require('vows'),
-    winston = require('../../lib/winston'),
-    helpers = require('../helpers');
-
-var maxfilesTransport = new winston.transports.File({
-  timestamp: false,
-  json: false,
-  filename: path.join(__dirname, '..', 'fixtures', 'logs', 'testmaxfiles.log'),
-  maxsize: 4096,
-  maxFiles: 3
-});
-    
-vows.describe('winston/transports/file/maxfiles').addBatch({
-  "An instance of the File Transport": {
-    "when passed a valid filename": {
-      topic: maxfilesTransport,
-      "should be a valid transporter": function (transportTest) {
-        helpers.assertFile(transportTest);
-      },
-      "should set the maxFiles option correctly": function (transportTest) {
-        assert.isNumber(transportTest.maxFiles);
-      }
-    },
-    "when delete old test files": {
-      topic: function () {
-        exec('rm -rf ' + path.join(__dirname, '..', 'fixtures', 'logs', 'testmaxfiles*'), this.callback);
-      },
-      "and when passed more files than the maxFiles": {
-        topic: function () {
-          var that = this,
-              created = 0;
-              
-          function data(ch) {
-            return new Array(1018).join(String.fromCharCode(65 + ch));
-          };
-      
-          function logKbytes(kbytes, txt) {
-            //
-            // With no timestamp and at the info level,
-            // winston adds exactly 7 characters: 
-            // [info](4)[ :](2)[\n](1)
-            //
-            for (var i = 0; i < kbytes; i++) {
-              maxfilesTransport.log('info', data(txt), null, function () { });
-            }
-          }
-          
-          maxfilesTransport.on('logged', function () {
-            if (++created === 6) {
-              return that.callback();
-            }
-            
-            logKbytes(4, created);
-          });
-         
-          logKbytes(4, created);
-        },
-        "should be only 3 files called 5.log, 4.log and 3.log": function () {
-          for (var num = 0; num < 6; num++) {
-            var file = !num ? 'testmaxfiles.log' : 'testmaxfiles' + num + '.log',
-                fullpath = path.join(__dirname, '..', 'fixtures', 'logs', file);
-            
-            // There should be no files with that name
-            if (num >= 0 && num < 3) {
-              return assert.throws(function () {
-                fs.statSync(file);
-              }, Error);
-            } 
-
-            // The other files should be exist
-            assert.doesNotThrow(function () {
-              fs.statSync(file);
-            }, Error);
-          }
-        },
-        "should have the correct content": function () {
-          ['D', 'E', 'F'].forEach(function (name, inx) {
-            var counter = inx + 3,
-                logsDir = path.join(__dirname, '..', 'fixtures', 'logs'),
-                content = fs.readFileSync(path.join(logsDir, 'testmaxfiles' + counter + '.log'), 'utf-8');
-            // The content minus the 7 characters added by winston
-            assert.lengthOf(content.match(new RegExp(name, 'g')), 4068);
-          });
-        }
-      }
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxsize-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxsize-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxsize-test.js
deleted file mode 100644
index 7d20e08..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-maxsize-test.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * file-test.js: Tests for instances of the File transport
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    exec = require('child_process').exec,
-    fs = require('fs'),
-    path = require('path'),
-    vows = require('vows'),
-    winston = require('../../lib/winston'),
-    helpers = require('../helpers');
-
-var maxsizeTransport = new winston.transports.File({
-  timestamp: false,
-  json: false,
-  filename: path.join(__dirname, '..', 'fixtures', 'logs', 'testmaxsize.log'),
-  maxsize: 4096
-});
-    
-vows.describe('winston/transports/file/maxsize').addBatch({
-  "An instance of the File Transport": {
-    "when passed a valid filename": {
-      "the log() method": {
-        topic: function () {
-          exec('rm -rf ' + path.join(__dirname, '..', 'fixtures', 'logs', 'testmaxsize*'), this.callback);
-        },
-        "when passed more than the maxsize": {
-          topic: function () {
-            var that = this,
-                data = new Array(1018).join('-');
-            
-            //
-            // Setup a list of files which we will later stat.
-            //
-            that.files = [];
-            
-            function logKbytes (kbytes) {
-              //
-              // With no timestamp and at the info level,
-              // winston adds exactly 7 characters: 
-              // [info](4)[ :](2)[\n](1)
-              //
-              for (var i = 0; i < kbytes; i++) {
-                maxsizeTransport.log('info', data, null, function () { });
-              }
-            }
-            
-            maxsizeTransport.on('open', function (file) {
-              var match = file.match(/(\d+)\.log$/),
-                  count = match ? match[1] : 0;
-              
-              that.files.push(file);
-              
-              if (that.files.length === 5) {
-                return that.callback();
-              }
-              
-              logKbytes(4);
-            });
-            
-            logKbytes(4);
-          },
-          "should create multiple files correctly": function () {
-            this.files.forEach(function (file) {
-              try {
-                var stats = fs.statSync(file);
-                assert.equal(stats.size, 4096);
-              }
-              catch (ex) {
-                assert.isNull(ex);
-              }
-            });
-          }
-        }
-      }
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-test.js
deleted file mode 100644
index 2039b03..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/file-test.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * file-test.js: Tests for instances of the File transport
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var path = require('path'),
-    vows = require('vows'),
-    fs = require('fs'),
-    assert = require('assert'),
-    winston = require('../../lib/winston'),
-    helpers = require('../helpers');
-
-var transport = require('./transport');
-
-var stream = fs.createWriteStream(
-      path.join(__dirname, '..', 'fixtures', 'logs', 'testfile.log')
-    ),
-    fileTransport = new (winston.transports.File)({
-      filename: path.join(__dirname, '..', 'fixtures', 'logs', 'testfilename.log')
-    }),
-    streamTransport = new (winston.transports.File)({ stream: stream });
-
-vows.describe('winston/transports/file').addBatch({
-  "An instance of the File Transport": {
-    "when passed a valid filename": {
-      "should have the proper methods defined": function () {
-        helpers.assertFile(fileTransport);
-      },
-      "the log() method": helpers.testNpmLevels(fileTransport, "should respond with true", function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isTrue(logged);
-      })
-    },
-    "when passed a valid file stream": {
-      "should have the proper methods defined": function () {
-        helpers.assertFile(streamTransport);
-      },
-      "the log() method": helpers.testNpmLevels(streamTransport, "should respond with true", function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isTrue(logged);
-      })
-    }
-  }
-}).addBatch({
-  "These tests have a non-deterministic end": {
-    topic: function () {
-      setTimeout(this.callback, 200);
-    },
-    "and this should be fixed before releasing": function () {
-      assert.isTrue(true);
-    }
-  }
-}).addBatch({
-  "An instance of the File Transport": transport(winston.transports.File, {
-    filename: path.join(__dirname, '..', 'fixtures', 'logs', 'testfile.log')
-  })
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/transports/transport.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/transport.js b/blackberry10/node_modules/prompt/node_modules/winston/test/transports/transport.js
deleted file mode 100644
index 89b1eab..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/transport.js
+++ /dev/null
@@ -1,212 +0,0 @@
-var assert = require('assert'),
-    winston = require('../../lib/winston'),
-    helpers = require('../helpers');
-
-module.exports = function (transport, options) {
-  var logger = transport instanceof winston.Logger
-    ? transport
-    : new winston.Logger({
-        transports: [
-          new transport(options)
-        ]
-      });
-
-  // hack to fix transports that don't log
-  // any unit of time smaller than seconds
-  var common = require('../../lib/winston/common');
-  common.timestamp = function() {
-    return new Date().toISOString();
-  };
-
-  var transport = logger.transports[logger._names[0]];
-
-  var out = {
-    'topic': logger,
-    'when passed valid options': {
-      'should have the proper methods defined': function () {
-        switch (transport.name) {
-          case 'console':
-            helpers.assertConsole(transport);
-            break;
-          case 'file':
-            helpers.assertFile(transport);
-            break;
-          case 'webhook':
-            helpers.assertWebhook(transport);
-            break;
-          case 'couchdb':
-            helpers.assertCouchdb(transport);
-            break;
-        }
-        assert.isFunction(transport.log);
-      }
-    },
-    'the log() method': helpers.testNpmLevels(transport,
-      'should respond with true', function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isNotNull(logged);
-      }
-    ),
-    'the stream() method': {
-      'using no options': {
-        'topic': function () {
-          if (!transport.stream) return;
-
-          logger.log('info', 'hello world', {});
-
-          var cb = this.callback,
-              j = 10,
-              i = 10,
-              results = [],
-              stream = logger.stream();
-
-          stream.on('log', function (log) {
-            results.push(log);
-            results.stream = stream;
-            if (!--j) cb(null, results);
-          });
-
-          stream.on('error', function () {});
-
-          while (i--) logger.log('info', 'hello world ' + i, {});
-        },
-        'should stream logs': function (err, results) {
-          if (!transport.stream) return;
-          assert.isNull(err);
-          results.forEach(function (log) {
-            assert.ok(log.message.indexOf('hello world') === 0
-                      || log.message.indexOf('test message') === 0);
-          });
-          results.stream.destroy();
-        }
-      },
-      'using the `start` option': {
-        'topic': function () {
-          if (!transport.stream) return;
-
-          var cb = this.callback,
-              stream = logger.stream({ start: 0 });
-
-          stream.on('log', function (log) {
-            log.stream = stream;
-            if (cb) cb(null, log);
-            cb = null;
-          });
-        },
-        'should stream logs': function (err, log) {
-          if (!transport.stream) return;
-          assert.isNull(err);
-          assert.isNotNull(log.message);
-          log.stream.destroy();
-        }
-      }
-    },
-    'after the logs have flushed': {
-      topic: function () {
-        setTimeout(this.callback, 1000);
-      },
-      'the query() method': {
-        'using basic querying': {
-          'topic': function () {
-            if (!transport.query) return;
-            var cb = this.callback;
-            logger.log('info', 'hello world', {}, function () {
-              logger.query(cb);
-            });
-          },
-          'should return matching results': function (err, results) {
-            if (!transport.query) return;
-            assert.isNull(err);
-            results = results[transport.name];
-            while (!Array.isArray(results)) {
-              results = results[Object.keys(results).pop()];
-            }
-            var log = results.pop();
-            assert.ok(log.message.indexOf('hello world') === 0
-                      || log.message.indexOf('test message') === 0);
-          }
-        },
-        'using the `rows` option': {
-          'topic': function () {
-            if (!transport.query) return;
-            var cb = this.callback;
-            logger.log('info', 'hello world', {}, function () {
-              logger.query({ rows: 1 }, cb);
-            });
-          },
-          'should return one result': function (err, results) {
-            if (!transport.query) return;
-            assert.isNull(err);
-            results = results[transport.name];
-            while (!Array.isArray(results)) {
-              results = results[Object.keys(results).pop()];
-            }
-            assert.equal(results.length, 1);
-          }
-        },
-        'using `fields` and `order` option': {
-          'topic': function () {
-            if (!transport.query) return;
-            var cb = this.callback;
-            logger.log('info', 'hello world', {}, function () {
-              logger.query({ order: 'asc', fields: ['timestamp'] }, cb);
-            });
-          },
-          'should return matching results': function (err, results) {
-            if (!transport.query) return;
-            assert.isNull(err);
-            results = results[transport.name];
-            while (!Array.isArray(results)) {
-              results = results[Object.keys(results).pop()];
-            }
-            assert.equal(Object.keys(results[0]).length, 1);
-            assert.ok(new Date(results.shift().timestamp)
-                    < new Date(results.pop().timestamp));
-          }
-        },
-        'using the `from` and `until` option': {
-          'topic': function () {
-            if (!transport.query) return;
-            var cb = this.callback;
-            var start = new Date - 100 * 1000;
-            var end = new Date + 100 * 1000;
-            logger.query({ from: start, until: end }, cb);
-          },
-          'should return matching results': function (err, results) {
-            if (!transport.query) return;
-            assert.isNull(err);
-            results = results[transport.name];
-            while (!Array.isArray(results)) {
-              results = results[Object.keys(results).pop()];
-            }
-            assert.ok(results.length >= 1);
-          }
-        },
-        'using a bad `from` and `until` option': {
-          'topic': function () {
-            if (!transport.query) return;
-            var cb = this.callback;
-            logger.log('info', 'bad from and until', {}, function () {
-              var now = new Date + 1000000;
-              logger.query({ from: now, until: now }, cb);
-            });
-          },
-          'should return no results': function (err, results) {
-            if (!transport.query) return;
-            assert.isNull(err);
-            results = results[transport.name];
-            while (!Array.isArray(results)) {
-              results = results[Object.keys(results).pop()];
-            }
-            results = [results.filter(function(log) {
-              return log.message === 'bad from and until';
-            }).pop()];
-            assert.isUndefined(results[0]);
-          }
-        }
-      }
-    }
-  };
-
-  return out;
-};


[03/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE-W3C.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE-W3C.html b/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE-W3C.html
deleted file mode 100644
index a611e3f..0000000
--- a/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE-W3C.html
+++ /dev/null
@@ -1,188 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 13), see www.w3.org" /><title>W3C Software Notice and License</title><link rel="stylesheet" href="/2008/site/css/minimum" type="text/css" media="handheld, all" /><style type="text/css" media="print, screen and (min-width: 481px)" xml:space="preserve">
-     @import url("/2008/site/css/advanced");
-</style><link href="/2008/site/css/minimum" rel="stylesheet" type="text/css" media="handheld, only screen and (max-device-width: 480px)" /><meta name="viewport" content="width=device-width" /><link rel="stylesheet" href="/2008/site/css/print" type="text/css" media="print" /><link rel="shortcut icon" href="/2008/site/images/favicon.ico" type="image/x-icon" /></head><body id="www-w3-org" class="w3c_public"><div id="w3c_container">
-    
-    
-
-         <div id="w3c_mast">
-            <h1 class="logo">
-               <a tabindex="2" accesskey="1" href="/"><img src="/2008/site/images/logo-w3c-mobile-lg" width="90" height="53" alt="W3C" /></a>
-               <span class="alt-logo">W3C</span>
-            </h1>
-
-            <div id="w3c_nav">
-               
-               
-
-               <form action="/Help/search" method="get" enctype="application/x-www-form-urlencoded"><div class="w3c_sec_nav"><!-- --></div><ul class="main_nav"><li class="first-item">
-                        <a href="/standards/">Standards</a>
-                     </li><li>
-                        <a href="/participate/">Participate</a>
-                     </li><li>
-                        <a href="/Consortium/membership">Membership</a>
-                     </li><li class="last-item">
-                        <a href="/Consortium/">About W3C</a>
-                     </li><li class="search-item">
-                        <div id="search-form">
-                           <input tabindex="3" class="text" name="q" value="" title="Search" type="text" />
-                           <button id="search-submit" name="search-submit" type="submit"><img class="submit" src="/2008/site/images/search-button" alt="Search" width="21" height="17" /></button>
-                        </div>
-                     </li></ul></form>
-            </div>
-            
-         </div>
-         
-
-         <div id="w3c_main">
-            <div id="w3c_logo_shadow" class="w3c_leftCol">
-               <img height="32" alt="" src="/2008/site/images/logo-shadow" />
-            </div>
-            
-            <div class="w3c_leftCol"><h2 class="offscreen">Site Navigation</h2>
-    <h3 class="category"><span class="ribbon"><a href="/Consortium/Legal/ipr-notice.html" title="Up to Policies and Legal Information">Policies and Legal Information <img src="/2008/site/images/header-link" alt="Header link" width="13" height="13" class="header-link" /></a></span></h3>
-       <ul class="theme">
-        <li><a href="/Consortium/Legal/2008/04-testsuite-copyright.html">Licenses for W3C Test Suites</a></li>
-        <li><a href="/2004/10/27-testcases.html">Policies for Contribution of Test Cases to W3C</a></li>
-        <li><a href="/Consortium/Legal/IPR-FAQ-20000620.html">Intellectual Rights FAQ</a></li>
-        <li><a href="/Consortium/Legal/privacy-statement-20000612.html">W3C Privacy Statements</a></li>
-        <li><a href="/Consortium/Legal/2002/copyright-documents-20021231.html">W3C Document License</a></li>
-        <li><a href="/Consortium/Legal/2002/trademarks-20021231.html">W3C Trademarks and Generic Terms</a></li>
-        <li><a href="/Consortium/Legal/2002/trademark-license-20021231.html">W3C&#xAE; Trademark and Service Mark License</a></li>
-        <li><a class="current">W3C Software Notice and License</a></li>
-        <li><a href="/Consortium/Legal/2002/collaborators-agreement-20021231.html">W3C Invited Expert and Collaborators Agreement</a></li>
-        <li><a href="/Consortium/Persistence.html">W3C URI Persistence Policy</a></li>
-        <li><a href="/1999/10/21-mirroring-policy.html">Mirroring the W3C Site</a></li>
-        <li><a href="/Consortium/Legal/2006/08-copyright-translations.html">Translations of the Copyright Notice</a></li>
-       </ul>
-       <br /></div>
-            <div class="w3c_mainCol">
-               <div id="w3c_crumbs">
-       <div id="w3c_crumbs_frame">
-        <ul class="bct"> <!-- .bct / Breadcrumbs -->
-          <li class="skip"><a tabindex="1" accesskey="2" title="Skip to content (e.g., when browsing via audio)" href="#w3c_content_body">Skip</a></li>
-          <li><a href="/">W3C</a>&#xA0;<span class="cr">&#xBB;</span>&#xA0;</li>
-          <li><a href="/Consortium/">About&#xA0;W3C</a>&#xA0;<span class="cr">&#xBB;</span>&#xA0;</li>
-          <li><a href="/Consortium/facts.html">Facts&#xA0;About&#xA0;W3C</a>&#xA0;<span class="cr">&#xBB;</span>&#xA0;</li>
-          <li><a href="/Consortium/Legal/ipr-notice.html">Policies&#xA0;and&#xA0;Legal&#xA0;Information</a>&#xA0;<span class="cr">&#xBB;</span>&#xA0;</li>
-          <li class="current">W3C Software Notice and License</li>
-        </ul>            
-     </div>
-    </div>
-               <h1 class="title">W3C Software Notice and License</h1>
-               <div id="w3c_content_body">
-                  <div class="line">
-                     <p class="intro tPadding">This work (and included software, documentation such as READMEs, or other
-related items) is being provided by the copyright holders under the following
-license.</p>
-<h2>License</h2>
-                     
-                     <p class="tPadding">
-By obtaining, using and/or copying this work, you (the licensee)
-agree that you have read, understood, and will comply with the following
-terms and conditions.</p>
-
-                     <p>Permission to copy, modify, and distribute this software and its
-documentation, with or without modification,&#xA0;for any purpose and without
-fee or royalty is hereby granted, provided that you include the following on
-ALL copies of the software and documentation or portions thereof, including
-modifications:</p>
-
-                     <ul class="show_items"><li>The full text of this NOTICE in a location viewable to users of the
-    redistributed or derivative work.</li><li>Any pre-existing intellectual property disclaimers, notices, or terms
-    and conditions. If none exist, the <a href="copyright-software-short-notice-20021231.html">W3C Software Short
-    Notice</a> should be included (hypertext is preferred, text is permitted)
-    within the body of any redistributed or derivative code.</li><li>Notice of any changes or modifications to the files, including the date
-    changes were made. (We recommend you provide URIs to the location from
-    which the code is derived.)</li></ul>
-
-<h2>Disclaimers</h2>
-
-                     <p>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
-MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
-PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
-ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
-
-                     <p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
-DOCUMENTATION.</p>
-
-                     <p>The name and trademarks of copyright holders may NOT be used in
-advertising or publicity pertaining to the software without specific, written
-prior permission. Title to copyright in this software and any associated
-documentation will at all times remain with copyright holders.</p>
-
-                     <h2>Notes</h2>
-
-	                    <p>This version: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</p>
-
-                     <p>This formulation of W3C's notice and license became active on December 31
-2002. This version removes the copyright ownership notice such that this
-license can be used with materials other than those owned by the W3C,
-reflects that ERCIM is now a host of the W3C, includes references to this
-specific dated version of the license, and removes the ambiguous grant of
-"use". Otherwise, this version is the same as the <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">previous
-version</a> and is written so as to preserve the <a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">Free
-Software Foundation's assessment of GPL compatibility</a> and <a href="http://www.opensource.org/licenses/W3C.php">OSI's certification</a>
-under the <a href="http://www.opensource.org/docs/definition.php">Open Source
-Definition</a>.</p>
-                  </div>
-               </div>
-            </div>
-         </div>
-         
-         
-         
-      </div><div id="w3c_footer">
-         <div id="w3c_footer-inner">
-            <h2 class="offscreen">Footer Navigation</h2>
-            <div class="w3c_footer-nav">
-               <h3>Navigation</h3>
-               <ul class="footer_top_nav"><li>
-                     <a href="/">Home</a>
-                  </li><li>
-                     <a href="/standards/">Standards</a>
-                  </li><li>
-                     <a href="/participate/">Participate</a>
-                  </li><li>
-                     <a href="/Consortium/membership">Membership</a>
-                  </li><li class="last-item">
-                     <a href="/Consortium/">About W3C</a>
-                  </li></ul>
-            </div>
-            <div class="w3c_footer-nav">
-               <h3>Contact W3C</h3>
-               <ul class="footer_bottom_nav"><li>
-                     <a href="/Consortium/contact">Contact</a>
-                  </li><li>
-                     <a accesskey="0" href="/Help/">Help and FAQ</a>
-                  </li><li>
-                     <a href="/Consortium/sponsor/">Sponsor / Donate</a>
-                  </li><li>
-                     <a href="/Consortium/siteindex">Site Map</a>
-                  </li><li>
-                     <address id="w3c_signature">
-                        <a href="http://lists.w3.org/Archives/Public/site-comments/">Feedback</a></address>
-                  </li></ul>
-            </div>
-            <div class="w3c_footer-nav">
-               <h3>W3C Updates</h3>
-               <ul class="footer_follow_nav"><li>
-                     <a href="http://twitter.com/W3C" title="Follow W3C on Twitter">
-                        <img src="/2008/site/images/twitter-bird" alt="Twitter" width="78" height="83" class="social-icon" />
-                     </a>
-                     <a href="http://identi.ca/w3c" title="See W3C on Identica">
-                        <img src="/2008/site/images/identica-logo" alt="Identica" width="91" height="83" class="social-icon" />
-                     </a>
-                  </li></ul>
-            </div>
-            <p class="copyright">Copyright &#xA9; 2012 W3C <sup>&#xAE;</sup> (<a href="http://www.csail.mit.edu/">
-                  <acronym title="Massachusetts Institute of Technology">MIT</acronym>
-               </a>, <a href="http://www.ercim.org/">
-                  <acronym title="European Research Consortium for Informatics and Mathematics"> ERCIM</acronym>
-               </a>, <a href="http://www.keio.ac.jp/">Keio</a>) <a href="/Consortium/Legal/ipr-notice">Usage policies apply</a>.</p>
-         </div>
-      </div><!-- Generated from data/scripts.php, ../../smarty/{scripts.tpl} --><!-- At the bottom for performance reasons --><div id="w3c_scripts">
-         <script type="text/javascript" src="/2008/site/js/main" xml:space="preserve"><!-- --></script>
-      </div></body></html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/node_modules/sax/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/node_modules/sax/README.md b/blackberry10/node_modules/xml2js/node_modules/sax/README.md
deleted file mode 100644
index c965242..0000000
--- a/blackberry10/node_modules/xml2js/node_modules/sax/README.md
+++ /dev/null
@@ -1,216 +0,0 @@
-# sax js
-
-A sax-style parser for XML and HTML.
-
-Designed with [node](http://nodejs.org/) in mind, but should work fine in
-the browser or other CommonJS implementations.
-
-## What This Is
-
-* A very simple tool to parse through an XML string.
-* A stepping stone to a streaming HTML parser.
-* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML 
-  docs.
-
-## What This Is (probably) Not
-
-* An HTML Parser - That's a fine goal, but this isn't it.  It's just
-  XML.
-* A DOM Builder - You can use it to build an object model out of XML,
-  but it doesn't do that out of the box.
-* XSLT - No DOM = no querying.
-* 100% Compliant with (some other SAX implementation) - Most SAX
-  implementations are in Java and do a lot more than this does.
-* An XML Validator - It does a little validation when in strict mode, but
-  not much.
-* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic 
-  masochism.
-* A DTD-aware Thing - Fetching DTDs is a much bigger job.
-
-## Regarding `<!DOCTYPE`s and `<!ENTITY`s
-
-The parser will handle the basic XML entities in text nodes and attribute
-values: `&amp; &lt; &gt; &apos; &quot;`. It's possible to define additional
-entities in XML by putting them in the DTD. This parser doesn't do anything
-with that. If you want to listen to the `ondoctype` event, and then fetch
-the doctypes, and read the entities and add them to `parser.ENTITIES`, then
-be my guest.
-
-Unknown entities will fail in strict mode, and in loose mode, will pass
-through unmolested.
-
-## Usage
-
-    var sax = require("./lib/sax"),
-      strict = true, // set to false for html-mode
-      parser = sax.parser(strict);
-
-    parser.onerror = function (e) {
-      // an error happened.
-    };
-    parser.ontext = function (t) {
-      // got some text.  t is the string of text.
-    };
-    parser.onopentag = function (node) {
-      // opened a tag.  node has "name" and "attributes"
-    };
-    parser.onattribute = function (attr) {
-      // an attribute.  attr has "name" and "value"
-    };
-    parser.onend = function () {
-      // parser stream is done, and ready to have more stuff written to it.
-    };
-
-    parser.write('<xml>Hello, <who name="world">world</who>!</xml>').close();
-
-    // stream usage
-    // takes the same options as the parser
-    var saxStream = require("sax").createStream(strict, options)
-    saxStream.on("error", function (e) {
-      // unhandled errors will throw, since this is a proper node
-      // event emitter.
-      console.error("error!", e)
-      // clear the error
-      this._parser.error = null
-      this._parser.resume()
-    })
-    saxStream.on("opentag", function (node) {
-      // same object as above
-    })
-    // pipe is supported, and it's readable/writable
-    // same chunks coming in also go out.
-    fs.createReadStream("file.xml")
-      .pipe(saxStream)
-      .pipe(fs.createWriteStream("file-copy.xml"))
-
-
-
-## Arguments
-
-Pass the following arguments to the parser function.  All are optional.
-
-`strict` - Boolean. Whether or not to be a jerk. Default: `false`.
-
-`opt` - Object bag of settings regarding string formatting.  All default to `false`.
-
-Settings supported:
-
-* `trim` - Boolean. Whether or not to trim text and comment nodes.
-* `normalize` - Boolean. If true, then turn any whitespace into a single
-  space.
-* `lowercase` - Boolean. If true, then lowercase tag names and attribute names
-  in loose mode, rather than uppercasing them.
-* `xmlns` - Boolean. If true, then namespaces are supported.
-* `position` - Boolean. If false, then don't track line/col/position.
-
-## Methods
-
-`write` - Write bytes onto the stream. You don't have to do this all at
-once. You can keep writing as much as you want.
-
-`close` - Close the stream. Once closed, no more data may be written until
-it is done processing the buffer, which is signaled by the `end` event.
-
-`resume` - To gracefully handle errors, assign a listener to the `error`
-event. Then, when the error is taken care of, you can call `resume` to
-continue parsing. Otherwise, the parser will not continue while in an error
-state.
-
-## Members
-
-At all times, the parser object will have the following members:
-
-`line`, `column`, `position` - Indications of the position in the XML
-document where the parser currently is looking.
-
-`startTagPosition` - Indicates the position where the current tag starts.
-
-`closed` - Boolean indicating whether or not the parser can be written to.
-If it's `true`, then wait for the `ready` event to write again.
-
-`strict` - Boolean indicating whether or not the parser is a jerk.
-
-`opt` - Any options passed into the constructor.
-
-`tag` - The current tag being dealt with.
-
-And a bunch of other stuff that you probably shouldn't touch.
-
-## Events
-
-All events emit with a single argument. To listen to an event, assign a
-function to `on<eventname>`. Functions get executed in the this-context of
-the parser object. The list of supported events are also in the exported
-`EVENTS` array.
-
-When using the stream interface, assign handlers using the EventEmitter
-`on` function in the normal fashion.
-
-`error` - Indication that something bad happened. The error will be hanging
-out on `parser.error`, and must be deleted before parsing can continue. By
-listening to this event, you can keep an eye on that kind of stuff. Note:
-this happens *much* more in strict mode. Argument: instance of `Error`.
-
-`text` - Text node. Argument: string of text.
-
-`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.
-
-`processinginstruction` - Stuff like `<?xml foo="blerg" ?>`. Argument:
-object with `name` and `body` members. Attributes are not parsed, as
-processing instructions have implementation dependent semantics.
-
-`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`
-would trigger this kind of event. This is a weird thing to support, so it
-might go away at some point. SAX isn't intended to be used to parse SGML,
-after all.
-
-`opentag` - An opening tag. Argument: object with `name` and `attributes`.
-In non-strict mode, tag names are uppercased, unless the `lowercase`
-option is set.  If the `xmlns` option is set, then it will contain
-namespace binding information on the `ns` member, and will have a
-`local`, `prefix`, and `uri` member.
-
-`closetag` - A closing tag. In loose mode, tags are auto-closed if their
-parent closes. In strict mode, well-formedness is enforced. Note that
-self-closing tags will have `closeTag` emitted immediately after `openTag`.
-Argument: tag name.
-
-`attribute` - An attribute node.  Argument: object with `name` and `value`.
-In non-strict mode, attribute names are uppercased, unless the `lowercase`
-option is set.  If the `xmlns` option is set, it will also contains namespace
-information.
-
-`comment` - A comment node.  Argument: the string of the comment.
-
-`opencdata` - The opening tag of a `<![CDATA[` block.
-
-`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get
-quite large, this event may fire multiple times for a single block, if it
-is broken up into multiple `write()`s. Argument: the string of random
-character data.
-
-`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.
-
-`opennamespace` - If the `xmlns` option is set, then this event will
-signal the start of a new namespace binding.
-
-`closenamespace` - If the `xmlns` option is set, then this event will
-signal the end of a namespace binding.
-
-`end` - Indication that the closed stream has ended.
-
-`ready` - Indication that the stream has reset, and is ready to be written
-to.
-
-`noscript` - In non-strict mode, `<script>` tags trigger a `"script"`
-event, and their contents are not checked for special xml characters.
-If you pass `noscript: true`, then this behavior is suppressed.
-
-## Reporting Problems
-
-It's best to write a failing test if you find an issue.  I will always
-accept pull requests with failing tests if they demonstrate intended
-behavior, but it is very hard to figure out what issue you're describing
-without a test.  Writing a test is also the best way for you yourself
-to figure out if you really understand the issue you think you have with
-sax-js.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/node_modules/sax/component.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/node_modules/sax/component.json b/blackberry10/node_modules/xml2js/node_modules/sax/component.json
deleted file mode 100644
index 96b5d73..0000000
--- a/blackberry10/node_modules/xml2js/node_modules/sax/component.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "name": "sax",
-  "description": "An evented streaming XML parser in JavaScript",
-  "author": "Isaac Z. Schlueter <i...@izs.me> (http://blog.izs.me/)",
-  "version": "0.5.2",
-  "main": "lib/sax.js",
-  "license": "BSD",
-  "scripts": [
-    "lib/sax.js"
-  ],
-  "repository": "git://github.com/isaacs/sax-js.git"
-}


[11/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/package.json
deleted file mode 100644
index 4f3d459..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "name": "eyes",
-  "description": "a customizable value inspector",
-  "url": "http://github.com/cloudhead/eyes.js",
-  "keywords": [
-    "inspector",
-    "debug",
-    "inspect",
-    "print"
-  ],
-  "author": {
-    "name": "Alexis Sellier",
-    "email": "self@cloudhead.net"
-  },
-  "contributors": [
-    {
-      "name": "Charlie Robbins",
-      "email": "charlie@nodejitsu.com"
-    }
-  ],
-  "licenses": [
-    "MIT"
-  ],
-  "main": "./lib/eyes",
-  "version": "0.1.8",
-  "scripts": {
-    "test": "node test/*-test.js"
-  },
-  "directories": {
-    "lib": "./lib",
-    "test": "./test"
-  },
-  "engines": {
-    "node": "> 0.1.90"
-  },
-  "readme": "eyes\n====\n\na customizable value inspector for Node.js\n\nsynopsis\n--------\n\nI was tired of looking at cluttered output in the console -- something needed to be done,\n`sys.inspect()` didn't display regexps correctly, and was too verbose, and I had an hour or two to spare. \nSo I decided to have some fun. _eyes_ were born.\n\n![eyes-ss](http://dl.dropbox.com/u/251849/eyes-js-ss.gif)\n\n_example of the output of a user-customized eyes.js inspector_\n\n*eyes* also deals with circular objects in an intelligent way, and can pretty-print object literals.\n\nusage\n-----\n\n    var inspect = require('eyes').inspector({styles: {all: 'magenta'}});\n\n    inspect(something); // inspect with the settings passed to `inspector`\n\nor\n\n    var eyes = require('eyes');\n\n    eyes.inspect(something); // inspect with the default settings\n\nyou can pass a _label_ to `inspect()`, to keep track of your inspections:\n\n    eyes.inspect(something, \"a random value\");\n\nIf you want
  to return the output of eyes without printing it, you can set it up this way:\n\n    var inspect = require('eyes').inspector({ stream: null });\n\n    sys.puts(inspect({ something: 42 }));\n\ncustomization\n-------------\n\nThese are the default styles and settings used by _eyes_.\n\n    styles: {                 // Styles applied to stdout\n        all:     'cyan',      // Overall style applied to everything\n        label:   'underline', // Inspection labels, like 'array' in `array: [1, 2, 3]`\n        other:   'inverted',  // Objects which don't have a literal representation, such as functions\n        key:     'bold',      // The keys in object literals, like 'a' in `{a: 1}`\n        special: 'grey',      // null, undefined...\n        string:  'green',\n        number:  'magenta',\n        bool:    'blue',      // true false\n        regexp:  'green',     // /\\d+/\n    },\n    \n    pretty: true,             // Indent object literals\n    hideFunctions: false,     // Don't ou
 tput functions at all\n    stream: process.stdout,   // Stream to write to, or null\n    maxLength: 2048           // Truncate output if longer\n\nYou can overwrite them with your own, by passing a similar object to `inspector()` or `inspect()`.\n\n    var inspect = require('eyes').inspector({\n        styles: {\n            all: 'magenta',\n            special: 'bold'\n        },\n        maxLength: 512\n    });\n\n",
-  "readmeFilename": "README.md",
-  "_id": "eyes@0.1.8",
-  "_from": "eyes@0.1.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/test/eyes-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/test/eyes-test.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/test/eyes-test.js
deleted file mode 100644
index 1f9606a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/test/eyes-test.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var util = require('util');
-var eyes = require('../lib/eyes');
-
-eyes.inspect({
-    number: 42,
-    string: "John Galt",
-    regexp: /[a-z]+/,
-    array: [99, 168, 'x', {}],
-    func: function () {},
-    bool: false,
-    nil: null,
-    undef: undefined,
-    object: {attr: []}
-}, "native types");
-
-eyes.inspect({
-    number: new(Number)(42),
-    string: new(String)("John Galt"),
-    regexp: new(RegExp)(/[a-z]+/),
-    array: new(Array)(99, 168, 'x', {}),
-    bool: new(Boolean)(false),
-    object: new(Object)({attr: []}),
-    date: new(Date)
-}, "wrapped types");
-
-var obj = {};
-obj.that = { self: obj };
-obj.self = obj;
-
-eyes.inspect(obj, "circular object");
-eyes.inspect({hello: 'moto'}, "small object");
-eyes.inspect({hello: new(Array)(6) }, "big object");
-eyes.inspect(["hello 'world'", 'hello "world"'], "quotes");
-eyes.inspect({
-    recommendations: [{
-        id: 'a7a6576c2c822c8e2bd81a27e41437d8',
-        key: [ 'spree', 3.764316258020699 ],
-        value: {
-            _id: 'a7a6576c2c822c8e2bd81a27e41437d8',
-            _rev: '1-2e2d2f7fd858c4a5984bcf809d22ed98',
-            type: 'domain',
-            domain: 'spree',
-            weight: 3.764316258020699,
-            product_id: 30
-        }
-    }]
-}, 'complex');
-
-eyes.inspect([null], "null in array");
-
-var inspect = eyes.inspector({ stream: null });
-
-util.puts(inspect('something', "something"));
-util.puts(inspect("something else"));
-
-util.puts(inspect(["no color"], null, { styles: false }));

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/.npmignore b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/.npmignore
deleted file mode 100644
index 9303c34..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/README.md b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/README.md
deleted file mode 100644
index 07ba942..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# node-pkginfo
-
-An easy way to expose properties on a module from a package.json
-
-## Installation
-
-### Installing npm (node package manager)
-```
-  curl http://npmjs.org/install.sh | sh
-```
-
-### Installing pkginfo
-```
-  [sudo] npm install pkginfo
-```
-
-## Motivation
-How often when writing node.js modules have you written the following line(s) of code? 
-
-* Hard code your version string into your code
-
-``` js
-  exports.version = '0.1.0';
-```
-
-* Programmatically expose the version from the package.json
-
-``` js
-  exports.version = JSON.parse(fs.readFileSync('/path/to/package.json', 'utf8')).version;
-```
-
-In other words, how often have you wanted to expose basic information from your package.json onto your module programmatically? **WELL NOW YOU CAN!**
-
-## Usage
-
-Using `pkginfo` is idiot-proof, just require and invoke it. 
-
-``` js
-  var pkginfo = require('pkginfo')(module);
-  
-  console.dir(module.exports);
-```
-
-By invoking the `pkginfo` module all of the properties in your `package.json` file will be automatically exposed on the callee module (i.e. the parent module of `pkginfo`). 
-
-Here's a sample of the output:
-
-```
-  { name: 'simple-app',
-    description: 'A test fixture for pkginfo',
-    version: '0.1.0',
-    author: 'Charlie Robbins <ch...@gmail.com>',
-    keywords: [ 'test', 'fixture' ],
-    main: './index.js',
-    scripts: { test: 'vows test/*-test.js --spec' },
-    engines: { node: '>= 0.4.0' } }
-```
-
-### Expose specific properties
-If you don't want to expose **all** properties on from your `package.json` on your module then simple pass those properties to the `pkginfo` function:
-
-``` js
-  var pkginfo = require('pkginfo')(module, 'version', 'author');
-  
-  console.dir(module.exports);
-```
-
-```
-  { version: '0.1.0',
-    author: 'Charlie Robbins <ch...@gmail.com>' }
-```
-
-If you're looking for further usage see the [examples][0] included in this repository. 
-
-## Run Tests
-Tests are written in [vows][1] and give complete coverage of all APIs.
-
-```
-  vows test/*-test.js --spec
-```
-
-[0]: https://github.com/indexzero/node-pkginfo/tree/master/examples
-[1]: http://vowsjs.org
-
-#### Author: [Charlie Robbins](http://nodejitsu.com)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/docco.css
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/docco.css b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/docco.css
deleted file mode 100644
index bd54134..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/docco.css
+++ /dev/null
@@ -1,194 +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;
-}
-h4, h5, h6 {
-  color: #333;
-  margin: 6px 0 6px 0;
-  font-size: 13px;
-}
-  h2, h3 {
-    margin-bottom: 0;
-    color: #000;
-  }
-    h1 {
-      margin-top: 40px;
-      margin-bottom: 15px;
-      color: #000;
-    }
-#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: 450px;
-    min-width: 450px;
-    min-height: 5px;
-    padding: 10px 25px 1px 50px;
-    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;
-    }
-    .pilwrap {
-      position: relative;
-    }
-      .pilcrow {
-        font: 12px Arial;
-        text-decoration: none;
-        color: #454545;
-        position: absolute;
-        top: 3px; left: -20px;
-        padding: 1px 2px;
-        opacity: 0;
-        -webkit-transition: opacity 0.2s linear;
-      }
-        td.docs:hover .pilcrow {
-          opacity: 1;
-        }
-  td.code, th.code {
-    padding: 14px 15px 16px 25px;
-    width: 100%;
-    vertical-align: top;
-    background: #f5f5ff;
-    border-left: 1px solid #e5e5ee;
-  }
-    pre, tt, code {
-      font-size: 12px; line-height: 18px;
-      font-family: Menlo, 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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/pkginfo.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/pkginfo.html b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/pkginfo.html
deleted file mode 100644
index bf615fa..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/docs/pkginfo.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>pkginfo.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               pkginfo.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span class="cm">/*</span>
-<span class="cm"> * pkginfo.js: Top-level include for the pkginfo module</span>
-<span class="cm"> *</span>
-<span class="cm"> * (C) 2011, Charlie Robbins</span>
-<span class="cm"> *</span>
-<span class="cm"> */</span>
- 
-<span class="kd">var</span> <span class="nx">fs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;fs&#39;</span><span class="p">),</span>
-    <span class="nx">path</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <h3>function pkginfo ([options, 'property', 'property' ..])</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@options {Object|Array|string} <strong>Optional</strong> Options used when exposing properties.</h4>
-
-<h4>@arguments {string...} <strong>Optional</strong> Specified properties to expose.</h4>
-
-<p>Exposes properties from the package.json file for the parent module on 
-it's exports. Valid usage:</p>
-
-<p><code>require('pkginfo')()</code></p>
-
-<p><code>require('pkginfo')('version', 'author');</code></p>
-
-<p><code>require('pkginfo')(['version', 'author']);</code></p>
-
-<p><code>require('pkginfo')({ include: ['version', 'author'] });</code></p>             </td>             <td class="code">               <div class="highlight"><pre><span class="kd">var</span> <span class="nx">pkginfo</span> <span class="o">=</span> <span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-  <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="p">[].</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">,</span> <span class="mi">2</span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">arg</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="k">typeof</span> <span class="nx">arg</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">;</span>
-  <span class="p">});</span>
-  </pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p><strong>Parse variable arguments</strong></p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="k">if</span> <span class="p">(</span><span class="nb">Array</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">options</span><span class="p">))</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>If the options passed in is an Array assume that
-it is the Array of properties to expose from the
-on the package.json file on the parent module.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="nx">options</span> <span class="p">};</span>
-  <span class="p">}</span>
-  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">options</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Otherwise if the first argument is a string, then
-assume that it is the first property to expose from
-the package.json file on the parent module.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="p">[</span><span class="nx">options</span><span class="p">]</span> <span class="p">};</span>
-  <span class="p">}</span>
-  </pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p><strong>Setup default options</strong></p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="p">[]</span> <span class="p">};</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">args</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <p>If additional string arguments have been passed in
-then add them to the properties to expose on the 
-parent module. </p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span><span class="p">.</span><span class="nx">include</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">args</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="kd">var</span> <span class="nx">pkg</span> <span class="o">=</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">read</span><span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">options</span><span class="p">.</span><span class="nx">dir</span><span class="p">).</span><span class="kr">package</span><span class="p">;</span>
-  <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">pkg</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="o">!~</span><span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
-      <span class="k">return</span><span class="p">;</span>
-    <span class="p">}</span>
-    
-    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">pmodule</span><span class="p">.</span><span class="nx">exports</span><span class="p">[</span><span class="nx">key</span><span class="p">])</span> <span class="p">{</span>
-      <span class="nx">pmodule</span><span class="p">.</span><span class="nx">exports</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">pkg</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span>
-    <span class="p">}</span>
-  <span class="p">});</span>
-  
-  <span class="k">return</span> <span class="nx">pkginfo</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <h3>function find (dir)</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@dir {string} <strong>Optional</strong> Directory to start search from.</h4>
-
-<p>Searches up the directory tree from <code>dir</code> until it finds a directory
-which contains a <code>package.json</code> file. </p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">)</span> <span class="p">{</span>
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">dir</span> <span class="o">||</span> <span class="nx">pmodule</span><span class="p">.</span><span class="nx">filename</span><span class="p">;</span>
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span> 
-  
-  <span class="kd">var</span> <span class="nx">files</span> <span class="o">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">readdirSync</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="o">~</span><span class="nx">files</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;package.json&#39;</span><span class="p">))</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="nx">path</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="nx">dir</span><span class="p">,</span> <span class="s1">&#39;package.json&#39;</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">dir</span> <span class="o">===</span> <span class="s1">&#39;/&#39;</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Could not find package.json up from: &#39;</span> <span class="o">+</span> <span class="nx">dir</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="k">return</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <h3>function read (pmodule, dir)</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@dir {string} <strong>Optional</strong> Directory to start search from.</h4>
-
-<p>Searches up the directory tree from <code>dir</code> until it finds a directory
-which contains a <code>package.json</code> file and returns the package information.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">.</span><span class="nx">read</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">)</span> <span class="p">{</span> 
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">);</span>
-  
-  <span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">readFileSync</span><span class="p">(</span><span class="nx">dir</span><span class="p">).</span><span class="nx">toString</span><span class="p">();</span>
-      
-  <span class="k">return</span> <span class="p">{</span>
-    <span class="nx">dir</span><span class="o">:</span> <span class="nx">dir</span><span class="p">,</span> 
-    <span class="kr">package</span><span class="o">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
-  <span class="p">};</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>Call <code>pkginfo</code> on this module and expose version.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">(</span><span class="nx">module</span><span class="p">,</span> <span class="p">{</span>
-  <span class="nx">dir</span><span class="o">:</span> <span class="nx">__dirname</span><span class="p">,</span>
-  <span class="nx">include</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">],</span>
-  <span class="nx">target</span><span class="o">:</span> <span class="nx">pkginfo</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/all-properties.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/all-properties.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/all-properties.js
deleted file mode 100644
index fd1d831..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/all-properties.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * all-properties.js: Sample of including all properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
-
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module);
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/array-argument.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/array-argument.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/array-argument.js
deleted file mode 100644
index b1b6848..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/array-argument.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * array-argument.js: Sample of including specific properties from a package.json file
- *                    using Array argument syntax.
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, ['version', 'author']);
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/multiple-properties.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/multiple-properties.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/multiple-properties.js
deleted file mode 100644
index b4b5fd6..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/multiple-properties.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * multiple-properties.js: Sample of including multiple properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, 'version', 'author');
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/object-argument.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/object-argument.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/object-argument.js
deleted file mode 100644
index 28420c8..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/object-argument.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * object-argument.js: Sample of including specific properties from a package.json file
- *                     using Object argument syntax.
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, {
-      include: ['version', 'author']
-    });
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/package.json
deleted file mode 100644
index 1f2f01c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "name": "simple-app",
-  "description": "A test fixture for pkginfo",
-  "version": "0.1.0",
-  "author": "Charlie Robbins <ch...@gmail.com>",
-  "keywords": ["test", "fixture"],
-  "main": "./index.js",
-  "scripts": { "test": "vows test/*-test.js --spec" },
-  "engines": { "node": ">= 0.4.0" }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/single-property.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/single-property.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/single-property.js
deleted file mode 100644
index 4f44561..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/examples/single-property.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * single-property.js: Sample of including a single specific properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, 'version');
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/lib/pkginfo.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/lib/pkginfo.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/lib/pkginfo.js
deleted file mode 100644
index a4a6227..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/lib/pkginfo.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * pkginfo.js: Top-level include for the pkginfo module
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var fs = require('fs'),
-    path = require('path');
-
-//
-// ### function pkginfo ([options, 'property', 'property' ..])
-// #### @pmodule {Module} Parent module to read from.
-// #### @options {Object|Array|string} **Optional** Options used when exposing properties.
-// #### @arguments {string...} **Optional** Specified properties to expose.
-// Exposes properties from the package.json file for the parent module on 
-// it's exports. Valid usage:
-//
-// `require('pkginfo')()`
-//
-// `require('pkginfo')('version', 'author');`
-//
-// `require('pkginfo')(['version', 'author']);`
-//
-// `require('pkginfo')({ include: ['version', 'author'] });`
-//
-var pkginfo = module.exports = function (pmodule, options) {
-  var args = [].slice.call(arguments, 2).filter(function (arg) {
-    return typeof arg === 'string';
-  });
-  
-  //
-  // **Parse variable arguments**
-  //
-  if (Array.isArray(options)) {
-    //
-    // If the options passed in is an Array assume that
-    // it is the Array of properties to expose from the
-    // on the package.json file on the parent module.
-    //
-    options = { include: options };
-  }
-  else if (typeof options === 'string') {
-    //
-    // Otherwise if the first argument is a string, then
-    // assume that it is the first property to expose from
-    // the package.json file on the parent module.
-    //
-    options = { include: [options] };
-  }
-  
-  //
-  // **Setup default options**
-  //
-  options = options || { include: [] };
-  
-  if (args.length > 0) {
-    //
-    // If additional string arguments have been passed in
-    // then add them to the properties to expose on the 
-    // parent module. 
-    //
-    options.include = options.include.concat(args);
-  }
-  
-  var pkg = pkginfo.read(pmodule, options.dir).package;
-  Object.keys(pkg).forEach(function (key) {
-    if (options.include.length > 0 && !~options.include.indexOf(key)) {
-      return;
-    }
-    
-    if (!pmodule.exports[key]) {
-      pmodule.exports[key] = pkg[key];
-    }
-  });
-  
-  return pkginfo;
-};
-
-//
-// ### function find (dir)
-// #### @pmodule {Module} Parent module to read from.
-// #### @dir {string} **Optional** Directory to start search from.
-// Searches up the directory tree from `dir` until it finds a directory
-// which contains a `package.json` file. 
-//
-pkginfo.find = function (pmodule, dir) {
-  dir = dir || pmodule.filename;
-  dir = path.dirname(dir); 
-  
-  var files = fs.readdirSync(dir);
-  
-  if (~files.indexOf('package.json')) {
-    return path.join(dir, 'package.json');
-  }
-  
-  if (dir === '/') {
-    throw new Error('Could not find package.json up from: ' + dir);
-  }
-  else if (!dir || dir === '.') {
-    throw new Error('Cannot find package.json from unspecified directory');
-  }
-  
-  return pkginfo.find(pmodule, dir);
-};
-
-//
-// ### function read (pmodule, dir)
-// #### @pmodule {Module} Parent module to read from.
-// #### @dir {string} **Optional** Directory to start search from.
-// Searches up the directory tree from `dir` until it finds a directory
-// which contains a `package.json` file and returns the package information.
-//
-pkginfo.read = function (pmodule, dir) { 
-  dir = pkginfo.find(pmodule, dir);
-  
-  var data = fs.readFileSync(dir).toString();
-      
-  return {
-    dir: dir, 
-    package: JSON.parse(data)
-  };
-};
-
-//
-// Call `pkginfo` on this module and expose version.
-//
-pkginfo(module, {
-  dir: __dirname,
-  include: ['version'],
-  target: pkginfo
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/package.json
deleted file mode 100644
index b56a0bc..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "name": "pkginfo",
-  "version": "0.2.3",
-  "description": "An easy way to expose properties on a module from a package.json",
-  "author": {
-    "name": "Charlie Robbins",
-    "email": "charlie.robbins@gmail.com"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/indexzero/node-pkginfo.git"
-  },
-  "keywords": [
-    "info",
-    "tools",
-    "package.json"
-  ],
-  "devDependencies": {
-    "vows": "0.6.x"
-  },
-  "main": "./lib/pkginfo",
-  "scripts": {
-    "test": "vows test/*-test.js --spec"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
-  },
-  "readme": "# node-pkginfo\n\nAn easy way to expose properties on a module from a package.json\n\n## Installation\n\n### Installing npm (node package manager)\n```\n  curl http://npmjs.org/install.sh | sh\n```\n\n### Installing pkginfo\n```\n  [sudo] npm install pkginfo\n```\n\n## Motivation\nHow often when writing node.js modules have you written the following line(s) of code? \n\n* Hard code your version string into your code\n\n``` js\n  exports.version = '0.1.0';\n```\n\n* Programmatically expose the version from the package.json\n\n``` js\n  exports.version = JSON.parse(fs.readFileSync('/path/to/package.json', 'utf8')).version;\n```\n\nIn other words, how often have you wanted to expose basic information from your package.json onto your module programmatically? **WELL NOW YOU CAN!**\n\n## Usage\n\nUsing `pkginfo` is idiot-proof, just require and invoke it. \n\n``` js\n  var pkginfo = require('pkginfo')(module);\n  \n  console.dir(module.exports);\n```\n\nBy invoking the `pkgin
 fo` module all of the properties in your `package.json` file will be automatically exposed on the callee module (i.e. the parent module of `pkginfo`). \n\nHere's a sample of the output:\n\n```\n  { name: 'simple-app',\n    description: 'A test fixture for pkginfo',\n    version: '0.1.0',\n    author: 'Charlie Robbins <ch...@gmail.com>',\n    keywords: [ 'test', 'fixture' ],\n    main: './index.js',\n    scripts: { test: 'vows test/*-test.js --spec' },\n    engines: { node: '>= 0.4.0' } }\n```\n\n### Expose specific properties\nIf you don't want to expose **all** properties on from your `package.json` on your module then simple pass those properties to the `pkginfo` function:\n\n``` js\n  var pkginfo = require('pkginfo')(module, 'version', 'author');\n  \n  console.dir(module.exports);\n```\n\n```\n  { version: '0.1.0',\n    author: 'Charlie Robbins <ch...@gmail.com>' }\n```\n\nIf you're looking for further usage see the [examples][0] included in this repository. 
 \n\n## Run Tests\nTests are written in [vows][1] and give complete coverage of all APIs.\n\n```\n  vows test/*-test.js --spec\n```\n\n[0]: https://github.com/indexzero/node-pkginfo/tree/master/examples\n[1]: http://vowsjs.org\n\n#### Author: [Charlie Robbins](http://nodejitsu.com)",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/indexzero/node-pkginfo/issues"
-  },
-  "_id": "pkginfo@0.2.3",
-  "_from": "pkginfo@0.2.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/test/pkginfo-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/test/pkginfo-test.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/test/pkginfo-test.js
deleted file mode 100644
index 3156c00..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/pkginfo/test/pkginfo-test.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * pkginfo-test.js: Tests for the pkginfo module.
- *
- * (C) 2011, Charlie Robbins
- *
- */
-
-var assert = require('assert'),
-    exec = require('child_process').exec,
-    fs = require('fs'),
-    path = require('path'),
-    vows = require('vows'),
-    pkginfo = require('../lib/pkginfo');
-
-function assertProperties (source, target) {
-  assert.lengthOf(source, target.length + 1);
-  target.forEach(function (prop) {
-    assert.isTrue(!!~source.indexOf(prop));
-  });
-}
-
-function testExposes (options) {
-  return {
-    topic: function () {
-      exec('node ' + path.join(__dirname, '..', 'examples', options.script), this.callback);
-    },
-    "should expose that property correctly": function (err, stdout, stderr) {
-      assert.isNull(err);
-      
-      var exposed = stderr.match(/'(\w+)'/ig).map(function (p) { 
-        return p.substring(1, p.length - 1);
-      });
-      
-      return !options.assert 
-        ? assertProperties(exposed, options.properties)
-        : options.assert(exposed);
-    }
-  }
-}
-
-vows.describe('pkginfo').addBatch({
-  "When using the pkginfo module": {
-    "and passed a single `string` argument": testExposes({
-      script: 'single-property.js',
-      properties: ['version']
-    }),
-    "and passed multiple `string` arguments": testExposes({
-      script: 'multiple-properties.js',
-      properties: ['version', 'author']
-    }),
-    "and passed an `object` argument": testExposes({
-      script: 'object-argument.js',
-      properties: ['version', 'author']
-    }),
-    "and passed an `array` argument": testExposes({
-      script: 'array-argument.js',
-      properties: ['version', 'author']
-    }),
-    "and passed no arguments": testExposes({
-      script: 'all-properties.js',
-      assert: function (exposed) {
-        var pkg = fs.readFileSync(path.join(__dirname, '..', 'examples', 'package.json')).toString(),
-            keys = Object.keys(JSON.parse(pkg));
-        
-        assertProperties(exposed, keys);
-      }
-    })
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/LICENSE b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/LICENSE
deleted file mode 100644
index a4a9aee..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modi
 fications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/README.md b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/README.md
deleted file mode 100644
index 8713a80..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/README.md
+++ /dev/null
@@ -1,287 +0,0 @@
-# Request -- Simplified HTTP request method
-
-## Install
-
-<pre>
-  npm install request
-</pre>
-
-Or from source:
-
-<pre>
-  git clone git://github.com/mikeal/request.git 
-  cd request
-  npm link
-</pre>
-
-## Super simple to use
-
-Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.
-
-```javascript
-var request = require('request');
-request('http://www.google.com', function (error, response, body) {
-  if (!error && response.statusCode == 200) {
-    console.log(body) // Print the google web page.
-  }
-})
-```
-
-## Streaming
-
-You can stream any response to a file stream.
-
-```javascript
-request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))
-```
-
-You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types, in this case `application/json`, and use the proper content-type in the PUT request if one is not already provided in the headers.
-
-```javascript
-fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))
-```
-
-Request can also pipe to itself. When doing so the content-type and content-length will be preserved in the PUT headers.
-
-```javascript
-request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))
-```
-
-Now let's get fancy.
-
-```javascript
-http.createServer(function (req, resp) {
-  if (req.url === '/doodle.png') {
-    if (req.method === 'PUT') {
-      req.pipe(request.put('http://mysite.com/doodle.png'))
-    } else if (req.method === 'GET' || req.method === 'HEAD') {
-      request.get('http://mysite.com/doodle.png').pipe(resp)
-    } 
-  }
-})
-```
-
-You can also pipe() from a http.ServerRequest instance and to a http.ServerResponse instance. The HTTP method and headers will be sent as well as the entity-body data. Which means that, if you don't really care about security, you can do:
-
-```javascript
-http.createServer(function (req, resp) {
-  if (req.url === '/doodle.png') {
-    var x = request('http://mysite.com/doodle.png')
-    req.pipe(x)
-    x.pipe(resp)
-  }
-})
-```
-
-And since pipe() returns the destination stream in node 0.5.x you can do one line proxying :)
-
-```javascript
-req.pipe(request('http://mysite.com/doodle.png')).pipe(resp)
-```
-
-Also, none of this new functionality conflicts with requests previous features, it just expands them.
-
-```javascript
-var r = request.defaults({'proxy':'http://localproxy.com'})
-
-http.createServer(function (req, resp) {
-  if (req.url === '/doodle.png') {
-    r.get('http://google.com/doodle.png').pipe(resp)
-  }
-})
-```
-
-You can still use intermediate proxies, the requests will still follow HTTP forwards, etc.
-
-## OAuth Signing
-
-```javascript
-// Twitter OAuth
-var qs = require('querystring')
-  , oauth =
-    { callback: 'http://mysite.com/callback/'
-    , consumer_key: CONSUMER_KEY
-    , consumer_secret: CONSUMER_SECRET
-    }
-  , url = 'https://api.twitter.com/oauth/request_token'
-  ;
-request.post({url:url, oauth:oauth}, function (e, r, body) {
-  // Assume by some stretch of magic you aquired the verifier
-  var access_token = qs.parse(body)
-    , oauth = 
-      { consumer_key: CONSUMER_KEY
-      , consumer_secret: CONSUMER_SECRET
-      , token: access_token.oauth_token
-      , verifier: VERIFIER
-      , token_secret: access_token.oauth_token_secret
-      }
-    , url = 'https://api.twitter.com/oauth/access_token'
-    ;
-  request.post({url:url, oauth:oauth}, function (e, r, body) {
-    var perm_token = qs.parse(body)
-      , oauth = 
-        { consumer_key: CONSUMER_KEY
-        , consumer_secret: CONSUMER_SECRET
-        , token: perm_token.oauth_token
-        , token_secret: perm_token.oauth_token_secret
-        }
-      , url = 'https://api.twitter.com/1/users/show.json?'
-      , params = 
-        { screen_name: perm_token.screen_name
-        , user_id: perm_token.user_id
-        }
-      ;
-    url += qs.stringify(params)
-    request.get({url:url, oauth:oauth, json:true}, function (e, r, user) {
-      console.log(user)
-    })
-  })
-})
-```
-
-
-
-### request(options, callback)
-
-The first argument can be either a url or an options object. The only required option is uri, all others are optional.
-
-* `uri` || `url` - fully qualified uri or a parsed url object from url.parse()
-* `qs` - object containing querystring values to be appended to the uri
-* `method` - http method, defaults to GET
-* `headers` - http headers, defaults to {}
-* `body` - entity body for POST and PUT requests. Must be buffer or string.
-* `form` - sets `body` but to querystring representation of value and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header.
-* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header.
-* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below.
-* `followRedirect` - follow HTTP 3xx responses as redirects. defaults to true.
-* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects. defaults to false.
-* `maxRedirects` - the maximum number of redirects to follow, defaults to 10.
-* `encoding` - Encoding to be used on `setEncoding` of response data. If set to `null`, the body is returned as a Buffer.
-* `pool` - A hash object containing the agents for these requests. If omitted this request will use the global pool which is set to node's default maxSockets.
-* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.
-* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request	
-* `proxy` - An HTTP proxy to be used. Support proxy Auth with Basic Auth the same way it's supported with the `url` parameter by embedding the auth info in the uri.
-* `oauth` - Options for OAuth HMAC-SHA1 signing, see documentation above.
-* `strictSSL` - Set to `true` to require that SSL certificates be valid. Note: to use your own certificate authority, you need to specify an agent that was created with that ca as an option.
-* `jar` - Set to `false` if you don't want cookies to be remembered for future use or define your custom cookie jar (see examples section)
-
-
-The callback argument gets 3 arguments. The first is an error when applicable (usually from the http.Client option not the http.ClientRequest object). The second in an http.ClientResponse object. The third is the response body String or Buffer.
-
-## Convenience methods
-
-There are also shorthand methods for different HTTP METHODs and some other conveniences.
-
-### request.defaults(options)  
-  
-This method returns a wrapper around the normal request API that defaults to whatever options you pass in to it.
-
-### request.put
-
-Same as request() but defaults to `method: "PUT"`.
-
-```javascript
-request.put(url)
-```
-
-### request.post
-
-Same as request() but defaults to `method: "POST"`.
-
-```javascript
-request.post(url)
-```
-
-### request.head
-
-Same as request() but defaults to `method: "HEAD"`.
-
-```javascript
-request.head(url)
-```
-
-### request.del
-
-Same as request() but defaults to `method: "DELETE"`.
-
-```javascript
-request.del(url)
-```
-
-### request.get
-
-Alias to normal request method for uniformity.
-
-```javascript
-request.get(url)
-```
-### request.cookie
-
-Function that creates a new cookie.
-
-```javascript
-request.cookie('cookie_string_here')
-```
-### request.jar
-
-Function that creates a new cookie jar.
-
-```javascript
-request.jar()
-```
-
-
-## Examples:
-
-```javascript
-  var request = require('request')
-    , rand = Math.floor(Math.random()*100000000).toString()
-    ;
-  request(
-    { method: 'PUT'
-    , uri: 'http://mikeal.iriscouch.com/testjs/' + rand
-    , multipart: 
-      [ { 'content-type': 'application/json'
-        ,  body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})
-        }
-      , { body: 'I am an attachment' }
-      ] 
-    }
-  , function (error, response, body) {
-      if(response.statusCode == 201){
-        console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)
-      } else {
-        console.log('error: '+ response.statusCode)
-        console.log(body)
-      }
-    }
-  )
-```
-Cookies are enabled by default (so they can be used in subsequent requests). To disable cookies set jar to false (either in defaults or in the options sent).
-
-```javascript
-var request = request.defaults({jar: false})
-request('http://www.google.com', function () {
-  request('http://images.google.com')
-})
-```
-
-If you to use a custom cookie jar (instead of letting request use its own global cookie jar) you do so by setting the jar default or by specifying it as an option:
-
-```javascript
-var j = request.jar()
-var request = request.defaults({jar:j})
-request('http://www.google.com', function () {
-  request('http://images.google.com')
-})
-```
-OR
-
-```javascript
-var j = request.jar()
-var cookie = request.cookie('your_cookie_here')
-j.add(cookie)
-request({url: 'http://www.google.com', jar: j}, function () {
-  request('http://images.google.com')
-})
-```

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws.js
deleted file mode 100644
index 4e87bff..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws.js
+++ /dev/null
@@ -1,190 +0,0 @@
-
-/*!
- * knox - auth
- * Copyright(c) 2010 LearnBoost <de...@learnboost.com>
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var crypto = require('crypto')
-  , parse = require('url').parse;
-
-/**
- * Valid keys.
- */
-
-var keys = [
-    'acl'
-  , 'location'
-  , 'logging'
-  , 'notification'
-  , 'partNumber'
-  , 'policy'
-  , 'requestPayment'
-  , 'torrent'
-  , 'uploadId'
-  , 'uploads'
-  , 'versionId'
-  , 'versioning'
-  , 'versions'
-  , 'website'
-];
-
-/**
- * Return an "Authorization" header value with the given `options`
- * in the form of "AWS <key>:<signature>"
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-exports.authorization = function(options){
-  return 'AWS ' + options.key + ':' + exports.sign(options);
-};
-
-/**
- * Simple HMAC-SHA1 Wrapper
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */ 
-
-exports.hmacSha1 = function(options){
-  return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64');
-};
-
-/**
- * Create a base64 sha1 HMAC for `options`. 
- * 
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-exports.sign = function(options){
-  options.message = exports.stringToSign(options);
-  return exports.hmacSha1(options);
-};
-
-/**
- * Create a base64 sha1 HMAC for `options`. 
- *
- * Specifically to be used with S3 presigned URLs
- * 
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-exports.signQuery = function(options){
-  options.message = exports.queryStringToSign(options);
-  return exports.hmacSha1(options);
-};
-
-/**
- * Return a string for sign() with the given `options`.
- *
- * Spec:
- * 
- *    <verb>\n
- *    <md5>\n
- *    <content-type>\n
- *    <date>\n
- *    [headers\n]
- *    <resource>
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-exports.stringToSign = function(options){
-  var headers = options.amazonHeaders || '';
-  if (headers) headers += '\n';
-  return [
-      options.verb
-    , options.md5
-    , options.contentType
-    , options.date.toUTCString()
-    , headers + options.resource
-  ].join('\n');
-};
-
-/**
- * Return a string for sign() with the given `options`, but is meant exclusively
- * for S3 presigned URLs
- *
- * Spec:
- * 
- *    <date>\n
- *    <resource>
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-exports.queryStringToSign = function(options){
-  return 'GET\n\n\n' +
-    options.date + '\n' +
-    options.resource;
-};
-
-/**
- * Perform the following:
- *
- *  - ignore non-amazon headers
- *  - lowercase fields
- *  - sort lexicographically
- *  - trim whitespace between ":"
- *  - join with newline
- *
- * @param {Object} headers
- * @return {String}
- * @api private
- */
-
-exports.canonicalizeHeaders = function(headers){
-  var buf = []
-    , fields = Object.keys(headers);
-  for (var i = 0, len = fields.length; i < len; ++i) {
-    var field = fields[i]
-      , val = headers[field]
-      , field = field.toLowerCase();
-    if (0 !== field.indexOf('x-amz')) continue;
-    buf.push(field + ':' + val);
-  }
-  return buf.sort().join('\n');
-};
-
-/**
- * Perform the following:
- *
- *  - ignore non sub-resources
- *  - sort lexicographically
- *
- * @param {String} resource
- * @return {String}
- * @api private
- */
-
-exports.canonicalizeResource = function(resource){
-  var url = parse(resource, true)
-    , path = url.pathname
-    , buf = [];
-
-  Object.keys(url.query).forEach(function(key){
-    if (!~keys.indexOf(key)) return;
-    var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]);
-    buf.push(key + val);
-  });
-
-  return path + (buf.length
-    ? '?' + buf.sort().join('&')
-    : '');
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws2.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws2.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws2.js
deleted file mode 100644
index eb683f7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/aws2.js
+++ /dev/null
@@ -1,128 +0,0 @@
-var crypto = require('crypto')
-
-// The Authentication Header
-// 
-// The Amazon S3 REST API uses the standard HTTPAuthorization header to pass authentication information. (The name of the standard header is unfortunate because it carries authentication information, not authorization).Under the Amazon S3 authentication scheme, the Authorization header has the following form.
-// 
-// Authorization: AWS AWSAccessKeyId:Signature
-// 
-// Developers are issued an AWS Access Key ID and AWS SecretAccess Key when they register. For request authentication, theAWSAccessKeyId element identifies the secret key that was used to compute the signature, and (indirectly) the developer making the request.
-// 
-// The Signature element is the RFC 2104HMAC-SHA1 of selected elements from the request, and so theSignature part of the Authorization header will vary from request to request. If the request signature calculated by the system matches theSignature included with the request, then the requester will have demonstrated possession to the AWSSecret Access Key. The request will then be processed under the identity, and with the authority, of the developer to whom the key was issued.
-// 
-// Following is pseudo-grammar that illustrates the construction of the Authorization request header (\nmeans the Unicode code point U+000A commonly called newline).
-
-function authorizationHeader (accessKey) {
-  // Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;
-  
-  var authorization = 'AWS' + " " + accessKey + ":" + signature()
-  
-  return authorization
-}
-
-// 
-
-function signature (secret, verb, md5, contenttype, date, amzheaders, bucket, path) {
-  // Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of( YourSecretAccessKeyID, StringToSign ) ) );
-  
-  function encodeSignature (stringToSign) {
-    return crypto.createHash('sha1').update(stringToSign).digest('base64')
-  }
-  
-  // 
-  // StringToSign = HTTP-Verb + "\n" +
-  //  Content-MD5 + "\n" +
-  //  Content-Type + "\n" +
-  //  Date + "\n" +
-  //  CanonicalizedAmzHeaders +
-  //  CanonicalizedResource;
-  
-  function compileStringToSign () {
-    var s = 
-      verb + '\n'
-      (md5 || '') + '\n'
-      (contenttype || '') + '\n'
-      date.toUTCString() + '\n'
-      canonicalizeAmzHeaders(amzheaders) + 
-      canonicalizeResource()
-    return s
-  }
-  
-  // 
-  // CanonicalizedResource = [ "/" + Bucket ] +
-  //  <HTTP-Request-URI, from the protocol name up to the query string> +
-  //  [ sub-resource, if present. For example "?acl", "?location", "?logging", or "?torrent"];
-  
-  function canonicalizeResource () {
-    return '/' + bucket + path
-  }
-  
-  // 
-  // CanonicalizedAmzHeaders = <described below>
-  // 
-  // HMAC-SHA1 is an algorithm defined by RFC 2104 (go to RFC 2104 - Keyed-Hashing for Message Authentication ). The algorithm takes as input two byte-strings: a key and a message. For Amazon S3 Request authentication, use your AWS Secret Access Key (YourSecretAccessKeyID) as the key, and the UTF-8 encoding of the StringToSign as the message. The output of HMAC-SHA1 is also a byte string, called the digest. The Signature request parameter is constructed by Base64 encoding this digest.
-  // Request Canonicalization for Signing
-  // 
-  // Recall that when the system receives an authenticated request, it compares the computed request signature with the signature provided in the request in StringToSign. For that reason, you must compute the signature using the same method used by Amazon S3. We call the process of putting a request in an agreed-upon form for signing "canonicalization".
-  
-}
-
-
-
-// Constructing the CanonicalizedResource Element
-// 
-// CanonicalizedResource represents the Amazon S3 resource targeted by the request. Construct it for a REST request as follows:
-// 
-// Launch Process
-// 
-// 1
-//  
-// 
-// Start with the empty string ("").
-// 
-// 2
-//  
-// 
-// If the request specifies a bucket using the HTTP Host header (virtual hosted-style), append the bucket name preceded by a "/" (e.g., "/bucketname"). For path-style requests and requests that don't address a bucket, do nothing. For more information on virtual hosted-style requests, see Virtual Hosting of Buckets.
-// 
-// 3
-//  
-// 
-// Append the path part of the un-decoded HTTP Request-URI, up-to but not including the query string.
-// 
-// 4
-//  
-// 
-// If the request addresses a sub-resource, like ?versioning, ?location, ?acl, ?torrent, ?lifecycle, or ?versionid append the sub-resource, its value if it has one, and the question mark. Note that in case of multiple sub-resources, sub-resources must be lexicographically sorted by sub-resource name and separated by '&'. e.g. ?acl&versionId=value.
-// 
-// The list of sub-resources that must be included when constructing the CanonicalizedResource Element are: acl, lifecycle, location, logging, notification, partNumber, policy, requestPayment, torrent, uploadId, uploads, versionId, versioning, versions and website.
-// 
-// If the request specifies query string parameters overriding the response header values (see Get Object), append the query string parameters, and its values. When signing you do not encode these values. However, when making the request, you must encode these parameter values. The query string parameters in a GET request include response-content-type, response-content-language, response-expires, response-cache-control, response-content-disposition, response-content-encoding.
-// 
-// The delete query string parameter must be including when creating the CanonicalizedResource for a Multi-Object Delete request.
-// 
-// Elements of the CanonicalizedResource that come from the HTTP Request-URI should be signed literally as they appear in the HTTP request, including URL-Encoding meta characters.
-// 
-// The CanonicalizedResource might be different than the HTTP Request-URI. In particular, if your request uses the HTTP Host header to specify a bucket, the bucket does appear in the HTTP Request-URI. However, the CanonicalizedResource continues to include the bucket. Query string parameters might also appear in the Request-URI but are not included in CanonicalizedResource. For more information, see Virtual Hosting of Buckets.
-// Constructing the CanonicalizedAmzHeaders Element
-// 
-// To construct the CanonicalizedAmzHeaders part of StringToSign, select all HTTP request headers that start with 'x-amz-' (using a case-insensitive comparison) and use the following process.
-// 
-// CanonicalizedAmzHeaders Process
-// 1  Convert each HTTP header name to lower-case. For example, 'X-Amz-Date' becomes 'x-amz-date'.
-// 2  Sort the collection of headers lexicographically by header name.
-// 3  Combine header fields with the same name into one "header-name:comma-separated-value-list" pair as prescribed by RFC 2616, section 4.2, without any white-space between values. For example, the two metadata headers 'x-amz-meta-username: fred' and 'x-amz-meta-username: barney' would be combined into the single header 'x-amz-meta-username: fred,barney'.
-// 4  "Unfold" long headers that span multiple lines (as allowed by RFC 2616, section 4.2) by replacing the folding white-space (including new-line) by a single space.
-// 5  Trim any white-space around the colon in the header. For example, the header 'x-amz-meta-username: fred,barney' would become 'x-amz-meta-username:fred,barney'
-// 6  Finally, append a new-line (U+000A) to each canonicalized header in the resulting list. Construct the CanonicalizedResource element by concatenating all headers in this list into a single string.
-// 
-// Positional versus Named HTTP Header StringToSign Elements
-// 
-// The first few header elements of StringToSign (Content-Type, Date, and Content-MD5) are positional in nature. StringToSign does not include the names of these headers, only their values from the request. In contrast, the 'x-amz-' elements are named; Both the header names and the header values appear in StringToSign.
-// 
-// If a positional header called for in the definition of StringToSign is not present in your request, (Content-Type or Content-MD5, for example, are optional for PUT requests, and meaningless for GET requests), substitute the empty string ("") in for that position.
-// Time Stamp Requirement
-// 
-// A valid time stamp (using either the HTTP Date header or an x-amz-date alternative) is mandatory for authenticated requests. Furthermore, the client time-stamp included with an authenticated request must be within 15 minutes of the Amazon S3 system time when the request is received. If not, the request will fail with the RequestTimeTooSkewed error status code. The intention of these restrictions is to limit the possibility that intercepted requests could be replayed by an adversary. For stronger protection against eavesdropping, use the HTTPS transport for authenticated requests.
-// 
-// Some HTTP client libraries do not expose the ability to set the Date header for a request. If you have trouble including the value of the 'Date' header in the canonicalized headers, you can set the time-stamp for the request using an 'x-amz-date' header instead. The value of the x-amz-date header must be in one of the RFC 2616 formats (http://www.ietf.org/rfc/rfc2616.txt). When an x-amz-date header is present in a request, the system will ignore any Date header when computing the request signature. Therefore, if you include the x-amz-date header, use the empty string for the Date when constructing the StringToSign. See the next section for an example.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/forever.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/forever.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/forever.js
deleted file mode 100644
index ac853c0..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/forever.js
+++ /dev/null
@@ -1,103 +0,0 @@
-module.exports = ForeverAgent
-ForeverAgent.SSL = ForeverAgentSSL
-
-var util = require('util')
-  , Agent = require('http').Agent
-  , net = require('net')
-  , tls = require('tls')
-  , AgentSSL = require('https').Agent
-
-function ForeverAgent(options) {
-  var self = this
-  self.options = options || {}
-  self.requests = {}
-  self.sockets = {}
-  self.freeSockets = {}
-  self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets
-  self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets
-  self.on('free', function(socket, host, port) {
-    var name = host + ':' + port
-    if (self.requests[name] && self.requests[name].length) {
-      self.requests[name].shift().onSocket(socket)
-    } else if (self.sockets[name].length < self.minSockets) {
-      if (!self.freeSockets[name]) self.freeSockets[name] = []
-      self.freeSockets[name].push(socket)
-      
-      // if an error happens while we don't use the socket anyway, meh, throw the socket away
-      function onIdleError() {
-        socket.destroy()
-      }
-      socket._onIdleError = onIdleError
-      socket.on('error', onIdleError)
-    } else {
-      // If there are no pending requests just destroy the
-      // socket and it will get removed from the pool. This
-      // gets us out of timeout issues and allows us to
-      // default to Connection:keep-alive.
-      socket.destroy();
-    }
-  })
-
-}
-util.inherits(ForeverAgent, Agent)
-
-ForeverAgent.defaultMinSockets = 5
-
-
-ForeverAgent.prototype.createConnection = net.createConnection
-ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest
-ForeverAgent.prototype.addRequest = function(req, host, port) {
-  var name = host + ':' + port
-  if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) {
-    var idleSocket = this.freeSockets[name].pop()
-    idleSocket.removeListener('error', idleSocket._onIdleError)
-    delete idleSocket._onIdleError
-    req._reusedSocket = true
-    req.onSocket(idleSocket)
-  } else {
-    this.addRequestNoreuse(req, host, port)
-  }
-}
-
-ForeverAgent.prototype.removeSocket = function(s, name, host, port) {
-  if (this.sockets[name]) {
-    var index = this.sockets[name].indexOf(s);
-    if (index !== -1) {
-      this.sockets[name].splice(index, 1);
-    }
-  } else if (this.sockets[name] && this.sockets[name].length === 0) {
-    // don't leak
-    delete this.sockets[name];
-    delete this.requests[name];
-  }
-  
-  if (this.freeSockets[name]) {
-    var index = this.freeSockets[name].indexOf(s)
-    if (index !== -1) {
-      this.freeSockets[name].splice(index, 1)
-      if (this.freeSockets[name].length === 0) {
-        delete this.freeSockets[name]
-      }
-    }
-  }
-
-  if (this.requests[name] && this.requests[name].length) {
-    // If we have pending requests and a socket gets closed a new one
-    // needs to be created to take over in the pool for the one that closed.
-    this.createSocket(name, host, port).emit('free');
-  }
-}
-
-function ForeverAgentSSL (options) {
-  ForeverAgent.call(this, options)
-}
-util.inherits(ForeverAgentSSL, ForeverAgent)
-
-ForeverAgentSSL.prototype.createConnection = createConnectionSSL
-ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest
-
-function createConnectionSSL (port, host, options) {
-  options.port = port
-  options.host = host
-  return tls.connect(options)
-}


[43/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/.npmignore b/blackberry10/.npmignore
deleted file mode 100644
index db4145c..0000000
--- a/blackberry10/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.gitignore
-.gitkeep

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/blackberry10/CONTRIBUTING.md b/blackberry10/CONTRIBUTING.md
deleted file mode 100644
index f7dbcab..0000000
--- a/blackberry10/CONTRIBUTING.md
+++ /dev/null
@@ -1,37 +0,0 @@
-<!--
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
--->
-
-# Contributing to Apache Cordova
-
-Anyone can contribute to Cordova. And we need your contributions.
-
-There are multiple ways to contribute: report bugs, improve the docs, and
-contribute code.
-
-For instructions on this, start with the 
-[contribution overview](http://cordova.apache.org/#contribute).
-
-The details are explained there, but the important items are:
- - Sign and submit an Apache ICLA (Contributor License Agreement).
- - Have a Jira issue open that corresponds to your contribution.
- - Run the tests so your patch doesn't break existing functionality.
-
-We look forward to your contributions!

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/Gruntfile.js
----------------------------------------------------------------------
diff --git a/blackberry10/Gruntfile.js b/blackberry10/Gruntfile.js
deleted file mode 100644
index 1847910..0000000
--- a/blackberry10/Gruntfile.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-module.exports = function (grunt) {
-    grunt.initConfig({
-        jshint: {
-            all: [
-                'Gruntfile.js',
-                'bin/**/*.js',
-                'framework/**/*.js'
-            ]
-        },
-        jasmine_node: {
-            options: {
-                matchall: true
-            },
-            all: [
-                'bin/test',
-                'framework/test'
-            ]
-        }
-
-    });
-
-    grunt.loadNpmTasks('grunt-contrib-jshint');
-    grunt.loadNpmTasks('grunt-jasmine-node');
-
-    grunt.registerTask('lint', ['jshint']);
-    grunt.registerTask('test', ['jasmine_node']);
-    grunt.registerTask('default', ['lint', 'test']);
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/LICENSE b/blackberry10/LICENSE
deleted file mode 100644
index cbfc221..0000000
--- a/blackberry10/LICENSE
+++ /dev/null
@@ -1,268 +0,0 @@
-
-                               Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-For the template/project/lib/ant-contrib/ant-contrib-1.0b3.jar component:
-
-   The Apache Software License, Version 1.1
-
-   Copyright (c) 2001-2003 Ant-Contrib project.  All rights reserved.
-
-   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.
-
-   3. The end-user documentation included with the redistribution, if
-      any, must include the following acknowledgment:
-         "This product includes software developed by the
-          Ant-Contrib project (http://sourceforge.net/projects/ant-contrib)."
-      Alternately, this acknowledgment may appear in the software itself,
-      if and wherever such third-party acknowledgments normally appear.
-
-   4. The name Ant-Contrib must not be used to endorse or promote products
-      derived from this software without prior written permission. For
-      written permission, please contact
-      ant-contrib-developers@lists.sourceforge.net.
-
-   5. Products derived from this software may not be called "Ant-Contrib"
-      nor may "Ant-Contrib" appear in their names without prior written
-      permission of the Ant-Contrib project.
-
-   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 ANT-CONTRIB PROJECT OR ITS
-   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.
-   ====================================================================
-
-For the template/project/www/json2.js component:
-
-    http://www.JSON.org/json2.js
-    2010-03-20
-
-    Public Domain.
-
-    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
-
-    See http://www.JSON.org/js.html
-
-
-    This code should be minified before deployment.
-    See http://javascript.crockford.com/jsmin.html
-
-    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
-    NOT CONTROL.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/NOTICE
----------------------------------------------------------------------
diff --git a/blackberry10/NOTICE b/blackberry10/NOTICE
deleted file mode 100644
index 23360ce..0000000
--- a/blackberry10/NOTICE
+++ /dev/null
@@ -1,8 +0,0 @@
-Apache Cordova
-Copyright 2012 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org)
-
-This product includes software developed by
-Ant-Contrib project (http://sourceforge.net/projects/ant-contrib).

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/README.md b/blackberry10/README.md
deleted file mode 100644
index afaaf1b..0000000
--- a/blackberry10/README.md
+++ /dev/null
@@ -1,156 +0,0 @@
-Apache Cordova for BlackBerry 10
-================================
-
-**Apache Cordova** is an application development platform that allows you to use common web technologies, primarily **HTML5**, **JavaScript**, and **CSS**, to create applications for mobile devices. **Cordova** uses a standard set of APIs to access common device features. Additional plugins allow you to access **BlackBerry 10** specific APIs, so that you can extend your application to tightly integrate with the **BlackBerry 10 OS**.
-
-Requirements
-------------
-
-Cordova for BlackBerry 10 has the following software requirements:
-
--   **Windows XP** (32-bit), **Windows 7** (32-bit and 64-bit), or **Mac OS X** 10.6.4+
--   **Node.js** (> 0.9.9) [Download node.js now](http://nodejs.org/)
--   **BlackBerry 10 Native SDK**. [Download the BlackBerry 10 Native SDK now.](http://developer.blackberry.com/native/download/)
-
-    After installing the Native SDK, its tools must be added to your system path. Either manually add the bin directory to your path or run the following scripts:
-    -    *Linux/OS X* `source [BBNDK directory]/bbndk-env.sh`
-    -    *Windows* `[BBNDK directory]\bbndk-env.bat`
-    
-Conventions
------------
-The instructions in this document will generally use `/` as the path separator. On *Windows*, you should enter `\` where you see `/` in these instructions.
-
-Setting up your signing keys
-----------------------------
-
-Before starting development, you'll need to register for your code signing key and debug token. The signing key allows you to sign your completed app so that you can distribute it through **BlackBerry World**. The debug token allows you to test an unsigned app on a BlackBerry 10 device. You do not need to create and install the debug token yourself; if you supply the keystore password, the build script will create and install the debug token for you.
-
--   [Register for your code signing key now.](https://www.blackberry.com/SignedKeys/codesigning.html)
--   [Set your computer up for code signing. ](http://developer.blackberry.com/html5/documentation/set_up_for_signing.html)
--   [Learn more about debug tokens.](http://developer.blackberry.com/html5/documentation/running_your_bb10_app_2008471_11.html)
-
-Creating your project
--------------------------
-
-To create a new project, you use the `create` command to set up the folder structure for your app.
-
-1.  On the command line, navigate to the folder where you extracted Cordova.
-2.  Run the `create` command using the following syntax:
-
-        bin/create <path-to-project> [<project-package> [<project-name> [<path-to-www-template>]]]
-
-This command creates the folder structure for your project at the specified location. All of your project resource files should be stored in the `<path-to-project>/www` folder, or in a subfolder within it.
-
-where
-
-- `<path-to-project>` specifies the directory to create for your project
-- `<project-package>` specifies a reverse domain style identifier
-- `<project-name>` specifies the app's display name
-- `<path-to-www-template>` specifies the directory to use as a template
-
-Adding and managing targets
----------------------------
-
-A target refers to a **BlackBerry 10** *device* or *simulator* that you will use to test your app. Targets are added directly to your project; you can add multiple targets to your project, each with a unique name. Then, when you want to deploy your app to a particular target, you can simply refer to that target by name when you run your script.
-
-###Add a target
-
-To add a target, on the command line, type the following command:
-
-        <path-to-project>/cordova/target add <name> <ip-address> [--type simulator] [--password <password>] [--pin <device-pin>]
-
-where
-
--   `<name>`  specifies a unique name for the target.
--   `<ip-address>`  specifies the ip address of the **BlackBerry 10** *device* or *simulator*.
--   `--type simulator` If not provided, *device* is assumed.
--   `--password <password>`  specifies the password for the *device*/*simulator*. This is only necessary if the *device*/*simulator* is password protected.
--   `--pin <device-pin>`  specifies the `PIN` of the **BlackBerry 10** *device*, which identifies that device as a valid host for the debug token. This argument is required only if you are creating a *debug token*.
-
-###Remove a target
-
-To remove a target, on the command line, type the following command:
-
-        <path-to-project>/cordova/target remove <name>
-
-Building your app
------------------
-
-To build your app, run the `build` script. You can build the app in either *release mode* or in *debug mode*.
-
--   When you build the app in *release mode*, you are preparing it for distribution through **BlackBerry World**. The script packages your app resources and plugins together in a `.bar file`, then *signs* the app.
--   When you build the app in *debug mode*, you are preparing it to be tested. The script packages your app resources and plugins together in a `.bar file`, but does not sign it. The script can also deploy the app onto a previously defined target. If you have not already created and installed a *debug token*, you can supply the keystore password, and the build script will create and install the *debug token* for you as well.
-
-    *Debug mode* also enables **Web Inspector** for the app, which allows you to remotely inspect the source code. A prompt displays the URL that you can use to connect to and inspect your app. For more information on using **Web Inspector**, see [Debugging using Web Inspector](http://developer.blackberry.com/html5/documentation/web_inspector_overview_1553586_11.html).
-
-###Build your app in release mode
-
-To build your app in release mode, on the command line, type the following command:
-
-        <path-to-project>/cordova/build release [<target>] [--keystorepass <password>] [--buildId <number>] [--params <params-JSON-file>]
-
-where
-
--   `<target>`  specifies the name of a previously added target. If `<target>`  is not specified, the default target is used, if one has been created. This argument is only required if you want the script to deploy your app to a BlackBerry device or emulator and you have not created a default target. Additionally, if `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
--   `--keystorepass <password>`  specifies the password you defined when you configured your computer to sign applications (by default you'll be prompted for this if it isn't otherwise configured).
--   `--buildId <number>`  specifies the build version number of your application. Typically, this number should be incremented from the previous signed version. This argument is optional.
--   `--params <params-JSON-file>`  specifies a JSON file containing additional parameters to pass to downstream tools. This argument is optional.
-
-###Build your app in debug mode
-
-To build your app in debug mode, on the command line, type the following command:
-
-        <path-to-project>/cordova/build debug [<target>] [--params <params-JSON-file>] [--loglevel <error|warn|verbose>]
-
-where
-
--   `<target>`  specifies the name of a previously added target. If `<target>`  is not specified, the default target is used, if one has been created. This argument is only required if you want the script to deploy your app to a BlackBerry device or emulator and you have not created a default target. Additionally, if `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
--   `--params <params-JSON-file>`  specifies a JSON file containing additional parameters to pass to downstream tools.
--   `--loglevel <level>`  specifies the log level. The log level may be one of `error`, `warn`, or `verbose`.
-
-Note that all of these parameters are optional. If you have previously defined a default target (and installed a debug token, if that target is a BlackBerry device), you can run the script with no arguments, and the script will package your app and deploy it to the default target. For example:
-
-        <path-to-project>/cordova/build debug
-
-Deploying an app
--------------------------
-
-You can test your app using either a BlackBerry device or an emulator. Before deploying your app, you must first create a target for the device or emulator you want to deploy your app to.
-
-The run script will first build  your app. If you intend to deploy an app to a physical device for testing, you must first install a debug token on that device. If you specify the `--keystorepass <password>` argument when running the run script, the script will create and install the debug token for you. You do not need a debug token to test your app on an emulator, even if that app is unsigned.
-
-To deploy your app to a device or emulator, on a command line type the following command:
-
-        <path-to-project>/cordova/run <target> [--no-build]
-
-where
--   `<target>`  specifies the name of a previously added target. If `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
-
--   `-no--build` will use the most recently built version of the application rather than re-building. This is useful to test an application in release mode.
-
-Adding and managing plugins
----------------------------
-
-To add additional functionality that is outside of the core features of Cordova, you'll need to add plugins. A plugin represents a set of APIs that provide access to additional features of the platform.
-
-In order to use a plugin, you must first add it into your project. Once added into your project, the plugin will be bundled with your project during the build process, to ensure that your app has access to all the APIs it needs.
-
-To add and manage plugins you can use the plugman tool. It is available via npm (ie npm install -g plugman)
-
-###Add a plugin
-
-To add a plugin, on the command line, type the following command:
-
-        plugman install --platform blackberry10 --project . --plugin <id|path|url> [--variable NAME=name]
-
-###Remove a plugin
-
-To remove a plugin, on the command line, type the following command:
-
-        plugman uninstall --platform blackberry10 --project . --plugin <id>
-
-###View a list of installed plugins
-
-To view a list of installed plugins, on the command line, type the following command:
-
-        plugman ls

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/blackberry10/RELEASENOTES.md b/blackberry10/RELEASENOTES.md
deleted file mode 100644
index 4dc153b..0000000
--- a/blackberry10/RELEASENOTES.md
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
--->
-## Release Notes for Cordova BlackBerry ##
-
-### 3.1.0 ###
-
-[CB-4268] Rework util functions to support getting list of connected devices / emulators
-[CB-4268] Add support for --device and --emulator to run script
-[CB-4292] Update plugman to 0.9.10
-[CB-4342] Detect USB connected device
-[CB-4065] Remove lib files after frameworkModules.js is generated
-[CB-4734] Fixed issue where plugins are not added to frameworkModules
-[CB-4423] Warn when special characters are used in create script
-[CB-4344] Auto-detect started simulator
-[CB-4272] Improve error messages related to debug tokens and signing
-[CB-4292] Remove remaining plugins
-[CB-4481] Removing permissions from template since not all apps should need them
-[CB-4259] Removing plugman and cordova/plugin script
-[CB-4634] Updating the default app to match cordova-app-hello-world
-[CB-4544] Adds a --query flag to query the user for their password when we need it      - Rewrite the run script for maintenance
-[BlackBerry10] Fixing a bug with debugtoken generation without prompt
-Updating scripts to make init calls surrounded in quotes
-[BlackBerry10] Updated init to work on Windows 7 with long paths         with spaces
-[CB-4730] [BlackBerry10] Updating init calls to work on Win 7 64         with long paths.
-[CB-4785] Fixing --no-build flag for run command
-[CB-4732] Re-writing build script to use async
-Syncing hello-world-app for 3.1 release
-[CB-4076] Added support for the origin attribute in config.xml
-[CB-4076] Modified config-parser to default to the uri attribute
-[CB-4563] Migrated blackberry.app parameters to preferences
-[CB-4812] Support for "default" value in the orientation preference
-[CB-3798] Provide support for optional localized node/npm/bb-tools
-Plugman version bump to 0.10.0
-[CB3439] Introduces --web-inspector flag to enable webinspector for signed builds
-[CB-3798] Fixed CORDOVA_BBTOOLS env variable with spaces in path
-[CB-3798] Refactored all exec calls to use newly created utility exec function to avoid path with spaces errors
-corrected playbook create tool usage
-[CB-4346] changed utils genbarname function to return string as per ticket description, updated README.md section on create command
-CB-4875 updated readme with info on accessing last supported versions of BBOS and Playbook
-CB-4876 removal of playbook implementation
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/VERSION
----------------------------------------------------------------------
diff --git a/blackberry10/VERSION b/blackberry10/VERSION
deleted file mode 100644
index 86bab9c..0000000
--- a/blackberry10/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-3.6.0-dev

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/check_reqs
----------------------------------------------------------------------
diff --git a/blackberry10/bin/check_reqs b/blackberry10/bin/check_reqs
deleted file mode 100755
index 6926c39..0000000
--- a/blackberry10/bin/check_reqs
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-BIN_DIR=$(dirname "$0")
-
-#init will execute check reqs logic
-source "$BIN_DIR/init"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/check_reqs.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/check_reqs.bat b/blackberry10/bin/check_reqs.bat
deleted file mode 100644
index 0de7c75..0000000
--- a/blackberry10/bin/check_reqs.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B %ERRORLEVEL%
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/create
----------------------------------------------------------------------
diff --git a/blackberry10/bin/create b/blackberry10/bin/create
deleted file mode 100755
index 01dfa6e..0000000
--- a/blackberry10/bin/create
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-#
-# create a cordova/blackberry10 project
-#
-# USAGE
-#   ./create path [package [id [name [template]]]]
-#
-
-BIN_DIR=$(dirname "$0")
-
-source "$BIN_DIR/init"
-
-CURRENT_DIR=$(pwd)
-
-"$CORDOVA_NODE/node" "$BIN_DIR"/lib/create.js "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/create.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/create.bat b/blackberry10/bin/create.bat
deleted file mode 100644
index fc7d08e..0000000
--- a/blackberry10/bin/create.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-set "BIN_DIR=%~dp0"
-
-call "%BIN_DIR%init"
-if ERRORLEVEL 1 exit /B %ERRORLEVEL% 
-
-"%CORDOVA_NODE%\node" "%BIN_DIR%lib\create.js" %*
-if ERRORLEVEL 1 exit /B %ERRORLEVEL%

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/init
----------------------------------------------------------------------
diff --git a/blackberry10/bin/init b/blackberry10/bin/init
deleted file mode 100755
index 90f1a0c..0000000
--- a/blackberry10/bin/init
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CURRENT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-CORDOVA_HOME_DIR=$HOME/.cordova/lib/blackberry10/cordova/$(cat "$CURRENT_DIR/../VERSION")
-LOCAL_NODE_BIN=$CORDOVA_HOME_DIR/bin/dependencies/node/bin
-LOCAL_BBTOOLS=$CORDOVA_HOME_DIR/bin/dependencies/bb-tools/bin
-
-#Skip all logic if init has already been run (env variable have been set already...)
-if [ -z "$CORDOVA_NODE" ] || [ -z "$CORDOVA_BBTOOLS" ]; then
-
-    #set CORDOVA_NODE
-    if [ -x "$LOCAL_NODE_BIN" ]; then
-        #set CORDOVA_NODE to local node version, if exists
-        CORDOVA_NODE=$LOCAL_NODE_BIN
-    else
-        #set CORDOVA_NODE to whichever node is on path, if exists
-        NODE_PATH=$(command -v node)
-        if [ ! -z "$NODE_PATH" ]; then
-            CORDOVA_NODE=$(dirname "$NODE_PATH")
-        fi
-    fi
-    export CORDOVA_NODE=$CORDOVA_NODE
-
-    #set CORDOVA_BBTOOLS
-    if [ -x "$LOCAL_BBTOOLS" ]; then
-        #set CORDOVA_BBTOOLS to local bbtools, if exists
-        CORDOVA_BBTOOLS=$LOCAL_BBTOOLS
-    else
-        #set CORDOVA_BBTOOLS to whichever bbtools is on path, if exists
-        BBTOOLS_PATH=$(command -v blackberry-nativepackager)
-        if [ ! -z "$BBTOOLS_PATH" ]; then
-            CORDOVA_BBTOOLS=$(dirname "$BBTOOLS_PATH")
-        fi
-    fi
-    export CORDOVA_BBTOOLS=$CORDOVA_BBTOOLS
-
-fi
-
-#-------------check reqs---------------#
-NODE="$CORDOVA_NODE/node"
-JAVA=$(command -v java)
-PACKAGER="$CORDOVA_BBTOOLS/blackberry-nativepackager"
-DEPLOYER="$CORDOVA_BBTOOLS/blackberry-deploy"
-SIGNER="$CORDOVA_BBTOOLS/blackberry-signer"
-DEBUGTOKENREQUEST="$CORDOVA_BBTOOLS/blackberry-debugtokenrequest"
-
-if [ ! -x "$NODE" ]; then
-    echo node cannot be found on the path. Aborting.
-    EXIT_CODE=2
-elif [ ! -x "$JAVA" ]; then
-    echo java cannot be found on the path. Aborting.
-    EXIT_CODE=2
-elif [ ! -x "$PACKAGER" ]; then
-    echo blackberry-nativepackager cannot be found on the path. Aborting.
-    EXIT_CODE=2
-elif [ ! -x "$DEPLOYER" ]; then
-    echo blackberry-deploy cannot be found on the path. Aborting.
-    EXIT_CODE=2
-elif [ ! -x "$SIGNER" ]; then
-    echo blackberry-signer cannot be found on the path. Aborting.
-    EXIT_CODE=2
-elif [ ! -x "$DEBUGTOKENREQUEST" ]; then
-    echo blackberry-debugtokenrequest cannot be found on the path. Aborting.
-    EXIT_CODE=2
-fi
-
-if [ ! -z "$EXIT_CODE" ]; then
-    exit $EXIT_CODE
-fi
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/init.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/init.bat b/blackberry10/bin/init.bat
deleted file mode 100644
index f696081..0000000
--- a/blackberry10/bin/init.bat
+++ /dev/null
@@ -1,127 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-setlocal enabledelayedexpansion
-
-set /P CORDOVA_VERSION=<"%~dp0..\VERSION"
-set "CORDOVA_HOME_DIR=!USERPROFILE!\.cordova\lib\blackberry10\cordova\!CORDOVA_VERSION!"
-set "LOCAL_NODE_BINARY=!CORDOVA_HOME_DIR!\bin\dependencies\node\bin"
-set "LOCAL_BBTOOLS_BINARY=!CORDOVA_HOME_DIR!\bin\dependencies\bb-tools\bin"
-
-set FOUNDWHERE=
-for /f "usebackq delims=" %%e in (`where where 2^>nul`) do (
-  if not defined FOUNDWHERE set "FOUNDWHERE=%%e"
-)
-if not defined FOUNDWHERE set "FOUNDWHERE=%~dp0\whereis"
-
-set FOUNDJAVAAT=
-for /f "usebackq delims=" %%e in (`"%FOUNDWHERE%" java 2^>nul`) do (
-  if not defined FOUNDJAVAAT set "FOUNDJAVAAT=%%~dpe"
-)
-:: While we could normally ask where.exe to search an arbitrary environment variable,
-:: it's too complicated to teach whereis.cmd to do that
-:: instead we're going to replace PATH with a special PATH
-:: In case you're curious, you can't nest ::'s inside ()s
-if not defined FOUNDJAVAAT (
-  setlocal enabledelayedexpansion
-  SET "PATH=%ProgramFiles(x86)%\java\jre7\bin;%ProgramW6432%\java\jre7\bin;"
-  for /f "usebackq delims=" %%e in (`"%FOUNDWHERE%" java 2^>nul`) do (
-    set "FOUNDJAVAAT=%%~dpe"
-  )
-  if defined FOUNDJAVAAT (
-    for /f "delims=" %%C in (""!FOUNDJAVAAT!"") do (
-      endlocal
-      set "FOUNDJAVAAT=%%~C"
-    )
-    if defined FOUNDJAVAAT (
-      set "PATH=!PATH!;!FOUNDJAVAAT!"
-    )
-  ) else (
-    endlocal
-  )
-)
-:: While there are two endlocal calls, they're mutually exclusive and bookend the setlocal
-
-if defined CORDOVA_NODE (
-  if exist "!CORDOVA_NODE!" (
-    if defined CORDOVA_BBTOOLS (
-      if exist "!CORDOVA_BBTOOLS!" (
-        goto end
-      )
-    )
-  )
-)
-
-if exist "!LOCAL_NODE_BINARY!" (
-  set "CORDOVA_NODE=!LOCAL_NODE_BINARY!"
-) else (
-  for /f "usebackq delims=" %%e in (`%FOUNDWHERE% node 2^>nul`) do (
-    set "CORDOVA_NODE=%%~dpe"
-  )
-)
-
-if exist "!LOCAL_BBTOOLS_BINARY!" (
-  set "CORDOVA_BBTOOLS=!LOCAL_BBTOOLS_BINARY!"
-) else (
-  for /f "usebackq delims=" %%e in (`%FOUNDWHERE% blackberry-nativepackager 2^>nul`) do (
-    set "CORDOVA_BBTOOLS=%%~dpe"
-  )
-)
-
-:end
-
-if not exist "%LOCAL_NODE_BINARY%" (
-  if not exist "%CORDOVA_NODE%\node.exe" (
-    echo node cannot be found on the path. Aborting.
-    exit /b 2
-  )
-)
-if not defined FOUNDJAVAAT (
-  echo java cannot be found on the path. Aborting.
-  exit /b 2
-)
-if not exist "!CORDOVA_BBTOOLS!\blackberry-nativepackager.bat" (
-  echo blackberry-nativepackager cannot be found on the path. Aborting.
-  exit /b 2
-)
-if not exist "!CORDOVA_BBTOOLS!\blackberry-deploy.bat" (
-  echo blackberry-deploy cannot be found on the path. Aborting.
-  exit /b 2
-)
-if not exist "!CORDOVA_BBTOOLS!\blackberry-signer.bat" (
-  echo blackberry-signer cannot be found on the path. Aborting.
-  exit /b 2
-)
-if not exist "!CORDOVA_BBTOOLS!\blackberry-debugtokenrequest.bat" (
-  echo blackberry-debugtokenrequest cannot be found on the path. Aborting.
-  exit /b 2
-)
-
-:: Export variables we want to share with the caller
-for /f "delims=" %%A in (""!CORDOVA_NODE!"") do (
-  for /f "delims=" %%B in (""!CORDOVA_BBTOOLS!"") do (
-    for /f "delims=" %%C in (""!PATH!"") do (
-      endlocal
-      set "CORDOVA_NODE=%%~A"
-      set "CORDOVA_BBTOOLS=%%~B"
-      set "PATH=%%~C"
-    )
-  )
-)
-exit /b 0

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/lib/config.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/lib/config.js b/blackberry10/bin/lib/config.js
deleted file mode 100644
index c21a09f..0000000
--- a/blackberry10/bin/lib/config.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var fs = require('fs'),
-    path = require('path'),
-    PROPERTY_FILE_NAME = 'blackberry10.json',
-    CORDOVA_DIR = '.cordova',
-    DEFAULT_PROPERTY_FILE = {
-        targets: {
-        }
-    },
-    getCordovaDir = function () {
-        var homePath = process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'],
-            cordovaPath = path.join(homePath, CORDOVA_DIR);
-        if (!fs.existsSync(cordovaPath)) {
-            fs.mkdirSync(cordovaPath);
-        }
-        return cordovaPath;
-    };
-
-module.exports = {
-    getProperties: function () {
-        var props, 
-            propertiesPath = path.join(getCordovaDir(), PROPERTY_FILE_NAME);
-        if (!fs.existsSync(propertiesPath)) {
-            this.writeProperties(DEFAULT_PROPERTY_FILE);
-        }
-        props = require(propertiesPath);
-        if (!props.targets) {
-            props.targets = {};
-        }
-        return props;
-    },
-    writeProperties: function (data) {
-        var contents = JSON.stringify(data, null, 4) + "\n",
-            propertiesPath = path.join(getCordovaDir(), PROPERTY_FILE_NAME);
-        fs.writeFileSync(propertiesPath, contents, 'utf-8');
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/lib/create.js b/blackberry10/bin/lib/create.js
deleted file mode 100644
index 45bcb09..0000000
--- a/blackberry10/bin/lib/create.js
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/*
- * create a cordova/blackberry10 project
- *
- * USAGE
- *  ./create path [package [id [name [template]]]]
- */
-
-var ERROR_VALUE = 2,
-    path = require("path"),
-    exit = require('exit'),
-    shell = require('shelljs'),
-    fs = require("fs"),
-    os = require("os"),
-    wrench = require("wrench"),
-    version = getVersion(),
-    project_path = validateProjectPath(),
-    app_id = process.argv[3],
-    app_name = process.argv[4] || 'WebWorks Application',
-    TARGETS = ["device", "simulator"],
-    TEMPLATE_PROJECT_DIR = path.join(__dirname, "..", "templates", "project"),
-    ROOT_PROJECT_DIR = path.join(__dirname, "..", ".."),
-    MODULES_PROJECT_DIR = path.join(__dirname, "..", "..", "node_modules"),
-    BOOTSTRAP_PROJECT_DIR = path.join(__dirname, "..", "..", "framework", "bootstrap"),
-    FRAMEWORK_LIB_PROJECT_DIR = path.join(__dirname, "..", "..", "framework", "lib"),
-    BIN_DIR = path.join(__dirname, ".."),
-    BUILD_DIR = path.join(__dirname, "..", "build"),
-    CORDOVA_JS_SRC = path.join(__dirname, "..", "..", "javascript", "cordova.blackberry10.js"),
-    update_dir = path.join(project_path, "lib", "cordova." + version),
-    native_dir = path.join(project_path, "native"),
-    template_dir = process.argv[5] || TEMPLATE_PROJECT_DIR,
-    js_path = "javascript",
-    js_basename = "cordova.js";
-
-function getVersion() {
-    var version = fs.readFileSync(path.join(__dirname,  "..", "..", "VERSION"));
-    if (version) {
-        return version.toString().replace( /([^\x00-\xFF]|\s)*$/g, '' );
-    }
-}
-
-function validPackageName(packageName) {
-    var domainRegex = /^[a-zA-Z]([a-zA-Z0-9])*(\.[a-zA-Z]([a-zA-Z0-9])*)*$/;
-    if (typeof packageName !== "undefined") {
-        if ((packageName.length > 50) || !domainRegex.test(packageName)) {
-            return false;
-        }
-    }
-    return true;
-}
-
-function validateProjectPath() {
-    if (!process.argv[2]) {
-        console.log("You must give a project PATH");
-        help();
-        exit(ERROR_VALUE);
-        return "";
-    } else {
-        return path.resolve(process.argv[2]);
-    }
-}
-
-function validate() {
-    if (fs.existsSync(project_path)) {
-        console.log("The project path must be an empty directory");
-        help();
-        exit(ERROR_VALUE);
-    }
-    if (!validPackageName(app_id)) {
-        console.log("[warning] App ID must be sequence of alpha-numeric (optionally separated by '.') characters, no longer than 50 characters.\n" +
-                    "special characters in '" + app_id + "' will be replaced by '_'");
-    }
-}
-
-function clean() {
-    if (fs.existsSync(BUILD_DIR)) {
-        wrench.rmdirSyncRecursive(BUILD_DIR);
-    }
-}
-
-function copyJavascript() {
-    wrench.mkdirSyncRecursive(path.join(BUILD_DIR, js_path), 0777);
-    shell.cp(CORDOVA_JS_SRC, path.join(BUILD_DIR, js_path));
-
-    //rename copied cordova.blackberry10.js file
-    fs.renameSync(path.join(BUILD_DIR, js_path, "cordova.blackberry10.js"), path.join(BUILD_DIR, js_path, js_basename));
-}
-
-function copyFilesToProject() {
-    var nodeModulesDest = path.join(project_path, "cordova", "node_modules"),
-        bbtoolsBinDest = path.join(project_path, "cordova", "dependencies", "bb-tools", "bin"),
-        bbtoolsLibDest = path.join(project_path, "cordova", "dependencies", "bb-tools", "lib"),
-        bbNativePackager = "blackberry-nativepackager",
-        bbSigner = "blackberry-signer",
-        bbDeploy = "blackberry-deploy",
-        bbDebugTokenRequest= "blackberry-debugtokenrequest";
-
-    // create project using template directory
-    wrench.mkdirSyncRecursive(project_path, 0777);
-    wrench.copyDirSyncRecursive(template_dir, project_path);
-    if (template_dir != TEMPLATE_PROJECT_DIR) {
-        wrench.copyDirSyncRecursive(path.join(TEMPLATE_PROJECT_DIR, 'cordova'), path.join(project_path, 'cordova'));
-    }
-
-    // copy repo level target tool to project
-    shell.cp(path.join(BIN_DIR, "target"), path.join(project_path, "cordova"));
-    shell.cp(path.join(BIN_DIR, "target.bat"), path.join(project_path, "cordova"));
-    shell.cp(path.join(BIN_DIR, "lib", "target.js"), path.join(project_path, "cordova", "lib"));
-    shell.cp(path.join(BIN_DIR, "lib", "config.js"), path.join(project_path, "cordova", "lib"));
-
-    // copy repo level init script to project
-    shell.cp(path.join(BIN_DIR, "whereis.cmd"), path.join(project_path, "cordova"));
-    shell.cp(path.join(BIN_DIR, "init.bat"), path.join(project_path, "cordova"));
-    shell.cp(path.join(BIN_DIR, "init"), path.join(project_path, "cordova"));
-
-    //copy VERSION file [used to identify corresponding ~/.cordova/lib directory for dependencies]
-    shell.cp(path.join(ROOT_PROJECT_DIR, "VERSION"), path.join(project_path));
-
-    // copy repo level check_reqs script to project
-    shell.cp(path.join(BIN_DIR, "check_reqs.bat"), path.join(project_path, "cordova"));
-    shell.cp(path.join(BIN_DIR, "check_reqs"), path.join(project_path, "cordova"));
-
-    // change file permission for cordova scripts because ant copy doesn't preserve file permissions
-    wrench.chmodSyncRecursive(path.join(project_path,"cordova"), 0700);
-
-    //copy cordova-*version*.js to www
-    shell.cp(path.join(BUILD_DIR, js_path, js_basename), path.join(project_path, "www"));
-
-    //copy node modules to cordova build directory
-    wrench.mkdirSyncRecursive(nodeModulesDest, 0777);
-    wrench.copyDirSyncRecursive(MODULES_PROJECT_DIR, nodeModulesDest);
-
-    //copy framework bootstrap
-    TARGETS.forEach(function (target) {
-        var chromeDir = path.join(native_dir, target, "chrome"),
-            frameworkLibDir = path.join(chromeDir, "lib"),
-            defaultConfig;
-
-        wrench.mkdirSyncRecursive(frameworkLibDir);
-        wrench.copyDirSyncRecursive(BOOTSTRAP_PROJECT_DIR, chromeDir);
-        wrench.copyDirSyncRecursive(FRAMEWORK_LIB_PROJECT_DIR, frameworkLibDir);
-
-        //apply 'native' Cordova version
-        defaultConfig = fs.readFileSync(path.join(frameworkLibDir,  "config", "default.js"));
-        defaultConfig = defaultConfig.toString().replace("CORDOVA-VERSION", version);
-        fs.writeFileSync(path.join(frameworkLibDir, "config", "default.js"), defaultConfig, "utf-8");
-
-    });
-
-    // save release
-    wrench.mkdirSyncRecursive(update_dir, 0777);
-    wrench.copyDirSyncRecursive(BUILD_DIR, update_dir);
-}
-
-function updateProject() {
-    var configXMLPath = path.resolve(path.join(project_path, "www", "config.xml")),
-        xmlString;
-
-    if (typeof app_id !== "undefined") {
-        xmlString = fs.readFileSync(configXMLPath, "utf-8");
-        fs.writeFileSync(configXMLPath, xmlString.replace("default.app.id", app_id).replace("default.app.name", app_name), "utf-8");
-    }
-}
-
-function help() {
-    console.log("\nUsage: create <project-path> [id [name [template_path]]] \n");
-    console.log("Options: \n");
-    console.log("   -h, --help      output usage information \n");
-}
-
-if ( process.argv[2] === "-h" || process.argv[2] === "--help" ) {
-    help();
-} else {
-    try {
-        validate();
-        clean();
-        copyJavascript();
-        copyFilesToProject();
-        updateProject();
-        clean();
-        exit();
-    } catch (ex) {
-        console.log("Project creation failed!");
-        console.error(os.EOL + ex);
-        exit(ERROR_VALUE);
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/lib/target.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/lib/target.js b/blackberry10/bin/lib/target.js
deleted file mode 100644
index 0aac883..0000000
--- a/blackberry10/bin/lib/target.js
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/env node
-/*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require('path'),
-    exit = require('exit'),
-    fs = require('fs'),
-    config = require('./config'),
-    commander = require('commander'),
-    properties = config.getProperties(),
-    ERROR_VALUE = 2,
-    NOTIMPLEMENTED_VALUE = 1,
-    command,
-    targetName,
-    ip,
-    type,
-    password,
-    pin,
-    pinRegex = new RegExp("[0-9A-Fa-f]{8}");
-
-function isValidType(type) {
-    var result = true;
-
-    if (typeof type !== 'string') {
-        console.log("target type is required");
-        console.log(commander.helpInformation());
-        exit(ERROR_VALUE);
-    }
-    else if (!(type === 'device' || type === 'emulator')) {
-        result = false;
-    }
-    return result;
-}
-
-function isValidPin(pin) {
-    var result = true;
-    if (typeof pin !== 'undefined' && !pinRegex.test(pin)) {
-        result = false;
-    }
-    return result;
-}
-
-commander
-    .usage('[command] [params]')
-    .option('-p, --password <password>', 'Specifies password for this target')
-    .option('--pin <devicepin>', 'Specifies PIN for this device')
-    .option('-t, --type <device | simulator>', 'Specifies the target type');
-
-commander
-    .on('--help', function () {
-        console.log('   Synopsis:');
-        console.log('   $ target');
-        console.log('   $ target add <name> <host> [-t | --type <device | simulator>] [-p | --password <password>] [--pin <devicepin>]');
-        console.log('   $ target remove <name>');
-        console.log(' ');
-    });
-
-commander
-    .command('add')
-    .description("Add specified target")
-    .action(function () {
-        if (commander.args.length === 1) {
-            console.log("Target details not specified");
-            console.log(commander.helpInformation());
-            exit(ERROR_VALUE);
-        }
-        targetName = commander.args[0];
-        ip = commander.args[1];
-        type = commander.type ? commander.type : "device";
-        if (type === "simulator") {
-            type = "emulator";
-        }
-        if (commander.password && typeof commander.password === 'string') {
-            password = commander.password;
-        }
-        if (commander.pin && typeof commander.pin === 'string') {
-            pin = commander.pin;
-        }
-        if (!isValidType(type)) {
-            console.log("Invalid target type: " + type);
-            console.log(commander.helpInformation());
-            exit(ERROR_VALUE);
-        }
-        if (typeof ip !== 'string') {
-            console.log("host is required");
-            console.log(commander.helpInformation());
-            exit(ERROR_VALUE);
-        }
-        if (!isValidPin(pin)) {
-            console.log("Invalid PIN: " + pin);
-            console.log(commander.helpInformation());
-            exit(ERROR_VALUE);
-        }
-        if (properties.targets.hasOwnProperty(targetName)) {
-            console.log("Overwriting target: " + targetName);
-        }
-        targetName = targetName.replace(/ /g, "-");
-        properties.targets[targetName] = {"ip": ip, "type": type, "password": password, "pin": pin};
-    });
-
-commander
-    .command('remove')
-    .description("Remove specified target")
-    .action(function () {
-        if (commander.args.length === 1) {
-            console.log('No target specified');
-            console.log(commander.helpInformation());
-            exit(ERROR_VALUE);
-        }
-        targetName = commander.args[0];
-        if (!properties.targets.hasOwnProperty(targetName)) {
-            console.log("Target: '" + targetName + "' not found");
-            console.log(commander.helpInformation());
-            exit(ERROR_VALUE);
-        }
-        delete properties.targets[targetName];
-    });
-
-commander
-    .command('*')
-    .action(function () {
-        console.log('Unrecognized command');
-        console.log(commander.helpInformation());
-        exit(NOTIMPLEMENTED_VALUE);
-    });
-
-
-try {
-    commander.parse(process.argv);
-
-    if (commander.args.length === 0) {
-        Object.keys(properties.targets).forEach(function (target) {
-                console.log(target);
-            }
-        );
-        exit();
-    }
-
-    config.writeProperties(properties);
-} catch (e) {
-    console.log(e);
-    exit();
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/lib/update.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/lib/update.js b/blackberry10/bin/lib/update.js
deleted file mode 100644
index 6a1b4f7..0000000
--- a/blackberry10/bin/lib/update.js
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-*/
-
-var shell = require('shelljs'),
-    exit = require('exit'),
-    path  = require('path'),
-    fs    = require('fs'),
-    ROOT    = path.join(__dirname, '..', '..');
-
-function setShellFatal(value, func) {
-    var oldVal = shell.config.fatal;
-    shell.config.fatal = value;
-    func();
-    shell.config.fatal = oldVal;
-}
-
-
-function updateNativeDir(projectpath) {
-    shell.cp('-rf', path.join(ROOT, 'bin', 'templates', 'project', 'native'), path.join(projectpath));
-}
-
-function updateCordovaJS(projectpath, version) {
-    var jspath = path.join(projectpath, 'lib', 'cordova.' + version, 'javascript');
-    shell.mkdir('-p', jspath); // remake lib dir tree with updated version
-    shell.cp('-f', path.join(ROOT, 'javascript', 'cordova.blackberry10.js'), path.join(jspath, 'cordova.js')); // copy new js
-    shell.cp('-f', path.join(ROOT, 'javascript', 'cordova.blackberry10.js'), path.join(projectpath, 'www', 'cordova.js'));
-}
-
-function updateCordovaTools(projectpath) {
-    // update cordova scripts from template
-    shell.cp('-rf', path.join(ROOT, 'bin', 'templates', 'project', 'cordova'), path.join(projectpath));
-    // update repo level scripts
-    updateTargetTool(projectpath);
-    updateInitTool(projectpath); 
-}
-
-function updateTargetTool(projectpath) {
-    shell.cp('-f', path.join(ROOT, 'bin', 'target'), path.join(projectpath, 'cordova'));
-    shell.cp('-f', path.join(ROOT, 'bin', 'target.bat'), path.join(projectpath, 'cordova'));
-    shell.cp('-f', path.join(ROOT, 'bin', 'lib', 'target.js'), path.join(projectpath, 'cordova', 'lib'));
-}
-
-function updateInitTool(projectpath) {
-    shell.cp('-f', path.join(ROOT, 'bin', 'init.bat'), path.join(projectpath, 'cordova'));
-    shell.cp('-f', path.join(ROOT, 'bin', 'init'), path.join(projectpath, 'cordova'));
-}
-
-exports.updateProject = function (projectpath) {
-    var version = fs.readFileSync(path.join(ROOT, 'VERSION'), 'utf-8').trim();
-    setShellFatal(true, function () {
-        shell.rm('-rf', path.join(projectpath, 'lib')); //remove old lib tree
-        updateCordovaJS(projectpath, version);
-        updateCordovaTools(projectpath);
-        updateNativeDir(projectpath);
-        fs.writeFileSync(path.join(projectpath, 'VERSION'), version + "\n", 'utf-8');
-        console.log('BlackBerry10 project is now at version ' + version);
-    });
-};
-
-if (require.main === module) {
-    (function () {
-        var args = process.argv;
-        if (args.length < 3 || (args[2] === '--help' || args[2] === '-h')) {
-            console.log('Usage: ' + path.relative(process.cwd(), path.join(__dirname, '..', 'update')) + ' <path_to_project>');
-            exit(1);
-        } else {
-            exports.updateProject(args[2]);
-        }
-    })();
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/target
----------------------------------------------------------------------
diff --git a/blackberry10/bin/target b/blackberry10/bin/target
deleted file mode 100755
index 7ae84ab..0000000
--- a/blackberry10/bin/target
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-BIN_DIR=$(dirname "$0")
-source "$BIN_DIR/init"
-"$CORDOVA_NODE/node" "$BIN_DIR/lib/target" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/target.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/target.bat b/blackberry10/bin/target.bat
deleted file mode 100644
index b760775..0000000
--- a/blackberry10/bin/target.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\target" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/bb10-ndk-version
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/bb10-ndk-version b/blackberry10/bin/templates/project/cordova/bb10-ndk-version
deleted file mode 100755
index 3964910..0000000
--- a/blackberry10/bin/templates/project/cordova/bb10-ndk-version
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-<<COMMENT
-    Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CORDOVA_DIR=$(dirname "$0")
-source "$CORDOVA_DIR/init"
-
-# Prints bb10 ndk version number
-"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/bb10-ndk-version" "$@"
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/bb10-ndk-version.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/bb10-ndk-version.bat b/blackberry10/bin/templates/project/cordova/bb10-ndk-version.bat
deleted file mode 100644
index 00d113c..0000000
--- a/blackberry10/bin/templates/project/cordova/bb10-ndk-version.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\bb10-ndk-version" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/build
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/build b/blackberry10/bin/templates/project/cordova/build
deleted file mode 100755
index 7a39b18..0000000
--- a/blackberry10/bin/templates/project/cordova/build
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CORDOVA_DIR=$(dirname "$0")
-source "$CORDOVA_DIR/init"
-
-#package app
-"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/build" "$@"
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/build.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/build.bat b/blackberry10/bin/templates/project/cordova/build.bat
deleted file mode 100644
index e20e8c5..0000000
--- a/blackberry10/bin/templates/project/cordova/build.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\build" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/clean
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/clean b/blackberry10/bin/templates/project/cordova/clean
deleted file mode 100755
index 02ecd13..0000000
--- a/blackberry10/bin/templates/project/cordova/clean
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CORDOVA_DIR=$(dirname "$0")
-source "$CORDOVA_DIR/init"
-
-"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/clean"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/clean.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/clean.bat b/blackberry10/bin/templates/project/cordova/clean.bat
deleted file mode 100644
index 30129a6..0000000
--- a/blackberry10/bin/templates/project/cordova/clean.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\clean" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/default-icon.png
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/default-icon.png b/blackberry10/bin/templates/project/cordova/default-icon.png
deleted file mode 100644
index f86a27a..0000000
Binary files a/blackberry10/bin/templates/project/cordova/default-icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/defaults.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/defaults.xml b/blackberry10/bin/templates/project/cordova/defaults.xml
deleted file mode 100644
index 0ca31c9..0000000
--- a/blackberry10/bin/templates/project/cordova/defaults.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
--->
-<!--
-  Widget Configuration Reference:
-    https://developer.blackberry.com/html5/documentation/v2_1/config_doc_elements.html
--->
-<widget xmlns="http://www.w3.org/ns/widgets"
-        xmlns:rim="http://www.blackberry.com/ns/widgets"
-        xmlns:cdv="http://cordova.apache.org/ns/1.0">
-  <content src="index.html"/>
-</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/install-device
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/install-device b/blackberry10/bin/templates/project/cordova/install-device
deleted file mode 100755
index efc79e5..0000000
--- a/blackberry10/bin/templates/project/cordova/install-device
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CORDOVA_DIR=$(dirname "$0")
-source "$CORDOVA_DIR/init"
-
-"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/install-device" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/install-device.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/install-device.bat b/blackberry10/bin/templates/project/cordova/install-device.bat
deleted file mode 100644
index 63c9fec..0000000
--- a/blackberry10/bin/templates/project/cordova/install-device.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\install-device" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/install-emulator
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/install-emulator b/blackberry10/bin/templates/project/cordova/install-emulator
deleted file mode 100644
index 6187672..0000000
--- a/blackberry10/bin/templates/project/cordova/install-emulator
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CORDOVA_DIR=$(dirname "$0")
-source "$CORDOVA_DIR/init"
-
-"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/install-emulator" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/install-emulator.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/install-emulator.bat b/blackberry10/bin/templates/project/cordova/install-emulator.bat
deleted file mode 100644
index 2521da6..0000000
--- a/blackberry10/bin/templates/project/cordova/install-emulator.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\install-emulator" %*


[48/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/localize.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/localize.js b/bin/templates/project/cordova/lib/localize.js
new file mode 100755
index 0000000..a6fe900
--- /dev/null
+++ b/bin/templates/project/cordova/lib/localize.js
@@ -0,0 +1,204 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var Localize = require("localize"),
+    loc = new Localize({
+        "EXCEPTION_NATIVEPACKAGER": {
+            "en": "Native Packager exception occurred"
+        },
+        "EXCEPTION_WIDGET_ARCHIVE_NOT_FOUND": {
+            "en": "Failed to find WebWorks archive: $[1]"
+        },
+        "EXCEPTION_MISSING_SIGNING_KEY_FILE": {
+            "en": "Cannot sign application - failed to find signing key file: $[1]"
+        },
+        "WARNING_MISSING_SIGNING_KEY_FILE": {
+            "en": "Build ID set in config.xml [version], but signing key file was not found: $[1]"
+        },
+        "EXCEPTION_MISSING_SIGNING_PASSWORD": {
+            "en": "Cannot sign application - No signing password provided [-g]"
+        },
+        "WARNING_SIGNING_PASSWORD_EXPECTED": {
+            "en": "Build ID set in config.xml [version], but no signing password was provided [-g]. Bar will be unsigned"
+        },
+        "EXCEPTION_DEBUG_TOKEN_NOT_FOUND": {
+            "en": "Failed to find debug token. If you have an existing debug token, please copy it to $[1]. To generate a new debug token, execute the 'run' command."
+        },
+        "EXCEPTION_DEBUG_TOKEN_WRONG_FILE_EXTENSION": {
+            "en": "Specified debug token not a .bar extension"
+        },
+        "PROGRESS_SESSION_CONFIGXML": {
+            "en": "Parsing config.xml"
+        },
+        "PROGRESS_FILE_POPULATING_SOURCE": {
+            "en": "Populating application source"
+        },
+        "PROGRESS_GEN_OUTPUT": {
+            "en": "Generating output files"
+        },
+        "PROGRESS_PACKAGING": {
+            "en": "Packaging the BAR file"
+        },
+        "PROGRESS_COMPLETE": {
+            "en": "BAR packaging complete"
+        },
+        "EXCEPTION_PARSING_XML": {
+            "en": "An error has occurred parsing the config.xml. Please ensure that it is syntactically correct"
+        },
+        "EXCEPTION_INVALID_VERSION": {
+            "en": "Please enter a valid application version"
+        },
+        "EXCEPTION_INVALID_NAME": {
+            "en": "Please enter a valid application name"
+        },
+        "EXCEPTION_INVALID_AUTHOR": {
+            "en": "Please enter an author for the application"
+        },
+        "EXCEPTION_INVALID_ID": {
+            "en": "Please enter an application id"
+        },
+        "EXCEPTION_INVALID_FEATURE_ID": {
+            "en": "Invalid <feature> element - failed to find the id attribute"
+        },
+        "EXCEPTION_BUFFER_ERROR": {
+            "en": "ERROR in bufferToString(): Buffer length must be even"
+        },
+        "EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN": {
+            "en": "Invalid config.xml - no <feature> tags are allowed for this <access> element"
+        },
+        "EXCEPTION_INVALID_ACCESS_URI_NO_PROTOCOL": {
+            "en": "Invalid URI attribute in the access element - protocol required($[1])"
+        },
+        "WARNING_URI_AND_ORIGIN_FOUND_IN_CONFIG": {
+            "en": "Invalid config.xml - <access> tags should have one of 'uri' or 'origin' attributes. 'origin' attribute will be ignored"
+        },
+        "EXCEPTION_INVALID_ACCESS_URI_NO_URN": {
+            "en": "Failed to parse the URI attribute in the access element($[1])"
+        },
+        "EXCEPTION_CMDLINE_ARG_INVALID": {
+            "en": "Invalid command line argument \"$[1]\""
+        },
+        "EXCEPTION_INVOKE_TARGET_INVALID_ID": {
+            "en": "Each rim:invoke-target element must specify a valid id attribute"
+        },
+        "EXCEPTION_INVOKE_TARGET_INVALID_TYPE": {
+            "en": "rim:invoke-target element must be specified and cannot be empty"
+        },
+        "EXCEPTION_INVOKE_TARGET_ACTION_INVALID": {
+            "en": "Each filter element must specify at least one valid action"
+        },
+        "EXCEPTION_INVOKE_TARGET_MIME_TYPE_INVALID": {
+            "en": "Each filter element must specify at least one valid mime-type"
+        },
+        "EXCEPTION_INVOKE_TARGET_FILTER_PROPERTY_INVALID": {
+            "en": "At least one property element in an invoke filter is invalid"
+        },
+        "EXCEPTION_INVALID_ICON_SRC": {
+            "en": "Icon src cannot be empty"
+        },
+        "EXCEPTION_INVALID_SPLASH_SRC": {
+            "en": "Splash src cannot be empty"
+        },
+        "EXCEPTION_INVALID_ICON_SRC_LOCALES": {
+            "en": "Icon src should not point to files under \"locales\" folder, bbwp will perform folder-based localization"
+        },
+        "EXCEPTION_INVALID_SPLASH_SRC_LOCALES": {
+            "en": "Splash src should not point to files under \"locales\" folder, bbwp will perform folder-based localization"
+        },
+        "EXCEPTION_EXTENSION_CIRCULAR_DEPENDENCY": {
+            "en": "Circular dependency detected for extension: \"$[1]\""
+        },
+        "EXCEPTION_EXTENSION_NOT_FOUND": {
+            "en": "Extension \"$[1]\" not found in \"ext\" folder"
+        },
+        "EXCEPTION_PARAMS_FILE_ERROR": {
+            "en": "An error has occurred parsing \"$[1]\""
+        },
+        "EXCEPTION_PARAMS_FILE_NOT_FOUND": {
+            "en": "\"$[1]\" does not exist"
+        },
+        "EXCEPTION_MISSING_TOOLS": {
+            "en": "BBNDK tools could not be found. Please ensure you have installed the BlackBerry Native SDK [http://developer.blackberry.com/native/] and have the PATH configured via bbndk-env script."
+        },
+        "EXCEPTION_INVALID_ORIENTATION_MODE": {
+            "en": "\"$[1]\" is not a valid orientation mode"
+        },
+        "EXCEPTION_EMPTY_ORIENTATION_MODE": {
+            "en": "blackberry.app.orientation parameter \"mode\" missing"
+        },
+        "EXCEPTION_BGCOLOR_INVALID" : {
+            "en": "Background color \"$[1]\" is not a valid number"
+        },
+        "EXCEPTION_CONFIG_NOT_FOUND" : {
+            "en": "No config.xml file was found at the root of the .zip file"
+        },
+        "EXCEPTION_CORDOVA_JS_IN_LIB_DIR" : {
+            "en": "$[1] cordova.js files found in lib"
+        },
+        "WARN_CORDOVA_JS_PACKAGED" : {
+            "en": "cordova.js is now packaged as local:///chrome/cordova.js"
+        },
+        "WARN_WEBPLATFORM_JS_PACKAGED" : {
+            "en": "webplatform.js has been packaged as an alternative to the on device version"
+        },
+        "WARN_WEBPLATFORM_I18N_PACKAGED" : {
+            "en": "i18n.js has been packaged as an alternative to the on device version"
+        },
+        "EXCEPTION_INVALID_ARCHIVE_PATH" : {
+            "en": "An archive or directory does not exist at the path specified: \"$[1]\""
+        },
+        "EXCEPTION_APPDESC_NOT_FOUND" : {
+            "en": "The bar descriptor file does not exist at the path specified: \"$[1]\""
+        },
+        "WARNING_ORIENTATION_DEPRECATED": {
+            "en": "blackberry.app.orientation has been deprecated, please use blackberry.app instead"
+        },
+        "WARNING_WEBSECURITY_DISABLED": {
+            "en": "You have disabled all web security in this WebWorks application"
+        },
+        "PROGRESS_DEBUG_TOKEN_IS_VALID": {
+            "en": "The existing debug token is valid"
+        },
+        "WARN_TARGET_NOT_EXIST": {
+            "en": "The target \"$[1]\" does not exist"
+        },
+        "WARN_IP_NOT_DEFINED": {
+            "en": "IP is not defined in target \"$[1]\""
+        },
+        "WARN_PASSWORD_NOT_DEFINED": {
+            "en": "Password is not defined in target \"$[1]\""
+        },
+        "PROGRESS_DEPLOYING_DEBUG_TOKEN": {
+            "en": "Deploying debug token to target \"$[1]\""
+        },
+        "WARN_NO_DEVICE_PIN_FOUND": {
+            "en": "No device PIN found, will omit debug token generation"
+        },
+        "WARN_NO_SIGNING_PASSWORD_PROVIDED": {
+            "en": "No signing password provided, debug token cannot be generated. Please enter a value for 'keystorepass' in $[1]/.cordova/blackberry10.json or use --keystorepass via command-line."
+        },
+        "PROGRESS_GENERATING_DEBUG_TOKEN": {
+            "en": "Generating debug token"
+        },
+        "WARN_RUN_DEVICE_OVERRIDES_EMULATOR": {
+            "en": "Skipping emulator detection and detecting device. Please provide only 1 of --target, --device, and --emulator"
+        }
+
+    }, "", ""); // TODO maybe a bug in localize, must set default locale to "" in order get it to work
+
+loc.setLocale("en");
+
+module.exports = loc;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/log
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/log b/bin/templates/project/cordova/lib/log
new file mode 100755
index 0000000..84e76c6
--- /dev/null
+++ b/bin/templates/project/cordova/lib/log
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+set -e
+NOTIMPLEMENTED_VALUE=1
+
+echo 'BlackBerry10: logging not supported at this time.'
+exit $NOTIMPLEMENTED_VALUE

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/log.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/log.bat b/bin/templates/project/cordova/lib/log.bat
new file mode 100644
index 0000000..ef5f6d9
--- /dev/null
+++ b/bin/templates/project/cordova/lib/log.bat
@@ -0,0 +1,21 @@
+:: Licensed to the Apache Software Foundation (ASF) under one
+:: or more contributor license agreements.  See the NOTICE file
+:: distributed with this work for additional information
+:: regarding copyright ownership.  The ASF licenses this file
+:: to you under the Apache License, Version 2.0 (the
+:: "License"); you may not use this file except in compliance
+:: with the License.  You may obtain a copy of the License at
+::
+:: http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing,
+:: software distributed under the License is distributed on an
+:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+:: KIND, either express or implied.  See the License for the
+:: specific language governing permissions and limitations
+:: under the License.
+
+@ECHO OFF
+
+ECHO echo 'BlackBerry10: logging not supported at this time.'
+EXIT /B 1

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/logger.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/logger.js b/bin/templates/project/cordova/lib/logger.js
new file mode 100644
index 0000000..f751a57
--- /dev/null
+++ b/bin/templates/project/cordova/lib/logger.js
@@ -0,0 +1,40 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var level = 'verbose';
+
+module.exports = {
+    level: function (value) {
+        level = value;
+    },
+    info: function (msg) {
+        if (level === 'verbose') {
+            console.log("[INFO]    " + msg.replace(/info: /i, ""));
+        }
+    },
+    error: function (msg) {
+        console.error("[ERROR]   " + msg.replace(/error: /i, ""));
+    },
+    warn: function (msg) {
+        if (level !== 'error') {
+            console.log("[WARN]    " + msg.replace(/warning: /i, ""));
+        }
+    },
+    log: function (msg) {
+        if (level === "verbose") {
+            console.log("[INFO]    " + msg.replace(/info: /i, ""));
+        }
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/native-packager.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/native-packager.js b/bin/templates/project/cordova/lib/native-packager.js
new file mode 100644
index 0000000..9f53779
--- /dev/null
+++ b/bin/templates/project/cordova/lib/native-packager.js
@@ -0,0 +1,293 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*jshint sub:true*/
+var childProcess = require("child_process"),
+    fs = require("fs"),
+    path = require("path"),
+    util = require("util"),
+    utils = require("./utils"),
+    data2xml = require("../third_party/data2xml/data2xml"),
+    wrench = require("wrench"),
+    conf = require("./conf"),
+    logger = require("./logger"),
+    localize = require("./localize"),
+    pkgrUtils = require("./packager-utils"),
+    i18nMgr = require("./i18n-manager"),
+    et = require("elementtree"),
+    xmlHelper = require("./xml-helpers"),
+    NL = pkgrUtils.isWindows() ? "\r\n" : "\n";
+
+function generateTabletXMLFile(session, config) {
+    var files = wrench.readdirSyncRecursive(session.sourceDir),
+        xmlData,
+        xmlDoc,
+        xmlObject = {
+            id : config.id,
+            versionNumber : config.version,
+            author : config.author,
+            asset : [{
+                _attr : { entry : 'true', type : 'qnx/elf' },
+                _value : 'wwe'
+            }],
+            entryPointType : {
+                _value : "Qnx/WebKit"
+            },
+            cascadesTheme : {
+                _value : config.theme
+            },
+            initialWindow : {
+                systemChrome : 'none',
+                transparent : 'true',
+                autoOrients : 'true'
+            },
+            env : [{
+                _attr : { value : '2.0.0', var : 'WEBWORKS_VERSION'}
+            }],
+            permission : [{
+                _attr : { system : 'true'},
+                _value : 'run_native'
+            }, {
+                // hardcoded access_internet to ensure user has internet (whitelist takes care of security)
+                _attr : { system : 'false'},
+                _value : 'access_internet'
+            }]
+        };
+
+    // If appdesc is specified, use it as the bar descriptor
+    if (session.appdesc) {
+        pkgrUtils.copyFile(session.appdesc, session.sourceDir);
+        return;
+    }
+
+    //Enable slog2 output if debugging
+    if (session.debug) {
+        xmlObject.env.push({
+            _attr : { value : 'slog2', 'var' : 'CONSOLE_MODE' }
+        });
+    }
+
+    //Write user specified permissions
+    if (config.permissions) {
+        config.permissions.forEach(function (permission) {
+            var permissionAttr,
+                permissionValue;
+
+            if (typeof permission === "string") {
+                //Permission with no attributes
+                permissionValue = permission;
+            } else if (permission["@"] && permission["#"]) {
+                //Permission with attributes
+                permissionAttr = permission["@"];
+                permissionValue = permission["#"];
+            }
+
+            if (permissionValue) {
+                xmlObject.permission.push({
+                    _attr : permissionAttr,
+                    _value : permissionValue
+                });
+            }
+        });
+    }
+
+    i18nMgr.generateLocalizedText(session, config, xmlObject, "name");
+
+    if (config.description) {
+        i18nMgr.generateLocalizedText(session, config, xmlObject, "description");
+    }
+
+    i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
+    i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
+
+    if (config["invoke-target"]) {
+        xmlObject["invoke-target"] = [];
+
+        config["invoke-target"].forEach(function (invokeTarget) {
+
+            var xmlInvokeTarget = {
+                "_attr" : { id : invokeTarget["@"]["id"] },
+                "entry-point" : config.name,
+                "type" : invokeTarget["type"]
+            };
+
+            if (invokeTarget["require-source-permissions"]) {
+                xmlInvokeTarget["require-source-permissions"] = {
+                    _value : invokeTarget["require-source-permissions"]
+                };
+            }
+
+            if (invokeTarget.filter) {
+                xmlInvokeTarget.filter = [];
+                invokeTarget.filter.forEach(function (filter) {
+                    var xmlFilter = {
+                        "action" : filter.action,
+                        "mime-type": filter["mime-type"]
+                    };
+
+                    if (filter.property) {
+                        xmlFilter.property = [];
+                        filter.property.forEach(function (property) {
+                            xmlFilter.property.push({
+                                "_attr": { var : property["@"]["var"], value : property["@"].value }
+                            });
+                        });
+                    }
+
+                    xmlInvokeTarget.filter.push(xmlFilter);
+                });
+            }
+
+            xmlObject["invoke-target"].push(xmlInvokeTarget);
+
+        });
+    }
+
+    //buildId
+    if (config.buildId) {
+        xmlObject.buildId = config.buildId;
+    }
+
+    if (files) {
+        files.forEach(function (file) {
+            file = path.resolve(session.sourceDir, file);
+
+            if (file.indexOf(conf.BAR_DESCRIPTOR) < 0 && !fs.statSync(file).isDirectory()) {
+                file = file.replace(/\\/g, "/");
+                file = file.split("src/")[1];
+
+                if (path.extname(file) === ".so") {
+                    xmlObject.asset.push({
+                        _attr : { type : 'qnx/elf' },
+                        _value : file
+                    });
+                } else {
+                    xmlObject.asset.push({
+                        _value : file
+                    });
+                }
+            }
+        });
+    }
+
+    //Add orientation mode
+    if (config.orientation) {
+        xmlObject.initialWindow.aspectRatio = config.orientation;
+    }
+
+    //Add auto orientation
+    xmlObject.initialWindow.autoOrients = config.autoOrientation;
+
+    xmlData = data2xml('qnx', xmlObject);
+
+    //Inject any config-file modifications for bar-descriptor.xml
+    if (config.configFileInjections && Array.isArray(config.configFileInjections)) {
+        xmlDoc = new et.ElementTree(et.XML(xmlData));
+        config.configFileInjections.forEach(function (config_file) {
+            if (config_file.attrib["parent"] && config_file.attrib["target"]  && config_file.attrib["target"] === "bar-descriptor.xml") {
+                xmlHelper.graftXML(xmlDoc, config_file._children, config_file.attrib["parent"]);
+            }
+        });
+        xmlData = xmlDoc.write({indent: 4});
+    }
+
+    pkgrUtils.writeFile(session.sourceDir, conf.BAR_DESCRIPTOR, xmlData);
+}
+
+function generateOptionsFile(session, target, config) {
+    var srcFiles = wrench.readdirSyncRecursive(session.sourceDir),
+        isSigning = session.isSigningRequired(config),
+        optionsStr = "-package" + NL,
+        params = session.getParams("blackberry-nativepackager");
+
+    //if -d was provided and we are not signing [-g], set debugToken and devMode
+    if (session.debug && !isSigning) {
+        if (fs.existsSync(conf.DEBUG_TOKEN)) {
+            optionsStr += "-debugToken" + NL;
+            optionsStr += conf.DEBUG_TOKEN + NL;
+        } else {
+            logger.warn(localize.translate("EXCEPTION_DEBUG_TOKEN_NOT_FOUND", path.join(pkgrUtils.homedir(), '.cordova', 'blackberry10debugtoken.bar')));
+        }
+        optionsStr += "-devMode" + NL;
+    }
+
+    if (target === "device" && isSigning && config.buildId) {
+        optionsStr += "-buildId" + NL;
+        optionsStr += config.buildId + NL;
+    }
+
+    if (params) {
+        Object.getOwnPropertyNames(params).forEach(function (p) {
+            optionsStr += p + NL;
+
+            if (params[p]) {
+                optionsStr += params[p] + NL;
+            }
+        });
+    }
+
+    optionsStr += path.resolve(util.format(session.barPath, target)) + NL;
+
+    //to support splash screens/icons for multiple resolutions/devices
+    optionsStr += "-barVersion" + NL;
+    optionsStr += "1.5" + NL;
+
+    optionsStr += "-C" + NL;
+    optionsStr += session.sourceDir + NL;
+    optionsStr += conf.BAR_DESCRIPTOR + NL;
+
+    srcFiles.forEach(function (file) {
+        file = path.resolve(session.sourceDir, file);
+
+        if (file.indexOf(conf.BAR_DESCRIPTOR) < 0 && !fs.statSync(file).isDirectory()) {
+            optionsStr += file + NL;
+        }
+    });
+
+    fs.writeFileSync(path.normalize(session.sourceDir + "/../options"), optionsStr);
+}
+
+function execNativePackager(session, callback) {
+    var script = path.join(process.env.CORDOVA_BBTOOLS, "blackberry-nativepackager"),
+        cwd = session.sourceDir,
+        nativePkgr;
+
+    if (pkgrUtils.isWindows()) {
+        script += ".bat";
+    }
+
+    nativePkgr = childProcess.spawn(script, ["@../options"], {
+        "cwd": cwd,
+        "env": process.env
+    });
+
+    nativePkgr.stdout.on("data", pkgrUtils.handleProcessOutput);
+
+    nativePkgr.stderr.on("data", pkgrUtils.handleProcessOutput);
+
+    nativePkgr.on("exit", function (code) {
+        if (callback && typeof callback === "function") {
+            callback(code);
+        }
+    });
+}
+
+module.exports = {
+    exec: function (session, target, config, callback) {
+        generateOptionsFile(session, target, config);
+        generateTabletXMLFile(session, config);
+        execNativePackager(session, callback);
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/packager-utils.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/packager-utils.js b/bin/templates/project/cordova/lib/packager-utils.js
new file mode 100644
index 0000000..95fe955
--- /dev/null
+++ b/bin/templates/project/cordova/lib/packager-utils.js
@@ -0,0 +1,198 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* globals Buffer */
+
+var fs = require('fs'),
+    path = require('path'),
+    wrench = require('wrench'),
+    localize = require("./localize"),
+    logger = require("./logger"),
+    os = require('os'),
+    _self;
+
+function swapBytes(buffer) {
+    var l = buffer.length,
+        i,
+        a;
+
+    if (l % 2 === 0x01) {
+        throw localize.translate("EXCEPTION_BUFFER_ERROR");
+    }
+
+    for (i = 0; i < l; i += 2) {
+        a = buffer[i];
+        buffer[i] = buffer[i + 1];
+        buffer[i + 1] = a;
+    }
+
+    return buffer;
+}
+
+_self = {
+    writeFile: function (fileLocation, fileName, fileData) {
+        //If directory does not exist, create it.
+        if (!fs.existsSync(fileLocation)) {
+            wrench.mkdirSyncRecursive(fileLocation, "0755");
+        }
+
+        fs.writeFileSync(path.join(fileLocation, fileName), fileData);
+    },
+
+    copyFile: function (srcFile, destDir, baseDir) {
+        var filename = path.basename(srcFile),
+            fileBuffer = fs.readFileSync(srcFile),
+            fileLocation;
+
+        //if a base directory was provided, determine
+        //folder structure from the relative path of the base folder
+        if (baseDir && srcFile.indexOf(baseDir) === 0) {
+            fileLocation = srcFile.replace(baseDir, destDir);
+            wrench.mkdirSyncRecursive(path.dirname(fileLocation), "0755");
+            fs.writeFileSync(fileLocation, fileBuffer);
+        } else {
+            fs.writeFileSync(path.join(destDir, filename), fileBuffer);
+        }
+    },
+
+    listFiles: function (directory, filter) {
+        var files = wrench.readdirSyncRecursive(directory),
+            filteredFiles = [];
+
+        files.forEach(function (file) {
+            //On mac wrench.readdirSyncRecursive does not return absolute paths, so resolve one.
+            file = path.resolve(directory, file);
+
+            if (filter(file)) {
+                filteredFiles.push(file);
+            }
+        });
+
+        return filteredFiles;
+    },
+
+    isWindows: function () {
+        return os.type().toLowerCase().indexOf("windows") >= 0;
+    },
+
+    isArray: function (obj) {
+        return obj.constructor.toString().indexOf("Array") !== -1;
+    },
+
+    isEmpty : function (obj) {
+        for (var prop in obj) {
+            if (obj.hasOwnProperty(prop))
+                return false;
+        }
+        return true;
+    },
+
+    toBoolean: function (myString, defaultVal) {
+        // if defaultVal is not passed, default value is undefined
+        return myString === "true" ? true : myString === "false" ? false : defaultVal;
+    },
+
+    homedir: function () {
+        if (_self.isWindows()) {
+            return process.env.USERPROFILE;
+        } 
+        return process.env.HOME;
+    },
+
+    parseUri : function (str) {
+        var i, uri = {},
+            key = [ "source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ],
+            matcher = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(str);
+
+        for (i = key.length - 1; i >= 0; i--) {
+            uri[key[i]] = matcher[i] || "";
+        }
+
+        return uri;
+    },
+
+    // uri - output from parseUri
+    isAbsoluteURI : function (uri) {
+        if (uri && uri.source) {
+            return uri.relative !== uri.source;
+        }
+
+        return false;
+    },
+
+    isLocalURI : function (uri) {
+        return uri && uri.scheme && uri.scheme.toLowerCase() === "local";
+    },
+
+    // Convert node.js Buffer data (encoded) to String
+    bufferToString : function (data) {
+        var s = "";
+        if (Buffer.isBuffer(data)) {
+            if (data.length >= 2 && data[0] === 0xFF && data[1] === 0xFE) {
+                s = data.toString("ucs2", 2);
+            } else if (data.length >= 2 && data[0] === 0xFE && data[1] === 0xFF) {
+                swapBytes(data);
+                s = data.toString("ucs2", 2);
+            } else if (data.length >= 3 && data[0] === 0xEF && data[1] === 0xBB && data[2] === 0xBF) {
+                s = data.toString("utf8", 3);
+            } else {
+                s = data.toString("utf8");
+            }
+        }
+
+        return s;
+    },
+
+    // Wrap object property in an Array if the property is defined and it is not an Array
+    wrapPropertyInArray : function (obj, property) {
+        if (obj && obj[property] && !(obj[property] instanceof Array)) {
+            obj[property] = [ obj[property] ];
+        }
+    },
+
+    loadModule: function (path) {
+        return require(path);
+    },
+
+    handleProcessOutput: function (data) {
+        var msg = data.toString().replace(/[\n\r]/g, '');
+
+        if (msg) {
+            if (msg.indexOf("[ERROR] ") >= 0) {
+                logger.error(msg.substring(8).trim());
+            } else if (msg.indexOf("[WARN] ") >= 0) {
+                logger.warn(msg.substring(7).trim());
+            } else if (msg.indexOf("[INFO] ") >= 0) {
+                logger.info(msg.substring(8).trim());
+            } else if (msg.indexOf("[BUILD] ") >= 0) {
+                logger.info(msg.substring(8).trim());
+            } else {
+                logger.info(msg);
+            }
+        }
+    },
+
+    escapeStringForShell: function (str) {
+        if (require('os').type().toLowerCase().indexOf("windows") >= 0) {
+            return "\"" + str + "\"";
+        } else {
+            return str.replace(/(["\s'$`\\])/g, '\\$1');
+        }
+    }
+
+};
+
+module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/packager-validator.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/packager-validator.js b/bin/templates/project/cordova/lib/packager-validator.js
new file mode 100644
index 0000000..985e137
--- /dev/null
+++ b/bin/templates/project/cordova/lib/packager-validator.js
@@ -0,0 +1,108 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var check = require('validator').check,
+    sanitize = require('validator').sanitize,
+    localize = require("./localize"),
+    logger = require("./logger"),
+    path = require("path"),
+    fs = require("fs"),
+    packagerUtils = require("./packager-utils"),
+    signingUtils = require("./signing-utils"),
+    CORDOVA_JS_REGEX = /(cordova-.+js)|cordova\.js/,
+    _self;
+
+//NOTE this class is unfinished and is a work in progress
+
+_self = {
+    //TODO create one global validate method that will validate
+    //both the session and configObj?
+    validateSession: function (session, widgetConfig) {
+        //The string checks below is to get around a really weird issue in commander
+        //where sometimes unspecified arguments come in as a function...
+        var keysFound = session.keystore,
+            keysDefault = session.keystore === signingUtils.getDefaultPath("author.p12"),
+            cskFound = session.keystoreCsk,//barsigner.csk
+            dbFound = session.keystoreDb,//barsigner.db
+            bbidFound = session.keystoreBBID,
+            keysPassword = session.storepass && typeof session.storepass === "string",
+            commandLinebuildId = session.buildId && typeof session.buildId === "string",//--buildId
+            buildId = widgetConfig.buildId && typeof widgetConfig.buildId === "string",//Finalized Build ID
+
+            //Constants
+            AUTHOR_P12 = "author.p12",
+            BARSIGNER_CSK = "barsigner.csk",
+            BARSIGNER_DB = "barsigner.db",
+            BARSIGNER_BBID = "bbidtoken.csk",
+
+            //Logging function
+            signingFileWarn = function (file) {
+                logger.warn(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", file));
+            },
+            signingFileError = function (file) {
+                throw localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", file);
+            };
+
+        //If -g <password> or --buildId is set, but signing key files are missing, throw an error
+        if (keysPassword || commandLinebuildId) {
+            if (!keysFound) {
+                signingFileError(AUTHOR_P12);
+            } else if (keysDefault && !cskFound && !bbidFound) {
+                //Only warn about BBID since the old tokens are deprecated
+                signingFileError(BARSIGNER_BBID);
+            } else if (keysDefault && cskFound && !dbFound) {
+                signingFileError(BARSIGNER_DB);
+            }
+
+        //If a buildId exists in config, but no keys were found, throw a warning
+        } else if (buildId) {
+            if (!keysFound) {
+                signingFileWarn(AUTHOR_P12);
+            } else if (keysDefault && !cskFound && !bbidFound) {
+                //Only warn about BBID since the old tokens are deprecated
+                signingFileWarn(BARSIGNER_BBID);
+            } else if (keysDefault && cskFound && !dbFound) {
+                signingFileWarn(BARSIGNER_DB);
+            }
+        }
+
+        if (commandLinebuildId && !keysPassword) {
+            //if --buildId was provided with NO password, throw error
+            throw localize.translate("EXCEPTION_MISSING_SIGNING_PASSWORD");
+        }
+
+        //if --appdesc was provided, but the file is not existing, throw an error
+        if (session.appdesc && !fs.existsSync(session.appdesc)) {
+            throw localize.translate("EXCEPTION_APPDESC_NOT_FOUND", session.appdesc);
+        }
+    },
+
+    //Validation for configObj, iterates through whitelisted features in configObj to remove any non-existing APIs
+    validateConfig: function (session, configObj) {
+        var cordovaJsFiles;
+        //if packageCordovaJs was set, test for existing cordova.js files
+        if (configObj.packageCordovaJs) {
+            cordovaJsFiles = packagerUtils.listFiles(session.sourceDir, function (file) {
+                return CORDOVA_JS_REGEX.test(file);
+            });
+            if (cordovaJsFiles.length > 0) {
+                logger.warn(localize.translate("WARN_CORDOVA_JS_PACKAGED"));
+            }
+        }
+
+    }
+};
+
+module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/packager.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/packager.js b/bin/templates/project/cordova/lib/packager.js
new file mode 100644
index 0000000..e8ac24c
--- /dev/null
+++ b/bin/templates/project/cordova/lib/packager.js
@@ -0,0 +1,77 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    wrench = require("wrench"),
+    cmdline = require("./cmdline"),
+    logger = require("./logger"),
+    fileManager = require("./file-manager"),
+    localize = require("./localize"),
+    configParser = require("./config-parser"),
+    packagerUtils = require("./packager-utils"),
+    packagerValidator = require("./packager-validator"),
+    barBuilder = require("./bar-builder"),
+    session;
+
+module.exports = {
+    start: function (callback) {
+        try {
+            cmdline.parse(process.argv);
+            session = require("./session").initialize(cmdline.commander);
+
+            //prepare files for webworks archiving
+            logger.log(localize.translate("PROGRESS_FILE_POPULATING_SOURCE"));
+            fileManager.prepareOutputFiles(session);
+
+            //parse config.xml
+            logger.log(localize.translate("PROGRESS_SESSION_CONFIGXML"));
+            configParser.parse(path.join(session.sourceDir, "config.xml"), session, function (configObj) {
+                //validate session Object
+                packagerValidator.validateSession(session, configObj);
+                //validage configuration object
+                packagerValidator.validateConfig(session, configObj);
+
+                //generate user.js
+                logger.log(localize.translate("PROGRESS_GEN_OUTPUT"));
+                //Adding debuEnabled property to user.js. Framework will enable/disable WebInspector based on that variable.
+                configObj.debugEnabled = session.debug;
+
+                barBuilder.build(session, configObj, function (code) {
+                    fileManager.cleanSource(session);
+
+                    if (code === 0) {
+                        logger.log(localize.translate("PROGRESS_COMPLETE"));
+                    }
+
+                    if (callback && typeof callback === "function") {
+                        callback(code);
+                    }
+                });
+            });
+        } catch (e) {
+            try {
+                fileManager.cleanSource(session);
+            } catch (ex) {
+            } finally {
+                logger.error(e);
+                if (callback && typeof callback === "function") {
+                    callback(e);
+                }
+            }
+
+        }
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/params.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/params.js b/bin/templates/project/cordova/lib/params.js
new file mode 100644
index 0000000..955302f
--- /dev/null
+++ b/bin/templates/project/cordova/lib/params.js
@@ -0,0 +1,56 @@
+/*
+ *  Copyright 2014 BlackBerry Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    fs = require("fs"),
+    utils = require("./utils"),
+    localize = require("./localize");
+
+function getParams(toolName, cmdline) {
+    var properties = utils.getProperties(),
+        params = properties[toolName],
+        paramsPath,
+        cmdParams;
+
+    if (cmdline && cmdline.params) {
+        if (!cmdParams) {
+            paramsPath = path.resolve(cmdline.params);
+
+            if (fs.existsSync(paramsPath)) {
+                try {
+                    cmdParams = require(paramsPath);
+                } catch (e) {
+                    throw localize.translate("EXCEPTION_PARAMS_FILE_ERROR", paramsPath);
+                }
+            } else {
+                throw localize.translate("EXCEPTION_PARAMS_FILE_NOT_FOUND", paramsPath);
+            }
+        }
+    }
+
+    if (cmdParams && cmdParams[toolName]) {
+        if (params) {
+            params = utils.mixin(cmdParams[toolName], params);
+        } else {
+            params = cmdParams[toolName];
+        }
+    }
+
+    return params;
+}
+
+
+module.exports = getParams;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/run-utils.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/run-utils.js b/bin/templates/project/cordova/lib/run-utils.js
new file mode 100644
index 0000000..fb7fefd
--- /dev/null
+++ b/bin/templates/project/cordova/lib/run-utils.js
@@ -0,0 +1,298 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var fs = require("fs"),
+    path = require("path"),
+    utils = require("./utils"),
+    targetUtils = require("./target-utils.js"),
+    localize = require("./localize"),
+    pkgrUtils = require("./packager-utils"),
+    debugTokenHelper = require("./debugtoken-helper"),
+    xml2js = require('xml2js'),
+    logger = require("./logger"),
+    async = require("async"),
+    session = require("./session"),
+    properties = utils.getProperties(),
+    workingdir = path.normalize(__dirname + "/.."),
+    _self;
+
+//Options looking for are: (Device | Emulator, query, devicepass). Calls back with:  (error || options object, target object)
+function getTargetName(options, done) {
+    var ipFinder = options.emulator ? targetUtils.findConnectedSimulator : targetUtils.findConnectedDevice,
+        targetType = options.emulator ? "emulator" : "device";
+
+    if (options.target) {
+        done(null, options, options.target);
+    } else {
+        
+        if (options.device && options.emulator) {
+            localize.translate("WARN_RUN_DEVICE_OVERRIDES_EMULATOR");
+        }
+
+        async.series(
+        {
+            ip: function (done) {
+                ipFinder(function (ip) {
+                    done(ip ? null : "No connected BlackBerry 10 " + targetType + " found", ip);
+                });
+            },
+            devicePass: function (done) {
+                if (!options.devicepass && options.devicepass !== "") {
+                    if (options.query) {
+                        utils.prompt({description: getPasswordPrompt(targetType), hidden: true}, done);
+                    } else {
+                        done("");
+                    }
+                } else {
+                    done(null, options.devicepass);
+                }
+            }
+        },
+        function (err, results) {
+            if (err) {
+                done(err);
+            } else {
+                options.devicepass = results.devicePass;
+                _self.checkDeviceInfo(options, results.ip, targetType, results.devicePass, done);
+            }
+        });
+    }
+}
+
+//Options looking for are: (query, devicepass). Calls back with:  (error || target object)
+function validateTarget(options, targetName, allDone) {
+    var deployTarget,
+        err,
+        runTasks = [];
+
+    if (!targetName) {
+        err = "No target exists, to add that target please run: target add <name> <ip> [-t | --type <device | simulator>] [-p <password>] [--pin <devicepin>]";
+    } else if (!properties.targets[targetName]) {
+        err = "The target \"" + targetName + "\" does not exist, to add that target please run: target add " + targetName + " <ip> [-t | --type <device | simulator>] [-p <password>] [--pin <devicepin>]";
+    } else {
+        deployTarget = utils.clone(properties.targets[targetName]);
+        deployTarget.name = targetName;
+
+        if (!deployTarget.ip) {
+            if (options.query) {
+                runTasks.push(function (done) {
+                    utils.prompt({description: "Please enter the IP address for target " + deployTarget.name + ": "}, function (e, ip) {
+                        deployTarget.ip = ip;
+                        done(e);
+                    });
+                });
+            } else {
+                err = "IP is not defined in target \"" + deployTarget.name + "\"";
+            }
+        }
+
+        if (err === undefined && !deployTarget.password && deployTarget.password !== "") {
+            if (options.devicepass || options.devicepass === "") {
+                deployTarget.password = options.devicepass;
+            } else {
+                if (options.query) {
+                    runTasks.push(function (done) {
+                        utils.prompt({description: getPasswordPrompt(deployTarget.type), hidden: true}, function (e, devicePass) {
+                            deployTarget.password = devicePass;
+                            done(e);
+                        });
+                    });
+                } else if (!options.emulator) {
+                    err = "No device password provided. You can omit --no-query, use --devicepass, or enter a value for 'password' to the target " + deployTarget.name + " defined at " + utils.getPropertiesFilePath();
+                }
+            }
+        }
+
+        if (!deployTarget.pin) {
+            runTasks.push(function (done) {
+                targetUtils.getDeviceInfo(deployTarget.ip, deployTarget.password, function (err, result) {
+                    deployTarget.pin = result.pin;
+                    done(err);
+                });
+            });
+        }
+    }
+
+    async.series(runTasks, function (e) {
+        var finalErr = err || e;
+        if (!finalErr && deployTarget) {
+            logger.info("Target " + deployTarget.name + " selected");
+        }
+        allDone(err || e, options, deployTarget);
+    });
+}
+//Options looking for are: (keystorepass, query). Calls back with:  (error || target object)
+function handleDebugToken(options, deployTarget, allDone) {
+    options.keystorepass = session.getKeyStorePass(options);
+
+    // deploy debug token for device debug builds only
+    if (deployTarget.pin && !options.emulator && options.build && !options.release) {
+        async.waterfall(
+            [
+                debugTokenHelper.checkDebugToken.bind(this, deployTarget.pin),
+                function (done) {
+                    //If no keystorepass is provided debugTokenHelper will throw an error.
+                    if (!options.keystorepass && options.query) {
+                        utils.prompt({description: "Please enter your keystore password: ", hidden: true}, function (err, result) {
+                            options.keystorepass = result;
+                            done(null, result);
+                        });
+                    } else {
+                        done(null, options.keystorepass);
+                    }
+                },
+                debugTokenHelper.createToken.bind(this, properties, "all")
+            ],
+            function (err, results) {
+                // If the error is true, then the debug token is valid and creation was skipped.
+                if (err === true) {
+                    logger.info(localize.translate("PROGRESS_DEBUG_TOKEN_IS_VALID"));
+                    //Clear the error so it is still deployed
+                    err = null;
+                }
+
+                if (!err) {
+                    debugTokenHelper.deployToken(deployTarget.name, deployTarget.ip, deployTarget.password, function (code) {
+                        allDone(code, deployTarget);
+                    });
+                } else {
+                    allDone(null, deployTarget);
+                }
+            }
+        );
+    } else {
+        allDone(null, deployTarget);
+    }
+}
+
+function generateDeployOptions(options, deployTarget) {
+    var deployOptions = [],
+        barPath = pkgrUtils.escapeStringForShell(
+            path.normalize(__dirname + "/../../build/" +
+                (deployTarget.type === "device" ? "device" : "simulator") +
+                "/" + utils.genBarName() + ".bar"));
+
+    deployOptions.push("-device");
+    deployOptions.push(deployTarget.ip);
+
+    if (deployTarget.password) {
+        deployOptions.push("-password");
+        deployOptions.push(deployTarget.password);
+    }
+
+    deployOptions.push("-package");
+    deployOptions.push(barPath);
+    deployOptions.push("-uninstallApp");
+    deployOptions.push("-installApp");
+
+    if (options.launch) {
+        deployOptions.push("-launchApp");
+    }
+
+    return deployOptions;
+}
+
+function execNativeDeploy(deployOptions, callback) {
+    var script = path.normalize(path.join(process.env.CORDOVA_BBTOOLS, "blackberry-deploy"));
+
+    utils.exec(script, deployOptions, {
+        "cwd": workingdir,
+        "env": process.env
+    }, callback);
+}
+
+function getPasswordPrompt(targetType) {
+    var prompt = "Please enter your " + targetType + " password";
+    if (targetType === "emulator") {
+        prompt += " (For no password press ENTER)";
+    }
+    prompt += ": ";
+    return prompt;
+}
+
+_self = {
+    //options looking for are: (query, devicepass, password, target, (device || emulator)) Function returns (error || deployTarget)
+    getValidatedTarget : function (options, callback) {
+        async.waterfall(
+            [
+                getTargetName.bind(this, options),
+                validateTarget,
+                handleDebugToken
+            ], callback
+        );
+    },
+
+    //Function returns (error || null)
+    install : function (options, deployTarget, allDone) {
+        var script = path.join(process.env.CORDOVA_BBTOOLS, "blackberry-deploy"),
+            args = [
+                "-device",
+                deployTarget.ip
+            ],
+            projectRootDir = path.normalize(path.join(__dirname, "..")),
+            installedAppsOutput,
+            runTasks = [];
+
+        if (deployTarget.password) {
+            args.push("-password", deployTarget.password);
+        }
+        runTasks = [
+            function uninstallInstallLaunchApp(result, done) {
+                var deployOptions = generateDeployOptions(options, deployTarget);
+                execNativeDeploy(deployOptions, done);
+            }
+        ];
+
+        async.waterfall(runTasks,
+            function (err, results) {
+                allDone(null, deployTarget);
+            }
+        );
+    },
+
+    //Function returns (error || deployTarget)
+    checkBuild : function (deployTarget, allDone) {
+        var barPath = path.normalize(__dirname + "/../../build/" +
+                (deployTarget.type === "device" ? "device" : "simulator") +
+                "/" + utils.genBarName() + ".bar");
+        if (fs.existsSync(barPath)) {
+            allDone(null, deployTarget);
+        } else {
+            allDone("No build file exists, please run: build [--debug | --release] [--keystorepass <password>] [--buildId <number>] [--params <json>] [--loglevel <level>] [--web-inspector] [--no-signing]");
+        }
+    },
+
+    //No options needed within function Function returns (error || options, targetName)
+    checkDeviceInfo : function (options, ip, deviceType, devicePass, done) {
+        var props = utils.getProperties(),
+            targetName;
+
+        targetUtils.getDeviceInfo(ip, devicePass, function (err, device) {
+            if (!err) {
+                targetName = device.name.replace(/ /g, "-") + "-" + device.pin;
+                props.targets[targetName] = {
+                    ip: ip,
+                    pin: device.pin,
+                    type: deviceType
+                };
+                utils.writeToPropertiesFile(props);
+            }
+            done(err, options, targetName);
+        });
+    }
+};
+
+module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/run.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/run.js b/bin/templates/project/cordova/lib/run.js
new file mode 100755
index 0000000..15ff7eb
--- /dev/null
+++ b/bin/templates/project/cordova/lib/run.js
@@ -0,0 +1,78 @@
+#!/usr/bin/env node
+
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    os = require("os"),
+    utils = require("./utils"),
+    options = require('commander'),
+    runUtils = require("./run-utils"),
+    async = require("async");
+
+function install(deployTarget, done) {
+    var buildCmd = utils.isWindows() ? "build" : "./build",
+        buildArgs = options.keystorepass ? ["-k", options.keystorepass] : [],
+        projectRootDir = path.normalize(path.join(__dirname, "..")),
+        installTasks = [];
+
+    if (options.build) {
+        if (options.release) {
+            buildArgs.push("--release");
+        }
+        installTasks.push(utils.exec.bind(this, buildCmd, buildArgs, {"cwd": projectRootDir}));
+    }
+
+    installTasks.push(runUtils.install.bind(this, options, deployTarget));
+
+    async.series(installTasks, done);
+}
+
+options
+    .usage('[--device] [--emulator] [--target=<id>] [--release] [--no-query] [-k | --keystorepass] [--devicepass] [--no-launch] [--no-uninstall] [--no-build]')
+    .option('-k, --keystorepass <password>', 'the password of signing key; needed for creating debug token')
+    .option('--device', 'run on connected device')
+    .option('--emulator', 'run on BB10 simulator')
+    .option('--devicepass <password>', 'device password')
+    .option('--target <id>', 'specifies the target to run the application')
+    .option('--release', 'build in release mode')
+    .option('--no-query', 'fail if no password is provided and one is needed')
+    .option('--no-launch', 'do not launch the application on device')
+    .option('--no-build', 'deploy the pre-built bar file and skip building')
+    .on('--help', function () {
+        console.log('  Examples:');
+        console.log('');
+        console.log("  Deploying to a predefined target");
+        console.log('    $ run --target=Z10');
+        console.log("  Deploying to a connected device");
+        console.log('    $ run --device --devicepass devicePassword --keystorepass keystorePassword');
+        console.log('');
+    });
+
+process.argv.forEach(function (argument, index, args) {
+    if (argument.match(/^--target=/)) {
+        args.splice(index, 1, "--target", argument.substr("--target=".length));
+    }
+});
+
+options.parse(process.argv);
+
+utils.waterfall(
+    [
+        runUtils.getValidatedTarget.bind(this, options),
+        install
+    ]
+);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/session.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/session.js b/bin/templates/project/cordova/lib/session.js
new file mode 100644
index 0000000..3dd8763
--- /dev/null
+++ b/bin/templates/project/cordova/lib/session.js
@@ -0,0 +1,125 @@
+/*
+ *  Copyright 2014 BlackBerry Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var path = require("path"),
+    fs = require("fs"),
+    wrench = require("wrench"),
+    utils = require("./utils"),
+    logger = require("./logger"),
+    signingUtils = require("./signing-utils"),
+    barConf = require("./bar-conf"),
+    localize = require("./localize"),
+    getParams = require("./params");
+
+
+module.exports = {
+    getKeyStorePass: function (cmdline) {
+        var properties = utils.getProperties(),
+            params = getParams("blackberry-signer", cmdline) || {},
+            keystorepass;
+
+        //Check commandline first, then properties, then params
+        //Packager expects value provided as password
+        //Cordova scripts expects value provided as keystorepass
+        //String checks are to get around issue where commander sometimes passed in a function
+        if (cmdline.password && typeof cmdline.password === "string") {
+            keystorepass = cmdline.password;
+        } else if (cmdline.keystorepass && typeof cmdline.keystorepass === "string") {
+            keystorepass = cmdline.keystorepass;
+        } else if (properties.keystorepass) {
+            keystorepass = properties.keystorepass;
+        } else if (params["-storepass"]) {
+            keystorepass = params["-storepass"];
+        }
+
+        return keystorepass;
+    },
+    initialize: function (cmdline) {
+        var sourceDir,
+            signingPassword = module.exports.getKeyStorePass(cmdline),
+            outputDir = cmdline.output,
+            archivePath = path.resolve(cmdline.args[0] ? cmdline.args[0] : "../../www"),
+            archiveName = utils.genBarName(),
+            appdesc,
+            buildId = cmdline.buildId,
+            signerParams = getParams("blackberry-signer", cmdline) || {},
+            keystore = signerParams["-keystore"],
+            bbidtoken = signerParams["-bbidtoken"];
+
+        //If -o option was not provided, default output location is the same as .zip
+        outputDir = outputDir || path.dirname(archivePath);
+
+        if (cmdline.appdesc && "string" === typeof cmdline.appdesc) {
+            appdesc = path.resolve(cmdline.appdesc);
+        }
+
+        //If -s [dir] is provided
+        if (cmdline.source && "string" === typeof cmdline.source) {
+            sourceDir = cmdline.source + "/src";
+        } else {
+            sourceDir = outputDir + "/src";
+        }
+
+        if (!fs.existsSync(sourceDir)) {
+            wrench.mkdirSyncRecursive(sourceDir, "0755");
+        }
+
+        logger.level(cmdline.loglevel || 'verbose');
+
+        //If signer params exist, check whether the files are there
+        //This is to be consistent with the default files
+        if (keystore && !fs.existsSync(keystore)) {
+            keystore = false;
+        }
+        if (bbidtoken && !fs.existsSync(bbidtoken)) {
+            bbidtoken = false;
+        }
+
+        return {
+            "conf": require("./conf"),
+            "keepSource": !!cmdline.source,
+            "sourceDir": path.resolve(sourceDir),
+            "sourcePaths": {
+                "ROOT": path.resolve(sourceDir),
+                "CHROME": path.normalize(path.resolve(sourceDir) + barConf.CHROME),
+                "LIB": path.normalize(path.resolve(sourceDir) + barConf.LIB),
+                "EXT": path.normalize(path.resolve(sourceDir) + barConf.EXT),
+                "UI": path.normalize(path.resolve(sourceDir) + barConf.UI),
+                "PLUGINS": path.normalize(path.resolve(sourceDir) + barConf.PLUGINS),
+                "JNEXT_PLUGINS": path.normalize(path.resolve(sourceDir) + barConf.JNEXT_PLUGINS)
+            },
+            "outputDir": path.resolve(outputDir),
+            "archivePath": archivePath,
+            "archiveName": archiveName,
+            "barPath": outputDir + "/%s/" + archiveName + ".bar",
+            "debug": !!cmdline.debug,
+            "keystore": keystore || signingUtils.getKeyStorePath(),
+            "keystoreCsk": signingUtils.getCskPath(),
+            "keystoreDb": signingUtils.getDbPath(),
+            "keystoreBBID": bbidtoken || signingUtils.getKeyStorePathBBID(),
+            "storepass": signingPassword,
+            "buildId": buildId,
+            "appdesc" : appdesc,
+            getParams: function (toolName) {
+                return getParams(toolName, cmdline);
+            },
+            isSigningRequired: function (config) {
+                return (keystore || signingUtils.getKeyStorePath()) && signingPassword;
+            },
+            "targets": ["simulator", "device"]
+        };
+    }
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/signing-helper.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/signing-helper.js b/bin/templates/project/cordova/lib/signing-helper.js
new file mode 100644
index 0000000..3ede0b6
--- /dev/null
+++ b/bin/templates/project/cordova/lib/signing-helper.js
@@ -0,0 +1,89 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var path = require('path'),
+    fs = require("fs"),
+    os = require('os'),
+    childProcess = require("child_process"),
+    util = require("util"),
+    utils = require("./utils"),
+    conf = require("./conf"),
+    pkgrUtils = require("./packager-utils"),
+    signingUtils = require("./signing-utils"),
+    logger = require("./logger"),
+    _self;
+
+function execSigner(session, target, callback) {
+    var script = path.join(process.env.CORDOVA_BBTOOLS, "blackberry-signer"),
+        signer,
+        params = session.getParams("blackberry-signer"),
+        args = [];
+
+    if (params) {
+        Object.getOwnPropertyNames(params).forEach(function (p) {
+            args.push(p);
+
+            if (params[p]) {
+                args.push(params[p]);
+            }
+        });
+    }
+
+    //Only specify default args if they aren't specified by the user
+    if (args.indexOf("-keystore") === -1) {
+        args.push("-keystore");
+        args.push(session.keystore);
+    }
+    if (args.indexOf("-storepass") === -1) {
+        args.push("-storepass");
+        args.push(session.storepass);
+    }
+
+    //Validate arguments
+
+
+    args.push(path.resolve(util.format(session.barPath, target)));
+
+    utils.exec(script, args, {
+        "env": process.env
+    }, callback);
+}
+
+_self = {
+    execSigner: execSigner,
+
+    warn: function () {
+        if (!signingUtils.getKeyStorePath()) {
+            logger.warn(
+                "Cannot sign applications. Author.p12 file cannot be found at default location: " +
+                signingUtils.getDefaultPath("author.p12")
+            );
+        }
+
+        if (!signingUtils.getKeyStorePathBBID()) {
+
+            if (signingUtils.getCskPath() && signingUtils.getDbPath()) {
+                logger.warn("Using legacy signing keys");
+            } else {
+                logger.warn(
+                    "Cannot sign applications. bbidtoken.csk file cannot be found at default location: " +
+                    signingUtils.getDefaultPath("bbidtoken.csk")
+                );
+            }
+        }
+    }
+};
+
+module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/signing-utils.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/signing-utils.js b/bin/templates/project/cordova/lib/signing-utils.js
new file mode 100644
index 0000000..2f3b398
--- /dev/null
+++ b/bin/templates/project/cordova/lib/signing-utils.js
@@ -0,0 +1,79 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var fs = require('fs'),
+    path = require('path'),
+    os = require('os'),
+    childProcess = require('child_process'),
+    AUTHOR_P12 = "author.p12",
+    BBIDTOKEN = "bbidtoken.csk",
+    CSK = "barsigner.csk",
+    DB = "barsigner.db",
+    _self;
+
+function getDefaultPath(file) {
+    // The default location where signing key files are stored will vary based on the OS:
+    // Windows XP: %USERPROFILE%\Local Settings\Application Data\Research In Motion
+    // Windows Vista and Windows 7: %USERPROFILE%\AppData\Local\Research In Motion
+    // Mac OS: ~/Library/Research In Motion
+    // UNIX or Linux: ~/.rim
+    var p = "";
+    if (os.type().toLowerCase().indexOf("windows") >= 0) {
+        p = process.env.LOCALAPPDATA === undefined ?
+            /* ...-XP */
+            process.env.USERPROFILE + "\\Local Settings\\Application Data" :
+            /* Vista+ */
+            process.env.LOCALAPPDATA;
+        p += "\\Research In Motion\\";
+    } else if (os.type().toLowerCase().indexOf("darwin") >= 0) {
+        // Try Mac OS location
+        p = process.env.HOME + "/Library/Research In Motion/";
+    } else if (os.type().toLowerCase().indexOf("linux") >= 0) {
+        // Try Linux location
+        p = process.env.HOME + "/.rim/";
+    }
+
+    return p + file;
+
+}
+
+function getDefaultPathIfExists(file) {
+    var p = getDefaultPath(file);
+    if (fs.existsSync(p)) {
+        return p;
+    }
+}
+
+_self = {
+    getDefaultPath: getDefaultPath,
+
+    getKeyStorePath : function () {
+        // Todo: decide where to put sigtool.p12 which is generated and used in WebWorks SDK for Tablet OS
+        return getDefaultPathIfExists(AUTHOR_P12);
+    },
+
+    getKeyStorePathBBID: function () {
+        return getDefaultPathIfExists(BBIDTOKEN);
+    },
+
+    getCskPath : function () {
+        return getDefaultPathIfExists(CSK);
+    },
+
+    getDbPath : function () {
+        return getDefaultPathIfExists(DB);
+    }
+};
+
+module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/start-emulator
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/start-emulator b/bin/templates/project/cordova/lib/start-emulator
new file mode 100755
index 0000000..1ad590b
--- /dev/null
+++ b/bin/templates/project/cordova/lib/start-emulator
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+<<COMMENT
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+COMMENT
+# support for this script on BB10 is dependent on vmware tools being on the path, or in the default install directory
+# Valid values for "--target": path to 'vmwarevm' file
+
+VMWARE_DEFAULT_PATH=/Applications/VMware\ Fusion.app/Contents/Library
+VMWARE_TOOL=vmrun
+OS_NAME=`uname`
+ERROR_VALUE=2
+NOTIMPLEMENTED_VALUE=1
+
+if [ "$1" = "" -o ! -e "$1" ]
+then
+    echo "BlackBerry10: must provide path to valid vmwarevm image"
+    exit $ERROR_VALUE
+fi
+
+if [ "$OS_NAME" = "Darwin" ]; then
+    if [ "`which vmrun`" = "" ]; then
+        echo "BlackBerry10: VMware Fusion 'vmrun' tool not found on path, trying default install path"
+        runpath=$VMWARE_DEFAULT_PATH/$VMWARE_TOOL
+    else
+        runpath=`which vmrun`
+    fi
+    
+    if [ -x "$runpath" ]; then
+        echo $runpath start $1
+        `$"$runpath" start "$1" > /dev/null`
+
+        exit 0 
+    else
+        echo "BlackBerry10: could not find VMware Fusion 'vmrun' tool"
+        exit $ERROR_VALUE
+    fi
+else
+    echo "BlackBerry10: currently only supports installing to emulator on OS X"
+    exit $NOTIMPLEMENTED_VALUE 
+fi

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/start-emulator.bat
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/start-emulator.bat b/bin/templates/project/cordova/lib/start-emulator.bat
new file mode 100644
index 0000000..714d6b4
--- /dev/null
+++ b/bin/templates/project/cordova/lib/start-emulator.bat
@@ -0,0 +1,22 @@
+:: Licensed to the Apache Software Foundation (ASF) under one
+:: or more contributor license agreements.  See the NOTICE file
+:: distributed with this work for additional information
+:: regarding copyright ownership.  The ASF licenses this file
+:: to you under the Apache License, Version 2.0 (the
+:: "License"); you may not use this file except in compliance
+:: with the License.  You may obtain a copy of the License at
+::
+:: http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing,
+:: software distributed under the License is distributed on an
+:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+:: KIND, either express or implied.  See the License for the
+:: specific language governing permissions and limitations
+:: under the License.
+
+@ECHO OFF
+set NOTIMPLEMENTED_VALUE=1
+
+ECHO echo 'BlackBerry10: Not able to start emulator images on windows command-line at this time.'
+EXIT /B %NOTIMPLEMENTED_VALUE%

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/cordova/lib/target-utils.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/cordova/lib/target-utils.js b/bin/templates/project/cordova/lib/target-utils.js
new file mode 100755
index 0000000..bb3b34d
--- /dev/null
+++ b/bin/templates/project/cordova/lib/target-utils.js
@@ -0,0 +1,282 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var _self,
+    os = require("os"),
+    fs = require('fs'),
+    path = require('path'),
+    bb10_utils = require('./utils'),
+    blackberryProperties = bb10_utils.getProperties();
+
+
+//fix older blackberry10.json files 
+//these may include 'simulator' type rather than 'emulator'
+function replaceSimulator(targets) {
+    var replace = false,
+        t;
+    for (t in targets) {
+        if (targets.hasOwnProperty(t) && targets[t].type === "simulator") {
+            targets[t].type = "emulator";
+            replace = true;
+        }
+    }
+    if (replace) {
+        blackberryProperties.targets = targets;
+        bb10_utils.writeToPropertiesFile(blackberryProperties);
+    }
+}
+
+_self = {
+    getTargetList : function (type, pruneDisconnected, callback) {
+        var targList = [],
+            count = 0,
+            targets = blackberryProperties.targets,
+            addItem = function (t) {
+                targets[t].name = t;
+                targList.push(targets[t]);
+            },
+            complete = function () {
+                if (count === Object.keys(targets).length) {
+                    callback(targList);
+                }
+            },
+            checkConnection = function (name) {
+                _self.checkConnection(targets[name].ip, type, function (connected) {
+                    count++;
+                    if (connected) {
+                        addItem(name);
+                    }
+                    complete();
+                });
+            },
+            t;
+
+        if (targets) {
+            replaceSimulator(targets);
+            for (t in targets) {
+                if (targets.hasOwnProperty(t) && targets[t].type === type) {
+                    if (pruneDisconnected) {
+                        checkConnection(t);
+                    }
+                    else {
+                        addItem(t);
+                        count++;
+                    }
+                } else {
+                    count++;
+                }
+            }
+        }
+        complete();
+    },
+
+    getDeviceInfo: function (ip, password, callback) {
+        var cmd = path.join(process.env.CORDOVA_BBTOOLS, 'blackberry-deploy'),
+            args = [
+                '-listDeviceInfo',
+                ip
+            ],
+            options = {
+                _customOptions: { silent: true }
+            };
+
+        if (password) {
+            args.push('-password');
+            args.push(password);
+        }
+
+        bb10_utils.exec(cmd, args, options, function (error, stdout, stderr) {
+            var err = error,
+                result = {},
+                name = /modelname::(.*?)(\r?)\n/.exec(stdout),
+                pin = /devicepin::0x(.*?)(\r?)\n/.exec(stdout);
+            if (name && name.length > 0) {
+                result.name = name[1];
+            }
+            if (pin && pin.length > 0) {
+                result.pin = pin[1];
+            }
+
+            if (!result.name) {
+                if (stdout.indexOf("Error:") !== -1) {
+                    err = stdout.slice(stdout.indexOf("Error:") + 6);
+                } else if (stdout === "" && stderr.indexOf("Error:") === 0) {
+                    err = stderr.slice(7);
+                } else {
+                    err = "Unable to authenticate with BlackBerry 10 device/emulator at " + ip + ".";
+                }
+            }
+
+            callback(err, result);
+        });
+    },
+
+    findConnectedDevice: function (callback) {
+        var defaultIp = '169.254.0.1',
+            count = 0,
+            i;
+        _self.discoverUsb(function (result) {
+            if (!result || result.length === 0) {
+                result = [defaultIp];
+            }
+            for (i = 0; i < result.length; i++) {
+                /* jshint ignore:start */
+                _self.checkConnection(result[i], 'device', function (connection, ip) {
+                    if (connection)  {
+                        callback(ip);
+                        return;
+                    } else if (++count === result.length) {
+                        callback();
+                    }
+                });
+                /* jshint ignore:end */
+            }
+        });
+    },
+
+    discoverUsb: function (callback) {
+        var IPV4_TYPE = "IPv4",
+            IP_SPLIT_REGEXP = /(169\.254\.\d{1,3}\.)(\d{1,3})/,
+            networkInterfaces = os.networkInterfaces(),
+            result,
+            matches = [],
+            ni,
+            i;
+
+        for (ni in networkInterfaces) {
+            if (networkInterfaces.hasOwnProperty(ni)) {
+                for (i = 0; i < networkInterfaces[ni].length; i++) {
+                    if (networkInterfaces[ni][i].family === IPV4_TYPE) {
+                        result = IP_SPLIT_REGEXP.exec(networkInterfaces[ni][i].address);
+                        if (result && result[1] && result[2]) {
+                            matches.push(result[1] + (result[2] - 1));
+                        }
+                    }
+                }
+
+            }
+        }
+        callback(matches);
+    },
+
+    findConnectedSimulator: function (callback) {
+        var pathVmDhcpLeases,
+            pathUserProfile,
+            pathAllUserProfile,
+            vmDhcpLeasesFiles,
+            DHCP_LEASES_REGEX = /VMware\\vmnetdhcp.leases$/,
+            targets = blackberryProperties.targets,
+            ipsToTest = [],
+            dhcpIPs = [],
+            t;
+
+        // Firstly, check targets in the properties file
+        if (targets) {
+            for (t in targets) {
+                if (targets.hasOwnProperty(t) && targets[t].type === "emulator" && targets[t].ip) {
+                    ipsToTest.push(targets[t].ip);
+                }
+            }
+        }
+
+        // Secondly, check VMware dhcp.leases file
+        if (bb10_utils.isWindows()) {
+            pathUserProfile = process.env.USERPROFILE;
+            pathAllUserProfile = pathUserProfile.substr(0, pathUserProfile.lastIndexOf("\\") + 1) + "All Users";
+            vmDhcpLeasesFiles = bb10_utils.readdirSyncRecursive(pathAllUserProfile).filter(function (file) {
+                return DHCP_LEASES_REGEX.test(file);
+            });
+            pathVmDhcpLeases = vmDhcpLeasesFiles[0];
+        } else if (bb10_utils.isOSX()) {
+            pathVmDhcpLeases = "/private/var/db/vmware/vmnet-dhcpd-vmnet8.leases";
+        } else {
+            pathVmDhcpLeases = "/var/db/vmware/vmnet-dhcpd-vmnet8.leases";
+        }
+
+        fs.readFile(pathVmDhcpLeases, 'utf8', function (err, data) {
+            if (!err) {
+                // Find all lines that start with "lease xxx.xxx.xxx.xxx "
+                dhcpIPs = data.match(/lease \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3} /g) || [];
+                dhcpIPs = dhcpIPs.map(function (result) {
+                    return result.substr(6, result.indexOf(' ', 7) - 6);
+                });
+            }
+
+            ipsToTest = ipsToTest.concat(dhcpIPs);
+            // Remove duplicated ip
+            ipsToTest = ipsToTest.filter(function (item, index, arr) {
+                return arr.indexOf(item) === index;
+            });
+
+            _self.checkConnectionRecursive(ipsToTest, 0, callback);
+        });
+    },
+
+    checkConnectionRecursive: function (ips, index, callback) {
+        var ip;
+
+        if (!ips || index === ips.length) {
+            callback();
+            return;
+        }
+
+        console.log("Searching for connected BlackBerry 10 Simulator (" + (index + 1) + "/" + ips.length + ")...");
+        ip = ips[index];
+        _self.checkConnection(ip, "emulator", function (connection) {
+            if (connection) {
+                callback(ip);
+            } else {
+                _self.checkConnectionRecursive(ips, index + 1, callback);
+            }
+        });
+    },
+
+    checkConnection: function (ip, type, callback) {
+        var script = path.join(process.env.CORDOVA_BBTOOLS, 'blackberry-deploy'),
+            args = [
+                '-test',
+                ip
+            ],
+            options = {
+                _customOptions: { silent: true }
+            };
+
+        bb10_utils.exec(script, args, options, function (error, stdout, stderr) {
+            // error code 3 corresponds to connected device with password
+            // null or "Error: null" in stderr corresponds to connected simulator or device without password
+            var connected =
+                    error === null ||
+                    (error && error.code === 3) ||
+                    stderr.length === 0 ||
+                    stderr.indexOf('Error: null') >= 0 ||
+                    stderr.indexOf('Error: Authentication failed') >= 0;
+            callback(connected, ip);
+        });
+    },
+
+    listTargets : function (type, pruneDisconnected) {
+        _self.getTargetList(type, pruneDisconnected, function (targets) {
+            for (var t in targets) {
+                if (targets.hasOwnProperty(t)) {
+                    console.log(targets[t].name + ' ip: ' + targets[t].ip);
+                }
+            }
+        });
+    }
+
+};
+
+module.exports = _self;


[34/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/plugins/event.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/plugins/event.js b/blackberry10/framework/test/unit/lib/plugins/event.js
deleted file mode 100644
index ea92f1d..0000000
--- a/blackberry10/framework/test/unit/lib/plugins/event.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-describe("event plugin", function () {
-
-    var ROOT = "./../../../../",
-        eventLib = require(ROOT + "lib/event"),
-        eventPlugin;
-
-    describe("once function", function () {
-        var args = {
-            eventName: encodeURIComponent(JSON.stringify("GRRRRR"))
-        };
-
-        it("calls success if no error", function () {
-            var success = jasmine.createSpy(),
-                fail = jasmine.createSpy(),
-                webview = {};
-
-            spyOn(eventLib, "add");
-            delete require.cache[require.resolve(ROOT + "lib/plugins/event")];
-            eventPlugin = require(ROOT + "lib/plugins/event");
-            this.after(function () {
-                delete require.cache[require.resolve(ROOT + "lib/plugins/event")];
-            });
-
-            eventPlugin.once(undefined, success, fail, args, {webview: webview});
-
-            expect(eventLib.add).toHaveBeenCalledWith(
-                {
-                    event: "GRRRRR",
-                    once: true
-                },
-                webview
-            );
-            expect(success).toHaveBeenCalled();
-            expect(fail).not.toHaveBeenCalledWith(-1, jasmine.any(String));
-        });
-
-        it("calls fail if there is an error", function () {
-            var success = jasmine.createSpy(),
-                fail = jasmine.createSpy(),
-                webview = {};
-
-            spyOn(eventLib, "add").andThrow("ERRRORZ");
-            delete require.cache[require.resolve(ROOT + "lib/plugins/event")];
-            eventPlugin = require(ROOT + "lib/plugins/event");
-            this.after(function () {
-                delete require.cache[require.resolve(ROOT + "lib/plugins/event")];
-            });
-
-            eventPlugin.once(undefined, success, fail, args, {webview: webview});
-
-            expect(eventLib.add).toHaveBeenCalledWith(
-                {
-                    event: "GRRRRR",
-                    once: true
-                },
-                webview
-            );
-            expect(success).not.toHaveBeenCalled();
-            expect(fail).toHaveBeenCalledWith(-1, jasmine.any(String));
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/policy/webkitOriginAccess.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/policy/webkitOriginAccess.js b/blackberry10/framework/test/unit/lib/policy/webkitOriginAccess.js
deleted file mode 100644
index 292e95b..0000000
--- a/blackberry10/framework/test/unit/lib/policy/webkitOriginAccess.js
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var LIB_PATH = __dirname + "/../../../../lib/",
-    utils = require(LIB_PATH + 'utils'),
-    webkitOriginAccess = require(LIB_PATH + "policy/webkitOriginAccess"),
-    LOCAL_URI = "local://",
-    FILE_URI = "file://",
-    WW_URI = utils.getURIPrefix(),
-    mockWebView;
-
-describe("lib/policy/webkitOriginAccess", function () {
-    beforeEach(function () {
-        mockWebView = {
-            addOriginAccessWhitelistEntry: jasmine.createSpy()
-        };
-        webkitOriginAccess = require(LIB_PATH + "policy/webkitOriginAccess");
-    });
-
-    afterEach(function () {
-        mockWebView = undefined;
-        delete require.cache[require.resolve(LIB_PATH + "config")];
-        delete require.cache[require.resolve(LIB_PATH + "policy/webkitOriginAccess")];
-    });
-
-    function mockConfig(mockAccessList, hasMultiAccess) {
-        delete require.cache[require.resolve(LIB_PATH + "config")];
-        delete require.cache[require.resolve(LIB_PATH + "policy/webkitOriginAccess")];
-        var config = require(LIB_PATH + "config");
-        config.accessList = mockAccessList;
-        config.hasMultiAccess = !!hasMultiAccess;
-        webkitOriginAccess = require(LIB_PATH + "policy/webkitOriginAccess");
-    }
-
-    describe("addWebview function", function () {
-
-        it("exists", function () {
-            expect(webkitOriginAccess.addWebView).toBeDefined();
-        });
-
-        it("sets up one time whitelisting", function () {
-            webkitOriginAccess.addWebView(mockWebView);
-
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, FILE_URI, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(FILE_URI, LOCAL_URI, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, WW_URI, true);
-        });
-
-        it("initializes the webview with whitelisting based on the config", function () {
-            var mockAccessList = [
-                {
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : null
-                }
-            ];
-            mockConfig(mockAccessList);
-
-            webkitOriginAccess.addWebView(mockWebView);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, "http://google.com", true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith("http://google.com", LOCAL_URI, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith("http://google.com", WW_URI, true);
-        });
-
-        it("initializes the webview with whitelisting based on what domains have been added", function () {
-            var mockAccessList = [{
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : null
-                }],
-                url = "http://www.rim.com";
-
-            mockConfig(mockAccessList, true);
-
-            webkitOriginAccess.addOriginAccess(url, true);
-
-            webkitOriginAccess.addWebView(mockWebView);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, url, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, LOCAL_URI, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, "http://google.com", true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith("http://google.com", url, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, WW_URI, true);
-        });
-
-        it("will not initialize twice", function () {
-            var origCallCount;
-
-            webkitOriginAccess.addWebView(mockWebView);
-            origCallCount = mockWebView.addOriginAccessWhitelistEntry.callCount;
-            webkitOriginAccess.addWebView(mockWebView);
-
-            expect(mockWebView.addOriginAccessWhitelistEntry.callCount).toEqual(origCallCount);
-        });
-
-    });
-
-    describe("addOriginAccess function", function () {
-        it("exists", function () {
-            expect(webkitOriginAccess.addOriginAccess).toBeDefined();
-        });
-
-        it("Treats falsey values as false", function () {
-            var url = "http://www.rim.com";
-
-            webkitOriginAccess.addWebView(mockWebView);
-            webkitOriginAccess.addOriginAccess(url);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, url, false);
-        });
-
-        it("Adds access for any non-local and non-file url", function () {
-            var url = "http://www.rim.com/grrr/arrg/blah.htm";
-
-            webkitOriginAccess.addWebView(mockWebView);
-            webkitOriginAccess.addOriginAccess(url);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, url, false);
-        });
-
-        //Because local:// is already a domain, the spy should not have no new calls
-        it("Local uris are treated as local://", function () {
-            var url = "local:///buy/local/beef/mmmmmmmmmmmmm/Steak.yum",
-                origCallCount;
-
-            webkitOriginAccess.addWebView(mockWebView);
-            webkitOriginAccess.addOriginAccess(url);
-            origCallCount = mockWebView.addOriginAccessWhitelistEntry.callCount;
-            webkitOriginAccess.addOriginAccess(url);
-            expect(mockWebView.addOriginAccessWhitelistEntry.callCount).toEqual(origCallCount);
-        });
-
-        it("File uris are treated as file://", function () {
-            var url = "file:///buy/local/beef/mmmmmmmmmmmmm/Steak.yum",
-                authority = "file://";
-
-            webkitOriginAccess.addWebView(mockWebView);
-            webkitOriginAccess.addOriginAccess(url);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, authority, false);
-        });
-
-        it("updates all managed webviews of the new domain access", function () {
-            var mockWebView2 = {
-                    addOriginAccessWhitelistEntry: jasmine.createSpy()
-                },
-                url = "http://www.rim.com";
-
-            webkitOriginAccess.addWebView(mockWebView);
-            webkitOriginAccess.addWebView(mockWebView2);
-
-            webkitOriginAccess.addOriginAccess(url, true);
-
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, url, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, LOCAL_URI, true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, WW_URI, true);
-            expect(mockWebView2.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(LOCAL_URI, url, true);
-            expect(mockWebView2.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, LOCAL_URI, true);
-            expect(mockWebView2.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, WW_URI, true);
-        });
-
-        it("updates all managed webviews when a new domain is added", function () {
-            var mockAccessList = [{
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : null
-                }],
-                url = "http://www.rim.com";
-
-            mockConfig(mockAccessList, true);
-
-            webkitOriginAccess.addWebView(mockWebView);
-
-            expect(mockWebView.addOriginAccessWhitelistEntry).not.toHaveBeenCalledWith(url, "http://google.com", true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).not.toHaveBeenCalledWith("http://google.com", url, true);
-
-            webkitOriginAccess.addOriginAccess(url, true);
-
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith(url, "http://google.com", true);
-            expect(mockWebView.addOriginAccessWhitelistEntry).toHaveBeenCalledWith("http://google.com", url, true);
-        });
-
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/policy/whitelist.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/policy/whitelist.js b/blackberry10/framework/test/unit/lib/policy/whitelist.js
deleted file mode 100644
index e54ad36..0000000
--- a/blackberry10/framework/test/unit/lib/policy/whitelist.js
+++ /dev/null
@@ -1,873 +0,0 @@
-/*
- * Copyright 2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var srcPath = __dirname + "/../../../../lib/",
-    Whitelist = require(srcPath + "policy/whitelist").Whitelist;
-
-describe("whitelist", function () {
-    describe("when user includes a wildcard access", function () {
-        it("can allow access to any domain not from XHR using uri *", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : true,
-                accessList : null
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.msn.com")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.cnn.com")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.rim.com")).toEqual(true);
-            expect(whitelist.isAccessAllowed("local:///index.html")).toEqual(true);
-            expect(whitelist.isAccessAllowed("file://store/home/user/documents/file.doc")).toEqual(true);
-        });
-        it("can allow access to explicit domains only when XHR using uri *", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : true,
-                accessList : [
-                    {
-                        uri : "http://google.com",
-                        allowSubDomain : true,
-                        features : null
-                    }
-                ]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com", true)).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.google.com/a/b/c", true)).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.msn.com", true)).toEqual(false);
-            expect(whitelist.isAccessAllowed("http://www.cnn.com", true)).toEqual(false);
-        });
-    });
-
-    describe("when user does not include a wildcard access", function () {
-        it("can deny all web access when no uris are whitelisted", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : null
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com")).toEqual(false);
-        });
-
-        it("can deny all API access when no uris are whitelisted", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : null
-            });
-
-            expect(whitelist.isFeatureAllowed("http://www.google.com"), "blackberry.app").toEqual(false);
-        });
-
-        it("can return empty feature list when nothing is whitelisted", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : null
-            });
-
-            expect(whitelist.getFeaturesForUrl("http://www.google.com")).toEqual([]);
-        });
-
-        it("can allow access to whitelisted HTTP URL", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.cnn.com")).toEqual(false);
-        });
-
-        it("can allow access to whitelisted URL with different case (host)", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : null
-                },
-                {
-                    uri : "http://ABC.com",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.GOOGLE.com")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.abc.com")).toEqual(true);
-        });
-
-        it("can allow access to whitelisted URL with different case (path)", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com/SOME/path",
-                    allowSubDomain : true,
-                    features : null
-                },
-                {
-                    uri : "http://google.com/another/path",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com/some/path")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.google.com/ANOTHER/path")).toEqual(true);
-        });
-
-        it("can deny access to non-whitelisted HTTP URL", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.cnn.com")).toEqual(false);
-        });
-
-        it("can allow access to whitelisted feature for whitelisted HTTP uris", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [
-                    {
-                        uri : "http://google.com",
-                        allowSubDomain : false,
-                        features : [{
-                            id : "blackberry.app",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }, {
-                        uri: "http://smoketest1-vmyyz.labyyz.testnet.rim.net:8080/",
-                        allowSubDomain: false,
-                        features: [{
-                            id : "blackberry.app",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }
-                ]
-            });
-
-            expect(whitelist.isFeatureAllowed("http://google.com", "blackberry.app")).toEqual(true);
-            expect(whitelist.isFeatureAllowed("http://smoketest1-vmyyz.labyyz.testnet.rim.net:8080/a/webworks.html", "blackberry.app")).toEqual(true);
-        });
-
-        it("can deny access to non-whitelisted feature for whitelisted HTTP uris", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com",
-                    allowSubDomain : false,
-                    features : [{
-                        id : "blackberry.app",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }]
-            });
-
-            expect(whitelist.isFeatureAllowed("http://google.com", "blackberry.io.file")).toEqual(false);
-        });
-
-        it("can get all whitelisted features for url", function () {
-            var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://google.com",
-                        allowSubDomain : false,
-                        features : [{
-                            id : "blackberry.app",
-                            required : true,
-                            version : "1.0.0"
-                        }, {
-                            id : "blackberry.media.camera",
-                            required : true,
-                            version : "1.0.0"
-                        }, {
-                            id : "blackberry.io.dir",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }]
-                });
-
-            expect(whitelist.getFeaturesForUrl("http://google.com")).toContain("blackberry.app");
-            expect(whitelist.getFeaturesForUrl("http://google.com")).toContain("blackberry.media.camera");
-            expect(whitelist.getFeaturesForUrl("http://google.com")).toContain("blackberry.io.dir");
-            expect(whitelist.getFeaturesForUrl("http://www.wikipedia.org")).toEqual([]);
-        });
-
-        it("can allow access for query strings using a query string wildcard", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://www.google.com/search?*",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com/search?q=awesome")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.google.com/search?a=anyLetter")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.google.com/search")).toEqual(false);
-            expect(whitelist.isAccessAllowed("http://www.google.com/blah?q=awesome")).toEqual(false);
-        });
-
-        it("can deny access for query strings without a query string wildcard", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://www.google.com/search",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com/search?q=awesome", true)).toEqual(false);
-            expect(whitelist.isAccessAllowed("http://www.google.com/search?a=anyLetter", true)).toEqual(false);
-        });
-
-        it("can allow access for ports given just the whitelist url", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://www.awesome.com",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.awesome.com:9000")).toEqual(true);
-        });
-
-        it("allows api access for ports given just the whitelist url", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://www.awesome.com",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.app",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }]
-            });
-
-            expect(whitelist.isFeatureAllowed("http://www.awesome.com:8080", "blackberry.app")).toEqual(true);
-        });
-
-        it("allows api access for child pages with ports given just the whitelist url", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://smoketest8-vmyyz.labyyz.testnet.rim.net/",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.app",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }]
-            });
-
-            expect(whitelist.isFeatureAllowed("http://www.smoketest8-vmyyz.labyyz.testnet.rim.net:8080//webworks.html", "blackberry.app")).toEqual(true);
-        });
-
-        it("can allow folder level access of whitelisted uris", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://www.awesome.com/parent/child",
-                    allowSubDomain : false,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.awesome.com/parent/child")).toEqual(true);
-        });
-
-        it("can deny access to parent folders of whitelisted uris", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://www.awesome.com/parent/child",
-                    allowSubDomain : false,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.awesome.com/parent")).toEqual(false);
-        });
-
-        it("can deny access to sibling folders of whitelisted uris", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://www.awesome.com/parent/child/",
-                    allowSubDomain : false,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.awesome.com/parent/sibling/")).toEqual(false);
-        });
-
-        it("can deny access to sibling folders of whitelisted uris", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://rim4.awesome.com/goodChild/index.html",
-                    allowSubDomain : false,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://rim4.awesome.com/goodChild/index.html")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://rim4.awesome.com/badChild/index.html")).toEqual(false);
-        });
-
-        it("can get whitelisted features at a folder level", function () {
-            var list1 = [{
-                    id : "blackberry.app",
-                    required : true,
-                    version : "1.0.0"
-                }],
-                list2 = [{
-                    id : "blackberry.media.camera",
-                    required : true,
-                    version : "1.0.0"
-                }],
-                whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://google.com/ninjas",
-                        allowSubDomain : true,
-                        features : list1
-                    }, {
-                        uri : "http://google.com/pirates",
-                        allowSubDomain : true,
-                        features : list2
-                    }]
-                });
-
-            expect(whitelist.getFeaturesForUrl("http://google.com/ninjas")).toEqual(["blackberry.app"]);
-            expect(whitelist.getFeaturesForUrl("http://google.com/pirates")).toEqual(["blackberry.media.camera"]);
-        });
-
-        it("can allow API permissions at a folder level", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com/ninjas",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.app",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }, {
-                    uri : "http://google.com/pirates",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.media.camera",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }]
-            });
-
-            expect(whitelist.isFeatureAllowed("http://google.com/ninjas", "blackberry.app")).toEqual(true);
-            expect(whitelist.isFeatureAllowed("http://google.com/pirates", "blackberry.media.camera")).toEqual(true);
-        });
-
-        it("can deny API permissions at a folder level", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com/ninjas",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.app",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }, {
-                    uri : "http://google.com/pirates",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.media.camera",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }]
-            });
-
-            expect(whitelist.isFeatureAllowed("http://google.com/ninjas", "blackberry.media.camera")).toEqual(false);
-            expect(whitelist.isFeatureAllowed("http://google.com/pirates", "blackberry.app")).toEqual(false);
-        });
-
-        it("can allow access specific folder rules to override more general domain rules", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.app",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }, {
-                    uri : "http://google.com/folder",
-                    allowSubDomain : true,
-                    features : [{
-                        id : "blackberry.media.camera",
-                        required : true,
-                        version : "1.0.0"
-                    }]
-                }]
-            });
-
-            expect(whitelist.isFeatureAllowed("http://google.com/folder", "blackberry.app")).toEqual(false);
-            expect(whitelist.isFeatureAllowed("http://google.com/folder", "blackberry.media.camera")).toEqual(true);
-        });
-
-        it("can allow access to whitelisted HTTP URLs with @2x in the file name", function () {
-            var whitelist = new Whitelist({
-                hasMultiAccess : false,
-                accessList : [{
-                    uri : "http://google.com",
-                    allowSubDomain : true,
-                    features : null
-                }]
-            });
-
-            expect(whitelist.isAccessAllowed("http://www.google.com/image@2x.png")).toEqual(true);
-            expect(whitelist.isAccessAllowed("http://www.cnn.com/image@2x.png")).toEqual(false);
-        });
-
-        describe("when access uris have subdomains", function () {
-            it("can get whitelisted features for subdomains", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://google.com",
-                        allowSubDomain : true,
-                        features : [{
-                            id : "blackberry.system",
-                            required : true,
-                            version : "1.0.0.0"
-                        }, {
-                            id : "blackberry.media.microphone",
-                            required : true,
-                            version : "1.0.0.0"
-                        }]
-                    }]
-                });
-
-                expect(whitelist.getFeaturesForUrl("http://code.google.com")).toContain("blackberry.media.microphone");
-                expect(whitelist.getFeaturesForUrl("http://code.google.com")).toContain("blackberry.system");
-                expect(whitelist.getFeaturesForUrl("http://translate.google.com/lang=en")).toContain("blackberry.media.microphone");
-                expect(whitelist.getFeaturesForUrl("http://translate.google.com/lang=en")).toContain("blackberry.system");
-                expect(whitelist.getFeaturesForUrl("http://blah.goooooogle.com")).toEqual([]);
-            });
-
-            it("can allow access to whitelisted features for the subdomains", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://google.com",
-                        allowSubDomain : true,
-                        features : [{
-                            id : "blackberry.app",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }]
-                });
-
-                expect(whitelist.isFeatureAllowed("http://abc.google.com", "blackberry.app")).toEqual(true);
-                expect(whitelist.isFeatureAllowed("http://xyz.google.com", "blackberry.app")).toEqual(true);
-            });
-
-            it("can allow access to subdomains of whitelisted uris", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [
-                        {
-                            uri : "http://awesome.com/",
-                            allowSubDomain : true,
-                            features : null
-                        }, {
-                            uri: "http://smoketest9-vmyyz.labyyz.testnet.rim.net:8080",
-                            allowSubDomain: true,
-                            features: null
-                        }
-                    ]
-                });
-
-                expect(whitelist.isAccessAllowed("http://subdomain.awesome.com")).toEqual(true);
-                expect(whitelist.isAccessAllowed("http://www.smoketest9-vmyyz.labyyz.testnet.rim.net:8080")).toEqual(true);
-            });
-
-            it("can disallow access to subdomains of whitelisted uris", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://awesome.com/",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("http://subdomain.awesome.com")).toEqual(false);
-            });
-
-            it("can disallow access to subdomains of a specified uri", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://awesome.com/",
-                        allowSubDomain : true,
-                        features : null
-                    }, {
-                        uri : "http://moreawesome.com/",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("http://subdomain.moreawesome.com")).toEqual(false);
-            });
-
-            it("can allow specific subdomain rules to override more general domain rules when subdomains are allowed", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://google.com",
-                        allowSubDomain : true,
-                        features : [{
-                            id : "blackberry.app",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }, {
-                        uri : "http://sub.google.com",
-                        allowSubDomain : true,
-                        features : [{
-                            id : "blackberry.media.camera",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }]
-                });
-
-                expect(whitelist.isFeatureAllowed("http://sub.google.com", "blackberry.app")).toEqual(false);
-                expect(whitelist.isFeatureAllowed("http://sub.google.com", "blackberry.media.camera")).toEqual(true);
-            });
-
-            it("can get whitelisted features for a more specific subdomain", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://google.com",
-                        allowSubDomain : false,
-                        features : [{
-                            id : "blackberry.app",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }, {
-                        uri : "http://sub.google.com",
-                        allowSubDomain : false,
-                        features : [{
-                            id : "blackberry.media.camera",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }]
-                });
-
-                expect(whitelist.getFeaturesForUrl("http://google.com")).toContain("blackberry.app");
-                expect(whitelist.getFeaturesForUrl("http://sub.google.com")).toContain("blackberry.media.camera");
-                expect(whitelist.getFeaturesForUrl("http://sub.google.com")).not.toContain("blackberry.app");
-                expect(whitelist.getFeaturesForUrl("http://code.google.com")).toEqual([]);
-            });
-
-            it("can allow specific subdomain rules to override more general domain rules when subdomains are disallowed", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://google.com",
-                        allowSubDomain : false,
-                        features : [{
-                            id : "blackberry.app",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }, {
-                        uri : "http://sub.google.com",
-                        allowSubDomain : false,
-                        features : [{
-                            id : "blackberry.media.camera",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }]
-                });
-
-                expect(whitelist.isFeatureAllowed("http://sub.google.com", "blackberry.app")).toEqual(false);
-                expect(whitelist.isFeatureAllowed("http://sub.google.com", "blackberry.media.camera")).toEqual(true);
-            });
-        });
-
-        describe("when uris with other protocols are requested", function () {
-            it("can allow access to whitelisted HTTPS URL", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "https://google.com",
-                        allowSubDomain : true,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("https://www.google.com")).toEqual(true);
-                expect(whitelist.isAccessAllowed("https://www.cnn.com")).toEqual(false);
-            });
-
-            it("can deny access to non-whitelisted HTTPS URL", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "https://google.com",
-                        allowSubDomain : true,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("https://www.cnn.com")).toEqual(false);
-            });
-
-            it("can allow access to local URLs", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "WIDGET_LOCAL",    // packager always inserts a local access into access list
-                        allowSubDomain : false
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("local:///index.html")).toEqual(true);
-                expect(whitelist.isAccessAllowed("local:///appDir/subDir/index.html")).toEqual(true);
-            });
-
-            it("can allow access to whitelisted features for local URLs", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "WIDGET_LOCAL",    // packager always inserts a local access into access list
-                        allowSubDomain : false,
-                        features : [{
-                            id : "blackberry.media.microphone",
-                            required : true,
-                            version : "2.0.0"
-                        }, {
-                            id : "blackberry.media.camera",
-                            required : true,
-                            version : "1.0.0"
-                        }]
-                    }]
-                });
-
-                expect(whitelist.isFeatureAllowed("local:///index.html", "blackberry.media.microphone")).toEqual(true);
-                expect(whitelist.isFeatureAllowed("local:///index.html", "blackberry.media.camera")).toEqual(true);
-            });
-
-            it("can allow access to whitelisted file URL", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "file://store/home/user/documents",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("file://store/home/user/documents/file.doc")).toEqual(true);
-            });
-
-            it("can access file if rule specified was file:///", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [
-                        {
-                            uri : "file:///accounts/1000/shared/documents/textData.txt",
-                            allowSubDomain : false,
-                            features: []
-                        }
-                    ]
-                });
-
-                expect(whitelist.isAccessAllowed("file:///accounts/1000/shared/documents/textData.txt")).toEqual(true);
-                expect(whitelist.isAccessAllowed("file:///etc/passwd")).toEqual(false);
-            });
-
-            it("can access file if rule specified was file:///", function () {
-                var whitelist = new Whitelist({
-                    "hasMultiAccess": false,
-                    "accessList": [
-                        {
-                            "features": [],
-                            "uri": "WIDGET_LOCAL",
-                            "allowSubDomain": true
-                        },
-                        {
-                            "features": [],
-                            "uri": "file:///accounts/1000/shared/documents/textData.txt"
-                        }
-                    ]
-                });
-                expect(whitelist.isAccessAllowed("file:///etc/passwd", false)).toEqual(false);
-            });
-
-            it("can deny file access when access file:/// with no rule", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : null
-                });
-
-                expect(whitelist.isAccessAllowed("file:///accounts/1000/shared/documents/textData.txt")).toEqual(false);
-            });
-
-            it("can allow access to whitelisted file URL from an external startup page", function () {
-                var whitelist = new Whitelist({
-                    content: "http://www.google.com",
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "file://store/home/user/documents",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("file://store/home/user/documents/file.doc")).toEqual(true);
-            });
-
-            it("can allow access to whitelisted local URL from an external startup page", function () {
-                var whitelist = new Whitelist({
-                    content: "http://www.google.com",
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "local://localpage.html",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("local://localpage.html")).toEqual(true);
-            });
-
-            it("can allow access to whitelisted file URL from an external startup page with wildcard access", function () {
-                var whitelist = new Whitelist({
-                    content: "http://www.google.com",
-                    hasMultiAccess : true
-                });
-
-                expect(whitelist.isAccessAllowed("file://store/home/user/documents/file.doc")).toEqual(true);
-            });
-
-            it("can allow access to whitelisted local URL from an external startup page with wildcard access", function () {
-                var whitelist = new Whitelist({
-                    content: "http://www.google.com",
-                    hasMultiAccess : true
-                });
-
-                expect(whitelist.isAccessAllowed("local://localpage.html")).toEqual(true);
-            });
-
-            it("can deny file URL access when no file urls are whitelisted", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : null
-                });
-
-                expect(whitelist.isAccessAllowed("file://store/home/user/documents/file.doc")).toEqual(false);
-            });
-
-            it("can allow access to a subfolder of a whitelisted file URL", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "file://store/home/user/",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("file://store/home/user/documents/file.doc")).toEqual(true);
-            });
-
-            it("can deny access to a different folder of a whitelisted file URL", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://store.com/home/user/documents",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("http://store.com/home/user/documents/file.doc")).toEqual(true);
-                expect(whitelist.isAccessAllowed("http://store.com/file2.doc")).toEqual(false);
-            });
-
-            it("can allow access to RTSP protocol urls", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "rtsp://media.com",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("rtsp://media.com/video.avi")).toEqual(true);
-            });
-
-            it("always allows access to data-uris", function () {
-                var whitelist = new Whitelist({
-                    hasMultiAccess : false,
-                    accessList : [{
-                        uri : "http://awesome.com",
-                        allowSubDomain : false,
-                        features : null
-                    }]
-                });
-
-                expect(whitelist.isAccessAllowed("data:image/png;base64,zamagawdbase64string")).toEqual(true);
-            });
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/server.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/server.js b/blackberry10/framework/test/unit/lib/server.js
deleted file mode 100644
index 9aa64af..0000000
--- a/blackberry10/framework/test/unit/lib/server.js
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var ROOT = "../../../";
-
-describe("server", function () {
-
-    var server = require(ROOT + "lib/server"),
-        plugin = require(ROOT + "lib/plugins/default"),
-        applicationAPIServer,
-        utils,
-        DEFAULT_SERVICE = "default",
-        DEFAULT_ACTION = "exec",
-        config = {};
-
-    beforeEach(function () {
-        applicationAPIServer = {
-            getReadOnlyFields: function () {}
-        };
-        delete require.cache[require.resolve(ROOT + "lib/utils")];
-        utils = require("../../../lib/utils");
-        spyOn(utils, "loadModule").andCallFake(function (module) {
-            if (module.indexOf("plugin/") >= 0) {
-                // on device, "plugin/blackberry.app/index.js" would exist
-                return applicationAPIServer;
-            } else {
-                return require("../../../lib/" + module);
-            }
-        });
-    });
-
-    describe("when handling requests", function () {
-        var req, res;
-
-        beforeEach(function () {
-            req = {
-                params: {
-                    service: "",
-                    action: ""
-                },
-                body: "",
-                origin: ""
-            };
-            res = {
-                send: jasmine.createSpy()
-            };
-            GLOBAL.frameworkModules = ['plugin/blackberry.app/index.js', 'lib/plugins/default.js'];
-        });
-
-        afterEach(function () {
-            delete GLOBAL.frameworkModules;
-        });
-
-        it("calls the default plugin if the service doesn't exist", function () {
-            var rebuiltRequest = {
-                    params: {
-                        service: DEFAULT_SERVICE,
-                        action: DEFAULT_ACTION,
-                        ext: "not",
-                        method: "here",
-                        args: null
-                    },
-                    body: "",
-                    origin: ""
-                },
-                webview = {};
-
-            spyOn(plugin, DEFAULT_ACTION);
-            req.params.service = "not";
-            req.params.action = "here";
-
-            server.handle(req, res, webview, config);
-
-            expect(plugin[DEFAULT_ACTION]).toHaveBeenCalledWith(
-                rebuiltRequest, jasmine.any(Function),
-                jasmine.any(Function),
-                rebuiltRequest.params.args,
-                {
-                    request: rebuiltRequest,
-                    response: res,
-                    webview: webview,
-                    config: config
-                }
-            );
-        });
-
-        it("returns 404 if the action doesn't exist", function () {
-            req.params.service = "default";
-            req.params.action = "ThisActionDoesNotExist";
-
-            spyOn(console, "error");
-
-            server.handle(req, res);
-            expect(res.send).toHaveBeenCalledWith(404, jasmine.any(String));
-            expect(console.error).toHaveBeenCalled();
-        });
-
-        it("calls the action method on the plugin", function () {
-            var webview = "BLAHBLAHBLAH";
-
-            spyOn(plugin, "exec");
-
-            req.params.service = "default";
-            req.params.action = "exec";
-
-            expect(function () {
-                return server.handle(req, res, webview, config);
-            }).not.toThrow();
-            expect(plugin.exec).toHaveBeenCalledWith(
-                req,
-                jasmine.any(Function),
-                jasmine.any(Function),
-                req.params.args,
-                {
-                    request: req,
-                    response: res,
-                    webview: webview,
-                    config: config
-                });
-        });
-
-        it("parses url encoded args", function () {
-            var webview = "BLAHBLAHBLAH";
-
-            spyOn(plugin, "exec");
-
-            expect(function () {
-                req.params.service = "default";
-                req.params.action = "exec";
-                req.params.args = "a=1&b=2&c=3";
-
-                return server.handle(req, res, webview);
-            }).not.toThrow();
-            expect(plugin.exec).toHaveBeenCalledWith(
-                jasmine.any(Object),
-                jasmine.any(Function),
-                jasmine.any(Function),
-                {
-                    a: '1',
-                    b: '2',
-                    c: '3'
-                },
-                jasmine.any(Object)
-            );
-        });
-
-        it("parses url encoded args", function () {
-            var webview = "BLAHBLAHBLAH";
-
-            spyOn(plugin, "exec");
-
-            expect(function () {
-                req.params.service = "default";
-                req.params.action = "exec";
-                req.body = JSON.stringify({a: '1', b: '2', c: '3'});
-
-                return server.handle(req, res, webview);
-            }).not.toThrow();
-            expect(plugin.exec).toHaveBeenCalledWith(
-                jasmine.any(Object),
-                jasmine.any(Function),
-                jasmine.any(Function),
-                {
-                    a: '1',
-                    b: '2',
-                    c: '3'
-                },
-                jasmine.any(Object)
-            );
-        });
-
-        it("returns the result and code 1 when success callback called", function () {
-            spyOn(plugin, "exec").andCallFake(function (request, succ, fail, body) {
-                succ(["MyFeatureId"]);
-            });
-
-            req.params.service = "default";
-            req.params.action = "exec";
-
-            server.handle(req, res);
-            expect(res.send).toHaveBeenCalledWith(200, encodeURIComponent(JSON.stringify({
-                code: 1,
-                data: ["MyFeatureId"],
-                keepCallback: false
-            })));
-        });
-
-        it("returns the result and code 9 when fail callback called", function () {
-            spyOn(plugin, "exec").andCallFake(function (request, succ, fail, body) {
-                fail("ErrorMessage");
-            });
-
-            req.params.service = "default";
-            req.params.action = "exec";
-
-            server.handle(req, res);
-            expect(res.send).toHaveBeenCalledWith(200, encodeURIComponent(JSON.stringify({
-                code: 9,
-                data: "ErrorMessage",
-                keepCallback: false
-            })));
-        });
-    });
-
-    describe("when handling feature requests", function () {
-        var req, res;
-
-        beforeEach(function () {
-            req = {
-                params: {
-                    service: "default",
-                    action: "exec",
-                    ext: "blackberry.app",
-                    method: "getReadOnlyFields",
-                    args: null
-                },
-                headers: {
-                    host: ""
-                },
-                url: "",
-                body: "",
-                origin: ""
-            };
-            res = {
-                send: jasmine.createSpy()
-            };
-            GLOBAL.frameworkModules = ['plugin/blackberry.app/index.js', 'lib/plugins/default.js'];
-        });
-
-        afterEach(function () {
-            delete GLOBAL.frameworkModules;
-        });
-
-        it("calls the action method on the feature", function () {
-            var webview = {};
-            spyOn(applicationAPIServer, "getReadOnlyFields");
-            server.handle(req, res, webview, config);
-            expect(applicationAPIServer.getReadOnlyFields).toHaveBeenCalledWith(
-                jasmine.any(Function),
-                jasmine.any(Function),
-                req.params.args,
-                {
-                    request: req,
-                    response: res,
-                    webview: webview,
-                    config: config
-                }
-            );
-        });
-
-        it("returns the result and code 1 when success callback called", function () {
-            var expectedResult = {"getReadOnlyFields": "Yogi bear"};
-
-            spyOn(applicationAPIServer, "getReadOnlyFields").andCallFake(function (success, fail) {
-                success(expectedResult);
-            });
-
-            server.handle(req, res);
-
-            expect(res.send).toHaveBeenCalledWith(200, encodeURIComponent(JSON.stringify({
-                code: 1,
-                data: expectedResult,
-                keepCallback: false
-            })));
-        });
-
-        it("returns the result and code 9 when fail callback called", function () {
-            var expectedResult = "omg";
-
-            spyOn(applicationAPIServer, "getReadOnlyFields").andCallFake(function (success, fail) {
-                fail(expectedResult);
-            });
-
-            server.handle(req, res);
-
-            expect(res.send).toHaveBeenCalledWith(200, encodeURIComponent(JSON.stringify({
-                code: 9,
-                data: expectedResult,
-                keepCallback: false
-            })));
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/utils.js b/blackberry10/framework/test/unit/lib/utils.js
deleted file mode 100644
index a1e23c5..0000000
--- a/blackberry10/framework/test/unit/lib/utils.js
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var srcPath = __dirname + '/../../../lib/';
-
-describe("Utils", function () {
-    var utils = require(srcPath + 'utils.js');
-
-    describe("endsWith", function () {
-        it("returns true when a string ends with another", function () {
-            expect(utils.endsWith("www.smoketest9-vmyyz.labyyz.testnet.rim.net:8080", ".smoketest9-vmyyz.labyyz.testnet.rim.net:8080")).toEqual(true);
-        });
-    });
-
-    it("Verify that the filenameToImageMIME is defined", function () {
-        expect(utils.fileNameToImageMIME).toBeDefined();
-    });
-
-    it("Verify that the proper PNG MIME types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.png")).toEqual("image/png");
-    });
-
-    it("Verify that the proper period MIME types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.t.png")).toEqual("image/png");
-    });
-
-    it("Verify that the proper JPG types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.jpg")).toEqual("image/jpeg");
-    });
-
-    it("Verify that the proper GIF types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.gif")).toEqual("image/gif");
-    });
-
-    it("Verify that the proper TIFF types are returned", function () {
-        expect(utils.fileNameToImageMIME("test_test_.tif")).toEqual("image/tiff");
-    });
-
-    it("Verify that the proper TIFF types are returned", function () {
-        expect(utils.fileNameToImageMIME("test_test_.tiff")).toEqual("image/tiff");
-    });
-
-    it("Verify that the proper JPE MIME types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.jpe")).toEqual("image/jpeg");
-    });
-
-    it("Verify that the proper BMP MIME types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.bmp")).toEqual("image/bmp");
-    });
-
-    it("Verify that the proper JPEG MIME types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.jpeg")).toEqual("image/jpeg");
-    });
-
-    it("Verify that the proper SVG MIME types are returned", function () {
-        expect(utils.fileNameToImageMIME("test.svg")).toEqual("image/svg+xml");
-    });
-
-    it("has an invokeInBrowser function", function () {
-        var url = "http://www.webworks.com",
-            mockApplication = {
-                invocation: {
-                    invoke: jasmine.createSpy("invocation.invoke")
-                }
-            },
-            mockWindow = {
-                qnx: {
-                    webplatform: {
-                        getApplication: function () {
-                            return mockApplication;
-                        }
-                    }
-                }
-            };
-
-        GLOBAL.window = mockWindow;
-
-        this.after(function () {
-            delete GLOBAL.window;
-        });
-
-        expect(utils.invokeInBrowser).toBeDefined();
-
-        utils.invokeInBrowser(url);
-
-        expect(mockApplication.invocation.invoke).toHaveBeenCalledWith({
-            uri: url,
-            target: "sys.browser"
-        });
-    });
-
-    // A cascading method invoker, kinda like jWorkflow
-    describe("series", function () {
-        var tasks,
-            callbackObj,
-            seriesComplete,
-            callbackInvocations,
-            invocationCounter,
-            task;
-
-        beforeEach(function () {
-            tasks = [];
-            callbackInvocations = [];
-            invocationCounter = 0;
-            seriesComplete = false;
-            callbackObj = {
-                func: function (args) {
-                    callbackInvocations.push('done');
-                    seriesComplete = true;
-                },
-                args: []
-            };
-            task = {
-                func: function (callback) {
-                    callbackInvocations.push(invocationCounter++);
-                    callback();
-                },
-                args: []
-            };
-        });
-
-        afterEach(function () {
-            tasks = null;
-            callbackObj = null;
-            seriesComplete = null;
-            callbackInvocations = null;
-            invocationCounter = null;
-            task = null;
-        });
-
-        it('should call callback right away when there are no tasks to execute', function () {
-            spyOn(callbackObj, 'func');
-            utils.series(tasks, callbackObj);
-            expect(callbackObj.func).toHaveBeenCalled();
-        });
-
-        it('should invoke the task method before the callback', function () {
-            tasks.push(task);
-            utils.series(tasks, callbackObj);
-            waitsFor(function () {
-                return seriesComplete;
-            });
-
-            expect(callbackInvocations.length).toEqual(2);
-            expect(callbackInvocations[0]).toEqual(0);
-            expect(callbackInvocations[1]).toEqual('done');
-        });
-
-        it('should invocation the tasks in order with the callback being the last invocation', function () {
-            var i;
-
-            tasks.push(task);
-            tasks.push(task);
-            tasks.push(task);
-            tasks.push(task);
-
-            utils.series(tasks, callbackObj);
-
-            waitsFor(function () {
-                return seriesComplete;
-            });
-
-            expect(callbackInvocations.length).toEqual(5);
-
-            for (i = 0; i < 4; i++) {
-                expect(callbackInvocations[i]).toEqual(i);
-            }
-
-            expect(callbackInvocations[4]).toEqual('done');
-        });
-    });
-
-    describe("utils translate path", function () {
-        beforeEach(function () {
-            GLOBAL.window = {
-                qnx: {
-                    webplatform: {
-                        getApplication: function () {
-                            return {
-                                getEnv: function (path) {
-                                    if (path === "HOME")
-                                        return "/accounts/home";
-                                }
-                            };
-                        }
-                    }
-                }
-            };
-        });
-
-        afterEach(function () {
-            delete GLOBAL.window;
-        });
-
-        it("Expect translate path to be defined", function () {
-            expect(utils.translatePath).toBeDefined();
-        });
-        it("translate path successfully returns the original path when passed non local value", function () {
-            var path = "http://google.com";
-            path = utils.translatePath(path);
-            expect(path).toEqual("http://google.com");
-        });
-        it("translate path successfully returns the original path when passed a telephone uri", function () {
-            var path = "tel://250-654-34243";
-            path = utils.translatePath(path);
-            expect(path).toEqual("tel://250-654-34243");
-        });
-        it("translate path successfully returns an updated string for a local path", function () {
-            var path = "local:///this-is-a-local/img/path.jpg";
-            path = utils.translatePath(path);
-            expect(path).toEqual("file:///accounts/home/../app/native/this-is-a-local/img/path.jpg");
-        });
-    });
-
-    describe("deepclone", function () {
-        it("passes through null", function () {
-            expect(utils.deepclone(null)).toBe(null);
-        });
-
-        it("passes through undefined", function () {
-            expect(utils.deepclone(undefined)).toBe(undefined);
-        });
-
-        it("passes through a Number", function () {
-            expect(utils.deepclone(1)).toBe(1);
-        });
-
-        it("passes through a String", function () {
-            var str = "hello world";
-            expect(utils.deepclone(str)).toBe(str);
-        });
-
-        it("passes through a Boolean", function () {
-            expect(utils.deepclone(true)).toBe(true);
-            expect(utils.deepclone(false)).toBe(false);
-        });
-
-        it("returns a new Date", function () {
-            var date = new Date(),
-                dateCopy = utils.deepclone(date);
-
-            expect(dateCopy instanceof Date).toBe(true, "Not a Date");
-            expect(date).not.toBe(dateCopy);
-            expect(date.getTime()).toBe(dateCopy.getTime());
-        });
-
-        it("returns a new RegExp", function () {
-            var regex = /a/,
-                regexCopy = utils.deepclone(regex);
-
-            expect(regexCopy instanceof RegExp).toBe(true, "Not a RegExp");
-            expect(regexCopy).not.toBe(regex);
-            expect(regexCopy.toString()).toBe(regex.toString());
-        });
-
-        it("copies nested Object properties", function () {
-            var obj = {
-                    a: "hello world",
-                    b: "hello again"
-                },
-                objCopy = utils.deepclone(obj);
-
-            expect(obj).not.toBe(objCopy);
-            expect(obj).toEqual(objCopy);
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/webkitHandlers/networkResourceRequested.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/webkitHandlers/networkResourceRequested.js b/blackberry10/framework/test/unit/lib/webkitHandlers/networkResourceRequested.js
deleted file mode 100644
index 2425079..0000000
--- a/blackberry10/framework/test/unit/lib/webkitHandlers/networkResourceRequested.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-describe("NetworkResourceRequested event handler", function () {
-    var LIB_PATH  = "./../../../../lib/",
-        networkResourceRequested = require(LIB_PATH + "webkitHandlers/networkResourceRequested"),
-        Whitelist = require(LIB_PATH + 'policy/whitelist').Whitelist,
-        server = require(LIB_PATH + 'server'),
-        utils = require(LIB_PATH + 'utils'),
-        mockedWebview;
-
-    beforeEach(function () {
-        mockedWebview = {
-            originalLocation : "http://www.origin.com",
-            executeJavaScript : jasmine.createSpy(),
-            id: 42,
-            uiWebView: {
-                childwebviewcontrols: {
-                    open: jasmine.createSpy()
-                }
-            }
-        };
-    });
-
-    afterEach(function () {
-        mockedWebview = undefined;
-    });
-
-    it("creates a callback for you", function () {
-        var requestObj = networkResourceRequested.createHandler();
-        expect(requestObj.networkResourceRequestedHandler).toBeDefined();
-    });
-
-
-    it("can access the whitelist", function () {
-        spyOn(Whitelist.prototype, "isAccessAllowed").andReturn(true);
-        var url = "http://www.google.com",
-            requestObj = networkResourceRequested.createHandler(mockedWebview);
-        requestObj.networkResourceRequestedHandler(JSON.stringify({url: url}));
-        expect(Whitelist.prototype.isAccessAllowed).toHaveBeenCalled();
-    });
-
-    it("checks whether the request is for an iframe when accessing the whitelist", function () {
-        spyOn(Whitelist.prototype, "isAccessAllowed").andReturn(true);
-        var url = "http://www.google.com",
-            requestObj = networkResourceRequested.createHandler(mockedWebview);
-        requestObj.networkResourceRequestedHandler(JSON.stringify({url: url, targetType: "TargetIsXMLHTTPRequest"}));
-        expect(Whitelist.prototype.isAccessAllowed).toHaveBeenCalledWith(url, true);
-    });
-
-    it("can apply whitelist rules and allow valid urls", function () {
-        spyOn(Whitelist.prototype, "isAccessAllowed").andReturn(true);
-        var url = "http://www.google.com",
-            requestObj = networkResourceRequested.createHandler(mockedWebview),
-            returnValue = requestObj.networkResourceRequestedHandler(JSON.stringify({url: url}));
-        expect(Whitelist.prototype.isAccessAllowed).toHaveBeenCalled();
-        expect(JSON.parse(returnValue).setAction).toEqual("ACCEPT");
-    });
-
-    it("can apply whitelist rules and deny blocked urls", function () {
-        spyOn(Whitelist.prototype, "isAccessAllowed").andReturn(false);
-        spyOn(utils, "invokeInBrowser");
-        spyOn(console, "warn");
-
-        var url = "http://www.google.com",
-            requestObj = networkResourceRequested.createHandler(mockedWebview),
-            returnValue = requestObj.networkResourceRequestedHandler(JSON.stringify({url: url})),
-            deniedMsg = "Access to \"" + url + "\" not allowed";
-
-        expect(Whitelist.prototype.isAccessAllowed).toHaveBeenCalled();
-        expect(JSON.parse(returnValue).setAction).toEqual("DENY");
-        expect(utils.invokeInBrowser).not.toHaveBeenCalledWith(url);
-        expect(mockedWebview.uiWebView.childwebviewcontrols.open).not.toHaveBeenCalledWith(url);
-        expect(mockedWebview.executeJavaScript).toHaveBeenCalledWith("alert('" + deniedMsg + "')");
-        expect(console.warn).toHaveBeenCalledWith(deniedMsg);
-    });
-
-    it("can apply whitelist rules and deny blocked urls and route to a uiWebView when target is main frame", function () {
-        spyOn(Whitelist.prototype, "isAccessAllowed").andReturn(false);
-        spyOn(utils, "invokeInBrowser");
-        spyOn(console, "warn");
-
-        var url = "http://www.google.com",
-            requestObj = networkResourceRequested.createHandler(mockedWebview),
-            returnValue = requestObj.networkResourceRequestedHandler(JSON.stringify({url: url, targetType: "TargetIsMainFrame"})),
-            deniedMsg = "Access to \"" + url + "\" not allowed";
-
-        expect(Whitelist.prototype.isAccessAllowed).toHaveBeenCalled();
-        expect(mockedWebview.uiWebView.childwebviewcontrols.open).toHaveBeenCalledWith(url);
-        expect(mockedWebview.executeJavaScript).not.toHaveBeenCalledWith("alert('" + deniedMsg + "')");
-        expect(console.warn).toHaveBeenCalledWith(deniedMsg);
-        expect(utils.invokeInBrowser).not.toHaveBeenCalledWith(url);
-        expect(JSON.parse(returnValue).setAction).toEqual("DENY");
-    });
-
-    it("can apply whitelist rules and deny blocked urls and route to the browser when target is main frame and childWebView is disabled", function () {
-        var url = "http://www.google.com",
-            config = require(LIB_PATH + "config"),
-            deniedMsg = "Access to \"" + url + "\" not allowed",
-            requestObj,
-            returnValue;
-
-        spyOn(Whitelist.prototype, "isAccessAllowed").andReturn(false);
-        spyOn(utils, "invokeInBrowser");
-        spyOn(console, "warn");
-
-        config.enableChildWebView = false;
-
-        this.after(function () {
-            delete require.cache[require.resolve(LIB_PATH + "config")];
-        });
-
-        requestObj = networkResourceRequested.createHandler(mockedWebview);
-        returnValue = requestObj.networkResourceRequestedHandler(JSON.stringify({url: url, targetType: "TargetIsMainFrame"}));
-
-        expect(Whitelist.prototype.isAccessAllowed).toHaveBeenCalled();
-        expect(mockedWebview.uiWebView.childwebviewcontrols.open).not.toHaveBeenCalledWith(url);
-        expect(mockedWebview.executeJavaScript).not.toHaveBeenCalledWith("alert('" + deniedMsg + "')");
-        expect(console.warn).toHaveBeenCalledWith(deniedMsg);
-        expect(utils.invokeInBrowser).toHaveBeenCalledWith(url);
-        expect(JSON.parse(returnValue).setAction).toEqual("DENY");
-    });
-
-    it("can call the server handler when certain urls are detected", function () {
-        spyOn(server, "handle");
-        var url = "http://localhost:8472/roomService/kungfuAction/customExt/crystalMethod?blargs=yes",
-            requestObj = networkResourceRequested.createHandler(mockedWebview),
-            returnValue = requestObj.networkResourceRequestedHandler(JSON.stringify({url: url, referrer: "http://www.origin.com"})),
-            expectedRequest = {
-                params: {
-                    service: "roomService",
-                    action: "kungfuAction",
-                    ext: "customExt",
-                    method: "crystalMethod",
-                    args: "blargs=yes"
-                },
-                body: undefined,
-                origin: "http://www.origin.com"
-            },
-            expectedResponse = {
-                send: jasmine.any(Function)
-            };
-        expect(JSON.parse(returnValue).setAction).toEqual("SUBSTITUTE");
-        expect(server.handle).toHaveBeenCalledWith(expectedRequest, expectedResponse, mockedWebview);
-    });
-
-    it("can call the server handler correctly with a multi-level method", function () {
-        spyOn(server, "handle");
-        var url = "http://localhost:8472/roomService/kungfuAction/customExt/crystal/Method?blargs=yes",
-            requestObj = networkResourceRequested.createHandler(mockedWebview),
-            returnValue = requestObj.networkResourceRequestedHandler(JSON.stringify({url: url, referrer: "http://www.origin.com"})),
-            expectedRequest = {
-                params: {
-                    service: "roomService",
-                    action: "kungfuAction",
-                    ext: "customExt",
-                    method: "crystal/Method",
-                    args: "blargs=yes"
-                },
-                body: undefined,
-                origin: "http://www.origin.com"
-            },
-            expectedResponse = {
-                send: jasmine.any(Function)
-            };
-        expect(JSON.parse(returnValue).setAction).toEqual("SUBSTITUTE");
-        expect(server.handle).toHaveBeenCalledWith(expectedRequest, expectedResponse, mockedWebview);
-    });
-
-});


[25/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.xml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.xml b/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.xml
deleted file mode 100644
index 801292d..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/test.xml
+++ /dev/null
@@ -1,1254 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE RootElement [
-	<!ENTITY e SYSTEM "001.ent">
-]>
-<RootElement param="value">
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-    <FirstElement>
-        Some Text
-    </FirstElement>
-    <?some_pi some_attr="some_value"?>
-    <!-- this is a comment -- but this isnt part of the comment -->
-    <!-- this is a comment == and this is a part of the comment -->
-    <!-- this is a comment > and this is also part of the thing -->
-    <!invalid comment>
-    <![CDATA[ this is random stuff. & and < and > are ok in here. ]]>
-    <SecondElement param2="something">
-        Pre-Text &amp; <Inline>Inlined text</Inline> Post-text.
-        &#xF8FF;
-    </SecondElement>
-</RootElement>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/lib/sax.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/lib/sax.js b/blackberry10/node_modules/elementtree/node_modules/sax/lib/sax.js
deleted file mode 100644
index 17fb08e..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/lib/sax.js
+++ /dev/null
@@ -1,1006 +0,0 @@
-// wrapper for non-node envs
-;(function (sax) {
-
-sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
-sax.SAXParser = SAXParser
-sax.SAXStream = SAXStream
-sax.createStream = createStream
-
-// When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
-// When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
-// since that's the earliest that a buffer overrun could occur.  This way, checks are
-// as rare as required, but as often as necessary to ensure never crossing this bound.
-// Furthermore, buffers are only tested at most once per write(), so passing a very
-// large string into write() might have undesirable effects, but this is manageable by
-// the caller, so it is assumed to be safe.  Thus, a call to write() may, in the extreme
-// edge case, result in creating at most one complete copy of the string passed in.
-// Set to Infinity to have unlimited buffers.
-sax.MAX_BUFFER_LENGTH = 64 * 1024
-
-var buffers = [
-  "comment", "sgmlDecl", "textNode", "tagName", "doctype",
-  "procInstName", "procInstBody", "entity", "attribName",
-  "attribValue", "cdata", "script"
-]
-
-sax.EVENTS = // for discoverability.
-  [ "text"
-  , "processinginstruction"
-  , "sgmldeclaration"
-  , "doctype"
-  , "comment"
-  , "attribute"
-  , "opentag"
-  , "closetag"
-  , "opencdata"
-  , "cdata"
-  , "closecdata"
-  , "error"
-  , "end"
-  , "ready"
-  , "script"
-  , "opennamespace"
-  , "closenamespace"
-  ]
-
-function SAXParser (strict, opt) {
-  if (!(this instanceof SAXParser)) return new SAXParser(strict, opt)
-
-  var parser = this
-  clearBuffers(parser)
-  parser.q = parser.c = ""
-  parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
-  parser.opt = opt || {}
-  parser.tagCase = parser.opt.lowercasetags ? "toLowerCase" : "toUpperCase"
-  parser.tags = []
-  parser.closed = parser.closedRoot = parser.sawRoot = false
-  parser.tag = parser.error = null
-  parser.strict = !!strict
-  parser.noscript = !!(strict || parser.opt.noscript)
-  parser.state = S.BEGIN
-  parser.ENTITIES = Object.create(sax.ENTITIES)
-  parser.attribList = []
-
-  // namespaces form a prototype chain.
-  // it always points at the current tag,
-  // which protos to its parent tag.
-  if (parser.opt.xmlns) parser.ns = Object.create(rootNS)
-
-  // mostly just for error reporting
-  parser.position = parser.line = parser.column = 0
-  emit(parser, "onready")
-}
-
-if (!Object.create) Object.create = function (o) {
-  function f () { this.__proto__ = o }
-  f.prototype = o
-  return new f
-}
-
-if (!Object.getPrototypeOf) Object.getPrototypeOf = function (o) {
-  return o.__proto__
-}
-
-if (!Object.keys) Object.keys = function (o) {
-  var a = []
-  for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
-  return a
-}
-
-function checkBufferLength (parser) {
-  var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
-    , maxActual = 0
-  for (var i = 0, l = buffers.length; i < l; i ++) {
-    var len = parser[buffers[i]].length
-    if (len > maxAllowed) {
-      // Text/cdata nodes can get big, and since they're buffered,
-      // we can get here under normal conditions.
-      // Avoid issues by emitting the text node now,
-      // so at least it won't get any bigger.
-      switch (buffers[i]) {
-        case "textNode":
-          closeText(parser)
-        break
-
-        case "cdata":
-          emitNode(parser, "oncdata", parser.cdata)
-          parser.cdata = ""
-        break
-
-        case "script":
-          emitNode(parser, "onscript", parser.script)
-          parser.script = ""
-        break
-
-        default:
-          error(parser, "Max buffer length exceeded: "+buffers[i])
-      }
-    }
-    maxActual = Math.max(maxActual, len)
-  }
-  // schedule the next check for the earliest possible buffer overrun.
-  parser.bufferCheckPosition = (sax.MAX_BUFFER_LENGTH - maxActual)
-                             + parser.position
-}
-
-function clearBuffers (parser) {
-  for (var i = 0, l = buffers.length; i < l; i ++) {
-    parser[buffers[i]] = ""
-  }
-}
-
-SAXParser.prototype =
-  { end: function () { end(this) }
-  , write: write
-  , resume: function () { this.error = null; return this }
-  , close: function () { return this.write(null) }
-  , end: function () { return this.write(null) }
-  }
-
-try {
-  var Stream = require("stream").Stream
-} catch (ex) {
-  var Stream = function () {}
-}
-
-
-var streamWraps = sax.EVENTS.filter(function (ev) {
-  return ev !== "error" && ev !== "end"
-})
-
-function createStream (strict, opt) {
-  return new SAXStream(strict, opt)
-}
-
-function SAXStream (strict, opt) {
-  if (!(this instanceof SAXStream)) return new SAXStream(strict, opt)
-
-  Stream.apply(me)
-
-  this._parser = new SAXParser(strict, opt)
-  this.writable = true
-  this.readable = true
-
-
-  var me = this
-
-  this._parser.onend = function () {
-    me.emit("end")
-  }
-
-  this._parser.onerror = function (er) {
-    me.emit("error", er)
-
-    // if didn't throw, then means error was handled.
-    // go ahead and clear error, so we can write again.
-    me._parser.error = null
-  }
-
-  streamWraps.forEach(function (ev) {
-    Object.defineProperty(me, "on" + ev, {
-      get: function () { return me._parser["on" + ev] },
-      set: function (h) {
-        if (!h) {
-          me.removeAllListeners(ev)
-          return me._parser["on"+ev] = h
-        }
-        me.on(ev, h)
-      },
-      enumerable: true,
-      configurable: false
-    })
-  })
-}
-
-SAXStream.prototype = Object.create(Stream.prototype,
-  { constructor: { value: SAXStream } })
-
-SAXStream.prototype.write = function (data) {
-  this._parser.write(data.toString())
-  this.emit("data", data)
-  return true
-}
-
-SAXStream.prototype.end = function (chunk) {
-  if (chunk && chunk.length) this._parser.write(chunk.toString())
-  this._parser.end()
-  return true
-}
-
-SAXStream.prototype.on = function (ev, handler) {
-  var me = this
-  if (!me._parser["on"+ev] && streamWraps.indexOf(ev) !== -1) {
-    me._parser["on"+ev] = function () {
-      var args = arguments.length === 1 ? [arguments[0]]
-               : Array.apply(null, arguments)
-      args.splice(0, 0, ev)
-      me.emit.apply(me, args)
-    }
-  }
-
-  return Stream.prototype.on.call(me, ev, handler)
-}
-
-
-
-// character classes and tokens
-var whitespace = "\r\n\t "
-  // this really needs to be replaced with character classes.
-  // XML allows all manner of ridiculous numbers and digits.
-  , number = "0124356789"
-  , letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
-  // (Letter | "_" | ":")
-  , nameStart = letter+"_:"
-  , nameBody = nameStart+number+"-."
-  , quote = "'\""
-  , entity = number+letter+"#"
-  , attribEnd = whitespace + ">"
-  , CDATA = "[CDATA["
-  , DOCTYPE = "DOCTYPE"
-  , XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
-  , XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"
-  , rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
-
-// turn all the string character sets into character class objects.
-whitespace = charClass(whitespace)
-number = charClass(number)
-letter = charClass(letter)
-nameStart = charClass(nameStart)
-nameBody = charClass(nameBody)
-quote = charClass(quote)
-entity = charClass(entity)
-attribEnd = charClass(attribEnd)
-
-function charClass (str) {
-  return str.split("").reduce(function (s, c) {
-    s[c] = true
-    return s
-  }, {})
-}
-
-function is (charclass, c) {
-  return charclass[c]
-}
-
-function not (charclass, c) {
-  return !charclass[c]
-}
-
-var S = 0
-sax.STATE =
-{ BEGIN                     : S++
-, TEXT                      : S++ // general stuff
-, TEXT_ENTITY               : S++ // &amp and such.
-, OPEN_WAKA                 : S++ // <
-, SGML_DECL                 : S++ // <!BLARG
-, SGML_DECL_QUOTED          : S++ // <!BLARG foo "bar
-, DOCTYPE                   : S++ // <!DOCTYPE
-, DOCTYPE_QUOTED            : S++ // <!DOCTYPE "//blah
-, DOCTYPE_DTD               : S++ // <!DOCTYPE "//blah" [ ...
-, DOCTYPE_DTD_QUOTED        : S++ // <!DOCTYPE "//blah" [ "foo
-, COMMENT_STARTING          : S++ // <!-
-, COMMENT                   : S++ // <!--
-, COMMENT_ENDING            : S++ // <!-- blah -
-, COMMENT_ENDED             : S++ // <!-- blah --
-, CDATA                     : S++ // <![CDATA[ something
-, CDATA_ENDING              : S++ // ]
-, CDATA_ENDING_2            : S++ // ]]
-, PROC_INST                 : S++ // <?hi
-, PROC_INST_BODY            : S++ // <?hi there
-, PROC_INST_QUOTED          : S++ // <?hi "there
-, PROC_INST_ENDING          : S++ // <?hi "there" ?
-, OPEN_TAG                  : S++ // <strong
-, OPEN_TAG_SLASH            : S++ // <strong /
-, ATTRIB                    : S++ // <a
-, ATTRIB_NAME               : S++ // <a foo
-, ATTRIB_NAME_SAW_WHITE     : S++ // <a foo _
-, ATTRIB_VALUE              : S++ // <a foo=
-, ATTRIB_VALUE_QUOTED       : S++ // <a foo="bar
-, ATTRIB_VALUE_UNQUOTED     : S++ // <a foo=bar
-, ATTRIB_VALUE_ENTITY_Q     : S++ // <foo bar="&quot;"
-, ATTRIB_VALUE_ENTITY_U     : S++ // <foo bar=&quot;
-, CLOSE_TAG                 : S++ // </a
-, CLOSE_TAG_SAW_WHITE       : S++ // </a   >
-, SCRIPT                    : S++ // <script> ...
-, SCRIPT_ENDING             : S++ // <script> ... <
-}
-
-sax.ENTITIES =
-{ "apos" : "'"
-, "quot" : "\""
-, "amp"  : "&"
-, "gt"   : ">"
-, "lt"   : "<"
-}
-
-for (var S in sax.STATE) sax.STATE[sax.STATE[S]] = S
-
-// shorthand
-S = sax.STATE
-
-function emit (parser, event, data) {
-  parser[event] && parser[event](data)
-}
-
-function emitNode (parser, nodeType, data) {
-  if (parser.textNode) closeText(parser)
-  emit(parser, nodeType, data)
-}
-
-function closeText (parser) {
-  parser.textNode = textopts(parser.opt, parser.textNode)
-  if (parser.textNode) emit(parser, "ontext", parser.textNode)
-  parser.textNode = ""
-}
-
-function textopts (opt, text) {
-  if (opt.trim) text = text.trim()
-  if (opt.normalize) text = text.replace(/\s+/g, " ")
-  return text
-}
-
-function error (parser, er) {
-  closeText(parser)
-  er += "\nLine: "+parser.line+
-        "\nColumn: "+parser.column+
-        "\nChar: "+parser.c
-  er = new Error(er)
-  parser.error = er
-  emit(parser, "onerror", er)
-  return parser
-}
-
-function end (parser) {
-  if (parser.state !== S.TEXT) error(parser, "Unexpected end")
-  closeText(parser)
-  parser.c = ""
-  parser.closed = true
-  emit(parser, "onend")
-  SAXParser.call(parser, parser.strict, parser.opt)
-  return parser
-}
-
-function strictFail (parser, message) {
-  if (parser.strict) error(parser, message)
-}
-
-function newTag (parser) {
-  if (!parser.strict) parser.tagName = parser.tagName[parser.tagCase]()
-  var parent = parser.tags[parser.tags.length - 1] || parser
-    , tag = parser.tag = { name : parser.tagName, attributes : {} }
-
-  // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
-  if (parser.opt.xmlns) tag.ns = parent.ns
-  parser.attribList.length = 0
-}
-
-function qname (name) {
-  var i = name.indexOf(":")
-    , qualName = i < 0 ? [ "", name ] : name.split(":")
-    , prefix = qualName[0]
-    , local = qualName[1]
-
-  // <x "xmlns"="http://foo">
-  if (name === "xmlns") {
-    prefix = "xmlns"
-    local = ""
-  }
-
-  return { prefix: prefix, local: local }
-}
-
-function attrib (parser) {
-  if (parser.opt.xmlns) {
-    var qn = qname(parser.attribName)
-      , prefix = qn.prefix
-      , local = qn.local
-
-    if (prefix === "xmlns") {
-      // namespace binding attribute; push the binding into scope
-      if (local === "xml" && parser.attribValue !== XML_NAMESPACE) {
-        strictFail( parser
-                  , "xml: prefix must be bound to " + XML_NAMESPACE + "\n"
-                  + "Actual: " + parser.attribValue )
-      } else if (local === "xmlns" && parser.attribValue !== XMLNS_NAMESPACE) {
-        strictFail( parser
-                  , "xmlns: prefix must be bound to " + XMLNS_NAMESPACE + "\n"
-                  + "Actual: " + parser.attribValue )
-      } else {
-        var tag = parser.tag
-          , parent = parser.tags[parser.tags.length - 1] || parser
-        if (tag.ns === parent.ns) {
-          tag.ns = Object.create(parent.ns)
-        }
-        tag.ns[local] = parser.attribValue
-      }
-    }
-
-    // defer onattribute events until all attributes have been seen
-    // so any new bindings can take effect; preserve attribute order
-    // so deferred events can be emitted in document order
-    parser.attribList.push([parser.attribName, parser.attribValue])
-  } else {
-    // in non-xmlns mode, we can emit the event right away
-    parser.tag.attributes[parser.attribName] = parser.attribValue
-    emitNode( parser
-            , "onattribute"
-            , { name: parser.attribName
-              , value: parser.attribValue } )
-  }
-
-  parser.attribName = parser.attribValue = ""
-}
-
-function openTag (parser, selfClosing) {
-  if (parser.opt.xmlns) {
-    // emit namespace binding events
-    var tag = parser.tag
-
-    // add namespace info to tag
-    var qn = qname(parser.tagName)
-    tag.prefix = qn.prefix
-    tag.local = qn.local
-    tag.uri = tag.ns[qn.prefix] || qn.prefix
-
-    if (tag.prefix && !tag.uri) {
-      strictFail(parser, "Unbound namespace prefix: "
-                       + JSON.stringify(parser.tagName))
-    }
-
-    var parent = parser.tags[parser.tags.length - 1] || parser
-    if (tag.ns && parent.ns !== tag.ns) {
-      Object.keys(tag.ns).forEach(function (p) {
-        emitNode( parser
-                , "onopennamespace"
-                , { prefix: p , uri: tag.ns[p] } )
-      })
-    }
-
-    // handle deferred onattribute events
-    for (var i = 0, l = parser.attribList.length; i < l; i ++) {
-      var nv = parser.attribList[i]
-      var name = nv[0]
-        , value = nv[1]
-        , qualName = qname(name)
-        , prefix = qualName.prefix
-        , local = qualName.local
-        , uri = tag.ns[prefix] || ""
-        , a = { name: name
-              , value: value
-              , prefix: prefix
-              , local: local
-              , uri: uri
-              }
-
-      // if there's any attributes with an undefined namespace,
-      // then fail on them now.
-      if (prefix && prefix != "xmlns" && !uri) {
-        strictFail(parser, "Unbound namespace prefix: "
-                         + JSON.stringify(prefix))
-        a.uri = prefix
-      }
-      parser.tag.attributes[name] = a
-      emitNode(parser, "onattribute", a)
-    }
-    parser.attribList.length = 0
-  }
-
-  // process the tag
-  parser.sawRoot = true
-  parser.tags.push(parser.tag)
-  emitNode(parser, "onopentag", parser.tag)
-  if (!selfClosing) {
-    // special case for <script> in non-strict mode.
-    if (!parser.noscript && parser.tagName.toLowerCase() === "script") {
-      parser.state = S.SCRIPT
-    } else {
-      parser.state = S.TEXT
-    }
-    parser.tag = null
-    parser.tagName = ""
-  }
-  parser.attribName = parser.attribValue = ""
-  parser.attribList.length = 0
-}
-
-function closeTag (parser) {
-  if (!parser.tagName) {
-    strictFail(parser, "Weird empty close tag.")
-    parser.textNode += "</>"
-    parser.state = S.TEXT
-    return
-  }
-  // first make sure that the closing tag actually exists.
-  // <a><b></c></b></a> will close everything, otherwise.
-  var t = parser.tags.length
-  var tagName = parser.tagName
-  if (!parser.strict) tagName = tagName[parser.tagCase]()
-  var closeTo = tagName
-  while (t --) {
-    var close = parser.tags[t]
-    if (close.name !== closeTo) {
-      // fail the first time in strict mode
-      strictFail(parser, "Unexpected close tag")
-    } else break
-  }
-
-  // didn't find it.  we already failed for strict, so just abort.
-  if (t < 0) {
-    strictFail(parser, "Unmatched closing tag: "+parser.tagName)
-    parser.textNode += "</" + parser.tagName + ">"
-    parser.state = S.TEXT
-    return
-  }
-  parser.tagName = tagName
-  var s = parser.tags.length
-  while (s --> t) {
-    var tag = parser.tag = parser.tags.pop()
-    parser.tagName = parser.tag.name
-    emitNode(parser, "onclosetag", parser.tagName)
-
-    var x = {}
-    for (var i in tag.ns) x[i] = tag.ns[i]
-
-    var parent = parser.tags[parser.tags.length - 1] || parser
-    if (parser.opt.xmlns && tag.ns !== parent.ns) {
-      // remove namespace bindings introduced by tag
-      Object.keys(tag.ns).forEach(function (p) {
-        var n = tag.ns[p]
-        emitNode(parser, "onclosenamespace", { prefix: p, uri: n })
-      })
-    }
-  }
-  if (t === 0) parser.closedRoot = true
-  parser.tagName = parser.attribValue = parser.attribName = ""
-  parser.attribList.length = 0
-  parser.state = S.TEXT
-}
-
-function parseEntity (parser) {
-  var entity = parser.entity.toLowerCase()
-    , num
-    , numStr = ""
-  if (parser.ENTITIES[entity]) return parser.ENTITIES[entity]
-  if (entity.charAt(0) === "#") {
-    if (entity.charAt(1) === "x") {
-      entity = entity.slice(2)
-      num = parseInt(entity, 16)
-      numStr = num.toString(16)
-    } else {
-      entity = entity.slice(1)
-      num = parseInt(entity, 10)
-      numStr = num.toString(10)
-    }
-  }
-  entity = entity.replace(/^0+/, "")
-  if (numStr.toLowerCase() !== entity) {
-    strictFail(parser, "Invalid character entity")
-    return "&"+parser.entity + ";"
-  }
-  return String.fromCharCode(num)
-}
-
-function write (chunk) {
-  var parser = this
-  if (this.error) throw this.error
-  if (parser.closed) return error(parser,
-    "Cannot write after close. Assign an onready handler.")
-  if (chunk === null) return end(parser)
-  var i = 0, c = ""
-  while (parser.c = c = chunk.charAt(i++)) {
-    parser.position ++
-    if (c === "\n") {
-      parser.line ++
-      parser.column = 0
-    } else parser.column ++
-    switch (parser.state) {
-
-      case S.BEGIN:
-        if (c === "<") parser.state = S.OPEN_WAKA
-        else if (not(whitespace,c)) {
-          // have to process this as a text node.
-          // weird, but happens.
-          strictFail(parser, "Non-whitespace before first tag.")
-          parser.textNode = c
-          parser.state = S.TEXT
-        }
-      continue
-
-      case S.TEXT:
-        if (parser.sawRoot && !parser.closedRoot) {
-          var starti = i-1
-          while (c && c!=="<" && c!=="&") {
-            c = chunk.charAt(i++)
-            if (c) {
-              parser.position ++
-              if (c === "\n") {
-                parser.line ++
-                parser.column = 0
-              } else parser.column ++
-            }
-          }
-          parser.textNode += chunk.substring(starti, i-1)
-        }
-        if (c === "<") parser.state = S.OPEN_WAKA
-        else {
-          if (not(whitespace, c) && (!parser.sawRoot || parser.closedRoot))
-            strictFail("Text data outside of root node.")
-          if (c === "&") parser.state = S.TEXT_ENTITY
-          else parser.textNode += c
-        }
-      continue
-
-      case S.SCRIPT:
-        // only non-strict
-        if (c === "<") {
-          parser.state = S.SCRIPT_ENDING
-        } else parser.script += c
-      continue
-
-      case S.SCRIPT_ENDING:
-        if (c === "/") {
-          emitNode(parser, "onscript", parser.script)
-          parser.state = S.CLOSE_TAG
-          parser.script = ""
-          parser.tagName = ""
-        } else {
-          parser.script += "<" + c
-          parser.state = S.SCRIPT
-        }
-      continue
-
-      case S.OPEN_WAKA:
-        // either a /, ?, !, or text is coming next.
-        if (c === "!") {
-          parser.state = S.SGML_DECL
-          parser.sgmlDecl = ""
-        } else if (is(whitespace, c)) {
-          // wait for it...
-        } else if (is(nameStart,c)) {
-          parser.startTagPosition = parser.position - 1
-          parser.state = S.OPEN_TAG
-          parser.tagName = c
-        } else if (c === "/") {
-          parser.startTagPosition = parser.position - 1
-          parser.state = S.CLOSE_TAG
-          parser.tagName = ""
-        } else if (c === "?") {
-          parser.state = S.PROC_INST
-          parser.procInstName = parser.procInstBody = ""
-        } else {
-          strictFail(parser, "Unencoded <")
-          parser.textNode += "<" + c
-          parser.state = S.TEXT
-        }
-      continue
-
-      case S.SGML_DECL:
-        if ((parser.sgmlDecl+c).toUpperCase() === CDATA) {
-          emitNode(parser, "onopencdata")
-          parser.state = S.CDATA
-          parser.sgmlDecl = ""
-          parser.cdata = ""
-        } else if (parser.sgmlDecl+c === "--") {
-          parser.state = S.COMMENT
-          parser.comment = ""
-          parser.sgmlDecl = ""
-        } else if ((parser.sgmlDecl+c).toUpperCase() === DOCTYPE) {
-          parser.state = S.DOCTYPE
-          if (parser.doctype || parser.sawRoot) strictFail(parser,
-            "Inappropriately located doctype declaration")
-          parser.doctype = ""
-          parser.sgmlDecl = ""
-        } else if (c === ">") {
-          emitNode(parser, "onsgmldeclaration", parser.sgmlDecl)
-          parser.sgmlDecl = ""
-          parser.state = S.TEXT
-        } else if (is(quote, c)) {
-          parser.state = S.SGML_DECL_QUOTED
-          parser.sgmlDecl += c
-        } else parser.sgmlDecl += c
-      continue
-
-      case S.SGML_DECL_QUOTED:
-        if (c === parser.q) {
-          parser.state = S.SGML_DECL
-          parser.q = ""
-        }
-        parser.sgmlDecl += c
-      continue
-
-      case S.DOCTYPE:
-        if (c === ">") {
-          parser.state = S.TEXT
-          emitNode(parser, "ondoctype", parser.doctype)
-          parser.doctype = true // just remember that we saw it.
-        } else {
-          parser.doctype += c
-          if (c === "[") parser.state = S.DOCTYPE_DTD
-          else if (is(quote, c)) {
-            parser.state = S.DOCTYPE_QUOTED
-            parser.q = c
-          }
-        }
-      continue
-
-      case S.DOCTYPE_QUOTED:
-        parser.doctype += c
-        if (c === parser.q) {
-          parser.q = ""
-          parser.state = S.DOCTYPE
-        }
-      continue
-
-      case S.DOCTYPE_DTD:
-        parser.doctype += c
-        if (c === "]") parser.state = S.DOCTYPE
-        else if (is(quote,c)) {
-          parser.state = S.DOCTYPE_DTD_QUOTED
-          parser.q = c
-        }
-      continue
-
-      case S.DOCTYPE_DTD_QUOTED:
-        parser.doctype += c
-        if (c === parser.q) {
-          parser.state = S.DOCTYPE_DTD
-          parser.q = ""
-        }
-      continue
-
-      case S.COMMENT:
-        if (c === "-") parser.state = S.COMMENT_ENDING
-        else parser.comment += c
-      continue
-
-      case S.COMMENT_ENDING:
-        if (c === "-") {
-          parser.state = S.COMMENT_ENDED
-          parser.comment = textopts(parser.opt, parser.comment)
-          if (parser.comment) emitNode(parser, "oncomment", parser.comment)
-          parser.comment = ""
-        } else {
-          parser.comment += "-" + c
-          parser.state = S.COMMENT
-        }
-      continue
-
-      case S.COMMENT_ENDED:
-        if (c !== ">") {
-          strictFail(parser, "Malformed comment")
-          // allow <!-- blah -- bloo --> in non-strict mode,
-          // which is a comment of " blah -- bloo "
-          parser.comment += "--" + c
-          parser.state = S.COMMENT
-        } else parser.state = S.TEXT
-      continue
-
-      case S.CDATA:
-        if (c === "]") parser.state = S.CDATA_ENDING
-        else parser.cdata += c
-      continue
-
-      case S.CDATA_ENDING:
-        if (c === "]") parser.state = S.CDATA_ENDING_2
-        else {
-          parser.cdata += "]" + c
-          parser.state = S.CDATA
-        }
-      continue
-
-      case S.CDATA_ENDING_2:
-        if (c === ">") {
-          if (parser.cdata) emitNode(parser, "oncdata", parser.cdata)
-          emitNode(parser, "onclosecdata")
-          parser.cdata = ""
-          parser.state = S.TEXT
-        } else if (c === "]") {
-          parser.cdata += "]"
-        } else {
-          parser.cdata += "]]" + c
-          parser.state = S.CDATA
-        }
-      continue
-
-      case S.PROC_INST:
-        if (c === "?") parser.state = S.PROC_INST_ENDING
-        else if (is(whitespace, c)) parser.state = S.PROC_INST_BODY
-        else parser.procInstName += c
-      continue
-
-      case S.PROC_INST_BODY:
-        if (!parser.procInstBody && is(whitespace, c)) continue
-        else if (c === "?") parser.state = S.PROC_INST_ENDING
-        else if (is(quote, c)) {
-          parser.state = S.PROC_INST_QUOTED
-          parser.q = c
-          parser.procInstBody += c
-        } else parser.procInstBody += c
-      continue
-
-      case S.PROC_INST_ENDING:
-        if (c === ">") {
-          emitNode(parser, "onprocessinginstruction", {
-            name : parser.procInstName,
-            body : parser.procInstBody
-          })
-          parser.procInstName = parser.procInstBody = ""
-          parser.state = S.TEXT
-        } else {
-          parser.procInstBody += "?" + c
-          parser.state = S.PROC_INST_BODY
-        }
-      continue
-
-      case S.PROC_INST_QUOTED:
-        parser.procInstBody += c
-        if (c === parser.q) {
-          parser.state = S.PROC_INST_BODY
-          parser.q = ""
-        }
-      continue
-
-      case S.OPEN_TAG:
-        if (is(nameBody, c)) parser.tagName += c
-        else {
-          newTag(parser)
-          if (c === ">") openTag(parser)
-          else if (c === "/") parser.state = S.OPEN_TAG_SLASH
-          else {
-            if (not(whitespace, c)) strictFail(
-              parser, "Invalid character in tag name")
-            parser.state = S.ATTRIB
-          }
-        }
-      continue
-
-      case S.OPEN_TAG_SLASH:
-        if (c === ">") {
-          openTag(parser, true)
-          closeTag(parser)
-        } else {
-          strictFail(parser, "Forward-slash in opening tag not followed by >")
-          parser.state = S.ATTRIB
-        }
-      continue
-
-      case S.ATTRIB:
-        // haven't read the attribute name yet.
-        if (is(whitespace, c)) continue
-        else if (c === ">") openTag(parser)
-        else if (c === "/") parser.state = S.OPEN_TAG_SLASH
-        else if (is(nameStart, c)) {
-          parser.attribName = c
-          parser.attribValue = ""
-          parser.state = S.ATTRIB_NAME
-        } else strictFail(parser, "Invalid attribute name")
-      continue
-
-      case S.ATTRIB_NAME:
-        if (c === "=") parser.state = S.ATTRIB_VALUE
-        else if (is(whitespace, c)) parser.state = S.ATTRIB_NAME_SAW_WHITE
-        else if (is(nameBody, c)) parser.attribName += c
-        else strictFail(parser, "Invalid attribute name")
-      continue
-
-      case S.ATTRIB_NAME_SAW_WHITE:
-        if (c === "=") parser.state = S.ATTRIB_VALUE
-        else if (is(whitespace, c)) continue
-        else {
-          strictFail(parser, "Attribute without value")
-          parser.tag.attributes[parser.attribName] = ""
-          parser.attribValue = ""
-          emitNode(parser, "onattribute",
-                   { name : parser.attribName, value : "" })
-          parser.attribName = ""
-          if (c === ">") openTag(parser)
-          else if (is(nameStart, c)) {
-            parser.attribName = c
-            parser.state = S.ATTRIB_NAME
-          } else {
-            strictFail(parser, "Invalid attribute name")
-            parser.state = S.ATTRIB
-          }
-        }
-      continue
-
-      case S.ATTRIB_VALUE:
-        if (is(whitespace, c)) continue
-        else if (is(quote, c)) {
-          parser.q = c
-          parser.state = S.ATTRIB_VALUE_QUOTED
-        } else {
-          strictFail(parser, "Unquoted attribute value")
-          parser.state = S.ATTRIB_VALUE_UNQUOTED
-          parser.attribValue = c
-        }
-      continue
-
-      case S.ATTRIB_VALUE_QUOTED:
-        if (c !== parser.q) {
-          if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_Q
-          else parser.attribValue += c
-          continue
-        }
-        attrib(parser)
-        parser.q = ""
-        parser.state = S.ATTRIB
-      continue
-
-      case S.ATTRIB_VALUE_UNQUOTED:
-        if (not(attribEnd,c)) {
-          if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_U
-          else parser.attribValue += c
-          continue
-        }
-        attrib(parser)
-        if (c === ">") openTag(parser)
-        else parser.state = S.ATTRIB
-      continue
-
-      case S.CLOSE_TAG:
-        if (!parser.tagName) {
-          if (is(whitespace, c)) continue
-          else if (not(nameStart, c)) strictFail(parser,
-            "Invalid tagname in closing tag.")
-          else parser.tagName = c
-        }
-        else if (c === ">") closeTag(parser)
-        else if (is(nameBody, c)) parser.tagName += c
-        else {
-          if (not(whitespace, c)) strictFail(parser,
-            "Invalid tagname in closing tag")
-          parser.state = S.CLOSE_TAG_SAW_WHITE
-        }
-      continue
-
-      case S.CLOSE_TAG_SAW_WHITE:
-        if (is(whitespace, c)) continue
-        if (c === ">") closeTag(parser)
-        else strictFail("Invalid characters in closing tag")
-      continue
-
-      case S.TEXT_ENTITY:
-      case S.ATTRIB_VALUE_ENTITY_Q:
-      case S.ATTRIB_VALUE_ENTITY_U:
-        switch(parser.state) {
-          case S.TEXT_ENTITY:
-            var returnState = S.TEXT, buffer = "textNode"
-          break
-
-          case S.ATTRIB_VALUE_ENTITY_Q:
-            var returnState = S.ATTRIB_VALUE_QUOTED, buffer = "attribValue"
-          break
-
-          case S.ATTRIB_VALUE_ENTITY_U:
-            var returnState = S.ATTRIB_VALUE_UNQUOTED, buffer = "attribValue"
-          break
-        }
-        if (c === ";") {
-          parser[buffer] += parseEntity(parser)
-          parser.entity = ""
-          parser.state = returnState
-        }
-        else if (is(entity, c)) parser.entity += c
-        else {
-          strictFail("Invalid character entity")
-          parser[buffer] += "&" + parser.entity + c
-          parser.entity = ""
-          parser.state = returnState
-        }
-      continue
-
-      default:
-        throw new Error(parser, "Unknown state: " + parser.state)
-    }
-  } // while
-  // cdata blocks can get very big under normal conditions. emit and move on.
-  // if (parser.state === S.CDATA && parser.cdata) {
-  //   emitNode(parser, "oncdata", parser.cdata)
-  //   parser.cdata = ""
-  // }
-  if (parser.position >= parser.bufferCheckPosition) checkBufferLength(parser)
-  return parser
-}
-
-})(typeof exports === "undefined" ? sax = {} : exports)


[38/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/configUri.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/configUri.xml b/blackberry10/bin/test/cordova/unit/configUri.xml
deleted file mode 100644
index f259ca3..0000000
--- a/blackberry10/bin/test/cordova/unit/configUri.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<widget xmlns=" http://www.w3.org/ns/widgets"
-        xmlns:rim="http://www.blackberry.com/ns/widgets"
-        version="1.0.0"
-        id="My WidgetId"
-        rim:header="RIM-Widget:rim/widget"
-        rim:userAgent="A Test-User-Agent/(Blackberry-Agent)">
-    <name>Demo</name>
-    <content src="local:///startPage.html"/>
-    <author rim:copyright="No Copyright"
-            href="http://www.rim.com/"
-            email = "author@rim.com">Research In Motion Ltd.</author>
-    <description>This app does everything.</description>
-    <license href="http://www.apache.org/licenses/LICENSE-2.0">My License</license>
-    <icon src="test.png" />
-    <rim:permissions>
-        <rim:permit>access_shared</rim:permit>
-        <rim:permit>read_geolocation</rim:permit>
-        <rim:permit>use_camera</rim:permit>
-    </rim:permissions>
-    <feature id="blackberry.app.orientation">
-        <param name="mode" value="portrait" />
-        <param name="other" value="portrait" />
-      </feature>
-    <feature id="blackberry.app" required="true" version="1.0.0.0">
-        <param name="childBrowser" value="disable" />
-        <param name="websecurity" value="disable" />
-        <param name="popupBlocker" value="enable" />
-    </feature>
-    <feature id="blackberry.system" required="true" version="1.0.0.3"/>
-    <access uri="http://www.somedomain1.com" subdomains="true">
-        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
-        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
-    </access>
-    <rim:invoke-target id="com.domain.subdomain.appname.app1">
-	<type>APPLICATION</type>
-        <require-source-permissions>invoke_across_perimeters,access_shared</require-source-permissions>
-        <filter>
-            <action>bb.action.OPEN</action>
-            <action>bb.action.SET</action>
-            <action>bb.action.VIEW</action>
-            <mime-type>image/*</mime-type>
-            <mime-type>text/*</mime-type>
-            <property var="uris" value="ftp://" />
-            <property var="uris" value="http://" />
-            <property var="uris" value="https://" />
-            <property var="exts" value="jpg" />
-            <property var="exts" value="png" />
-            <property var="exts" value="txt" />
-            <property var="exts" value="doc" />
-        </filter>
-    </rim:invoke-target>
-</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/configUriOrigin.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/configUriOrigin.xml b/blackberry10/bin/test/cordova/unit/configUriOrigin.xml
deleted file mode 100644
index 7635682..0000000
--- a/blackberry10/bin/test/cordova/unit/configUriOrigin.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<widget xmlns=" http://www.w3.org/ns/widgets"
-        xmlns:rim="http://www.blackberry.com/ns/widgets"
-        version="1.0.0"
-        id="My WidgetId"
-        rim:header="RIM-Widget:rim/widget"
-        rim:userAgent="A Test-User-Agent/(Blackberry-Agent)">
-    <name>Demo</name>
-    <content src="local:///startPage.html"/>
-    <author rim:copyright="No Copyright"
-            href="http://www.rim.com/"
-            email = "author@rim.com">Research In Motion Ltd.</author>
-    <description>This app does everything.</description>
-    <license href="http://www.apache.org/licenses/LICENSE-2.0">My License</license>
-    <icon src="test.png" />
-    <rim:permissions>
-        <rim:permit>access_shared</rim:permit>
-        <rim:permit>read_geolocation</rim:permit>
-        <rim:permit>use_camera</rim:permit>
-    </rim:permissions>
-    <feature id="blackberry.app.orientation">
-        <param name="mode" value="portrait" />
-        <param name="other" value="portrait" />
-      </feature>
-    <feature id="blackberry.app" required="true" version="1.0.0.0">
-        <param name="childBrowser" value="disable" />
-        <param name="websecurity" value="disable" />
-        <param name="popupBlocker" value="enable" />
-    </feature>
-    <feature id="blackberry.system" required="true" version="1.0.0.3"/>
-    <access uri="http://www.somedomain1.com" subdomains="true">
-        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
-        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
-    </access>
-    <access origin="http://www.somedomain1.com" subdomains="true">
-        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
-        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
-    </access>
-    <rim:invoke-target id="com.domain.subdomain.appname.app1">
-	<type>APPLICATION</type>
-        <require-source-permissions>invoke_across_perimeters,access_shared</require-source-permissions>
-        <filter>
-            <action>bb.action.OPEN</action>
-            <action>bb.action.SET</action>
-            <action>bb.action.VIEW</action>
-            <mime-type>image/*</mime-type>
-            <mime-type>text/*</mime-type>
-            <property var="uris" value="ftp://" />
-            <property var="uris" value="http://" />
-            <property var="uris" value="https://" />
-            <property var="exts" value="jpg" />
-            <property var="exts" value="png" />
-            <property var="exts" value="txt" />
-            <property var="exts" value="doc" />
-        </filter>
-    </rim:invoke-target>
-</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/data/ascii_text.txt
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/data/ascii_text.txt b/blackberry10/bin/test/cordova/unit/data/ascii_text.txt
deleted file mode 100644
index 5e1c309..0000000
--- a/blackberry10/bin/test/cordova/unit/data/ascii_text.txt
+++ /dev/null
@@ -1 +0,0 @@
-Hello World
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/data/ucs2be_text.txt
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/data/ucs2be_text.txt b/blackberry10/bin/test/cordova/unit/data/ucs2be_text.txt
deleted file mode 100644
index f999e5f..0000000
Binary files a/blackberry10/bin/test/cordova/unit/data/ucs2be_text.txt and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/data/ucs2le_text.txt
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/data/ucs2le_text.txt b/blackberry10/bin/test/cordova/unit/data/ucs2le_text.txt
deleted file mode 100644
index 088fa80..0000000
Binary files a/blackberry10/bin/test/cordova/unit/data/ucs2le_text.txt and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/data/utf8_text.txt
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/data/utf8_text.txt b/blackberry10/bin/test/cordova/unit/data/utf8_text.txt
deleted file mode 100644
index 05eac02..0000000
--- a/blackberry10/bin/test/cordova/unit/data/utf8_text.txt
+++ /dev/null
@@ -1 +0,0 @@
-Hello World
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/params-bad.json
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/params-bad.json b/blackberry10/bin/test/cordova/unit/params-bad.json
deleted file mode 100644
index 16c75eb..0000000
--- a/blackberry10/bin/test/cordova/unit/params-bad.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-EVIL!
-	"blackberry-signer": {
-		"-proxyhost": "abc.com",
-		"-proxyport": "80"
-	},
-	"blackberry-nativepackager": {
-
-	}
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/params.json
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/params.json b/blackberry10/bin/test/cordova/unit/params.json
deleted file mode 100644
index 6a3506f..0000000
--- a/blackberry10/bin/test/cordova/unit/params.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-	"blackberry-signer": {
-		"-proxyhost": "abc.com",
-		"-proxyport": "80"
-	},
-	"blackberry-nativepackager": {
-
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/bar-builder.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/bar-builder.js b/blackberry10/bin/test/cordova/unit/spec/lib/bar-builder.js
deleted file mode 100644
index f701b34..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/bar-builder.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    path = require("path"),
-    wrench = require("wrench"),
-    barBuilder = require(srcPath + "bar-builder"),
-    fileMgr = require(srcPath + "file-manager"),
-    nativePkgr = require(srcPath + "native-packager"),
-    logger = require(srcPath + "logger"),
-    testData = require("./test-data"),
-    extManager = null;
-
-describe("BAR builder", function () {
-    it("build() create BAR for specified session", function () {
-        var callback = jasmine.createSpy(),
-            session = testData.session,
-            config = testData.config,
-            target = session.targets[0];
-
-        wrench.mkdirSyncRecursive(path.join(session.sourcePaths.LIB, "config"));
-
-        spyOn(wrench, "mkdirSyncRecursive");
-        spyOn(fileMgr, "copyWebworks");
-        spyOn(fileMgr, "generateFrameworkModulesJS");
-        spyOn(nativePkgr, "exec").andCallFake(function (session, target, config, callback) {
-            callback(0);
-        });
-
-        barBuilder.build(session, testData.config, callback);
-
-        expect(wrench.mkdirSyncRecursive).toHaveBeenCalledWith(session.outputDir + "/" + target);
-        expect(fileMgr.generateFrameworkModulesJS).toHaveBeenCalledWith(session);
-        expect(nativePkgr.exec).toHaveBeenCalledWith(session, target, config, jasmine.any(Function));
-        expect(callback).toHaveBeenCalledWith(0);
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/bbwpignore.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/bbwpignore.js b/blackberry10/bin/test/cordova/unit/spec/lib/bbwpignore.js
deleted file mode 100644
index 7c68ee9..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/bbwpignore.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    BBWPignore = require(srcPath + "bbwpignore"),
-    fs = require('fs');
-
-describe("bbwpignore can match", function () {
-    it("a basic file set", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
-                                           "x/y/def.js");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
-                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
-        expect(bbwpignore.matchedFiles.length).toBe(4);
-        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("a/b/x/y/def.js")).not.toBe(-1);
-    });
-
-    it("a basic file set with directories", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
-                                           "x/y/");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
-                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
-
-        expect(bbwpignore.matchedFiles.length).toBe(4);
-        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("a/b/x/y/def.js")).not.toBe(-1);
-    });
-
-    it("a basic file set with directories that being with slash", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
-                                           "/x/y/");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
-                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
-        expect(bbwpignore.matchedFiles.length).toBe(4);
-        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("/x/y")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
-
-    });
-
-    it("a basic file set that begin with a slash on the directory", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
-                                           "/x/y/def.js");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
-                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
-
-        expect(bbwpignore.matchedFiles.length).toBe(3);
-        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
-
-    });
-
-    it("a basic file set that begin with a slash", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
-                                           "/def.js");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
-                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
-
-        expect(bbwpignore.matchedFiles.length).toBe(2);
-        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
-
-    });
-
-    it("a basic file set that begin with a slash and has a wildcard", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("abcd.js\n" +
-                                           "/*.js");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
-                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
-
-        expect(bbwpignore.matchedFiles.length).toBe(2);
-        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("ted.js")).not.toBe(-1);
-
-    });
-
-    it("a basic file set that begin with a slash and has a wildcard", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("abcd.js\n" +
-                                           "a*.js");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
-                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
-
-        expect(bbwpignore.matchedFiles.length).toBe(2);
-        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
-
-    });
-
-    it("a basic directory set that begin with a slash", function () {
-        var bbwpignore;
-        spyOn(fs, "readFileSync").andReturn("/simulator/\n" +
-                                           "banana.js");
-        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
-                                    ["simulator/a.js"]);
-
-        expect(bbwpignore.matchedFiles.length).toBe(2);
-        expect(bbwpignore.matchedFiles.indexOf("/simulator")).not.toBe(-1);
-        expect(bbwpignore.matchedFiles.indexOf("simulator/a.js")).not.toBe(-1);
-
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/cmdline.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/cmdline.js b/blackberry10/bin/test/cordova/unit/spec/lib/cmdline.js
deleted file mode 100644
index 421a95b..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/cmdline.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    localize = require(srcPath + "localize"),
-    cmdline = require(srcPath + "cmdline"),
-    cmd;
-
-describe("Command line", function () {
-    beforeEach(function () {
-        cmd = cmdline
-                .parse(process.argv)
-                .commander;
-    });
-
-    it("accepts -o with argument", function () {
-        cmd.parseOptions(["-o", "outdir"]);
-        expect(cmd.output).toEqual("outdir");
-    });
-
-    it("arg following -o is required", function () {
-        spyOn(process, "exit");
-        spyOn(console, "error");
-        cmd.parseOptions(["-o"]);
-        expect(console.error).toHaveBeenCalled();
-        expect(process.exit).toHaveBeenCalled();
-    });
-
-    it("accepts -s without argument", function () {
-        cmd.parseOptions(["-s"]);
-        expect(cmd.source).toBeTruthy();
-    });
-
-    it("accepts -s with argument", function () {
-        cmd.parseOptions(["-s", "mySourceDir"]);
-        expect(cmd.source).toEqual("mySourceDir");
-    });
-
-    it("accepts -d", function () {
-        cmd.parseOptions(["-d"]);
-        expect(cmd.debug).toBeTruthy();
-    });
-
-    it("accepts --loglevel with argument", function () {
-        cmd.parseOptions(["--loglevel", "warn"]);
-        expect(cmd.loglevel).toBe("warn");
-    });
-
-    it("accepts -l", function () {
-        cmd.parseOptions(["-l", "error"]);
-        expect(cmd.loglevel).toBe("error");
-    });
-
-    it("accepts -g with argument", function () {
-        cmd.parseOptions(["-g", "myPassword"]);
-        expect(cmd.password).toEqual("myPassword");
-    });
-
-    it("accepts --buildId with argument", function () {
-        cmd.parseOptions(["--buildId", "100"]);
-        expect(cmd.buildId).toEqual("100");
-    });
-
-    it("accepts -buildId with argument", function () {
-        cmd.parseOptions(["-buildId", "100"]);
-        expect(cmd.buildId).toEqual("100");
-    });
-
-    it("accepts --appdesc with argument", function () {
-        cmd.parseOptions(["--appdesc", "bardescriptor"]);
-        expect(cmd.appdesc).toEqual("bardescriptor");
-    });
-
-    it("throws an error for invalid multi-word arguments", function () {
-        expect(function () {
-            require(srcPath + "cmdline").parse(["--src"]);
-        }).toThrow(localize.translate("EXCEPTION_CMDLINE_ARG_INVALID", "--src"));
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js b/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js
deleted file mode 100644
index 2947e1b..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js
+++ /dev/null
@@ -1,1448 +0,0 @@
-/*jshint sub:true*/
-
-var testData = require("./test-data"),
-    configParser = require(testData.libPath + "/config-parser"),
-    packagerUtils = require(testData.libPath + "/packager-utils"),
-    fileManager = require(testData.libPath + "/file-manager"),
-    logger = require(testData.libPath + "./logger"),
-    testUtilities = require("./test-utilities"),
-    xml2js = require('xml2js'),
-    localize = require(testData.libPath + "/localize"),
-    path = require("path"),
-    fs = require("fs"),
-    session = testData.session,
-    configPath = path.resolve("bin/test/cordova/unit/config.xml"),
-    configPathUri = path.resolve("bin/test/cordova/unit/configUri.xml"),
-    configPathUriOrigin = path.resolve("bin/test/cordova/unit/configUriOrigin.xml"),
-    configBadPath = path.resolve("test2/config.xml"),
-    configBareMinimumPath = path.resolve("bin/test/cordova/unit/config-bare-minimum.xml"),
-    mockParsing = testUtilities.mockParsing;
-
-describe("config parser", function () {
-    beforeEach(function () {
-        spyOn(logger, "warn");
-        spyOn(packagerUtils, "copyFile");
-    });
-
-    it("tries to open a config.xml file that doesn't exist", function () {
-        expect(function () {
-            configParser.parse(configBadPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_CONFIG_NOT_FOUND"));
-    });
-
-    it("parses standard elements in a config.xml", function () {
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.content).toEqual("local:///startPage.html");
-            expect(configObj.id).toEqual("My WidgetId");
-            expect(configObj.customHeaders).toEqual({ 'RIM-Widget' : 'rim/widget'});
-            expect(configObj.version).toEqual("1.0.0");
-            expect(configObj.license).toEqual("My License");
-            expect(configObj.licenseURL).toEqual("http://www.apache.org/licenses/LICENSE-2.0");
-            expect(configObj.icon).toEqual(["test.png"]);
-            expect(configObj.configXML).toEqual("config.xml");
-            expect(configObj.author).toEqual("Research In Motion Ltd.");
-            expect(configObj.authorURL).toEqual("http://www.rim.com/");
-            expect(configObj.copyright).toEqual("No Copyright");
-            expect(configObj.authorEmail).toEqual("author@rim.com");
-            expect(configObj.name).toEqual({ default : 'Demo' });
-            expect(configObj.description).toEqual({ default : 'This app does everything.' });
-            expect(configObj.permissions).toContain('access_shared');
-            expect(configObj.permissions).toContain('read_geolocation');
-            expect(configObj.permissions).toContain('use_camera');
-            expect(configObj.enableChildWebView).toBe(false);
-        });
-    });
-
-    it("parses Feature elements in a config.xml", function () {
-        var localAccessList,
-            accessListFeature;
-
-        configParser.parse(configPathUri, session, function (configObj) {
-            //validate WIDGET_LOCAL accessList
-            localAccessList = testUtilities.getAccessList(configObj.accessList, "WIDGET_LOCAL");
-            expect(localAccessList).toBeDefined();
-            expect(localAccessList.uri).toEqual("WIDGET_LOCAL");
-        });
-    });
-
-    it("parses Access elements a config.xml", function () {
-        var customAccessList,
-            accessListFeature;
-
-        configParser.parse(configPathUri, session, function (configObj) {
-            //validate http://www.somedomain1.com accessList
-            customAccessList = testUtilities.getAccessList(configObj.accessList, "http://www.somedomain1.com");
-            expect(customAccessList).toBeDefined();
-            expect(customAccessList.uri).toEqual("http://www.somedomain1.com");
-            expect(customAccessList.allowSubDomain).toEqual(true);
-        });
-    });
-
-    it("parses a bare minimum config.xml without error", function () {
-        var bareMinimumConfigPath = path.resolve("bin/test/cordova/unit/config-bare-minimum.xml");
-
-        configParser.parse(bareMinimumConfigPath, session, function (configObj) {
-            expect(configObj.content).toEqual("local:///startPage.html");
-            expect(configObj.version).toEqual("1.0.0");
-        });
-    });
-
-    it("license url is set even if license body is empty", function () {
-        var licenseConfigPath = path.resolve("bin/test/cordova/unit/config-license.xml");
-
-        configParser.parse(licenseConfigPath, session, function (configObj) {
-            expect(configObj.license).toEqual("");
-            expect(configObj.licenseURL).toEqual("http://www.apache.org/licenses/LICENSE-2.0");
-        });
-    });
-
-    it("fails when id is undefined", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["@"].id = undefined;
-
-        mockParsing(data);
-        //Should throw an EXCEPTION_INVALID_ID error
-        expect(function () {
-            configParser.parse(configPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_ID"));
-    });
-
-    it("fails when id is empty", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["@"].id = "";
-
-        mockParsing(data);
-
-        //Should throw an EXCEPTION_INVALID_ID error
-        expect(function () {
-            configParser.parse(configPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_ID"));
-    });
-
-    it("Fails when no name was provided - single element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = "";
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
-    });
-
-    it("Fails when no name was provided - multiple elements", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = ["",
-            { '#': 'API Smoke Test-FR', '@': { 'xml:lang': 'fr' } }
-        ];
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
-    });
-
-    it("Fails when localized name was provided but empty", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = ["API Smoke Test",
-            { '#': '', '@': { 'xml:lang': 'fr' } }
-        ];
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
-    });
-
-    it("Parses a name element - single element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = "API Smoke Test";
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.name).toEqual({"default": "API Smoke Test"});
-        });
-    });
-
-    it("Parses a name element with xml:lang - single element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } };
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.name).toEqual({"en": "EN VALUE"});
-        });
-    });
-
-    it("Parses a name element that is not case sensitive", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = { '#': 'EN VALUE', '@': { 'xml:lang': 'eN' } };
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.name).toEqual({"en": "EN VALUE"});
-        });
-    });
-
-    it("Parses a name element with xml:lang - multi element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = ['API Smoke Test',
-            { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } },
-            { '#': 'FR VALUE', '@': { 'xml:lang': 'fr' } }
-
-        ];
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.name).toEqual({"default": "API Smoke Test", "en": "EN VALUE", "fr": "FR VALUE"});
-        });
-    });
-
-    it("Fails when localized name was provided but empty", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.name = ['API Smoke Test',
-            { '#': '', '@': { 'xml:lang': 'fr' } }
-        ];
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
-    });
-
-    it("Parses a description element - single element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.description = "This is my app";
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.description).toEqual({"default": "This is my app"});
-        });
-    });
-
-    it("Parses a description element with xml:lang - single element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.description = { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } };
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.description).toEqual({"en": "EN VALUE"});
-        });
-    });
-
-    it("Parses a description element that is not case sensitive", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.description = { '#': 'EN VALUE', '@': { 'xml:lang': 'eN' } };
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.description).toEqual({"en": "EN VALUE"});
-        });
-    });
-
-    it("Parses a description element with xml:lang - multi element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.description = ['This is my app',
-            { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } },
-            { '#': 'FR VALUE', '@': { 'xml:lang': 'fr' } }
-
-        ];
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.description).toEqual({"default": "This is my app", "en": "EN VALUE", "fr": "FR VALUE"});
-        });
-    });
-
-    it("adds local:/// protocol to urls", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.content["@"].src = "localFile.html";
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.content).toEqual("local:///localFile.html");
-        });
-    });
-
-    it("cleans source folder on error", function () {
-        mockParsing({}, "ERROR");
-
-        spyOn(logger, "error");
-        spyOn(fileManager, "cleanSource");
-
-        configParser.parse(configPath, session, function () {});
-
-        expect(fileManager.cleanSource).toHaveBeenCalled();
-    });
-
-    it("parses a single permission (comes in as string)", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['rim:permissions'] = {};
-        data['rim:permissions']['rim:permit'] = 'onePermissionNoAttribs';
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.permissions).toContain('onePermissionNoAttribs');
-        });
-    });
-
-    it("parses a single permission with attribs (comes in as object)", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['rim:permissions'] = {};
-        data['rim:permissions']['rim:permit'] = { '#': 'systemPerm', '@': { system: 'true' } };
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.permissions).toContain({ '#': 'systemPerm', '@': { system: 'true' } });
-        });
-    });
-
-    it("parses multiple permissions with no attribs (comes in as array)", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['rim:permissions'] = {};
-        data['rim:permissions']['rim:permit'] = [ 'access_shared', 'read_geolocation', 'use_camera' ];
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.permissions).toContain('access_shared');
-            expect(configObj.permissions).toContain('read_geolocation');
-            expect(configObj.permissions).toContain('use_camera');
-        });
-    });
-
-    it("parses multiple permissions with attribs (comes in as array)", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['rim:permissions'] = {};
-        data['rim:permissions']['rim:permit'] = [
-            { '#': 'systemPerm', '@': { system: 'true' } },
-            { '#': 'nonSystemPerm', '@': { system: 'false' } }
-        ];
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.permissions).toContain({ '#': 'systemPerm', '@': { system: 'true' } });
-            expect(configObj.permissions).toContain({ '#': 'nonSystemPerm', '@': { system: 'false' } });
-        });
-    });
-
-    it("parses a config with no permissions set", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        delete data['rim:permissions']; //No permissions set in config
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.permissions).toEqual([]);
-        });
-    });
-
-    it("enables the enable-flash feature when specified", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //Add the enable-flash feature element
-        data['feature'] = {'@': {id: 'enable-flash'}};
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.enableFlash).toEqual(true);
-        });
-    });
-
-    it("does not enable the enable-flash feature when specified in an access element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //Add the enable-flash to an access element
-        data['access'] = {"@" : {"uri" : "http://somewebsite.com"}, "feature" : {"@": {id: 'enable-flash'}}};
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.enableFlash).toEqual(false);
-        });
-    });
-
-    it("disables the enable-flash feature by default", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['feature'] = undefined;//no features
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.enableFlash).toEqual(false);
-        });
-    });
-
-    it("sets autoDeferNetworkingAndJavaScript to false when the blackberry.push feature is specified", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //Add the blackberry.push feature element
-        data["rim:permissions"] = {}; // ensure no run_when_backgrounded permission exists
-        data['feature'] = {'@': {id: 'blackberry.push'}};
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.autoDeferNetworkingAndJavaScript).toEqual(false);
-        });
-    });
-
-    it("sets autoDeferNetworkingAndJavaScript to false when the run_when_backgrounded permission is specified", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //Add the run_when_backgrounded permission
-        data['feature'] = undefined; // no features
-        data["rim:permissions"] = {
-            "rim:permit" : [ 'read_geolocation', 'run_when_backgrounded', 'access_internet' ]
-        };
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.permissions).toContain('run_when_backgrounded');
-            expect(configObj.autoDeferNetworkingAndJavaScript).toEqual(false);
-        });
-    });
-
-    it("sets autoDeferNetworkingAndJavaScript to true by default", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        data['feature'] = undefined; // no features
-        data["rim:permissions"] = {}; // ensure no run_when_backgrounded permission exists
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.autoDeferNetworkingAndJavaScript).toEqual(true);
-        });
-    });
-
-    it("does not throw an exception with empty permit tags", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['rim:permit'] = ['read_geolocation', {}, 'access_internet' ];
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).not.toThrow();
-    });
-
-    it("throws a warning when both uri and origin attributes exist", function () {
-        configParser.parse(configPathUriOrigin, session, function (configObj) {});
-        expect(logger.warn).toHaveBeenCalled();
-    });
-
-    it("multi access should be false if no access", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            //hasMultiAccess was set to false
-            expect(configObj.hasMultiAccess).toEqual(false);
-            expect(configObj.accessList).toEqual([ {
-                uri : 'WIDGET_LOCAL',
-                allowSubDomain : true
-            } ]);
-        });
-    });
-
-    it("multi access should be false if no uri is equal to *", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['access'] = {"@" : {"uri" : "http://www.somedomain1.com"}};
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            //hasMultiAccess was set to false
-            expect(configObj.hasMultiAccess).toEqual(false);
-            expect(configObj.accessList).toEqual([ {
-                uri : 'WIDGET_LOCAL',
-                allowSubDomain : true
-            }, {
-                "uri" : "http://www.somedomain1.com"
-            } ]);
-        });
-    });
-
-    it("multi access should be false if no origin is equal to *", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['access'] = {"@" : {"origin" : "http://www.somedomain1.com"}};
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            //hasMultiAccess was set to false
-            expect(configObj.hasMultiAccess).toEqual(false);
-            expect(configObj.accessList).toEqual([ {
-                uri : 'WIDGET_LOCAL',
-                allowSubDomain : true
-            }, {
-                "uri" : "http://www.somedomain1.com"
-            } ]);
-        });
-    });
-
-    it("multi access should be true with the uri being equal to *", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['access'] = {"@" : {"uri" : "*"}};
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            //hasMultiAccess was set to true
-            expect(configObj.hasMultiAccess).toEqual(true);
-            expect(configObj.accessList).toEqual([ {
-                uri : 'WIDGET_LOCAL',
-                allowSubDomain : true
-            } ]);
-        });
-    });
-
-    it("multi access should be true with one uri being equal to *", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['access'] = [{"@" : {"uri" : "*"}}, {"@" : {"uri" : "http://www.somedomain1.com"}}];
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            //hasMultiAccess was set to true
-            expect(configObj.hasMultiAccess).toEqual(true);
-            expect(configObj.accessList).toEqual([ {
-                uri : 'WIDGET_LOCAL',
-                allowSubDomain : true
-            }, {
-                "uri" : "http://www.somedomain1.com"
-            } ]);
-        });
-    });
-
-    it("should fail when feature is defined with the uri being equal to *", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['access'] = {"@" : {"uri" : "*"}, "feature" : {"@": {"id": "blackberry.app"}}};
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN"));
-    });
-
-    it("should fail when multi features are defined with the uri being equal to *", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data['access'] = {"@" : {"uri" : "*"}, "feature" : [{"@": {"id": "blackberry.app"}}, {"@": {"id": "blackberry.system"}}, {"@": {"id": "blackberry.invoke"}}]};
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN"));
-    });
-
-    it("should fail when the access uri attribute does not specify a protocol", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //Add an access element with one feature
-        data['access'] = {
-            '@': {
-                uri: 'rim.net',
-                subdomains: 'true'
-            },
-            feature: {
-                '@': { id: 'blackberry.system' }
-            }
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_PROTOCOL", data['access']['@'].uri));
-    });
-
-    it("should fail when the access uri attribute does not specify a URN", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //Add an access element with one feature
-        data['access'] = {
-            '@': {
-                uri: 'http://',
-                subdomains: 'true'
-            },
-            feature: {
-                '@': { id: 'blackberry.system' }
-            }
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_URN", data['access']['@'].uri));
-    });
-
-    it("does not fail when there is a single feature element in the access list", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //Add an access element with one feature
-        data['access'] = {
-            '@': {
-                uri: 'http://rim.net',
-                subdomains: 'true'
-            },
-            feature: {
-                '@': { id: 'blackberry.system' }
-            }
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).not.toThrow();
-    });
-
-    it("supports 4 digit version [build id]", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["@"].version = "1.0.0.50";
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.version).toEqual("1.0.0");
-            expect(configObj.buildId).toEqual("50");
-        });
-    });
-
-    it("uses --buildId when set", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-        //--buildId 100
-        session.buildId = "100";
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.buildId).toEqual("100");
-        });
-    });
-
-    it("overrides the build id specified in version with --buildId flag", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["@"].version = "1.0.0.50";
-
-        //--buildId 100
-        session.buildId = "100";
-
-        mockParsing(data);
-
-        configParser.parse(configPath, session, function (configObj) {
-            expect(configObj.version).toEqual("1.0.0");
-            expect(configObj.buildId).toEqual("100");
-        });
-    });
-
-    it("throws a proper error when author tag is empty", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data.author = {};
-
-        mockParsing(data);
-
-        //Should throw an EXCEPTION_INVALID_AUTHOR error
-        expect(function () {
-            configParser.parse(configPath, session, {});
-        }).toThrow(localize.translate("EXCEPTION_INVALID_AUTHOR"));
-    });
-
-    it("can parse a standard rim:invoke-target element", function () {
-
-        configParser.parse(configPath, session, function (configObj) {
-            var invokeTarget = configObj["invoke-target"][0];
-
-            expect(invokeTarget).toBeDefined();
-            expect(invokeTarget["@"]).toBeDefined();
-            expect(invokeTarget["@"]["id"]).toBeDefined();
-            expect(invokeTarget["@"]["id"]).toEqual("com.domain.subdomain.appname.app1");
-            expect(invokeTarget.type).toBeDefined();
-            expect(invokeTarget.type).toEqual("APPLICATION");
-            expect(invokeTarget["require-source-permissions"]).toBeDefined();
-            expect(invokeTarget["require-source-permissions"]).toEqual("invoke_across_perimeters,access_shared");
-            expect(invokeTarget.filter).toBeDefined();
-            expect(invokeTarget.filter[0].action).toBeDefined();
-            expect(invokeTarget.filter[0].action).toContain("bb.action.VIEW");
-            expect(invokeTarget.filter[0].action).toContain("bb.action.SET");
-            expect(invokeTarget.filter[0].action).toContain("bb.action.OPEN");
-            expect(invokeTarget.filter[0]["mime-type"]).toBeDefined();
-            expect(invokeTarget.filter[0]["mime-type"]).toContain("image/*");
-            expect(invokeTarget.filter[0]["mime-type"]).toContain("text/*");
-            expect(invokeTarget.filter[0].property).toBeDefined();
-
-            invokeTarget.filter[0].property.forEach(function (property) {
-                expect(property["@"]).toBeDefined();
-                expect(property["@"]["var"]).toBeDefined();
-                expect(property["@"]["var"]).toMatch("^(exts|uris)$");
-                if (property["@"]["var"] === "uris") {
-                    expect(property["@"]["value"]).toMatch("^(ftp|http|https):\/\/$");
-                } else if (property["@"]["var"] === "exts") {
-                    expect(property["@"]["value"]).toMatch("^(jpg|png|txt|doc)$");
-                }
-            });
-        });
-    });
-
-    it("can parse multiple filters in one element", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["rim:invoke-target"] = {
-            "@": {
-                "id": "com.domain.subdomain.appName.app"
-            },
-            "type": "application",
-            "filter":  [{
-                "action":  "bb.action.OPEN",
-                "mime-type": ["text/*", "image/*"]
-            }, {
-                "action": "bb.action.SET",
-                "mime-type": "image/*"
-            }]
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).not.toThrow();
-    });
-
-    it("can parse multiple invoke targets", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["rim:invoke-target"] = [{
-            "@": {
-                "id": "com.domain.subdomain.appName.app"
-            },
-            "type": "application"
-        }, {
-            "@": {
-                "id": "com.domain.subdomain.appName.viewer"
-            },
-            "type": "viewer"
-        }];
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).not.toThrow();
-
-    });
-
-    it("throws an error when an invoke target doesn't specify an invocation id", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["rim:invoke-target"] = {
-            type: "APPLICATION"
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_ID"));
-    });
-
-    it("throws and error when an invoke target xml doesn't specify an invocation type", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["rim:invoke-target"] = {
-            "@": {
-                "id": "com.domain.subdomain.appName.app"
-            },
-            type: {}
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_TYPE"));
-    });
-
-    it("throws an error when an invoke target doesn't specify an invocation type", function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["rim:invoke-target"] = {
-            "@": {
-                "id": "com.domain.subdomain.appName.app"
-            }
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_TYPE"));
-    });
-
-    it("throws an error when an invoke target filter doesn't contain an action",  function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["rim:invoke-target"] = {
-            "@": {
-                "id": "com.domain.subdomain.appName.app"
-            },
-            "type": "APPLICATION",
-            "filter": {
-                "mime-type": "text/*",
-                "property": [{
-                    "@": {
-                        "var": "uris",
-                        "value": "https://"
-                    }
-                }, {
-                    "@": {
-                        "var": "exts",
-                        "value": "html"
-                    }
-                }, {
-                    "@": {
-                        "var": "exts",
-                        "value": "htm"
-                    }
-                }]
-            }
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_ACTION_INVALID"));
-    });
-
-    it("throws an error when a filter doesn't contain a mime-type",  function () {
-        var data = testUtilities.cloneObj(testData.xml2jsConfig);
-        data["rim:invoke-target"] = {
-            "@": {
-                "id": "com.domain.subdomain.appName.app"
-            },
-            "type": "application",
-            "filter": {
-                "action": "bb.action.OPEN",
-                "property": [{
-                    "@": {
-                        "var": "uris",
-                        "value": "https://"
-                    }
-                }, {
-                    "@": {
-                        "var": "exts",
-                        "value": "html"
-                    }
-                }]
-            }
-        };
-
-        mockParsing(data);
-
-        expect(function () {
-            configParser.parse(configPath, session, function (configObj) {});
-        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_MIME_TYPE_INVALID"));
-    });
-
-    describe("splash screen", function () {
-        it("throws error when rim:splash element does not contain src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["rim:splash"] = {};
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC"));
-        });
-
-        it("throws error when rim:splash element contains empty src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["rim:splash"] = {
-                "@": {
-                    "src": ""
-                }
-            };
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC"));
-        });
-
-        it("throws error when one of many rim:splash elements does not contain attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["rim:splash"] = [{
-                "@": {
-                    "src": "a.jpg"
-                }
-            }, {
-                "#": "blah"
-            }];
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC"));
-        });
-
-        it("allow one rim:splash element that contains non-empty src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["rim:splash"] = {
-                "@": {
-                    "src": "a.jpg"
-                }
-            };
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).not.toThrow();
-        });
-
-        it("allow multiple rim:splash elements that contain non-empty src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["rim:splash"] = [{
-                "@": {
-                    "src": "a.jpg"
-                }
-            }, {
-                "@": {
-                    "src": "b.jpg"
-                }
-            }];
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).not.toThrow();
-        });
-
-        it("throws error when rim:splash src starts with 'locales' subfolder", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["rim:splash"] = [{
-                "@": {
-                    "src": "a.jpg"
-                }
-            }, {
-                "@": {
-                    "src": "locales/en/b.jpg"
-                }
-            }];
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC_LOCALES"));
-        });
-    });
-
-    describe("icon", function () {
-        it("throws error when icon element does not contain src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["icon"] = {};
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC"));
-        });
-
-        it("throws error when icon element contains empty src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["icon"] = {
-                "@": {
-                    "src": ""
-                }
-            };
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC"));
-        });
-
-        it("throws error when one of many icon elements does not contain attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["icon"] = [{
-                "@": {
-                    "src": "a.jpg"
-                }
-            }, {
-                "#": "blah"
-            }];
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC"));
-        });
-
-        it("allow one icon element that contains non-empty src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["icon"] = {
-                "@": {
-                    "src": "a.jpg"
-                }
-            };
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).not.toThrow();
-        });
-
-        it("allow multiple icon elements that contain non-empty src attribute", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["icon"] = [{
-                "@": {
-                    "src": "a.jpg"
-                }
-            }, {
-                "@": {
-                    "src": "b.jpg"
-                }
-            }];
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).not.toThrow();
-        });
-
-        it("throws error when icon src starts with 'locales' subfolder", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["icon"] = [{
-                "@": {
-                    "src": "a.jpg"
-                }
-            }, {
-                "@": {
-                    "src": "locales/en/b.jpg"
-                }
-            }];
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC_LOCALES"));
-        });
-
-        it("should copy the default icon to the src dir when no icon specified", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).not.toThrow();
-
-            expect(packagerUtils.copyFile).toHaveBeenCalled();
-        });
-
-        it("should use the default icon config when no icon is specified", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-            mockParsing(data);
-
-            configParser.parse(configBareMinimumPath, session, function (configObj) {
-                expect(configObj.icon).toEqual(["default-icon.png"]);
-            });
-        });
-
-        it("should not use the default icon config when icon is specified", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["icon"] = {
-                "@": {
-                    "src": "test.png"
-                }
-            };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.icon).toEqual(["test.png"]);
-                expect(configObj.icon).not.toEqual(["default-icon.png"]);
-                expect(configObj.icon).not.toContain("default-icon.png");
-            });
-        });
-
-        it("sets orientation to landscape when specified", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': { name: 'orientation', value: 'landscape' } };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.orientation).toEqual("landscape");
-                expect(configObj.autoOrientation).toEqual(false);
-            });
-        });
-
-        it("sets orientation to portrait when specified", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': { name: 'orientation', value: 'portrait' } };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.orientation).toEqual("portrait");
-                expect(configObj.autoOrientation).toEqual(false);
-            });
-        });
-
-        it("sets auto orientation to true by default", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            delete data['preference'];//Remove any orientation data
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.autoOrientation).toEqual(true);
-            });
-        });
-
-        it("orientation remains auto when auto is specified", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': { name: 'orientation', value: 'auto' } };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.autoOrientation).toEqual(true);
-            });
-        });
-
-        it("orientation remains auto when default is specified", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': { name: 'orientation', value: 'default' } };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.autoOrientation).toEqual(true);
-            });
-        });
-
-        it("throws an error when preference.orientation value is invalid", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': { name: 'orientation', value: 'invalid' } };
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", "invalid"));
-
-        });
-
-        it("throws a warning when blackberry.app.orientation exists", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['feature'] = { '@': { id: 'blackberry.app.orientation', required: true },
-                param: { '@': { name: 'mode', value: 'portrait' } } };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {});
-            expect(logger.warn).toHaveBeenCalled();
-        });
-
-        it("throws an error when blackberry.app orientation exists with an invalid mode param", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': { name: 'orientation', value: 'notAValidMode' } };
-
-            mockParsing(data);
-
-            expect(function () {
-                configParser.parse(configPath, session, function (configObj) {});
-            }).toThrow(localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", "notavalidmode"));
-        });
-
-        it("sets backgroundColor when specified as a preference", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': {name: 'backgroundColor', value: '0xffffff' } };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.backgroundColor).toEqual(16777215);//Decimal value of 0xffffff
-            });
-        });
-
-        it("throws an error backgroundColor preference is not a number", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data['preference'] = { '@': { name: 'backgroundColor', value: '$UI*@@$' } };
-
-            mockParsing(data);
-
-            //Should throw an EXCEPTION_BGCOLOR_INVALID error
-            expect(function () {
-                configParser.parse(configPath, session, {});
-            }).toThrow(localize.translate("EXCEPTION_BGCOLOR_INVALID", "$ui*@@$"));
-        });
-
-        it("can properly parse the custom RIM-Widget:rim/widget element", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.customHeaders).toEqual({ 'RIM-Widget' : 'rim/widget'});
-            });
-        });
-
-        it("can properly parse the custom attributes but ignores improper headers", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["@"] = {
-                "xmlns": " http://www.w3.org/ns/widgets",
-                "xmlns:rim": "http://www.blackberry.com/ns/widgets",
-                "version": "1.0.0",
-                "id": "myID"
-            };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.id).toEqual("myID");
-                expect(configObj.customHeaders).toEqual(undefined);
-            });
-        });
-
-        it("can properly parse the custom attributes but ignores improper headers", function () {
-            var data = testUtilities.cloneObj(testData.xml2jsConfig);
-            data["@"] = {
-                "xmlns": " http://www.w3.org/ns/widgets",
-                "xmlns:rim": "http://www.blackberry.com/ns/widgets",
-                "version": "1.0.0",
-                "id": "myID",
-                "rim:userAgent" : "A Test-User-Agent/(Blackberry-Agent)"
-            };
-
-            mockParsing(data);
-
-            configParser.parse(configPath, session, function (configObj) {
-                expect(configObj.id).toEqual("myID");
-                expect(configObj.userAgent).toEqual("A Test-User-Agent/(Blackberry-Agent)");
-            });
-        });
-
-        describe('disabling childBrowser (childWebView)', function () {
-            it("sets enableChildWebView to true when childBrowser value is enable", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'childBrowser', value: 'enable' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableChildWebView).toBe(true);
-                });
-            });
-
-            it("sets enableChildWebView to false when value is disable", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'childBrowser', value: 'disable' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableChildWebView).toBe(false);
-                });
-            });
-        });
-
-        describe('disabling formcontrol', function () {
-            it("sets enableFormControl to true when HideKeyboardFormAccessoryBar value is disable", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'disable'  } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableFormControl).toBe(true);
-                });
-            });
-
-            it("sets enableFormControl to true when HideKeyboardFormAccessoryBar value is false", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'false'  } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableFormControl).toBe(true);
-                });
-            });
-
-            it("sets enableFormControl to false when value is enable", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'enable' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableFormControl).toBe(false);
-                });
-            });
-
-            it("sets enableFormControl to false when value is true", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'true' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableFormControl).toBe(false);
-                });
-            });
-        });
-
-        describe('setting theme for some core ui elements', function () {
-            function testTheme(themeInConfig, themeParsed) {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-
-                if (themeInConfig) {
-                    data['preference'] = { '@': { name: 'theme', value: themeInConfig } };
-
-                    mockParsing(data);
-                }
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.theme).toBe(themeParsed);
-                });
-            }
-
-            it("sets theme to dark when config has theme with dark", function () {
-                testTheme("dark", "dark");
-            });
-
-            it("sets theme to bright when config has theme with bright", function () {
-                testTheme("bright", "bright");
-            });
-
-            it("sets theme to inherit when config has theme with inherit", function () {
-                testTheme("inherit", "inherit");
-            });
-
-            it("sets theme to default when config has theme with default", function () {
-                testTheme("default", "default");
-            });
-
-            it("sets theme to default when config has unsupported theme", function () {
-                testTheme("unsupportedthemename", "default");
-            });
-
-            it("sets theme to default when config has no theme provided", function () {
-                testTheme(undefined, "default");
-            });
-
-            it("sets theme to dark when config has theme with case insensitive dark", function () {
-                testTheme("dArK", "dark");
-            });
-
-            it("sets theme to bright when config has theme with case insensitive bright", function () {
-                testTheme("BriGht", "bright");
-            });
-
-            it("sets theme to inherit when config has theme with case insensitive inherit", function () {
-                testTheme("inHerIt", "inherit");
-            });
-
-            it("sets theme to inherit when config has theme with case insensitive inherit", function () {
-                testTheme("DefAulT", "default");
-            });
-
-            it("sets theme to default when config has NO theme tag provided", function () {
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.theme).toBe("default");
-                });
-            });
-        });
-
-        describe('disabling WebSecurity', function () {
-            it("doesn't set enableWebSecurity to anything when param value is anything but disable", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'webSecurity', value: (new Date()).toString() } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableWebSecurity).toBe(undefined);
-                    expect(logger.warn).not.toHaveBeenCalledWith(localize.translate("WARNING_WEBSECURITY_DISABLED"));
-                });
-            });
-
-            it("sets enableWebSecurity to false when value is disable", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'webSecurity', value: 'disable' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableWebSecurity).toBe(false);
-                    expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_WEBSECURITY_DISABLED"));
-                });
-            });
-
-            it("sets enableWebSecurity to false when value is disable case insensitive", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'webSecurity', value: 'DisAble' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enableWebSecurity).toBe(false);
-                    expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_WEBSECURITY_DISABLED"));
-                });
-            });
-        });
-
-        describe('enabling popupBlocker', function () {
-            it("sets enablePopupBlocker to true when value is enable", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'popupBlocker', value: 'enable' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enablePopupBlocker).toBe(true);
-                });
-            });
-
-            it("sets enablePopBlocker to false when value is disable case insensitive", function () {
-                var data = testUtilities.cloneObj(testData.xml2jsConfig);
-                data['preference'] = { '@': { name: 'popupBlocker', value: 'Disable' } };
-
-                mockParsing(data);
-
-                configParser.parse(configPath, session, function (configObj) {
-                    expect(configObj.enablePopupBlocker).toBe(false);
-                });
-            });
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/test/cordova/unit/spec/lib/file-manager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/file-manager.js b/blackberry10/bin/test/cordova/unit/spec/lib/file-manager.js
deleted file mode 100644
index ae17e7b..0000000
--- a/blackberry10/bin/test/cordova/unit/spec/lib/file-manager.js
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
-    barconf = require(srcPath + "bar-conf.js"),
-    fs = require("fs"),
-    path = require("path"),
-    util = require("util"),
-    packager_utils = require(srcPath + "packager-utils"),
-    localize = require(srcPath + "localize"),
-    wrench = require("wrench"),
-    logger = require(srcPath + "logger"),
-    conf = require(srcPath + "conf"),
-    fileMgr = require(srcPath + "file-manager"),
-    testData = require("./test-data"),
-    testUtilities = require("./test-utilities"),
-    session = testData.session,
-    extManager = {
-        getAllExtensionsToCopy: function (accessList) {
-            return ["app"];
-        },
-        getFeatureIdByExtensionBasename: function (extBasename) {
-            return "blackberry." + extBasename;
-        }
-    };
-
-describe("File manager", function () {
-
-    beforeEach(function () {
-        wrench.mkdirSyncRecursive(testData.session.outputDir);
-    });
-
-    afterEach(function () {
-        //cleanup packager-tests temp folder
-        wrench.rmdirSyncRecursive(testData.session.outputDir);
-    });
-
-    it("unzip() should extract 'from' zip file to 'to' directory", function () {
-        var from = session.archivePath,
-            to = session.sourceDir;
-
-        fileMgr.unzip(from, to);
-
-        expect(fs.statSync(session.sourceDir + "/a").isDirectory()).toBeTruthy();
-        expect(fs.statSync(session.sourceDir + "/a/dummy.txt").isFile()).toBeTruthy();
-        expect(fs.statSync(session.sourceDir + "/a/b").isDirectory()).toBeTruthy();
-        expect(fs.statSync(session.sourceDir + "/a/b/dummy2.txt").isFile()).toBeTruthy();
-        expect(fs.statSync(session.sourceDir + "/startPage.html").isFile()).toBeTruthy();
-        expect(fs.statSync(session.sourceDir + "/config.xml").isFile()).toBeTruthy();
-        expect(fs.statSync(session.sourceDir + "/test.png").isFile()).toBeTruthy();
-    });
-
-    it("cleanSource() should delete source folder", function () {
-        //Create packager-tests source folder
-        wrench.mkdirSyncRecursive(session.sourceDir);
-
-        fileMgr.cleanSource(session);
-        expect(fs.existsSync(session.sourceDir)).toBeFalsy();
-    });
-
-    it("prepareOutputFiles() should throw an error if the archive path doesn't exist", function () {
-        spyOn(wrench, "copyDirSyncRecursive");
-        var tempSession = testUtilities.cloneObj(session);
-        tempSession.archivePath = path.resolve("test/non-existant.zip");
-        expect(function () {
-            fileMgr.prepareOutputFiles(tempSession);
-        }).toThrow(localize.translate("EXCEPTION_INVALID_ARCHIVE_PATH", tempSession.archivePath));
-    });
-
-});


[18/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/test/basic.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/test/basic.js b/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/test/basic.js
deleted file mode 100644
index 41f9e10..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/test/basic.js
+++ /dev/null
@@ -1,207 +0,0 @@
-var Stream = require('stream')
-var tap = require('tap')
-var MS = require('../mute.js')
-
-// some marker objects
-var END = {}
-var PAUSE = {}
-var RESUME = {}
-
-function PassThrough () {
-  Stream.call(this)
-  this.readable = this.writable = true
-}
-
-PassThrough.prototype = Object.create(Stream.prototype, {
-  constructor: {
-    value: PassThrough
-  },
-  write: {
-    value: function (c) {
-      this.emit('data', c)
-      return true
-    }
-  },
-  end: {
-    value: function (c) {
-      if (c) this.write(c)
-      this.emit('end')
-    }
-  },
-  pause: {
-    value: function () {
-      this.emit('pause')
-    }
-  },
-  resume: {
-    value: function () {
-      this.emit('resume')
-    }
-  }
-})
-
-tap.test('incoming', function (t) {
-  var ms = new MS
-  var str = new PassThrough
-  str.pipe(ms)
-
-  var expect = ['foo', 'boo', END]
-  ms.on('data', function (c) {
-    t.equal(c, expect.shift())
-  })
-  ms.on('end', function () {
-    t.equal(END, expect.shift())
-    t.end()
-  })
-  str.write('foo')
-  ms.mute()
-  str.write('bar')
-  ms.unmute()
-  str.write('boo')
-  ms.mute()
-  str.write('blaz')
-  str.end('grelb')
-})
-
-tap.test('outgoing', function (t) {
-  var ms = new MS
-  var str = new PassThrough
-  ms.pipe(str)
-
-  var expect = ['foo', 'boo', END]
-  str.on('data', function (c) {
-    t.equal(c, expect.shift())
-  })
-  str.on('end', function () {
-    t.equal(END, expect.shift())
-    t.end()
-  })
-
-  ms.write('foo')
-  ms.mute()
-  ms.write('bar')
-  ms.unmute()
-  ms.write('boo')
-  ms.mute()
-  ms.write('blaz')
-  ms.end('grelb')
-})
-
-tap.test('isTTY', function (t) {
-  var str = new PassThrough
-  str.isTTY = true
-  str.columns=80
-  str.rows=24
-
-  var ms = new MS
-  t.equal(ms.isTTY, false)
-  t.equal(ms.columns, undefined)
-  t.equal(ms.rows, undefined)
-  ms.pipe(str)
-  t.equal(ms.isTTY, true)
-  t.equal(ms.columns, 80)
-  t.equal(ms.rows, 24)
-  str.isTTY = false
-  t.equal(ms.isTTY, false)
-  t.equal(ms.columns, 80)
-  t.equal(ms.rows, 24)
-  str.isTTY = true
-  t.equal(ms.isTTY, true)
-  t.equal(ms.columns, 80)
-  t.equal(ms.rows, 24)
-  ms.isTTY = false
-  t.equal(ms.isTTY, false)
-  t.equal(ms.columns, 80)
-  t.equal(ms.rows, 24)
-
-  ms = new MS
-  t.equal(ms.isTTY, false)
-  str.pipe(ms)
-  t.equal(ms.isTTY, true)
-  str.isTTY = false
-  t.equal(ms.isTTY, false)
-  str.isTTY = true
-  t.equal(ms.isTTY, true)
-  ms.isTTY = false
-  t.equal(ms.isTTY, false)
-
-  t.end()
-})
-
-tap.test('pause/resume incoming', function (t) {
-  var str = new PassThrough
-  var ms = new MS
-  str.on('pause', function () {
-    t.equal(PAUSE, expect.shift())
-  })
-  str.on('resume', function () {
-    t.equal(RESUME, expect.shift())
-  })
-  var expect = [PAUSE, RESUME, PAUSE, RESUME]
-  str.pipe(ms)
-  ms.pause()
-  ms.resume()
-  ms.pause()
-  ms.resume()
-  t.equal(expect.length, 0, 'saw all events')
-  t.end()
-})
-
-tap.test('replace with *', function (t) {
-  var str = new PassThrough
-  var ms = new MS({replace: '*'})
-  str.pipe(ms)
-  var expect = ['foo', '*****', 'bar', '***', 'baz', 'boo', '**', '****']
-
-  ms.on('data', function (c) {
-    t.equal(c, expect.shift())
-  })
-
-  str.write('foo')
-  ms.mute()
-  str.write('12345')
-  ms.unmute()
-  str.write('bar')
-  ms.mute()
-  str.write('baz')
-  ms.unmute()
-  str.write('baz')
-  str.write('boo')
-  ms.mute()
-  str.write('xy')
-  str.write('xyzΩ')
-
-  t.equal(expect.length, 0)
-  t.end()
-})
-
-tap.test('replace with ~YARG~', function (t) {
-  var str = new PassThrough
-  var ms = new MS({replace: '~YARG~'})
-  str.pipe(ms)
-  var expect = ['foo', '~YARG~~YARG~~YARG~~YARG~~YARG~', 'bar',
-                '~YARG~~YARG~~YARG~', 'baz', 'boo', '~YARG~~YARG~',
-                '~YARG~~YARG~~YARG~~YARG~']
-
-  ms.on('data', function (c) {
-    t.equal(c, expect.shift())
-  })
-
-  // also throw some unicode in there, just for good measure.
-  str.write('foo')
-  ms.mute()
-  str.write('ΩΩ')
-  ms.unmute()
-  str.write('bar')
-  ms.mute()
-  str.write('Ω')
-  ms.unmute()
-  str.write('baz')
-  str.write('boo')
-  ms.mute()
-  str.write('Ω')
-  str.write('ΩΩ')
-
-  t.equal(expect.length, 0)
-  t.end()
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/package.json b/blackberry10/node_modules/prompt/node_modules/read/package.json
deleted file mode 100644
index ce285ad..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "name": "read",
-  "version": "1.0.5",
-  "main": "lib/read.js",
-  "dependencies": {
-    "mute-stream": "~0.0.4"
-  },
-  "devDependencies": {
-    "tap": "*"
-  },
-  "engines": {
-    "node": ">=0.8"
-  },
-  "author": {
-    "name": "Isaac Z. Schlueter",
-    "email": "i@izs.me",
-    "url": "http://blog.izs.me/"
-  },
-  "description": "read(1) for node programs",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/read.git"
-  },
-  "license": "BSD",
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "readme": "## read\n\nFor reading user input from stdin.\n\nSimilar to the `readline` builtin's `question()` method, but with a\nfew more features.\n\n## USAGE\n\n```javascript\nvar read = require(\"read\")\nread(options, callback)\n```\n\nThe callback gets called with either the user input, or the default\nspecified, or an error, as `callback(error, result, isDefault)`\nnode style.\n\n## OPTIONS\n\nEvery option is optional.\n\n* `prompt` What to write to stdout before reading input.\n* `silent` Don't echo the output as the user types it.\n* `replace` Replace silenced characters with the supplied character value.\n* `timeout` Number of ms to wait for user input before giving up.\n* `default` The default value if the user enters nothing.\n* `edit` Allow the user to edit the default value.\n* `terminal` Treat the output as a TTY, whether it is or not.\n* `input` Readable stream to get input data from. (default `process.stdin`)\n* `output` Writeable stream to write prompts to. (defau
 lt: `process.stdout`)\n\nIf silent is true, and the input is a TTY, then read will set raw\nmode, and read character by character.\n\n## COMPATIBILITY\n\nThis module works sort of with node 0.6.  It does not work with node\nversions less than 0.6.  It is best on node 0.8.\n\nOn node version 0.6, it will remove all listeners on the input\nstream's `data` and `keypress` events, because the readline module did\nnot fully clean up after itself in that version of node, and did not\nmake it possible to clean up after it in a way that has no potential\nfor side effects.\n\nAdditionally, some of the readline options (like `terminal`) will not\nfunction in versions of node before 0.8, because they were not\nimplemented in the builtin readline module.\n\n## CONTRIBUTING\n\nPatches welcome.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/isaacs/read/issues"
-  },
-  "_id": "read@1.0.5",
-  "_from": "read@1.0.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/rs.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/rs.js b/blackberry10/node_modules/prompt/node_modules/read/rs.js
deleted file mode 100644
index d9f7f48..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/rs.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var read = require('read');
-read({ silent: true, prompt: 'stars: ' }, function(er, data) {
-  console.log(er, data)
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/test/basic.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/test/basic.js b/blackberry10/node_modules/prompt/node_modules/read/test/basic.js
deleted file mode 100644
index f0926f3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/test/basic.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var tap = require('tap')
-var read = require('../lib/read.js')
-
-if (process.argv[2] === 'child') {
-  return child()
-}
-
-var CLOSE = 'close'
-if (process.version.match(/^v0\.6/)) {
-  CLOSE = 'exit'
-}
-
-var spawn = require('child_process').spawn
-
-tap.test('basic', function (t) {
-  var child = spawn(process.execPath, [__filename, 'child'])
-  var output = ''
-  var write = child.stdin.write.bind(child.stdin)
-  child.stdout.on('data', function (c) {
-    console.error('data %s', c)
-    output += c
-    if (output.match(/Username: \(test-user\) $/)) {
-      process.nextTick(write.bind(null, 'a user\n'))
-    } else if (output.match(/Password: \(<default hidden>\) $/)) {
-      process.nextTick(write.bind(null, 'a password\n'))
-    } else if (output.match(/Password again: \(<default hidden>\) $/)) {
-      process.nextTick(write.bind(null, 'a password\n'))
-    } else {
-      console.error('prompts done, output=%j', output)
-    }
-  })
-
-  var result = ''
-  child.stderr.on('data', function (c) {
-    result += c
-    console.error('result %j', c.toString())
-  })
-
-  child.on(CLOSE, function () {
-    result = JSON.parse(result)
-    t.same(result, {"user":"a user","pass":"a password","verify":"a password","passMatch":true})
-    t.equal(output, 'Username: (test-user) Password: (<default hidden>) Password again: (<default hidden>) ')
-    t.end()
-  })
-})
-
-function child () {
-  read({prompt: "Username: ", default: "test-user" }, function (er, user) {
-    read({prompt: "Password: ", default: "test-pass", silent: true }, function (er, pass) {
-      read({prompt: "Password again: ", default: "test-pass", silent: true }, function (er, pass2) {
-        console.error(JSON.stringify({user: user,
-                       pass: pass,
-                       verify: pass2,
-                       passMatch: (pass === pass2)}))
-        if (process.stdin.unref)
-          process.stdin.unref()
-      })
-    })
-  })
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/test/defaults.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/test/defaults.js b/blackberry10/node_modules/prompt/node_modules/read/test/defaults.js
deleted file mode 100644
index e3d2ac7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/test/defaults.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var tap = require('tap')
-var read = require('../lib/read.js')
-
-if (process.argv[2] === 'child') {
-  return child()
-}
-
-var CLOSE = 'close'
-if (process.version.match(/^v0\.6/)) {
-  CLOSE = 'exit'
-}
-
-var spawn = require('child_process').spawn
-
-tap.test('defaults', function (t) {
-  var child = spawn(process.execPath, [__filename, 'child'])
-  var output = ''
-  var write = child.stdin.write.bind(child.stdin)
-  child.stdout.on('data', function (c) {
-    console.error('data %s', c)
-    output += c
-    if (output.match(/Username: \(test-user\) $/)) {
-      process.nextTick(write.bind(null, '\n'))
-    } else if (output.match(/Password: \(<default hidden>\) $/)) {
-      process.nextTick(write.bind(null, '\n'))
-    } else if (output.match(/Password again: \(<default hidden>\) $/)) {
-      process.nextTick(write.bind(null, '\n'))
-    } else {
-      console.error('prompts done, output=%j', output)
-    }
-  })
-
-  var result = ''
-  child.stderr.on('data', function (c) {
-    result += c
-    console.error('result %j', c.toString())
-  })
-
-  child.on(CLOSE, function () {
-    result = JSON.parse(result)
-    t.same(result, {"user":"test-user","pass":"test-pass","verify":"test-pass","passMatch":true})
-    t.equal(output, 'Username: (test-user) Password: (<default hidden>) Password again: (<default hidden>) ')
-    t.end()
-  })
-})
-
-function child () {
-  read({prompt: "Username: ", default: "test-user" }, function (er, user) {
-    read({prompt: "Password: ", default: "test-pass", silent: true }, function (er, pass) {
-      read({prompt: "Password again: ", default: "test-pass", silent: true }, function (er, pass2) {
-        console.error(JSON.stringify({user: user,
-                       pass: pass,
-                       verify: pass2,
-                       passMatch: (pass === pass2)}))
-        if (process.stdin.unref)
-          process.stdin.unref()
-      })
-    })
-  })
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/test/many.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/test/many.js b/blackberry10/node_modules/prompt/node_modules/read/test/many.js
deleted file mode 100644
index 6a2f87b..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/test/many.js
+++ /dev/null
@@ -1,83 +0,0 @@
-var tap = require('tap')
-var read = require('../lib/read.js')
-
-var CLOSE = 'close'
-if (process.version.match(/^v0\.6/)) {
-  CLOSE = 'exit'
-}
-
-if (process.argv[2] === 'child') {
-  return child()
-}
-
-var spawn = require('child_process').spawn
-function child () {
-  read({prompt:'1'}, function (er, r1) {if (er) throw er
-  read({prompt:'2'}, function (er, r2) {if (er) throw er
-  read({prompt:'3'}, function (er, r3) {if (er) throw er
-  read({prompt:'4'}, function (er, r4) {if (er) throw er
-  read({prompt:'5'}, function (er, r5) {if (er) throw er
-  read({prompt:'6'}, function (er, r6) {if (er) throw er
-  read({prompt:'7'}, function (er, r7) {if (er) throw er
-  read({prompt:'8'}, function (er, r8) {if (er) throw er
-  read({prompt:'9'}, function (er, r9) {if (er) throw er
-  read({prompt:'10'}, function (er, r10) {if (er) throw er
-  read({prompt:'11'}, function (er, r11) {if (er) throw er
-  read({prompt:'12'}, function (er, r12) {if (er) throw er
-  read({prompt:'13'}, function (er, r13) {if (er) throw er
-  read({prompt:'14'}, function (er, r14) {if (er) throw er
-  read({prompt:'15'}, function (er, r15) {if (er) throw er
-  read({prompt:'16'}, function (er, r16) {if (er) throw er
-  read({prompt:'17'}, function (er, r17) {if (er) throw er
-  read({prompt:'18'}, function (er, r18) {if (er) throw er
-    console.log(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10,
-                r11, r12, r13, r14, r15, r16, r17, r18)
-    if (process.stdin.unref)
-      process.stdin.unref()
-  })})})})})})})})})})})})})})})})})})
-}
-
-tap.test('many reads', function (t) {
-  var child = spawn(process.execPath, [__filename, 'child'])
-  var n = 0
-  var output = ''
-  var expect = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ' +
-               '16 17 18 1 2 3 4 5 6 7 8 9 10 11 12 ' +
-               '13 14 15 16 17 18\n'
-  var write = child.stdin.write.bind(child.stdin)
-  var answers =
-      [ '1\n',
-        '2\n',
-        '3\n',
-        '4\n',
-        '5\n',
-        '6\n',
-        '7\n',
-        '8\n',
-        '9\n',
-        '10\n',
-        '11\n',
-        '12\n',
-        '13\n',
-        '14\n',
-        '15\n',
-        '16\n',
-        '17\n',
-        '18\n' ]
-  child.stdout.on('data', function (c) {
-    n++;
-    output += c
-    if (answers.length) {
-      write(answers.shift())
-    }
-  })
-  child.stderr.on('data', function (c) {
-    output += c
-    console.error('' + c)
-  })
-  child.on(CLOSE, function (c) {
-    t.equal(output, expect)
-    t.equal(n, 19)
-    t.end()
-  })
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/.npmignore b/blackberry10/node_modules/prompt/node_modules/revalidator/.npmignore
deleted file mode 100644
index 5171c54..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/.travis.yml b/blackberry10/node_modules/prompt/node_modules/revalidator/.travis.yml
deleted file mode 100644
index c958222..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: node_js
-node_js:
-  - 0.4
-  - 0.6
-  - 0.7
-
-notifications:
-  email:
-    - travis@nodejitsu.com
-  irc: "irc.freenode.org#nodejitsu"
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/CHANGELOG.md b/blackberry10/node_modules/prompt/node_modules/revalidator/CHANGELOG.md
deleted file mode 100644
index 8befb22..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/CHANGELOG.md
+++ /dev/null
@@ -1,25 +0,0 @@
-
-0.1.3 / 2012-10-17
-==================
-
-  * Fixed case problem with types
-
-0.1.2 / 2012-06-27
-==================
-
-  * Added host-name String format
-  * Added support for additionalProperties
-  * Added few default validation messages for formats
-
-0.1.1 / 2012-04-16
-==================
-
-  * Added default and custom error message support
-  * Added suport for conform function
-  * Updated date-time format
-
-0.1.0 / 2011-11-09
-=================
-
-  * Initial release
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/LICENSE b/blackberry10/node_modules/prompt/node_modules/revalidator/LICENSE
deleted file mode 100644
index a83d179..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/LICENSE
+++ /dev/null
@@ -1,179 +0,0 @@
-
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-Copyright (c) 2009-2010 Alexis Sellier, Charlie Robbins, Nodejitsu Inc.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/README.md b/blackberry10/node_modules/prompt/node_modules/revalidator/README.md
deleted file mode 100644
index 89cbdb4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/README.md
+++ /dev/null
@@ -1,287 +0,0 @@
-# revalidator [![Build Status](https://secure.travis-ci.org/flatiron/revalidator.png)](http://travis-ci.org/flatiron/revalidator)
-
-A cross-browser / node.js validator used by resourceful and flatiron.
-
-## Example
-The core of `revalidator` is simple and succinct: `revalidator.validate(obj, schema)`: 
- 
-``` js
-  var revalidator = require('revalidator');
-  
-  console.dir(revalidator.validate(someObject, {
-    properties: {
-      url: {
-        description: 'the url the object should be stored at',
-        type: 'string',
-        pattern: '^/[^#%&*{}\\:<>?\/+]+$',
-        required: true
-      },
-      challenge: {
-        description: 'a means of protecting data (insufficient for production, used as example)',
-        type: 'string',
-        minLength: 5
-      },
-      body: {
-        description: 'what to store at the url',
-        type: 'any',
-        default: null
-      }
-    }
-  }));
-```
-
-This will return with a value indicating if the `obj` conforms to the `schema`. If it does not, a descriptive object will be returned containing the errors encountered with validation.
-
-``` js
-  {
-    valid: true // or false
-    errors: [/* Array of errors if valid is false */]
-  }
-```
-
-In the browser, the validation function is exposed on `window.validate` by simply including `revalidator.js`.
-
-## Installation
-
-### Installing npm (node package manager)
-``` bash
-  $ curl http://npmjs.org/install.sh | sh
-```
-
-### Installing revalidator
-``` bash 
-  $ [sudo] npm install revalidator
-```
-
-## Usage
-
-`revalidator` takes json-schema as input to validate objects.
-
-### revalidator.validate (obj, schema, options)
-
-This will return with a value indicating if the `obj` conforms to the `schema`. If it does not, a descriptive object will be returned containing the errors encountered with validation.
-
-``` js
-{
-  valid: true // or false
-  errors: [/* Array of errors if valid is false */]
-}
-```
-
-#### Available Options
-
-* __validateFormats__: Enforce format constraints (_default true_)
-* __validateFormatsStrict__: When `validateFormats` is _true_ treat unrecognized formats as validation errors (_default false_)
-* __validateFormatExtensions__: When `validateFormats` is _true_ also validate formats defined in `validate.formatExtensions` (_default true_)
-* __cast__: Enforce casting of some types (for integers/numbers are only supported) when it's possible, e.g. `"42" => 42`, but `"forty2" => "forty2"` for the `integer` type.
-
-### Schema
-For a property an `value` is that which is given as input for validation where as an `expected value` is the value of the below fields
-
-#### required
-If true, the value should not be empty
-
-```js
-{ required: true }
-```
-
-#### type
-The `type of value` should be equal to the expected value
-
-```js
-{ type: 'string' }
-{ type: 'number' }
-{ type: 'integer' }
-{ type: 'array' }
-{ type: 'boolean' }
-{ type: 'object' }
-{ type: 'null' }
-{ type: 'any' }
-{ type: ['boolean', 'string'] }
-```
-
-#### pattern
-The expected value regex needs to be satisfied by the value
-
-```js
-{ pattern: /^[a-z]+$/ }
-```
-
-#### maxLength
-The length of value must be greater than or equal to expected value
-
-```js
-{ maxLength: 8 }
-```
-
-#### minLength
-The length of value must be lesser than or equal to expected value
-
-```js
-{ minLength: 8 }
-```
-
-#### minimum
-Value must be greater than or equal to the expected value
-
-```js
-{ minimum: 10 }
-```
-
-#### maximum
-Value must be lesser than or equal to the expected value
-
-```js
-{ maximum: 10 }
-```
-
-#### exclusiveMinimum
-Value must be greater than expected value
-
-```js
-{ exclusiveMinimum: 9 }
-```
-
-### exclusiveMaximum
-Value must be lesser than expected value
-
-```js
-{ exclusiveMaximum: 11 }
-```
-
-#### divisibleBy
-Value must be divisible by expected value
-
-```js
-{ divisibleBy: 5 }
-{ divisibleBy: 0.5 }
-```
-
-#### minItems
-Value must contain more then expected value number of items
-
-```js
-{ minItems: 2 }
-```
-
-#### maxItems
-Value must contains less then expected value number of items
-
-```js
-{ maxItems: 5 }
-```
-
-#### uniqueItems
-Value must hold a unique set of values
-
-```js
-{ uniqueItems: true }
-```
-
-#### enum
-Value must be present in the array of expected value
-
-```js
-{ enum: ['month', 'year'] }
-```
-
-#### format
-Value must be a valid format
-
-```js
-{ format: 'url' }
-{ format: 'email' }
-{ format: 'ip-address' }
-{ format: 'ipv6' }
-{ format: 'date-time' }
-{ format: 'date' }
-{ format: 'time' }
-{ format: 'color' }
-{ format: 'host-name' }
-{ format: 'utc-millisec' }
-{ format: 'regex' }
-```
-
-#### conform
-Value must conform to constraint denoted by expected value
-
-```js
-{ conform: function (v) {
-    if (v%3==1) return true;
-    return false;
-  }
-}
-```
-
-#### dependencies
-Value is valid only if the dependent value is valid
-
-```js
-{
-  town: { required: true, dependencies: 'country' },
-  country: { maxLength: 3, required: true }
-}
-```
-
-### Nested Schema
-We also allow nested schema
-
-```js
-{
-  properties: {
-    title: {
-      type: 'string',
-      maxLength: 140,
-      required: true
-    },
-    author: {
-      type: 'object',
-      required: true,
-      properties: {
-        name: {
-          type: 'string',
-          required: true
-        },
-        email: {
-          type: 'string',
-          format: 'email'
-        }
-      }
-    }
-  }
-}
-```
-
-### Custom Messages
-We also allow custom message for different constraints
-
-```js
-{
-  type: 'string',
-  format: 'url'
-  messages: {
-    type: 'Not a string type',
-    format: 'Expected format is a url'
-  }
-```
-
-```js
-{
-  conform: function () { ... },
-  message: 'This can be used as a global message'
-}
-```
-
-## Tests
-All tests are written with [vows][0] and should be run with [npm][1]:
-
-``` bash
-  $ npm test
-```
-
-#### Author: [Charlie Robbins](http://nodejitsu.com), [Alexis Sellier](http://cloudhead.io)
-#### Contributors: [Fedor Indutny](http://github.com/indutny), [Bradley Meck](http://github.com/bmeck), [Laurie Harper](http://laurie.holoweb.net/)
-#### License: Apache 2.0
-
-[0]: http://vowsjs.org
-[1]: http://npmjs.org

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/lib/revalidator.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/lib/revalidator.js b/blackberry10/node_modules/prompt/node_modules/revalidator/lib/revalidator.js
deleted file mode 100644
index fb00dff..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/lib/revalidator.js
+++ /dev/null
@@ -1,422 +0,0 @@
-(function (exports) {
-  exports.validate = validate;
-  exports.mixin = mixin;
-
-  //
-  // ### function validate (object, schema, options)
-  // #### {Object} object the object to validate.
-  // #### {Object} schema (optional) the JSON Schema to validate against.
-  // #### {Object} options (optional) options controlling the validation
-  //      process. See {@link #validate.defaults) for details.
-  // Validate <code>object</code> against a JSON Schema.
-  // If <code>object</code> is self-describing (i.e. has a
-  // <code>$schema</code> property), it will also be validated
-  // against the referenced schema. [TODO]: This behaviour bay be
-  // suppressed by setting the {@link #validate.options.???}
-  // option to <code>???</code>.[/TODO]
-  //
-  // If <code>schema</code> is not specified, and <code>object</code>
-  // is not self-describing, validation always passes.
-  //
-  // <strong>Note:</strong> in order to pass options but no schema,
-  // <code>schema</code> <em>must</em> be specified in the call to
-  // <code>validate()</code>; otherwise, <code>options</code> will
-  // be interpreted as the schema. <code>schema</code> may be passed
-  // as <code>null</code>, <code>undefinded</code>, or the empty object
-  // (<code>{}</code>) in this case.
-  //
-  function validate(object, schema, options) {
-    options = mixin({}, options, validate.defaults);
-    var errors = [];
-
-    validateObject(object, schema, options, errors);
-
-    //
-    // TODO: self-described validation
-    // if (! options.selfDescribing) { ... }
-    //
-
-    return {
-      valid: !(errors.length),
-      errors: errors
-    };
-  };
-
-  /**
-   * Default validation options. Defaults can be overridden by
-   * passing an 'options' hash to {@link #validate}. They can
-   * also be set globally be changing the values in
-   * <code>validate.defaults</code> directly.
-   */
-  validate.defaults = {
-      /**
-       * <p>
-       * Enforce 'format' constraints.
-       * </p><p>
-       * <em>Default: <code>true</code></em>
-       * </p>
-       */
-      validateFormats: true,
-      /**
-       * <p>
-       * When {@link #validateFormats} is <code>true</code>,
-       * treat unrecognized formats as validation errors.
-       * </p><p>
-       * <em>Default: <code>false</code></em>
-       * </p>
-       *
-       * @see validation.formats for default supported formats.
-       */
-      validateFormatsStrict: false,
-      /**
-       * <p>
-       * When {@link #validateFormats} is <code>true</code>,
-       * also validate formats defined in {@link #validate.formatExtensions}.
-       * </p><p>
-       * <em>Default: <code>true</code></em>
-       * </p>
-       */
-      validateFormatExtensions: true
-  };
-
-  /**
-   * Default messages to include with validation errors.
-   */
-  validate.messages = {
-      required:         "is required",
-      minLength:        "is too short (minimum is %{expected} characters)",
-      maxLength:        "is too long (maximum is %{expected} characters)",
-      pattern:          "invalid input",
-      minimum:          "must be greater than or equal to %{expected}",
-      maximum:          "must be less than or equal to %{expected}",
-      exclusiveMinimum: "must be greater than %{expected}",
-      exclusiveMaximum: "must be less than %{expected}",
-      divisibleBy:      "must be divisible by %{expected}",
-      minItems:         "must contain more than %{expected} items",
-      maxItems:         "must contain less than %{expected} items",
-      uniqueItems:      "must hold a unique set of values",
-      format:           "is not a valid %{expected}",
-      conform:          "must conform to given constraint",
-      type:             "must be of %{expected} type"
-  };
-  validate.messages['enum'] = "must be present in given enumerator";
-
-  /**
-   *
-   */
-  validate.formats = {
-    'email':          /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,
-    'ip-address':     /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i,
-    'ipv6':           /^([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}$/,
-    'date-time':      /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:.\d{1,3})?Z$/,
-    'date':           /^\d{4}-\d{2}-\d{2}$/,
-    'time':           /^\d{2}:\d{2}:\d{2}$/,
-    'color':          /^#[a-z0-9]{6}|#[a-z0-9]{3}|(?:rgb\(\s*(?:[+-]?\d+%?)\s*,\s*(?:[+-]?\d+%?)\s*,\s*(?:[+-]?\d+%?)\s*\))aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow$/i,
-    //'style':        (not supported)
-    //'phone':        (not supported)
-    //'uri':          (not supported)
-    'host-name':      /^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])/,
-    'utc-millisec':   {
-      test: function (value) {
-        return typeof(value) === 'number' && value >= 0;
-      }
-    },
-    'regex':          {
-      test: function (value) {
-        try { new RegExp(value) }
-        catch (e) { return false }
-
-        return true;
-      }
-    }
-  };
-
-  /**
-   *
-   */
-  validate.formatExtensions = {
-    'url': /^(https?|ftp|git):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\u
 F900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
-  };
-
-  function mixin(obj) {
-    var sources = Array.prototype.slice.call(arguments, 1);
-    while (sources.length) {
-      var source = sources.shift();
-      if (!source) { continue }
-
-      if (typeof(source) !== 'object') {
-        throw new TypeError('mixin non-object');
-      }
-
-      for (var p in source) {
-        if (source.hasOwnProperty(p)) {
-          obj[p] = source[p];
-        }
-      }
-    }
-
-    return obj;
-  };
-
-  function validateObject(object, schema, options, errors) {
-    var props, allProps = Object.keys(object),
-        visitedProps = [];
-
-    // see 5.2
-    if (schema.properties) {
-      props = schema.properties;
-      for (var p in props) {
-        if (props.hasOwnProperty(p)) {
-          visitedProps.push(p);
-          validateProperty(object, object[p], p, props[p], options, errors);
-        }
-      }
-    }
-
-    // see 5.3
-    if (schema.patternProperties) {
-      props = schema.patternProperties;
-      for (var p in props) {
-        if (props.hasOwnProperty(p)) {
-          var re = new RegExp(p);
-
-          // Find all object properties that are matching `re`
-          for (var k in object) {
-            if (object.hasOwnProperty(k)) {
-              visitedProps.push(k);
-              if (re.exec(k) !== null) {
-                validateProperty(object, object[k], p, props[p], options, errors);
-              }
-            }
-          }
-        }
-      }
-    }
-
-    // see 5.4
-    if (undefined !== schema.additionalProperties) {
-      var i, l;
-
-      var unvisitedProps = allProps.filter(function(k){
-        return -1 === visitedProps.indexOf(k);
-      });
-
-      // Prevent additional properties; each unvisited property is therefore an error
-      if (schema.additionalProperties === false && unvisitedProps.length > 0) {
-        for (i = 0, l = unvisitedProps.length; i < l; i++) {
-          error("additionalProperties", unvisitedProps[i], object[unvisitedProps[i]], false, errors);
-        }
-      }
-      // additionalProperties is a schema and validate unvisited properties against that schema
-      else if (typeof schema.additionalProperties == "object" && unvisitedProps.length > 0) {
-        for (i = 0, l = unvisitedProps.length; i < l; i++) {
-          validateProperty(object, object[unvisitedProps[i]], unvisitedProps[i], schema.unvisitedProperties, options, errors);
-        }
-      }
-    }
-
-  };
-
-  function validateProperty(object, value, property, schema, options, errors) {
-    var format,
-        valid,
-        spec,
-        type;
-
-    function constrain(name, value, assert) {
-      if (schema[name] !== undefined && !assert(value, schema[name])) {
-        error(name, property, value, schema, errors);
-      }
-    }
-
-    if (value === undefined || value === '') {
-      if (schema.required && schema.type !== 'any') {
-        return error('required', property, undefined, schema, errors);
-      } else {
-        return;
-      }
-    }
-
-    if (options.cast) {
-      if (('integer' === schema.type || 'number' === schema.type) && value == +value) {
-        value = +value;
-      }
-
-      if ('boolean' === schema.type) {
-        if ('true' === value || '1' === value || 1 === value) {
-          value = true;
-        }
-
-        if ('false' === value || '0' === value || 0 === value) {
-          value = false;
-        }
-      }
-    }
-
-    if (schema.format && options.validateFormats) {
-      format = schema.format;
-
-      if (options.validateFormatExtensions) { spec = validate.formatExtensions[format] }
-      if (!spec) { spec = validate.formats[format] }
-      if (!spec) {
-        if (options.validateFormatsStrict) {
-          return error('format', property, value, schema, errors);
-        }
-      }
-      else {
-        if (!spec.test(value)) {
-          return error('format', property, value, schema, errors);
-        }
-      }
-    }
-
-    if (schema['enum'] && schema['enum'].indexOf(value) === -1) {
-      error('enum', property, value, schema, errors);
-    }
-
-    // Dependencies (see 5.8)
-    if (typeof schema.dependencies === 'string' &&
-        object[schema.dependencies] === undefined) {
-      error('dependencies', property, null, schema, errors);
-    }
-
-    if (isArray(schema.dependencies)) {
-      for (var i = 0, l = schema.dependencies.length; i < l; i++) {
-        if (object[schema.dependencies[i]] === undefined) {
-          error('dependencies', property, null, schema, errors);
-        }
-      }
-    }
-
-    if (typeof schema.dependencies === 'object') {
-      validateObject(object, schema.dependencies, options, errors);
-    }
-
-    checkType(value, schema.type, function(err, type) {
-      if (err) return error('type', property, typeof value, schema, errors);
-
-      constrain('conform', value, function (a, e) { return e(a, object) });
-
-      switch (type || (isArray(value) ? 'array' : typeof value)) {
-        case 'string':
-          constrain('minLength', value.length, function (a, e) { return a >= e });
-          constrain('maxLength', value.length, function (a, e) { return a <= e });
-          constrain('pattern',   value,        function (a, e) {
-            e = typeof e === 'string'
-              ? e = new RegExp(e)
-              : e;
-            return e.test(a)
-          });
-          break;
-        case 'integer':
-        case 'number':
-          constrain('minimum',     value, function (a, e) { return a >= e });
-          constrain('maximum',     value, function (a, e) { return a <= e });
-          constrain('exclusiveMinimum', value, function (a, e) { return a > e });
-          constrain('exclusiveMaximum', value, function (a, e) { return a < e });
-          constrain('divisibleBy', value, function (a, e) {
-            var multiplier = Math.max((a - Math.floor(a)).toString().length - 2, (e - Math.floor(e)).toString().length - 2);
-            multiplier = multiplier > 0 ? Math.pow(10, multiplier) : 1;
-            return (a * multiplier) % (e * multiplier) === 0
-          });
-          break;
-        case 'array':
-          constrain('items', value, function (a, e) {
-            for (var i = 0, l = a.length; i < l; i++) {
-              validateProperty(object, a[i], property, e, options, errors);
-            }
-            return true;
-          });
-          constrain('minItems', value, function (a, e) { return a.length >= e });
-          constrain('maxItems', value, function (a, e) { return a.length <= e });
-          constrain('uniqueItems', value, function (a) {
-            var h = {};
-
-            for (var i = 0, l = a.length; i < l; i++) {
-              var key = JSON.stringify(a[i]);
-              if (h[key]) return false;
-              h[key] = true;
-            }
-
-            return true;
-          });
-          break;
-        case 'object':
-          // Recursive validation
-          if (schema.properties || schema.patternProperties || schema.additionalProperties) {
-            validateObject(value, schema, options, errors);
-          }
-          break;
-      }
-    });
-  };
-
-  function checkType(val, type, callback) {
-    var result = false,
-        types = isArray(type) ? type : [type];
-
-    // No type - no check
-    if (type === undefined) return callback(null, type);
-
-    // Go through available types
-    // And fine first matching
-    for (var i = 0, l = types.length; i < l; i++) {
-      type = types[i].toLowerCase().trim();
-      if (type === 'string' ? typeof val === 'string' :
-          type === 'array' ? isArray(val) :
-          type === 'object' ? val && typeof val === 'object' &&
-                             !isArray(val) :
-          type === 'number' ? typeof val === 'number' :
-          type === 'integer' ? typeof val === 'number' && ~~val === val :
-          type === 'null' ? val === null :
-          type === 'boolean'? typeof val === 'boolean' :
-          type === 'date' ? isDate(val) :
-          type === 'any' ? typeof val !== 'undefined' : false) {
-        return callback(null, type);
-      }
-    };
-
-    callback(true);
-  };
-
-  function error(attribute, property, actual, schema, errors) {
-    var lookup = { expected: schema[attribute], attribute: attribute, property: property };
-    var message = schema.messages && schema.messages[attribute] || schema.message || validate.messages[attribute] || "no default message";
-    message = message.replace(/%\{([a-z]+)\}/ig, function (_, match) { return lookup[match.toLowerCase()] || ''; });
-    errors.push({
-      attribute: attribute,
-      property:  property,
-      expected:  schema[attribute],
-      actual:    actual,
-      message:   message
-    });
-  };
-
-  function isArray(value) {
-    var s = typeof value;
-    if (s === 'object') {
-      if (value) {
-        if (typeof value.length === 'number' &&
-           !(value.propertyIsEnumerable('length')) &&
-           typeof value.splice === 'function') {
-           return true;
-        }
-      }
-    }
-    return false;
-  }
-
-  function isDate(value) {
-    var s = typeof value;
-    if (s === 'object') {
-      if (value) {
-        if (typeof value.getTime === 'function') {
-          return true;
-        }
-      }
-    }
-
-    return false;
-  }
-
-})(typeof(window) === 'undefined' ? module.exports : (window.json = window.json || {}));

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/package.json b/blackberry10/node_modules/prompt/node_modules/revalidator/package.json
deleted file mode 100644
index 3f57acb..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "name": "revalidator",
-  "version": "0.1.6",
-  "description": "A cross-browser / node.js validator used by resourceful",
-  "author": {
-    "name": "Nodejitsu Inc.",
-    "email": "info@nodejitsu.com"
-  },
-  "maintainers": [
-    {
-      "name": "indexzero",
-      "email": "charlie@nodejitsu.com"
-    },
-    {
-      "name": "indutny",
-      "email": "fedor.indutny@gmail.com"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/flatiron/revalidator.git"
-  },
-  "devDependencies": {
-    "vows": "0.7.0"
-  },
-  "main": "./lib/revalidator",
-  "scripts": {
-    "test": "vows test/*-test.js --spec"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
-  },
-  "readme": "# revalidator [![Build Status](https://secure.travis-ci.org/flatiron/revalidator.png)](http://travis-ci.org/flatiron/revalidator)\n\nA cross-browser / node.js validator used by resourceful and flatiron.\n\n## Example\nThe core of `revalidator` is simple and succinct: `revalidator.validate(obj, schema)`: \n \n``` js\n  var revalidator = require('revalidator');\n  \n  console.dir(revalidator.validate(someObject, {\n    properties: {\n      url: {\n        description: 'the url the object should be stored at',\n        type: 'string',\n        pattern: '^/[^#%&*{}\\\\:<>?\\/+]+$',\n        required: true\n      },\n      challenge: {\n        description: 'a means of protecting data (insufficient for production, used as example)',\n        type: 'string',\n        minLength: 5\n      },\n      body: {\n        description: 'what to store at the url',\n        type: 'any',\n        default: null\n      }\n    }\n  }));\n```\n\nThis will return with a value indicating if the
  `obj` conforms to the `schema`. If it does not, a descriptive object will be returned containing the errors encountered with validation.\n\n``` js\n  {\n    valid: true // or false\n    errors: [/* Array of errors if valid is false */]\n  }\n```\n\nIn the browser, the validation function is exposed on `window.validate` by simply including `revalidator.js`.\n\n## Installation\n\n### Installing npm (node package manager)\n``` bash\n  $ curl http://npmjs.org/install.sh | sh\n```\n\n### Installing revalidator\n``` bash \n  $ [sudo] npm install revalidator\n```\n\n## Usage\n\n`revalidator` takes json-schema as input to validate objects.\n\n### revalidator.validate (obj, schema, options)\n\nThis will return with a value indicating if the `obj` conforms to the `schema`. If it does not, a descriptive object will be returned containing the errors encountered with validation.\n\n``` js\n{\n  valid: true // or false\n  errors: [/* Array of errors if valid is false */]\n}\n```\n\n#### Availabl
 e Options\n\n* __validateFormats__: Enforce format constraints (_default true_)\n* __validateFormatsStrict__: When `validateFormats` is _true_ treat unrecognized formats as validation errors (_default false_)\n* __validateFormatExtensions__: When `validateFormats` is _true_ also validate formats defined in `validate.formatExtensions` (_default true_)\n* __cast__: Enforce casting of some types (for integers/numbers are only supported) when it's possible, e.g. `\"42\" => 42`, but `\"forty2\" => \"forty2\"` for the `integer` type.\n\n### Schema\nFor a property an `value` is that which is given as input for validation where as an `expected value` is the value of the below fields\n\n#### required\nIf true, the value should not be empty\n\n```js\n{ required: true }\n```\n\n#### type\nThe `type of value` should be equal to the expected value\n\n```js\n{ type: 'string' }\n{ type: 'number' }\n{ type: 'integer' }\n{ type: 'array' }\n{ type: 'boolean' }\n{ type: 'object' }\n{ type: 'null' }\n{
  type: 'any' }\n{ type: ['boolean', 'string'] }\n```\n\n#### pattern\nThe expected value regex needs to be satisfied by the value\n\n```js\n{ pattern: /^[a-z]+$/ }\n```\n\n#### maxLength\nThe length of value must be greater than or equal to expected value\n\n```js\n{ maxLength: 8 }\n```\n\n#### minLength\nThe length of value must be lesser than or equal to expected value\n\n```js\n{ minLength: 8 }\n```\n\n#### minimum\nValue must be greater than or equal to the expected value\n\n```js\n{ minimum: 10 }\n```\n\n#### maximum\nValue must be lesser than or equal to the expected value\n\n```js\n{ maximum: 10 }\n```\n\n#### exclusiveMinimum\nValue must be greater than expected value\n\n```js\n{ exclusiveMinimum: 9 }\n```\n\n### exclusiveMaximum\nValue must be lesser than expected value\n\n```js\n{ exclusiveMaximum: 11 }\n```\n\n#### divisibleBy\nValue must be divisible by expected value\n\n```js\n{ divisibleBy: 5 }\n{ divisibleBy: 0.5 }\n```\n\n#### minItems\nValue must contain more then e
 xpected value number of items\n\n```js\n{ minItems: 2 }\n```\n\n#### maxItems\nValue must contains less then expected value number of items\n\n```js\n{ maxItems: 5 }\n```\n\n#### uniqueItems\nValue must hold a unique set of values\n\n```js\n{ uniqueItems: true }\n```\n\n#### enum\nValue must be present in the array of expected value\n\n```js\n{ enum: ['month', 'year'] }\n```\n\n#### format\nValue must be a valid format\n\n```js\n{ format: 'url' }\n{ format: 'email' }\n{ format: 'ip-address' }\n{ format: 'ipv6' }\n{ format: 'date-time' }\n{ format: 'date' }\n{ format: 'time' }\n{ format: 'color' }\n{ format: 'host-name' }\n{ format: 'utc-millisec' }\n{ format: 'regex' }\n```\n\n#### conform\nValue must conform to constraint denoted by expected value\n\n```js\n{ conform: function (v) {\n    if (v%3==1) return true;\n    return false;\n  }\n}\n```\n\n#### dependencies\nValue is valid only if the dependent value is valid\n\n```js\n{\n  town: { required: true, dependencies: 'country' },\
 n  country: { maxLength: 3, required: true }\n}\n```\n\n### Nested Schema\nWe also allow nested schema\n\n```js\n{\n  properties: {\n    title: {\n      type: 'string',\n      maxLength: 140,\n      required: true\n    },\n    author: {\n      type: 'object',\n      required: true,\n      properties: {\n        name: {\n          type: 'string',\n          required: true\n        },\n        email: {\n          type: 'string',\n          format: 'email'\n        }\n      }\n    }\n  }\n}\n```\n\n### Custom Messages\nWe also allow custom message for different constraints\n\n```js\n{\n  type: 'string',\n  format: 'url'\n  messages: {\n    type: 'Not a string type',\n    format: 'Expected format is a url'\n  }\n```\n\n```js\n{\n  conform: function () { ... },\n  message: 'This can be used as a global message'\n}\n```\n\n## Tests\nAll tests are written with [vows][0] and should be run with [npm][1]:\n\n``` bash\n  $ npm test\n```\n\n#### Author: [Charlie Robbins](http://nodejitsu.com), 
 [Alexis Sellier](http://cloudhead.io)\n#### Contributors: [Fedor Indutny](http://github.com/indutny), [Bradley Meck](http://github.com/bmeck), [Laurie Harper](http://laurie.holoweb.net/)\n#### License: Apache 2.0\n\n[0]: http://vowsjs.org\n[1]: http://npmjs.org\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/flatiron/revalidator/issues"
-  },
-  "_id": "revalidator@0.1.6",
-  "_from": "revalidator@0.1.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/revalidator/test/validator-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/revalidator/test/validator-test.js b/blackberry10/node_modules/prompt/node_modules/revalidator/test/validator-test.js
deleted file mode 100644
index 900715d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/revalidator/test/validator-test.js
+++ /dev/null
@@ -1,404 +0,0 @@
-var assert = require('assert'),
-    vows = require('vows'),
-    revalidator = require('../lib/revalidator');
-
-function clone(object) {
-  return Object.keys(object).reduce(function (obj, k) {
-    obj[k] = object[k];
-    return obj;
-  }, {});
-};
-
-
-function assertInvalid(res) {
-  assert.isObject(res);
-  assert.strictEqual(res.valid, false);
-}
-
-function assertValid(res) {
-  assert.isObject(res);
-  assert.strictEqual(res.valid, true);
-}
-
-function assertHasError(attr, field) {
-  return function (res) {
-    assert.notEqual(res.errors.length, 0);
-    assert.ok(res.errors.some(function (e) {
-      return e.attribute === attr && (field ? e.property === field : true);
-    }));
-  };
-}
-
-function assertHasErrorMsg(attr, msg) {
-  return function (res) {
-    assert.notEqual(res.errors.length, 0);
-    assert.ok(res.errors.some(function (e) {
-      return e.attribute === attr && e.message === msg;
-    }));
-  };
-}
-
-function assertValidates(passingValue, failingValue, attributes) {
-  var schema = {
-    name: 'Resource',
-    properties: { field: {} }
-  };
-
-  var failing;
-
-  if (!attributes) {
-    attributes = failingValue;
-    failing = false;
-  } else {
-    failing = true;
-  }
-
-  var attr = Object.keys(attributes)[0];
-  revalidator.mixin(schema.properties.field, attributes);
-
-  var result = {
-    "when the object conforms": {
-      topic: function () {
-        return revalidator.validate({ field: passingValue }, schema);
-      },
-      "return an object with `valid` set to true": assertValid
-    }
-  };
-
-  if (failing) {
-    result["when the object does not conform"] ={
-      topic: function () {
-        return revalidator.validate({ field: failingValue }, schema);
-      },
-      "return an object with `valid` set to false": assertInvalid,
-      "and an error concerning the attribute":      assertHasError(Object.keys(attributes)[0], 'field')
-    };
-  };
-
-  return result;
-}
-
-vows.describe('revalidator', {
-  "Validating": {
-    "with <type>:'string'":       assertValidates ('hello',   42,        { type: "string" }),
-    "with <type>:'number'":       assertValidates (42,       'hello',    { type: "number" }),
-    "with <type>:'integer'":      assertValidates (42,        42.5,      { type: "integer" }),
-    "with <type>:'array'":        assertValidates ([4, 2],   'hi',       { type: "array" }),
-    "with <type>:'object'":       assertValidates ({},        [],        { type: "object" }),
-    "with <type>:'boolean'":      assertValidates (false,     42,        { type: "boolean" }),
-    "with <types>:bool,num":      assertValidates (false,     'hello',   { type: ["boolean", "number"] }),
-    "with <types>:bool,num":      assertValidates (544,       null,      { type: ["boolean", "number"] }),
-    "with <type>:'null'":         assertValidates (null,      false,     { type: "null" }),
-    "with <type>:'any'":          assertValidates (9,                    { type: "any" }),
-    "with <type>:'date'":         assertValidates (new Date(), 'hello',  { type: "date" }),
-    "with <pattern>":             assertValidates ("kaboom", "42",       { pattern: /^[a-z]+$/ }),
-    "with <maxLength>":           assertValidates ("boom",   "kaboom",   { maxLength: 4 }),
-    "with <minLength>":           assertValidates ("kaboom", "boom",     { minLength: 6 }),
-    "with <minimum>":             assertValidates ( 512,      43,        { minimum:   473 }),
-    "with <maximum>":             assertValidates ( 512,      1949,      { maximum:   678 }),
-    "with <divisibleBy>":         assertValidates ( 10,       9,         { divisibleBy: 5 }),
-    "with <divisibleBy> decimal": assertValidates ( 0.2,      0.009,     { divisibleBy: 0.01 }),
-    "with <enum>":                assertValidates ("orange",  "cigar",   { enum: ["orange", "apple", "pear"] }),
-    "with <format>:'url'":        assertValidates ('http://test.com/', 'hello', { format: 'url' }),
-    "with <dependencies>": {
-      topic: {
-        properties: {
-          town:    { dependencies: "country" },
-          country: { }
-        }
-      },
-      "when the object conforms": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna", country: "moon" }, schema);
-        },
-        "return an object with `valid` set to true": assertValid
-      },
-      "when the object does not conform": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna" }, schema);
-        },
-        "return an object with `valid` set to false": assertInvalid,
-        "and an error concerning the attribute":      assertHasError('dependencies')
-      }
-    },
-    "with <dependencies> as array": {
-      topic: {
-        properties: {
-          town:    { dependencies: ["country", "planet"] },
-          country: { },
-          planet: { }
-        }
-      },
-      "when the object conforms": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna", country: "moon", planet: "mars" }, schema);
-        },
-        "return an object with `valid` set to true": assertValid
-      },
-      "when the object does not conform": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna", planet: "mars" }, schema);
-        },
-        "return an object with `valid` set to false": assertInvalid,
-        "and an error concerning the attribute":      assertHasError('dependencies')
-      }
-    },
-    "with <dependencies> as schema": {
-      topic: {
-        properties: {
-          town:    {
-            type: 'string',
-            dependencies: {
-              properties: { x: { type: "number" } }
-            }
-          },
-          country: { }
-        }
-      },
-      "when the object conforms": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna", x: 1 }, schema);
-        },
-        "return an object with `valid` set to true": assertValid,
-      },
-      "when the object does not conform": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna", x: 'no' }, schema);
-        },
-        "return an object with `valid` set to false": assertInvalid
-      }
-    },
-    "with <type>:'integer' and": {
-      "<minimum> constraints":      assertValidates ( 512,      43,        { minimum:   473, type: 'integer' }),
-      "<maximum> constraints":      assertValidates ( 512,      1949,      { maximum:   678, type: 'integer' }),
-      "<divisibleBy> constraints":  assertValidates ( 10,       9,         { divisibleBy: 5, type: 'integer' })
-    },
-    "with <additionalProperties>:false": {
-      topic: {
-        properties: {
-          town: { type: 'string' }
-        },
-        additionalProperties: false
-      },
-      "when the object conforms": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna" }, schema);
-        },
-        "return an object with `valid` set to true": assertValid
-      },
-      "when the object does not conform": {
-        topic: function (schema) {
-          return revalidator.validate({ town: "luna", area: 'park' }, schema);
-        },
-        "return an object with `valid` set to false": assertInvalid
-      }
-    }
-  }
-}).addBatch({
-  "A schema": {
-    topic: {
-      name: 'Article',
-      properties: {
-        title: {
-          type: 'string',
-          maxLength: 140,
-          conditions: {
-            optional: function () {
-              return !this.published;
-            }
-          }
-        },
-        date: { type: 'string', format: 'date', messages: { format: "must be a valid %{expected} and nothing else" } },
-        body: { type: 'string' },
-        tags: {
-          type: 'array',
-          uniqueItems: true,
-          minItems: 2,
-          items: {
-            type: 'string',
-            pattern: /[a-z ]+/
-          }
-        },
-        tuple: {
-          type: 'array',
-          minItems: 2,
-          maxItems: 2,
-          items: {
-            type: ['string', 'number']
-          }
-        },
-        author:    { type: 'string', pattern: /^[\w ]+$/i, required: true, messages: { required: "is essential for survival" } },
-        published: { type: 'boolean', 'default': false },
-        category:  { type: 'string' },
-        palindrome: {type: 'string', conform: function(val) {
-          return val == val.split("").reverse().join(""); }
-        },
-        name: { type: 'string', default: '', conform: function(val, data) {
-          return (val === data.author); }
-        }
-      },
-      patternProperties: {
-        '^_': {
-          type: 'boolean', default: false
-        }
-      }
-    },
-    "and an object": {
-      topic: {
-        title:    'Gimme some Gurus',
-        date:     '2012-02-04',
-        body:     "And I will pwn your codex.",
-        tags:     ['energy drinks', 'code'],
-        tuple:    ['string0', 103],
-        author:   'cloudhead',
-        published: true,
-        category: 'misc',
-        palindrome: 'dennis sinned',
-        name: 'cloudhead',
-        _flag: true
-      },
-      "can be validated with `revalidator.validate`": {
-        "and if it conforms": {
-          topic: function (object, schema) {
-            return revalidator.validate(object, schema);
-          },
-          "return an object with the `valid` property set to true": assertValid,
-          "return an object with the `errors` property as an empty array": function (res) {
-            assert.isArray(res.errors);
-            assert.isEmpty(res.errors);
-          }
-        },
-        "and if it has a missing required property": {
-          topic: function (object, schema) {
-            object = clone(object);
-            delete object.author;
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertInvalid,
-          "and an error concerning the 'required' attribute": assertHasError('required'),
-          "and the error message defined":                    assertHasErrorMsg('required', "is essential for survival")
-        },
-        "and if it has a missing non-required property": {
-          topic: function (object, schema) {
-            object = clone(object);
-            delete object.category;
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertValid
-        },
-        "and if it has a incorrect pattern property": {
-          topic: function (object, schema) {
-            object = clone(object);
-            object._additionalFlag = 'text';
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertInvalid
-        },
-        "and if it has a incorrect unique array property": {
-          topic: function (object, schema) {
-            object = clone(object);
-            object.tags = ['a', 'a'];
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertInvalid
-        },
-        "and if it has a incorrect array property (wrong values)": {
-          topic: function (object, schema) {
-            object = clone(object);
-            object.tags = ['a', '____'];
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertInvalid
-        },
-        "and if it has a incorrect array property (< minItems)": {
-          topic: function (object, schema) {
-            object = clone(object);
-            object.tags = ['x'];
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertInvalid
-        },
-        "and if it has a incorrect format (date)": {
-          topic: function (object, schema) {
-            object = clone(object);
-            object.date = 'bad date';
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertInvalid,
-          "and the error message defined":                    assertHasErrorMsg('format', "must be a valid date and nothing else")
-        },
-        "and if it is not a palindrome (conform function)": {
-          topic: function (object, schema) {
-            object = clone(object);
-            object.palindrome = 'bad palindrome';
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":       assertInvalid
-        },
-        "and if it didn't validate a pattern": {
-          topic: function (object, schema) {
-            object = clone(object);
-            object.author = 'email@address.com';
-            return revalidator.validate(object, schema);
-          },
-          "return an object with `valid` set to false":      assertInvalid,
-          "and an error concerning the 'pattern' attribute": assertHasError('pattern')
-        },
-      }
-    },
-    "with <cast> option": {
-      topic: {
-        properties: {
-          answer: { type: "integer" },
-          is_ready: { type: "boolean" }
-        }
-      },
-      "and <integer> property": {
-        "is castable string": {
-          topic: function (schema) {
-            return revalidator.validate({ answer: "42" }, schema, { cast: true });
-          },
-          "return an object with `valid` set to true": assertValid
-        },
-        "is uncastable string": {
-          topic: function (schema) {
-            return revalidator.validate({ answer: "forty2" }, schema, { cast: true });
-          },
-          "return an object with `valid` set to false": assertInvalid
-        }
-      },
-      "and <boolean> property": {
-        "is castable 'true/false' string": {
-          topic: function (schema) {
-            return revalidator.validate({ is_ready: "true" }, schema, { cast: true });
-          },
-          "return an object with `valid` set to true": assertValid
-        },
-        "is castable '1/0' string": {
-          topic: function (schema) {
-            return revalidator.validate({ is_ready: "1" }, schema, { cast: true });
-          },
-          "return an object with `valid` set to true": assertValid
-        },
-        "is castable `1/0` integer": {
-          topic: function (schema) {
-            return revalidator.validate({ is_ready: 1 }, schema, { cast: true });
-          },
-          "return an object with `valid` set to true": assertValid
-        },
-        "is uncastable string": {
-          topic: function (schema) {
-            return revalidator.validate({ is_ready: "not yet" }, schema, { cast: true });
-          },
-          "return an object with `valid` set to false": assertInvalid
-        },
-        "is uncastable number": {
-          topic: function (schema) {
-            return revalidator.validate({ is_ready: 42 }, schema, { cast: true });
-          },
-          "return an object with `valid` set to false": assertInvalid
-        }
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/.npmignore b/blackberry10/node_modules/prompt/node_modules/utile/.npmignore
deleted file mode 100644
index 8d8bfd5..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-node_modules
-npm-debug.log
-*.swp
-*.swo

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/.travis.yml b/blackberry10/node_modules/prompt/node_modules/utile/.travis.yml
deleted file mode 100644
index 88cf1f3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-
-notifications:
-  email:
-    - travis@nodejitsu.com
-  irc: "irc.freenode.org#nodejitsu"
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/CHANGELOG.md b/blackberry10/node_modules/prompt/node_modules/utile/CHANGELOG.md
deleted file mode 100644
index b4e427a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/CHANGELOG.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-0.1.5 / 2012-09-18
-==================
-
-  * Fixed problem with underscore values in camelToUnderscore
-
-0.1.4 / 2012-07-26
-==================
-
-  * Made use of inflect for camel to underscore conversion
-
-0.1.3 / 2012-07-25
-==================
-
-  * Added camel to underscore conversion and vice-versa
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/LICENSE b/blackberry10/node_modules/prompt/node_modules/utile/LICENSE
deleted file mode 100644
index 56217ca..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Nodejitsu Inc.
-
-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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/README.md b/blackberry10/node_modules/prompt/node_modules/utile/README.md
deleted file mode 100644
index 451b1fc..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# utile [![Build Status](https://secure.travis-ci.org/flatiron/utile.png)](http://travis-ci.org/flatiron/utile)
-
-A drop-in replacement for `util` with some additional advantageous functions
-
-## Motivation
-Javascript is definitely a "batteries not included language" when compared to languages like Ruby or Python. Node.js has a simple utility library which exposes some basic (but important) functionality:
-
-```
-$ node
-> var util = require('util');
-> util.
-(...)
-
-util.debug                 util.error                 util.exec                  util.inherits              util.inspect
-util.log                   util.p                     util.print                 util.pump                  util.puts
-```
-
-When one considers their own utility library, why ever bother requiring `util` again? That is the approach taken by this module. To compare:
-
-```
-$ node
-> var utile = require('./lib')
-> utile.
-(...)
-
-utile.async                 utile.capitalize            utile.clone                 utile.cpr                   utile.createPath            utile.debug
-utile.each                  utile.error                 utile.exec                  utile.file                  utile.filter                utile.find
-utile.inherits              utile.log                   utile.mixin                 utile.mkdirp                utile.p                     utile.path
-utile.print                 utile.pump                  utile.puts                  utile.randomString          utile.requireDir            uile.requireDirLazy
-utile.rimraf
-```
-
-As you can see all of the original methods from `util` are there, but there are several new methods specific to `utile`. A note about implementation: _no node.js native modules are modified by utile, it simply copies those methods._
-
-## Methods
-The `utile` modules exposes some simple utility methods:
-
-* `.each(obj, iterator)`: Iterate over the keys of an object.
-* `.mixin(target [source0, source1, ...])`: Copies enumerable properties from `source0 ... sourceN` onto `target` and returns the resulting object.
-* `.clone(obj)`: Shallow clones the specified object.
-* `.capitalize(str)`: Capitalizes the specified `str`.
-* `.randomString(length)`: randomString returns a pseudo-random ASCII string (subset) the return value is a string of length ⌈bits/6⌉ of characters from the base64 alphabet.
-* `.filter(obj, test)`: return an object with the properties that `test` returns true on.
-* `.args(arguments)`: Converts function arguments into actual array with special `callback`, `cb`, `array`, and `last` properties. Also supports *optional* argument contracts. See [the example](https://github.com/flatiron/utile/blob/master/examples/utile-args.js) for more details.
-* `.requireDir(directory)`: Requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values being return values of `require(filename)`.
-* `.requireDirLazy(directory)`: Lazily requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values (getters) being return values of `require(filename)`.
-* `.format([string] text, [array] formats, [array] replacements)`: Replace `formats` in `text` with `replacements`. This will fall back to the original `util.format` command if it is called improperly.
-
-## Packaged Dependencies
-In addition to the methods that are built-in, utile includes a number of commonly used dependencies to reduce the number of includes in your package.json. These modules _are not eagerly loaded to be respectful of startup time,_ but instead are lazy-loaded getters on the `utile` object
-
-* `.async`: [Async utilities for node and the browser][0]
-* `.inflect`: [Customizable inflections for node.js][6]
-* `.mkdirp`: [Recursively mkdir, like mkdir -p, but in node.js][1]
-* `.rimraf`: [A rm -rf util for nodejs][2]
-* `.cpr`: [Asynchronous recursive file copying with Node.js][3]
-
-## Installation
-
-### Installing npm (node package manager)
-```
-  curl http://npmjs.org/install.sh | sh
-```
-
-### Installing utile
-```
-  [sudo] npm install utile
-```
-
-## Tests
-All tests are written with [vows][4] and should be run with [npm][5]:
-
-``` bash
-  $ npm test
-```
-
-#### Author: [Nodejitsu Inc.](http://www.nodejitsu.com)
-#### Contributors: [Charlie Robbins](http://github.com/indexzero), [Dominic Tarr](http://github.com/dominictarr)
-#### License: MIT
-
-[0]: https://github.com/caolan/async
-[1]: https://github.com/substack/node-mkdirp
-[2]: https://github.com/isaacs/rimraf
-[3]: https://github.com/avianflu/ncp
-[4]: https://vowsjs.org
-[5]: https://npmjs.org
-[6]: https://github.com/pksunkara/inflect

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/lib/args.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/lib/args.js b/blackberry10/node_modules/prompt/node_modules/utile/lib/args.js
deleted file mode 100644
index 34f1c11..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/lib/args.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * args.js: function argument parsing helper utility
- *
- * (C) 2012, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var utile = require('./index');
-
-//
-// ### function args(_args)
-// #### _args {Arguments} Original function arguments
-//
-// Top-level method will accept a javascript "arguments" object (the actual keyword
-// "arguments" inside any scope), and attempt to return back an intelligent object
-// representing the functions arguments
-//
-module.exports = function (_args) {
-  var args = utile.rargs(_args),
-      _cb;
-
-  //
-  // Find and define the first argument
-  //
-  Object.defineProperty(args, 'first', { value: args[0] });
-
-  //
-  // Find and define any callback
-  //
-  _cb = args[args.length - 1] || args[args.length];
-  if (typeof _cb === "function") {
-    Object.defineProperty(args, 'callback', { value: _cb });
-    Object.defineProperty(args, 'cb', { value: _cb });
-    args.pop();
-  }
-
-  //
-  // Find and define the last argument
-  //
-  if (args.length) {
-    Object.defineProperty(args, 'last', { value: args[args.length - 1] });
-  }
-
-  return args;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/lib/base64.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/lib/base64.js b/blackberry10/node_modules/prompt/node_modules/utile/lib/base64.js
deleted file mode 100644
index 1de7a76..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/lib/base64.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * base64.js: An extremely simple implementation of base64 encoding / decoding using node.js Buffers
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var base64 = exports;
-
-//
-// ### function encode (unencoded)
-// #### @unencoded {string} The string to base64 encode
-// Encodes the specified string to base64 using node.js Buffers.
-//
-base64.encode = function (unencoded) {
-  var encoded;
-
-  try {
-    encoded = new Buffer(unencoded || '').toString('base64');
-  }
-  catch (ex) {
-    return null;
-  }
-
-  return encoded;
-};
-
-//
-// ### function decode (encoded)
-// #### @encoded {string} The string to base64 decode
-// Decodes the specified string from base64 using node.js Buffers.
-//
-base64.decode = function (encoded) {
-  var decoded;
-
-  try {
-    decoded = new Buffer(encoded || '', 'base64').toString('utf8');
-  }
-  catch (ex) {
-    return null;
-  }
-
-  return decoded;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/lib/file.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/lib/file.js b/blackberry10/node_modules/prompt/node_modules/utile/lib/file.js
deleted file mode 100644
index 4641878..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/lib/file.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * file.js: Simple utilities for working with the file system.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var fs = require('fs');
-
-exports.readJson = exports.readJSON = function (file, callback) {
-  if (typeof callback !== 'function') {
-    throw new Error('utile.file.readJson needs a callback');
-  }
-
-  fs.readFile(file, 'utf-8', function (err, data) {
-    if (err) {
-      return callback(err);
-    }
-
-    try {
-      var json = JSON.parse(data);
-      callback(null, json);
-    }
-    catch (err) {
-      return callback(err);
-    }
-  });
-};
-
-exports.readJsonSync = exports.readJSONSync = function (file) {
-  return JSON.parse(fs.readFileSync(file, 'utf-8'));
-};


[04/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/validator.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/validator.js b/blackberry10/node_modules/validator/validator.js
deleted file mode 100644
index ad4c205..0000000
--- a/blackberry10/node_modules/validator/validator.js
+++ /dev/null
@@ -1,865 +0,0 @@
-/*!
- * Copyright (c) 2010 Chris O'Hara <co...@gmail.com>
- *
- * 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(exports) {
-
-    var entities = {
-        '&nbsp;': '\u00a0',
-        '&iexcl;': '\u00a1',
-        '&cent;': '\u00a2',
-        '&pound;': '\u00a3',
-        '&curren;': '\u20ac',
-        '&yen;': '\u00a5',
-        '&brvbar;': '\u0160',
-        '&sect;': '\u00a7',
-        '&uml;': '\u0161',
-        '&copy;': '\u00a9',
-        '&ordf;': '\u00aa',
-        '&laquo;': '\u00ab',
-        '&not;': '\u00ac',
-        '&shy;': '\u00ad',
-        '&reg;': '\u00ae',
-        '&macr;': '\u00af',
-        '&deg;': '\u00b0',
-        '&plusmn;': '\u00b1',
-        '&sup2;': '\u00b2',
-        '&sup3;': '\u00b3',
-        '&acute;': '\u017d',
-        '&micro;': '\u00b5',
-        '&para;': '\u00b6',
-        '&middot;': '\u00b7',
-        '&cedil;': '\u017e',
-        '&sup1;': '\u00b9',
-        '&ordm;': '\u00ba',
-        '&raquo;': '\u00bb',
-        '&frac14;': '\u0152',
-        '&frac12;': '\u0153',
-        '&frac34;': '\u0178',
-        '&iquest;': '\u00bf',
-        '&Agrave;': '\u00c0',
-        '&Aacute;': '\u00c1',
-        '&Acirc;': '\u00c2',
-        '&Atilde;': '\u00c3',
-        '&Auml;': '\u00c4',
-        '&Aring;': '\u00c5',
-        '&AElig;': '\u00c6',
-        '&Ccedil;': '\u00c7',
-        '&Egrave;': '\u00c8',
-        '&Eacute;': '\u00c9',
-        '&Ecirc;': '\u00ca',
-        '&Euml;': '\u00cb',
-        '&Igrave;': '\u00cc',
-        '&Iacute;': '\u00cd',
-        '&Icirc;': '\u00ce',
-        '&Iuml;': '\u00cf',
-        '&ETH;': '\u00d0',
-        '&Ntilde;': '\u00d1',
-        '&Ograve;': '\u00d2',
-        '&Oacute;': '\u00d3',
-        '&Ocirc;': '\u00d4',
-        '&Otilde;': '\u00d5',
-        '&Ouml;': '\u00d6',
-        '&times;': '\u00d7',
-        '&Oslash;': '\u00d8',
-        '&Ugrave;': '\u00d9',
-        '&Uacute;': '\u00da',
-        '&Ucirc;': '\u00db',
-        '&Uuml;': '\u00dc',
-        '&Yacute;': '\u00dd',
-        '&THORN;': '\u00de',
-        '&szlig;': '\u00df',
-        '&agrave;': '\u00e0',
-        '&aacute;': '\u00e1',
-        '&acirc;': '\u00e2',
-        '&atilde;': '\u00e3',
-        '&auml;': '\u00e4',
-        '&aring;': '\u00e5',
-        '&aelig;': '\u00e6',
-        '&ccedil;': '\u00e7',
-        '&egrave;': '\u00e8',
-        '&eacute;': '\u00e9',
-        '&ecirc;': '\u00ea',
-        '&euml;': '\u00eb',
-        '&igrave;': '\u00ec',
-        '&iacute;': '\u00ed',
-        '&icirc;': '\u00ee',
-        '&iuml;': '\u00ef',
-        '&eth;': '\u00f0',
-        '&ntilde;': '\u00f1',
-        '&ograve;': '\u00f2',
-        '&oacute;': '\u00f3',
-        '&ocirc;': '\u00f4',
-        '&otilde;': '\u00f5',
-        '&ouml;': '\u00f6',
-        '&divide;': '\u00f7',
-        '&oslash;': '\u00f8',
-        '&ugrave;': '\u00f9',
-        '&uacute;': '\u00fa',
-        '&ucirc;': '\u00fb',
-        '&uuml;': '\u00fc',
-        '&yacute;': '\u00fd',
-        '&thorn;': '\u00fe',
-        '&yuml;': '\u00ff',
-        '&quot;': '\u0022',
-        '&lt;': '\u003c',
-        '&gt;': '\u003e',
-        '&apos;': '\u0027',
-        '&minus;': '\u2212',
-        '&circ;': '\u02c6',
-        '&tilde;': '\u02dc',
-        '&Scaron;': '\u0160',
-        '&lsaquo;': '\u2039',
-        '&OElig;': '\u0152',
-        '&lsquo;': '\u2018',
-        '&rsquo;': '\u2019',
-        '&ldquo;': '\u201c',
-        '&rdquo;': '\u201d',
-        '&bull;': '\u2022',
-        '&ndash;': '\u2013',
-        '&mdash;': '\u2014',
-        '&trade;': '\u2122',
-        '&scaron;': '\u0161',
-        '&rsaquo;': '\u203a',
-        '&oelig;': '\u0153',
-        '&Yuml;': '\u0178',
-        '&fnof;': '\u0192',
-        '&Alpha;': '\u0391',
-        '&Beta;': '\u0392',
-        '&Gamma;': '\u0393',
-        '&Delta;': '\u0394',
-        '&Epsilon;': '\u0395',
-        '&Zeta;': '\u0396',
-        '&Eta;': '\u0397',
-        '&Theta;': '\u0398',
-        '&Iota;': '\u0399',
-        '&Kappa;': '\u039a',
-        '&Lambda;': '\u039b',
-        '&Mu;': '\u039c',
-        '&Nu;': '\u039d',
-        '&Xi;': '\u039e',
-        '&Omicron;': '\u039f',
-        '&Pi;': '\u03a0',
-        '&Rho;': '\u03a1',
-        '&Sigma;': '\u03a3',
-        '&Tau;': '\u03a4',
-        '&Upsilon;': '\u03a5',
-        '&Phi;': '\u03a6',
-        '&Chi;': '\u03a7',
-        '&Psi;': '\u03a8',
-        '&Omega;': '\u03a9',
-        '&alpha;': '\u03b1',
-        '&beta;': '\u03b2',
-        '&gamma;': '\u03b3',
-        '&delta;': '\u03b4',
-        '&epsilon;': '\u03b5',
-        '&zeta;': '\u03b6',
-        '&eta;': '\u03b7',
-        '&theta;': '\u03b8',
-        '&iota;': '\u03b9',
-        '&kappa;': '\u03ba',
-        '&lambda;': '\u03bb',
-        '&mu;': '\u03bc',
-        '&nu;': '\u03bd',
-        '&xi;': '\u03be',
-        '&omicron;': '\u03bf',
-        '&pi;': '\u03c0',
-        '&rho;': '\u03c1',
-        '&sigmaf;': '\u03c2',
-        '&sigma;': '\u03c3',
-        '&tau;': '\u03c4',
-        '&upsilon;': '\u03c5',
-        '&phi;': '\u03c6',
-        '&chi;': '\u03c7',
-        '&psi;': '\u03c8',
-        '&omega;': '\u03c9',
-        '&thetasym;': '\u03d1',
-        '&upsih;': '\u03d2',
-        '&piv;': '\u03d6',
-        '&ensp;': '\u2002',
-        '&emsp;': '\u2003',
-        '&thinsp;': '\u2009',
-        '&zwnj;': '\u200c',
-        '&zwj;': '\u200d',
-        '&lrm;': '\u200e',
-        '&rlm;': '\u200f',
-        '&sbquo;': '\u201a',
-        '&bdquo;': '\u201e',
-        '&dagger;': '\u2020',
-        '&Dagger;': '\u2021',
-        '&hellip;': '\u2026',
-        '&permil;': '\u2030',
-        '&prime;': '\u2032',
-        '&Prime;': '\u2033',
-        '&oline;': '\u203e',
-        '&frasl;': '\u2044',
-        '&euro;': '\u20ac',
-        '&image;': '\u2111',
-        '&weierp;': '\u2118',
-        '&real;': '\u211c',
-        '&alefsym;': '\u2135',
-        '&larr;': '\u2190',
-        '&uarr;': '\u2191',
-        '&rarr;': '\u2192',
-        '&darr;': '\u2193',
-        '&harr;': '\u2194',
-        '&crarr;': '\u21b5',
-        '&lArr;': '\u21d0',
-        '&uArr;': '\u21d1',
-        '&rArr;': '\u21d2',
-        '&dArr;': '\u21d3',
-        '&hArr;': '\u21d4',
-        '&forall;': '\u2200',
-        '&part;': '\u2202',
-        '&exist;': '\u2203',
-        '&empty;': '\u2205',
-        '&nabla;': '\u2207',
-        '&isin;': '\u2208',
-        '&notin;': '\u2209',
-        '&ni;': '\u220b',
-        '&prod;': '\u220f',
-        '&sum;': '\u2211',
-        '&lowast;': '\u2217',
-        '&radic;': '\u221a',
-        '&prop;': '\u221d',
-        '&infin;': '\u221e',
-        '&ang;': '\u2220',
-        '&and;': '\u2227',
-        '&or;': '\u2228',
-        '&cap;': '\u2229',
-        '&cup;': '\u222a',
-        '&int;': '\u222b',
-        '&there4;': '\u2234',
-        '&sim;': '\u223c',
-        '&cong;': '\u2245',
-        '&asymp;': '\u2248',
-        '&ne;': '\u2260',
-        '&equiv;': '\u2261',
-        '&le;': '\u2264',
-        '&ge;': '\u2265',
-        '&sub;': '\u2282',
-        '&sup;': '\u2283',
-        '&nsub;': '\u2284',
-        '&sube;': '\u2286',
-        '&supe;': '\u2287',
-        '&oplus;': '\u2295',
-        '&otimes;': '\u2297',
-        '&perp;': '\u22a5',
-        '&sdot;': '\u22c5',
-        '&lceil;': '\u2308',
-        '&rceil;': '\u2309',
-        '&lfloor;': '\u230a',
-        '&rfloor;': '\u230b',
-        '&lang;': '\u2329',
-        '&rang;': '\u232a',
-        '&loz;': '\u25ca',
-        '&spades;': '\u2660',
-        '&clubs;': '\u2663',
-        '&hearts;': '\u2665',
-        '&diams;': '\u2666'
-    };
-
-    var decode = function (str) {
-        if (!~str.indexOf('&')) return str;
-
-        //Decode literal entities
-        for (var i in entities) {
-            str = str.replace(new RegExp(i, 'g'), entities[i]);
-        }
-
-        //Decode hex entities
-        str = str.replace(/&#x(0*[0-9a-f]{2,5});?/gi, function (m, code) {
-            return String.fromCharCode(parseInt(+code, 16));
-        });
-
-        //Decode numeric entities
-        str = str.replace(/&#([0-9]{2,4});?/gi, function (m, code) {
-            return String.fromCharCode(+code);
-        });
-
-        str = str.replace(/&amp;/g, '&');
-
-        return str;
-    }
-
-    var encode = function (str) {
-        str = str.replace(/&/g, '&amp;');
-
-        //IE doesn't accept &apos;
-        str = str.replace(/'/g, '&#39;');
-
-        //Encode literal entities
-        for (var i in entities) {
-            str = str.replace(new RegExp(entities[i], 'g'), i);
-        }
-
-        return str;
-    }
-
-    exports.entities = {
-        encode: encode,
-        decode: decode
-    }
-
-    //This module is adapted from the CodeIgniter framework
-    //The license is available at http://codeigniter.com/
-
-    var never_allowed_str = {
-        'document.cookie':              '[removed]',
-        'document.write':               '[removed]',
-        '.parentNode':                  '[removed]',
-        '.innerHTML':                   '[removed]',
-        'window.location':              '[removed]',
-        '-moz-binding':                 '[removed]',
-        '<!--':                         '&lt;!--',
-        '-->':                          '--&gt;',
-        '<![CDATA[':                    '&lt;![CDATA['
-    };
-
-    var never_allowed_regex = {
-        'javascript\\s*:':              '[removed]',
-        'expression\\s*(\\(|&\\#40;)':  '[removed]',
-        'vbscript\\s*:':                '[removed]',
-        'Redirect\\s+302':              '[removed]'
-    };
-
-    var non_displayables = [
-        /%0[0-8bcef]/g,           // url encoded 00-08, 11, 12, 14, 15
-        /%1[0-9a-f]/g,            // url encoded 16-31
-        /[\x00-\x08]/g,           // 00-08
-        /\x0b/g, /\x0c/g,         // 11,12
-        /[\x0e-\x1f]/g            // 14-31
-    ];
-
-    var compact_words = [
-        'javascript', 'expression', 'vbscript',
-        'script', 'applet', 'alert', 'document',
-        'write', 'cookie', 'window'
-    ];
-
-    exports.xssClean = function(str, is_image) {
-
-        //Recursively clean objects and arrays
-        if (typeof str === 'object') {
-            for (var i in str) {
-                str[i] = exports.xssClean(str[i]);
-            }
-            return str;
-        }
-
-        //Remove invisible characters
-        str = remove_invisible_characters(str);
-
-        //Protect query string variables in URLs => 901119URL5918AMP18930PROTECT8198
-        str = str.replace(/\&([a-z\_0-9]+)\=([a-z\_0-9]+)/i, xss_hash() + '$1=$2');
-
-        //Validate standard character entities - add a semicolon if missing.  We do this to enable
-        //the conversion of entities to ASCII later.
-        str = str.replace(/(&\#?[0-9a-z]{2,})([\x00-\x20])*;?/i, '$1;$2');
-
-        //Validate UTF16 two byte encoding (x00) - just as above, adds a semicolon if missing.
-        str = str.replace(/(&\#x?)([0-9A-F]+);?/i, '$1;$2');
-
-        //Un-protect query string variables
-        str = str.replace(xss_hash(), '&');
-
-        //Decode just in case stuff like this is submitted:
-        //<a href="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">Google</a>
-        try {
-          str = decodeURIComponent(str);
-        } catch (e) {
-          // str was not actually URI-encoded
-        }
-
-        //Convert character entities to ASCII - this permits our tests below to work reliably.
-        //We only convert entities that are within tags since these are the ones that will pose security problems.
-        str = str.replace(/[a-z]+=([\'\"]).*?\1/gi, function(m, match) {
-            return m.replace(match, convert_attribute(match));
-        });
-
-        //Remove invisible characters again
-        str = remove_invisible_characters(str);
-
-        //Convert tabs to spaces
-        str = str.replace('\t', ' ');
-
-        //Captured the converted string for later comparison
-        var converted_string = str;
-
-        //Remove strings that are never allowed
-        for (var i in never_allowed_str) {
-            str = str.replace(i, never_allowed_str[i]);
-        }
-
-        //Remove regex patterns that are never allowed
-        for (var i in never_allowed_regex) {
-            str = str.replace(new RegExp(i, 'i'), never_allowed_regex[i]);
-        }
-
-        //Compact any exploded words like:  j a v a s c r i p t
-        // We only want to do this when it is followed by a non-word character
-        for (var i in compact_words) {
-            var spacified = compact_words[i].split('').join('\\s*')+'\\s*';
-
-            str = str.replace(new RegExp('('+spacified+')(\\W)', 'ig'), function(m, compat, after) {
-                return compat.replace(/\s+/g, '') + after;
-            });
-        }
-
-        //Remove disallowed Javascript in links or img tags
-        do {
-            var original = str;
-
-            if (str.match(/<a/i)) {
-                str = str.replace(/<a\s+([^>]*?)(>|$)/gi, function(m, attributes, end_tag) {
-                    attributes = filter_attributes(attributes.replace('<','').replace('>',''));
-                    return m.replace(attributes, attributes.replace(/href=.*?(alert\(|alert&\#40;|javascript\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)/gi, ''));
-                });
-            }
-
-            if (str.match(/<img/i)) {
-                str = str.replace(/<img\s+([^>]*?)(\s?\/?>|$)/gi, function(m, attributes, end_tag) {
-                    attributes = filter_attributes(attributes.replace('<','').replace('>',''));
-                    return m.replace(attributes, attributes.replace(/src=.*?(alert\(|alert&\#40;|javascript\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)/gi, ''));
-                });
-            }
-
-            if (str.match(/script/i) || str.match(/xss/i)) {
-                str = str.replace(/<(\/*)(script|xss)(.*?)\>/gi, '[removed]');
-            }
-
-        } while(original != str);
-
-        //Remove JavaScript Event Handlers - Note: This code is a little blunt.  It removes the event
-        //handler and anything up to the closing >, but it's unlikely to be a problem.
-        event_handlers = ['[^a-z_\-]on\\w*'];
-
-        //Adobe Photoshop puts XML metadata into JFIF images, including namespacing,
-        //so we have to allow this for images
-        if (!is_image) {
-            event_handlers.push('xmlns');
-        }
-
-        str = str.replace(new RegExp("<([^><]+?)("+event_handlers.join('|')+")(\\s*=\\s*[^><]*)([><]*)", 'i'), '<$1$4');
-
-        //Sanitize naughty HTML elements
-        //If a tag containing any of the words in the list
-        //below is found, the tag gets converted to entities.
-        //So this: <blink>
-        //Becomes: &lt;blink&gt;
-        naughty = 'alert|applet|audio|basefont|base|behavior|bgsound|blink|body|embed|expression|form|frameset|frame|head|html|ilayer|iframe|input|isindex|layer|link|meta|object|plaintext|style|script|textarea|title|video|xml|xss';
-        str = str.replace(new RegExp('<(/*\\s*)('+naughty+')([^><]*)([><]*)', 'gi'), function(m, a, b, c, d) {
-            return '&lt;' + a + b + c + d.replace('>','&gt;').replace('<','&lt;');
-        });
-
-        //Sanitize naughty scripting elements Similar to above, only instead of looking for
-        //tags it looks for PHP and JavaScript commands that are disallowed.  Rather than removing the
-        //code, it simply converts the parenthesis to entities rendering the code un-executable.
-        //For example:    eval('some code')
-        //Becomes:        eval&#40;'some code'&#41;
-        str = str.replace(/(alert|cmd|passthru|eval|exec|expression|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(\s*)\((.*?)\)/gi, '$1$2&#40;$3&#41;');
-
-        //This adds a bit of extra precaution in case something got through the above filters
-        for (var i in never_allowed_str) {
-            str = str.replace(i, never_allowed_str[i]);
-        }
-        for (var i in never_allowed_regex) {
-            str = str.replace(new RegExp(i, 'i'), never_allowed_regex[i]);
-        }
-
-        //Images are handled in a special way
-        if (is_image && str !== converted_string) {
-            throw new Error('Image may contain XSS');
-        }
-
-        return str;
-    }
-
-    function remove_invisible_characters(str) {
-        for (var i in non_displayables) {
-            str = str.replace(non_displayables[i], '');
-        }
-        return str;
-    }
-
-    function xss_hash() {
-        //TODO: Create a random hash
-        return '!*$^#(@*#&';
-    }
-
-    function convert_attribute(str) {
-        return str.replace('>','&gt;').replace('<','&lt;').replace('\\','\\\\');
-    }
-
-    //Filter Attributes - filters tag attributes for consistency and safety
-    function filter_attributes(str) {
-        out = '';
-
-        str.replace(/\s*[a-z\-]+\s*=\s*(?:\042|\047)(?:[^\1]*?)\1/gi, function(m) {
-            out += m.replace(/\/\*.*?\*\//g, '');
-        });
-
-        return out;
-    }
-
-    var Validator = exports.Validator = function() {}
-
-    Validator.prototype.check = function(str, fail_msg) {
-        this.str = str == null || (isNaN(str) && str.length == undefined) ? '' : str+'';
-        this.msg = fail_msg;
-        this._errors = [];
-        return this;
-    }
-
-    //Create some aliases - may help code readability
-    Validator.prototype.validate = Validator.prototype.check;
-    Validator.prototype.assert = Validator.prototype.check;
-
-    Validator.prototype.error = function(msg) {
-        throw new Error(msg);
-    }
-
-    Validator.prototype.isEmail = function() {
-        if (!this.str.match(/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/)) {
-            return this.error(this.msg || 'Invalid email');
-        }
-        return this;
-    }
-
-	//Will work against Visa, MasterCard, American Express, Discover, Diners Club, and JCB card numbering formats
-	Validator.prototype.isCreditCard = function() {
-		this.str = this.str.replace(/[^0-9]+/g, ''); //remove all dashes, spaces, etc.
-        if (!this.str.match(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/)) {
-            return this.error(this.msg || 'Invalid credit card');
-        }
-        return this;
-    }
-
-    Validator.prototype.isUrl = function() {
-        if (!this.str.match(/^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?((?:(?:[-\w\d{1-3}]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|edu|co\.uk|ac\.uk|it|fr|tv|museum|asia|local|travel|[a-z]{2}))|((\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)(\.(\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)){3}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$ |\/.,*:;=]|%[a-f\d]{2})*)?$/i) || this.str.length > 2083) {
-            return this.error(this.msg || 'Invalid URL');
-        }
-        return this;
-    }
-
-    Validator.prototype.isIP = function() {
-        if (!this.str.match(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/)) {
-            return this.error(this.msg || 'Invalid IP');
-        }
-        return this;
-    }
-
-    Validator.prototype.isAlpha = function() {
-        if (!this.str.match(/^[a-zA-Z]+$/)) {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.isAlphanumeric = function() {
-        if (!this.str.match(/^[a-zA-Z0-9]+$/)) {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.isNumeric = function() {
-        if (!this.str.match(/^-?[0-9]+$/)) {
-            return this.error(this.msg || 'Invalid number');
-        }
-        return this;
-    }
-
-    Validator.prototype.isLowercase = function() {
-        if (!this.str.match(/^[a-z0-9]+$/)) {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.isUppercase = function() {
-        if (!this.str.match(/^[A-Z0-9]+$/)) {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.isInt = function() {
-        if (!this.str.match(/^(?:-?(?:0|[1-9][0-9]*))$/)) {
-            return this.error(this.msg || 'Invalid integer');
-        }
-        return this;
-    }
-
-    Validator.prototype.isDecimal = function() {
-        if (!this.str.match(/^(?:-?(?:0|[1-9][0-9]*))?(?:\.[0-9]*)?$/)) {
-            return this.error(this.msg || 'Invalid decimal');
-        }
-        return this;
-    }
-
-    Validator.prototype.isFloat = function() {
-        return this.isDecimal();
-    }
-
-    Validator.prototype.notNull = function() {
-        if (this.str === '') {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.isNull = function() {
-        if (this.str !== '') {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.notEmpty = function() {
-        if (this.str.match(/^[\s\t\r\n]*$/)) {
-            return this.error(this.msg || 'String is whitespace');
-        }
-        return this;
-    }
-
-    Validator.prototype.equals = function(equals) {
-        if (this.str != equals) {
-            return this.error(this.msg || 'Not equal');
-        }
-        return this;
-    }
-
-    Validator.prototype.contains = function(str) {
-        if (this.str.indexOf(str) === -1) {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.notContains = function(str) {
-        if (this.str.indexOf(str) >= 0) {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.regex = Validator.prototype.is = function(pattern, modifiers) {
-        if (typeof pattern !== 'function') {
-            pattern = new RegExp(pattern, modifiers);
-        }
-        if (! this.str.match(pattern)) {
-            return this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.notRegex = Validator.prototype.not = function(pattern, modifiers) {
-        if (typeof pattern !== 'function') {
-            pattern = new RegExp(pattern, modifiers);
-        }
-        if (this.str.match(pattern)) {
-            this.error(this.msg || 'Invalid characters');
-        }
-        return this;
-    }
-
-    Validator.prototype.len = function(min, max) {
-        if (this.str.length < min) {
-            this.error(this.msg || 'String is too small');
-        }
-        if (typeof max !== undefined && this.str.length > max) {
-            return this.error(this.msg || 'String is too large');
-        }
-        return this;
-    }
-
-    //Thanks to github.com/sreuter for the idea.
-    Validator.prototype.isUUID = function(version) {
-        if (version == 3 || version == 'v3') {
-            pattern = /[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-        } else if (version == 4 || version == 'v4') {
-            pattern = /[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i;
-        } else {
-            pattern = /[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-        }
-        if (!this.str.match(pattern)) {
-            return this.error(this.msg || 'Not a UUID');
-        }
-        return this;
-    }
-
-    Validator.prototype.isDate = function() {
-        var intDate = Date.parse(this.str);
-        if (isNaN(intDate)) { 
-            return this.error(this.msg || 'Not a date'); 
-        }
-        return this;
-    }
-
-    Validator.prototype.isIn = function(options) {
-        if (options && typeof options.indexOf === 'function') {
-            if (!~options.indexOf(this.str)) {
-                return this.error(this.msg || 'Unexpected value');
-            }
-            return this;
-        } else {
-            return this.error(this.msg || 'Invalid in() argument');
-        }
-    }
-
-    Validator.prototype.notIn = function(options) {
-        if (options && typeof options.indexOf === 'function') {
-            if (options.indexOf(this.str) !== -1) {
-                return this.error(this.msg || 'Unexpected value');
-            }
-            return this;
-        } else {
-            return this.error(this.msg || 'Invalid notIn() argument');
-        }
-    }
-
-    Validator.prototype.min = function(val) {
-        var number = parseFloat(this.str);
-
-        if (!isNaN(number) && number < val) {
-            return this.error(this.msg || 'Invalid number');
-        }
-
-        return this;
-    }
-
-    Validator.prototype.max = function(val) {
-        var number = parseFloat(this.str);
-        if (!isNaN(number) && number > val) {
-            return this.error(this.msg || 'Invalid number');
-        }
-        return this;
-    }
-
-    Validator.prototype.isArray = function() {
-        if (!Array.isArray(this.str)) {
-            return this.error(this.msg || 'Not an array');
-        }
-        return this;
-    }
-
-    var Filter = exports.Filter = function() {}
-
-    var whitespace = '\\r\\n\\t\\s';
-
-    Filter.prototype.modify = function(str) {
-        this.str = str;
-    }
-
-    //Create some aliases - may help code readability
-    Filter.prototype.convert = Filter.prototype.sanitize = function(str) {
-        this.str = str;
-        return this;
-    }
-
-    Filter.prototype.xss = function(is_image) {
-        this.modify(exports.xssClean(this.str, is_image));
-        return this.str;
-    }
-
-    Filter.prototype.entityDecode = function() {
-        this.modify(decode(this.str));
-        return this.str;
-    }
-
-    Filter.prototype.entityEncode = function() {
-        this.modify(encode(this.str));
-        return this.str;
-    }
-
-    Filter.prototype.ltrim = function(chars) {
-        chars = chars || whitespace;
-        this.modify(this.str.replace(new RegExp('^['+chars+']+', 'g'), ''));
-        return this.str;
-    }
-
-    Filter.prototype.rtrim = function(chars) {
-        chars = chars || whitespace;
-        this.modify(this.str.replace(new RegExp('['+chars+']+$', 'g'), ''));
-        return this.str;
-    }
-
-    Filter.prototype.trim = function(chars) {
-        chars = chars || whitespace;
-        this.modify(this.str.replace(new RegExp('^['+chars+']+|['+chars+']+$', 'g'), ''));
-        return this.str;
-    }
-
-    Filter.prototype.ifNull = function(replace) {
-        if (!this.str || this.str === '') {
-            this.modify(replace);
-        }
-        return this.str;
-    }
-
-    Filter.prototype.toFloat = function() {
-        this.modify(parseFloat(this.str));
-        return this.str;
-    }
-
-    Filter.prototype.toInt = function(radix) {
-        radix = radix || 10;
-        this.modify(parseInt(this.str), radix);
-        return this.str;
-    }
-
-    //Any strings with length > 0 (except for '0' and 'false') are considered true,
-    //all other strings are false
-    Filter.prototype.toBoolean = function() {
-        if (!this.str || this.str == '0' || this.str == 'false' || this.str == '') {
-            this.modify(false);
-        } else {
-            this.modify(true);
-        }
-        return this.str;
-    }
-
-    //String must be equal to '1' or 'true' to be considered true, all other strings
-    //are false
-    Filter.prototype.toBooleanStrict = function() {
-        if (this.str == '1' || this.str == 'true') {
-            this.modify(true);
-        } else {
-            this.modify(false);
-        }
-        return this.str;
-    }
-
-    //Quick access methods
-    exports.sanitize = exports.convert = function(str) {
-        var filter = new exports.Filter();
-        return filter.sanitize(str);
-    }
-
-    exports.check = exports.validate = exports.assert = function(str, fail_msg) {
-        var validator = new exports.Validator();
-        return validator.check(str, fail_msg);
-    }
-
-})(typeof(exports) === 'undefined' ? window : exports);
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/.npmignore b/blackberry10/node_modules/wrench/.npmignore
deleted file mode 100644
index 93f1361..0000000
--- a/blackberry10/node_modules/wrench/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-npm-debug.log

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/LICENSE b/blackberry10/node_modules/wrench/LICENSE
deleted file mode 100644
index a85a94a..0000000
--- a/blackberry10/node_modules/wrench/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2010 Ryan McGrath
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/lib/wrench.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/lib/wrench.js b/blackberry10/node_modules/wrench/lib/wrench.js
deleted file mode 100644
index cc5c18b..0000000
--- a/blackberry10/node_modules/wrench/lib/wrench.js
+++ /dev/null
@@ -1,426 +0,0 @@
-/*  wrench.js
- *
- *  A collection of various utility functions I've found myself in need of
- *  for use with Node.js (http://nodejs.org/). This includes things like:
- *
- *  - Recursively deleting directories in Node.js (Sync, not Async)
- *  - Recursively copying directories in Node.js (Sync, not Async)
- *  - Recursively chmoding a directory structure from Node.js (Sync, not Async)
- *  - Other things that I'll add here as time goes on. Shhhh...
- *
- *  ~ Ryan McGrath (ryan [at] venodesigns.net)
- */
-
-var fs = require("fs"),
-    _path = require("path");
-
-
-/*  wrench.readdirSyncRecursive("directory_path");
- *
- *  Recursively dives through directories and read the contents of all the
- *  children directories.
- */
-exports.readdirSyncRecursive = function(baseDir) {
-    baseDir = baseDir.replace(/\/$/, '');
-
-    var readdirSyncRecursive = function(baseDir) {
-        var files = [],
-            curFiles,
-            nextDirs,
-            isDir = function(fname){
-                return fs.statSync( _path.join(baseDir, fname) ).isDirectory();
-            },
-            prependBaseDir = function(fname){
-                return _path.join(baseDir, fname);
-            };
-
-        curFiles = fs.readdirSync(baseDir);
-        nextDirs = curFiles.filter(isDir);
-        curFiles = curFiles.map(prependBaseDir);
-
-        files = files.concat( curFiles );
-
-        while (nextDirs.length) {
-            files = files.concat( readdirSyncRecursive( _path.join(baseDir, nextDirs.shift()) ) );
-        }
-
-        return files;
-    };
-
-    // convert absolute paths to relative
-    var fileList = readdirSyncRecursive(baseDir).map(function(val){
-        return _path.relative(baseDir, val);
-    });
-
-    return fileList;
-};
-
-/*  wrench.readdirRecursive("directory_path", function(error, files) {});
- *
- *  Recursively dives through directories and read the contents of all the
- *  children directories.
- *
- *  Asynchronous, so returns results/error in callback.
- *  Callback receives the of files in currently recursed directory.
- *  When no more directories are left, callback is called with null for all arguments.
- *
- */
-exports.readdirRecursive = function(baseDir, fn) {
-    baseDir = baseDir.replace(/\/$/, '');
-
-    var waitCount = 0;
-
-    function readdirRecursive(curDir) {
-        var files = [],
-            curFiles,
-            nextDirs,
-            prependcurDir = function(fname){
-                return _path.join(curDir, fname);
-            };
-
-        waitCount++;
-        fs.readdir(curDir, function(e, curFiles) {
-            waitCount--;
-
-            curFiles = curFiles.map(prependcurDir);
-
-            curFiles.forEach(function(it) {
-                waitCount++;
-
-                fs.stat(it, function(e, stat) {
-                    waitCount--;
-
-                    if (e) {
-                        fn(e);
-                    } else {
-                        if (stat.isDirectory()) {
-                            readdirRecursive(it);
-                        }
-                    }
-
-                    if (waitCount == 0) {
-                        fn(null, null);
-                    }
-                });
-            });
-
-            fn(null, curFiles.map(function(val) {
-                // convert absolute paths to relative
-                return _path.relative(baseDir, val);
-            }));
-
-            if (waitCount == 0) {
-                fn(null, null);
-            }
-        });
-    };
-
-    readdirRecursive(baseDir);
-};
-
-
-
-/*  wrench.rmdirSyncRecursive("directory_path", forceDelete, failSilent);
- *
- *  Recursively dives through directories and obliterates everything about it. This is a
- *  Sync-function, which blocks things until it's done. No idea why anybody would want an
- *  Asynchronous version. :\
- */
-exports.rmdirSyncRecursive = function(path, failSilent) {
-    var files;
-
-    try {
-        files = fs.readdirSync(path);
-    } catch (err) {
-        if(failSilent) return;
-        throw new Error(err.message);
-    }
-
-    /*  Loop through and delete everything in the sub-tree after checking it */
-    for(var i = 0; i < files.length; i++) {
-        var currFile = fs.lstatSync(_path.join(path, files[i]));
-
-        if(currFile.isDirectory()) // Recursive function back to the beginning
-            exports.rmdirSyncRecursive(_path.join(path, files[i]));
-
-        else if(currFile.isSymbolicLink()) // Unlink symlinks
-            fs.unlinkSync(_path.join(path, files[i]));
-
-        else // Assume it's a file - perhaps a try/catch belongs here?
-            fs.unlinkSync(_path.join(path, files[i]));
-    }
-
-    /*  Now that we know everything in the sub-tree has been deleted, we can delete the main
-     directory. Huzzah for the shopkeep. */
-    return fs.rmdirSync(path);
-};
-
-/*  wrench.copyDirSyncRecursive("directory_to_copy", "new_directory_location", opts);
- *
- *  Recursively dives through a directory and moves all its files to a new location. This is a
- *  Synchronous function, which blocks things until it's done. If you need/want to do this in
- *  an Asynchronous manner, look at wrench.copyDirRecursively() below.
- *
- *  Note: Directories should be passed to this function without a trailing slash.
- */
-exports.copyDirSyncRecursive = function(sourceDir, newDirLocation, opts) {
-    if (!opts || !opts.preserve) {
-        try {
-            if(fs.statSync(newDirLocation).isDirectory()) exports.rmdirSyncRecursive(newDirLocation);
-        } catch(e) { }
-    }
-
-    /*  Create the directory where all our junk is moving to; read the mode of the source directory and mirror it */
-    var checkDir = fs.statSync(sourceDir);
-    try {
-        fs.mkdirSync(newDirLocation, checkDir.mode);
-    } catch (e) {
-        //if the directory already exists, that's okay
-        if (e.code !== 'EEXIST') throw e;
-    }
-
-    var files = fs.readdirSync(sourceDir);
-
-    for(var i = 0; i < files.length; i++) {
-        // ignores all files or directories which match the RegExp in opts.filter
-		if(typeof opts !== 'undefined') {
-            if(!opts.whitelist && opts.filter && files[i].match(opts.filter)) continue;
-		    // if opts.whitelist is true every file or directory which doesn't match opts.filter will be ignored
-		    if(opts.whitelist && opts.filter && !files[i].match(opts.filter)) continue;
-            if (opts.excludeHiddenUnix && /^\./.test(files[i])) continue;
-        }
-
-        var currFile = fs.lstatSync(_path.join(sourceDir, files[i]));
-
-        var fCopyFile = function(srcFile, destFile) {
-            if(typeof opts !== 'undefined' && opts.preserveFiles && fs.existsSync(destFile)) return;
-
-            var contents = fs.readFileSync(srcFile);
-            fs.writeFileSync(destFile, contents);
-        };
-
-        if(currFile.isDirectory()) {
-            /*  recursion this thing right on back. */
-            exports.copyDirSyncRecursive(_path.join(sourceDir, files[i]), _path.join(newDirLocation, files[i]), opts);
-        } else if(currFile.isSymbolicLink()) {
-            var symlinkFull = fs.readlinkSync(_path.join(sourceDir, files[i]));
-
-            if (typeof opts !== 'undefined' && !opts.inflateSymlinks) {
-                fs.symlinkSync(symlinkFull, _path.join(newDirLocation, files[i]));
-                continue;
-            }
-
-            var tmpCurrFile = fs.lstatSync(_path.join(sourceDir, symlinkFull));
-            if (tmpCurrFile.isDirectory()) {
-                exports.copyDirSyncRecursive(_path.join(sourceDir, symlinkFull), _path.join(newDirLocation, files[i]), opts);
-            } else {
-                /*  At this point, we've hit a file actually worth copying... so copy it on over. */
-                fCopyFile(_path.join(sourceDir, symlinkFull), _path.join(newDirLocation, files[i]));
-            }
-        } else {
-            /*  At this point, we've hit a file actually worth copying... so copy it on over. */
-            fCopyFile(_path.join(sourceDir, files[i]), _path.join(newDirLocation, files[i]));
-        }
-    }
-};
-
-/*  wrench.chmodSyncRecursive("directory", filemode);
- *
- *  Recursively dives through a directory and chmods everything to the desired mode. This is a
- *  Synchronous function, which blocks things until it's done.
- *
- *  Note: Directories should be passed to this function without a trailing slash.
- */
-exports.chmodSyncRecursive = function(sourceDir, filemode) {
-    var files = fs.readdirSync(sourceDir);
-
-    for(var i = 0; i < files.length; i++) {
-        var currFile = fs.lstatSync(_path.join(sourceDir, files[i]));
-
-        if(currFile.isDirectory()) {
-            /*  ...and recursion this thing right on back. */
-            exports.chmodSyncRecursive(_path.join(sourceDir, files[i]), filemode);
-        } else {
-            /*  At this point, we've hit a file actually worth copying... so copy it on over. */
-            fs.chmod(_path.join(sourceDir, files[i]), filemode);
-        }
-    }
-
-    /*  Finally, chmod the parent directory */
-    fs.chmod(sourceDir, filemode);
-};
-
-
-/*  wrench.chownSyncRecursive("directory", uid, gid);
- *
- *  Recursively dives through a directory and chowns everything to the desired user and group. This is a
- *  Synchronous function, which blocks things until it's done.
- *
- *  Note: Directories should be passed to this function without a trailing slash.
- */
-exports.chownSyncRecursive = function(sourceDir, uid, gid) {
-    var files = fs.readdirSync(sourceDir);
-
-    for(var i = 0; i < files.length; i++) {
-        var currFile = fs.lstatSync(_path.join(sourceDir, files[i]));
-
-        if(currFile.isDirectory()) {
-            /*  ...and recursion this thing right on back. */
-            exports.chownSyncRecursive(_path.join(sourceDir, files[i]), uid, gid);
-        } else {
-            /*  At this point, we've hit a file actually worth chowning... so own it. */
-            fs.chownSync(_path.join(sourceDir, files[i]), uid, gid);
-        }
-    }
-
-    /*  Finally, chown the parent directory */
-    fs.chownSync(sourceDir, uid, gid);
-};
-
-
-
-/*  wrench.rmdirRecursive("directory_path", callback);
- *
- *  Recursively dives through directories and obliterates everything about it.
- */
-exports.rmdirRecursive = function rmdirRecursive(dir, clbk){
-    fs.readdir(dir, function(err, files){
-        if (err) return clbk(err);
-        (function rmFile(err){
-            if (err) return clbk(err);
-
-            var filename = files.shift();
-            if (filename === null || typeof filename == 'undefined')
-                return fs.rmdir(dir, clbk);
-
-            var file = dir+'/'+filename;
-            fs.lstat(file, function(err, stat){
-                if (err) return clbk(err);
-                if (stat.isDirectory())
-                    rmdirRecursive(file, rmFile);
-                else
-                    fs.unlink(file, rmFile);
-            });
-        })();
-    });
-};
-
-/*  wrench.copyDirRecursive("directory_to_copy", "new_location", callback);
- *
- *  Recursively dives through a directory and moves all its files to a new
- *  location.
- *
- *  Note: Directories should be passed to this function without a trailing slash.
- */
-exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, clbk) {
-    fs.stat(newDir, function(err, newDirStat){
-        if (!err) return exports.rmdirRecursive(newDir, function(err){
-            copyDirRecursive(srcDir, newDir, clbk);
-        });
-
-        fs.stat(srcDir, function(err, srcDirStat){
-            if (err) return clbk(err);
-            fs.mkdir(newDir, srcDirStat.mode, function(err){
-                if (err) return clbk(err);
-                fs.readdir(srcDir, function(err, files){
-                    if (err) return clbk(err);
-                    (function copyFiles(err){
-                        if (err) return clbk(err);
-
-                        var filename = files.shift();
-                        if (filename === null || typeof filename == 'undefined')
-                            return clbk();
-
-                        var file = srcDir+'/'+filename,
-                            newFile = newDir+'/'+filename;
-
-                        fs.stat(file, function(err, fileStat){
-                            if (fileStat.isDirectory())
-                                copyDirRecursive(file, newFile, copyFiles);
-                            else if (fileStat.isSymbolicLink())
-                                fs.readlink(file, function(err, link){
-                                    fs.symlink(link, newFile, copyFiles);
-                                });
-                            else
-                                fs.readFile(file, function(err, data){
-                                    fs.writeFile(newFile, data, copyFiles);
-                                });
-                        });
-                    })();
-                });
-            });
-        });
-    });
-};
-
-var mkdirSyncRecursive = function(path, mode) {
-    var self = this;
-    path = _path.normalize(path)
-
-    try {
-        fs.mkdirSync(path, mode);
-    } catch(err) {
-        if(err.code == "ENOENT") {
-            var slashIdx = path.lastIndexOf(_path.sep);
-
-            if(slashIdx > 0) {
-                var parentPath = path.substring(0, slashIdx);
-                mkdirSyncRecursive(parentPath, mode);
-                mkdirSyncRecursive(path, mode);
-            } else {
-                throw err;
-            }
-        } else if(err.code == "EEXIST") {
-            return;
-        } else {
-            throw err;
-        }
-    }
-};
-exports.mkdirSyncRecursive = mkdirSyncRecursive;
-
-exports.LineReader = function(filename, bufferSize) {
-    this.bufferSize = bufferSize || 8192;
-    this.buffer = "";
-    this.fd = fs.openSync(filename, "r");
-    this.currentPosition = 0;
-};
-
-exports.LineReader.prototype = {
-    close: function() {
-        return fs.closeSync(this.fd);
-    },
-
-    getBufferAndSetCurrentPosition: function(position) {
-        var res = fs.readSync(this.fd, this.bufferSize, position, "ascii");
-
-        this.buffer += res[0];
-        if(res[1] === 0) {
-            this.currentPosition = -1;
-        } else {
-            this.currentPosition = position + res[1];
-        }
-
-        return this.currentPosition;
-    },
-
-    hasNextLine: function() {
-        while(this.buffer.indexOf('\n') === -1) {
-            this.getBufferAndSetCurrentPosition(this.currentPosition);
-            if(this.currentPosition === -1) return false;
-        }
-
-        if(this.buffer.indexOf("\n") > -1) return true;
-        return false;
-    },
-
-    getNextLine: function() {
-        var lineEnd = this.buffer.indexOf("\n"),
-            result = this.buffer.substring(0, lineEnd);
-
-        this.buffer = this.buffer.substring(result.length + 1, this.buffer.length);
-        return result;
-    }
-};
-
-// vim: et ts=4 sw=4

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/lib/x.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/lib/x.js b/blackberry10/node_modules/wrench/lib/x.js
deleted file mode 100644
index 3ddffd6..0000000
--- a/blackberry10/node_modules/wrench/lib/x.js
+++ /dev/null
@@ -1 +0,0 @@
-require('./wrench').mkdirsSyncRecursive('x/lol/b', 777);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/package.json b/blackberry10/node_modules/wrench/package.json
deleted file mode 100644
index c5e4397..0000000
--- a/blackberry10/node_modules/wrench/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "name": "wrench",
-  "description": "Recursive filesystem (and other) operations that Node *should* have.",
-  "version": "1.4.4",
-  "author": {
-    "name": "Ryan McGrath",
-    "email": "ryan@venodesigns.net"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://ryanmcgrath@github.com/ryanmcgrath/wrench-js.git"
-  },
-  "bugs": {
-    "url": "http://github.com/ryanmcgrath/wrench-js/issues"
-  },
-  "directories": {
-    "lib": "./lib/"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "nodeunit": ">= 0.6.4"
-  },
-  "main": "./lib/wrench",
-  "engines": {
-    "node": ">=0.1.97"
-  },
-  "scripts": {
-    "test": "nodeunit tests/runner.js"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "http://github.com/ryanmcgrath/wrench-js/raw/master/LICENSE"
-    }
-  ],
-  "readme": "wrench.js - Recursive file operations in Node.js\n----------------------------------------------------------------------------\nWhile I love Node.js, I've found myself missing some functions. Things like\nrecursively deleting/chmodding a directory (or even deep copying a directory),\nor even a basic line reader, shouldn't need to be re-invented time and time again.\n\nThat said, here's my attempt at a re-usable solution, at least until something\nmore formalized gets integrated into Node.js (*hint hint*). wrench.js is fairly simple\nto use - check out the documentation/examples below:\n\nInstallation\n-----------------------------------------------------------------------------\n\n    npm install wrench\n\nUsage\n-----------------------------------------------------------------------------\n``` javascript\nvar wrench = require('wrench'),\n\tutil = require('util');\n```\n\n### Synchronous operations\n``` javascript\n// Recursively create directories, sub-trees and all.\n
 wrench.mkdirSyncRecursive(dir, 0777);\n\n// Recursively delete the entire sub-tree of a directory, then kill the directory\nwrench.rmdirSyncRecursive('my_directory_name', failSilently);\n\n// Recursively read directories contents.\nwrench.readdirSyncRecursive('my_directory_name');\n\n// Recursively chmod the entire sub-tree of a directory\nwrench.chmodSyncRecursive('my_directory_name', 0755);\n\n// Recursively chown the entire sub-tree of a directory\nwrench.chownSyncRecursive(\"directory\", uid, gid);\n\n// Deep-copy an existing directory\nwrench.copyDirSyncRecursive('directory_to_copy', 'location_where_copy_should_end_up');\n\n// Read lines in from a file until you hit the end\nvar f = new wrench.LineReader('x.txt');\nwhile(f.hasNextLine()) {\n\tutil.puts(x.getNextLine());\n}\n\n// Note: You will need to close that above line reader at some point, otherwise\n// you will run into a \"too many open files\" error. f.close() or fs.closeSync(f.fd) are\n// your friends, as only you know
  when it is safe to close.\n```\n\n### Asynchronous operations\n``` javascript\n// Recursively read directories contents\nvar files = [];\nwrench.readdirRecursive('my_directory_name', function(error, curFiles) {\n    // curFiles is what you want\n});\n```\n\nQuestions, comments? Hit me up. (ryan [at] venodesigns.net | http://twitter.com/ryanmcgrath)\n",
-  "readmeFilename": "readme.md",
-  "_id": "wrench@1.4.4",
-  "_from": "wrench@1.4.4"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/readme.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/readme.md b/blackberry10/node_modules/wrench/readme.md
deleted file mode 100644
index 243c0da..0000000
--- a/blackberry10/node_modules/wrench/readme.md
+++ /dev/null
@@ -1,63 +0,0 @@
-wrench.js - Recursive file operations in Node.js
-----------------------------------------------------------------------------
-While I love Node.js, I've found myself missing some functions. Things like
-recursively deleting/chmodding a directory (or even deep copying a directory),
-or even a basic line reader, shouldn't need to be re-invented time and time again.
-
-That said, here's my attempt at a re-usable solution, at least until something
-more formalized gets integrated into Node.js (*hint hint*). wrench.js is fairly simple
-to use - check out the documentation/examples below:
-
-Installation
------------------------------------------------------------------------------
-
-    npm install wrench
-
-Usage
------------------------------------------------------------------------------
-``` javascript
-var wrench = require('wrench'),
-	util = require('util');
-```
-
-### Synchronous operations
-``` javascript
-// Recursively create directories, sub-trees and all.
-wrench.mkdirSyncRecursive(dir, 0777);
-
-// Recursively delete the entire sub-tree of a directory, then kill the directory
-wrench.rmdirSyncRecursive('my_directory_name', failSilently);
-
-// Recursively read directories contents.
-wrench.readdirSyncRecursive('my_directory_name');
-
-// Recursively chmod the entire sub-tree of a directory
-wrench.chmodSyncRecursive('my_directory_name', 0755);
-
-// Recursively chown the entire sub-tree of a directory
-wrench.chownSyncRecursive("directory", uid, gid);
-
-// Deep-copy an existing directory
-wrench.copyDirSyncRecursive('directory_to_copy', 'location_where_copy_should_end_up');
-
-// Read lines in from a file until you hit the end
-var f = new wrench.LineReader('x.txt');
-while(f.hasNextLine()) {
-	util.puts(x.getNextLine());
-}
-
-// Note: You will need to close that above line reader at some point, otherwise
-// you will run into a "too many open files" error. f.close() or fs.closeSync(f.fd) are
-// your friends, as only you know when it is safe to close.
-```
-
-### Asynchronous operations
-``` javascript
-// Recursively read directories contents
-var files = [];
-wrench.readdirRecursive('my_directory_name', function(error, curFiles) {
-    // curFiles is what you want
-});
-```
-
-Questions, comments? Hit me up. (ryan [at] venodesigns.net | http://twitter.com/ryanmcgrath)

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/copydirsync_unix.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/copydirsync_unix.js b/blackberry10/node_modules/wrench/tests/copydirsync_unix.js
deleted file mode 100644
index 676c9fa..0000000
--- a/blackberry10/node_modules/wrench/tests/copydirsync_unix.js
+++ /dev/null
@@ -1,210 +0,0 @@
-var testCase = require('nodeunit').testCase;
-var fs = require('fs');
-var wrench = require('../lib/wrench');
-var path = require('path');
-
-function checkResultHidden(test, files) {
-    var check = [
-        '.hidden',
-        '.hidden.txt',
-        'bar.txt',
-        'foo',
-        path.join('.hidden', 'dolor.md'),
-        path.join('foo', 'bar'),
-        path.join('foo', 'dolor.md'),
-        path.join('foo', 'lorem.txt'),
-        path.join('foo', 'bar', 'ipsum.js')
-    ];
-
-    test.deepEqual(files, check);
-}
-
-function checkResultShown(test, files) {
-    var check = [
-        'bar.txt',
-        'foo',
-        path.join('foo', 'bar'),
-        path.join('foo', 'dolor.md'),
-        path.join('foo', 'lorem.txt'),
-        path.join('foo', 'bar', 'ipsum.js')
-    ];
-
-    test.deepEqual(files, check);
-}
-
-function checkResultInflate(test, files) {
-    var check = [
-        '.hidden',
-        'bar.txt',
-        'test',
-        path.join('.hidden', 'dolor.md')
-    ];
-
-    test.deepEqual(files, check);
-
-    test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/.hidden')).isSymbolicLink(), false);
-    test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/bar.txt')).isSymbolicLink(), false);
-}
-
-function checkResultDontInflate(test, files) {
-    var check = [
-        '.hidden',
-        'bar.txt',
-        'test',
-        path.join('.hidden', 'dolor.md')
-    ];
-
-    test.deepEqual(files, check);
-
-    test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/.hidden')).isSymbolicLink(), true);
-    test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/bar.txt')).isSymbolicLink(), true);
-}
-
-function checkResultPreserveFiles(test, files) {
-    checkResultHidden(test, files);
-    var contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', '.hidden.txt')), "utf8");
-    test.deepEqual(contents, 'hidden file');
-    contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', 'bar.txt')), "utf8");
-    test.deepEqual(contents, 'shown file');
-}
-
-function checkResultOverwriteFiles(test, files) {
-    checkResultHidden(test, files);
-    var contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', '.hidden.txt')), "utf8");
-    test.deepEqual(contents, 'just some text for .hidden.txt');
-    contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', 'bar.txt')), "utf8");
-    test.deepEqual(contents, 'just some text for bar.txt');
-}
-
-module.exports = testCase({
-    test_copyDirSyncRecursiveWithoutOptions: function(test) {
-        var dir = path.join(__dirname, 'shown');
-        var testdir = path.join(__dirname, 'testdir');
-
-        wrench.copyDirSyncRecursive(dir, testdir);
-
-        wrench.rmdirSyncRecursive(testdir);
-        test.done();
-    },
-    test_copyDirSyncRecursiveHidden: function(test) {
-        var dir = path.join(__dirname, 'shown');
-        var testdir = path.join(__dirname, 'testdir');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        wrench.mkdirSyncRecursive(testdir, 0777);
-        wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: false });
-
-        var files = wrench.readdirSyncRecursive(testdir);
-
-        checkResultHidden(test, files);
-
-        wrench.rmdirSyncRecursive(testdir);
-
-        test.done();
-    },
-    test_copyDirSyncRecursiveShown: function(test) {
-        var dir = path.join(__dirname, 'shown');
-        var testdir = path.join(__dirname, 'testdir');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        wrench.mkdirSyncRecursive(testdir, 0777);
-        wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: true });
-
-        var files = wrench.readdirSyncRecursive(testdir);
-
-        checkResultShown(test, files);
-
-        wrench.rmdirSyncRecursive(testdir);
-
-        test.done();
-    },
-    test_copyDirSyncRecursiveInflate: function(test) {
-        var dir = path.join(__dirname, 'withsymlinks');
-        var testdir = path.join(__dirname, 'testdir');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        wrench.mkdirSyncRecursive(testdir, 0777);
-        wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: false, inflateSymlinks: true });
-
-        var files = wrench.readdirSyncRecursive(testdir);
-
-        checkResultInflate(test, files);
-
-        wrench.rmdirSyncRecursive(testdir);
-
-        test.done();
-    },
-    test_copyDirSyncRecursiveDontInflate: function(test) {
-        var dir = path.join(__dirname, 'withsymlinks');
-        var testdir = path.join(__dirname, 'testdir');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        wrench.mkdirSyncRecursive(testdir, 0777);
-        wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: false, inflateSymlinks: false });
-
-        var files = wrench.readdirSyncRecursive(testdir);
-
-        checkResultDontInflate(test, files);
-
-        wrench.rmdirSyncRecursive(testdir);
-
-        test.done();
-    },
-    test_copyDirSyncRecursivePreserveFiles: function(test) {
-        var dir = path.join(__dirname, 'shown'),
-            testdir1 = path.join(__dirname, 'testdir1'),
-            testdir2 = path.join(__dirname, 'testdir2');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        wrench.mkdirSyncRecursive(testdir1, 0777);
-        wrench.copyDirSyncRecursive(dir, testdir1, { excludeHiddenUnix: false });
-        wrench.copyDirSyncRecursive(dir, testdir2, { excludeHiddenUnix: false });
-
-        fs.writeFileSync(path.join(testdir1, ".hidden.txt"), 'just some text for .hidden.txt');
-        fs.writeFileSync(path.join(testdir1, "bar.txt"), 'just some text for bar.txt');
-
-        wrench.copyDirSyncRecursive(testdir1, testdir2, { preserve: true, excludeHiddenUnix: false, preserveFiles: true });
-
-        var files = wrench.readdirSyncRecursive(testdir2);
-
-        checkResultPreserveFiles(test, files);
-
-        wrench.rmdirSyncRecursive(testdir1);
-        wrench.rmdirSyncRecursive(testdir2);
-
-        test.done();
-    },
-    test_copyDirSyncRecursiveOverwriteFiles: function(test) {
-        var dir = path.join(__dirname, 'shown'),
-            testdir1 = path.join(__dirname, 'testdir1'),
-            testdir2 = path.join(__dirname, 'testdir2');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        wrench.mkdirSyncRecursive(testdir1, 0777);
-        wrench.copyDirSyncRecursive(dir, testdir1, { excludeHiddenUnix: false });
-        wrench.copyDirSyncRecursive(dir, testdir2, { excludeHiddenUnix: false });
-
-        fs.writeFileSync(path.join(testdir1, ".hidden.txt"), 'just some text for .hidden.txt');
-        fs.writeFileSync(path.join(testdir1, "bar.txt"), 'just some text for bar.txt');
-
-        wrench.copyDirSyncRecursive(testdir1, testdir2, { preserve: true, excludeHiddenUnix: false, preserveFiles: false });
-
-        var files = wrench.readdirSyncRecursive(testdir2);
-
-        checkResultOverwriteFiles(test, files);
-
-        wrench.rmdirSyncRecursive(testdir1);
-        wrench.rmdirSyncRecursive(testdir2);
-
-        test.done();
-    }
-
-});
-
-// vim: et ts=4 sw=4

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/mkdir.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/mkdir.js b/blackberry10/node_modules/wrench/tests/mkdir.js
deleted file mode 100644
index 933887b..0000000
--- a/blackberry10/node_modules/wrench/tests/mkdir.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var testCase = require('nodeunit').testCase;
-var fs = require('fs');
-var wrench = require('../lib/wrench');
-var path = require('path');
-
-module.exports = testCase({
-    test_mkdirSyncRecursive: function(test) {
-        var dir = __dirname + '/_tmp/foo/bar';
-
-        test.equals(fs.existsSync(dir), false, 'Dir shouldn\'t exist - clean it up manually?');
-
-        wrench.mkdirSyncRecursive(dir, 0777);
-
-        test.equals(fs.existsSync(dir), true, 'Dir should exist now');
-
-        // clean up
-        while (dir != __dirname) {
-            fs.rmdirSync(dir);
-            dir = path.dirname(dir);
-        }
-
-        test.done();
-    },
-});
-
-// vim: et ts=4 sw=4

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/readdir.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/readdir.js b/blackberry10/node_modules/wrench/tests/readdir.js
deleted file mode 100644
index 2460203..0000000
--- a/blackberry10/node_modules/wrench/tests/readdir.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var testCase = require('nodeunit').testCase;
-var fs = require('fs');
-var wrench = require('../lib/wrench');
-var path = require('path');
-
-
-function checkResult(test, files) {
-    var check = [
-            'bar.txt',
-            'foo',
-            path.join('foo', 'bar'),
-            path.join('foo', 'dolor.md'),
-            path.join('foo', 'lorem.txt'),
-            path.join('foo', 'bar', 'ipsum.js')
-        ];
-
-    test.deepEqual(files, check);
-
-    test.done();
-}
-
-module.exports = testCase({
-    test_readdirSyncRecursive: function(test) {
-        var dir = path.join(__dirname, 'readdir');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        var files = wrench.readdirSyncRecursive(dir);
-
-        checkResult(test, files);
-    },
-
-    test_readdirRecursive: function(test) {
-        var dir = path.join(__dirname, 'readdir');
-
-        test.ok(fs.existsSync(dir), 'Folders should exist');
-
-        var allFiles = [];
-
-        wrench.readdirRecursive(dir, function(e, files) {
-            if (e) throw e;
-
-            if (files) {
-                allFiles = allFiles.concat(files);
-            } else {
-                checkResult(test, allFiles);
-            }
-        });
-    }
-});
-
-// vim: et ts=4 sw=4

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/readdir/bar.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/readdir/bar.txt b/blackberry10/node_modules/wrench/tests/readdir/bar.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/readdir/foo/bar/ipsum.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/readdir/foo/bar/ipsum.js b/blackberry10/node_modules/wrench/tests/readdir/foo/bar/ipsum.js
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/readdir/foo/dolor.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/readdir/foo/dolor.md b/blackberry10/node_modules/wrench/tests/readdir/foo/dolor.md
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/readdir/foo/lorem.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/readdir/foo/lorem.txt b/blackberry10/node_modules/wrench/tests/readdir/foo/lorem.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/runner.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/runner.js b/blackberry10/node_modules/wrench/tests/runner.js
deleted file mode 100644
index 8f90dae..0000000
--- a/blackberry10/node_modules/wrench/tests/runner.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// `nodeunit tests/runner`
-// will run all the tests
-
-module.exports = {
-    group_mkdir: require('./mkdir'),
-    group_readdir: require('./readdir'),
-    group_copydir: require('./copydirsync_unix')
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/shown/.hidden.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/shown/.hidden.txt b/blackberry10/node_modules/wrench/tests/shown/.hidden.txt
deleted file mode 100644
index b96b725..0000000
--- a/blackberry10/node_modules/wrench/tests/shown/.hidden.txt
+++ /dev/null
@@ -1 +0,0 @@
-hidden file
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/shown/.hidden/dolor.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/shown/.hidden/dolor.md b/blackberry10/node_modules/wrench/tests/shown/.hidden/dolor.md
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/shown/bar.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/shown/bar.txt b/blackberry10/node_modules/wrench/tests/shown/bar.txt
deleted file mode 100644
index 3d36c5c..0000000
--- a/blackberry10/node_modules/wrench/tests/shown/bar.txt
+++ /dev/null
@@ -1 +0,0 @@
-shown file
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/shown/foo/bar/ipsum.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/shown/foo/bar/ipsum.js b/blackberry10/node_modules/wrench/tests/shown/foo/bar/ipsum.js
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/shown/foo/dolor.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/shown/foo/dolor.md b/blackberry10/node_modules/wrench/tests/shown/foo/dolor.md
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/shown/foo/lorem.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/shown/foo/lorem.txt b/blackberry10/node_modules/wrench/tests/shown/foo/lorem.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/wrench/tests/withsymlinks/test
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/wrench/tests/withsymlinks/test b/blackberry10/node_modules/wrench/tests/withsymlinks/test
deleted file mode 100644
index dba6882..0000000
--- a/blackberry10/node_modules/wrench/tests/withsymlinks/test
+++ /dev/null
@@ -1 +0,0 @@
-aaa bbb ccc ddd
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/.npmignore b/blackberry10/node_modules/xml2js/.npmignore
deleted file mode 100644
index c3c1388..0000000
--- a/blackberry10/node_modules/xml2js/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.swp
-node_modules

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/Cakefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/Cakefile b/blackberry10/node_modules/xml2js/Cakefile
deleted file mode 100644
index 1143442..0000000
--- a/blackberry10/node_modules/xml2js/Cakefile
+++ /dev/null
@@ -1,12 +0,0 @@
-{spawn, exec} = require 'child_process'
-
-task 'build', 'continually build the JavaScript code', ->
-  coffee = spawn 'coffee', ['-cw', '-o', 'lib', 'src']
-  coffee.stdout.on 'data', (data) -> console.log data.toString().trim()
-
-task 'doc', 'rebuild the Docco documentation', ->
-  exec([
-    'docco src/xml2js.coffee'
-  ].join(' && '), (err) ->
-    throw err if err
-  )

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/LICENSE b/blackberry10/node_modules/xml2js/LICENSE
deleted file mode 100644
index 83c3140..0000000
--- a/blackberry10/node_modules/xml2js/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright 2010, 2011. All rights reserved.
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/README.md b/blackberry10/node_modules/xml2js/README.md
deleted file mode 100644
index 2765d8c..0000000
--- a/blackberry10/node_modules/xml2js/README.md
+++ /dev/null
@@ -1,139 +0,0 @@
-node-xml2js
-===========
-
-Ever had the urge to parse XML? And wanted to access the data in some sane,
-easy way? Don't want to compile a C parser, for whatever reason? Then xml2js is
-what you're looking for!
-
-Description
-===========
-
-Simple XML to JavaScript object converter. Uses
-[sax-js](https://github.com/isaacs/sax-js/).
-
-Note: If you're looking for a full DOM parser, you probably want
-[JSDom](https://github.com/tmpvar/jsdom).
-
-Installation
-============
-
-Simplest way to install `xml2js` is to use [npm](http://npmjs.org), just `npm
-install xml2js` which will download xml2js and all dependencies.
-
-Usage
-=====
-
-This will have to do, unless you're looking for some fancy extensive
-documentation. If you're looking for every single option and usage, see the
-unit tests.
-
-Simple as pie usage
--------------------
-
-The simplest way to use it, is to use the optional callback interface added in
-0.1.11. That's right, if you have been using xml-simple or a home-grown
-wrapper, this is for you:
-
-```javascript
-var fs = require('fs'),
-    xml2js = require('xml2js');
-
-var parser = new xml2js.Parser();
-fs.readFile(__dirname + '/foo.xml', function(err, data) {
-    parser.parseString(data, function (err, result) {
-        console.dir(result);
-        console.log('Done');
-    });
-});
-```
-
-Look ma, no event listeners! Alternatively you can still use the traditional
-`addListener` variant:
-
-```javascript
-var fs = require('fs'),
-    xml2js = require('xml2js');
-
-var parser = new xml2js.Parser();
-parser.addListener('end', function(result) {
-    console.dir(result);
-    console.log('Done.');
-});
-fs.readFile(__dirname + '/foo.xml', function(err, data) {
-    parser.parseString(data);
-});
-```
-
-You can also use xml2js from
-[CoffeeScript](http://jashkenas.github.com/coffee-script/), further reducing
-the clutter:
-
-```coffeescript
-fs = require 'fs',
-xml2js = require 'xml2js'
-
-parser = new xml2js.Parser()
-fs.readFile __dirname + '/foo.xml', (err, data) ->
-  parser.parseString data, (err, result) ->
-    console.dir result
-    console.log 'Done.'
-```
-
-So you wanna some JSON?
------------------------
-
-Just wrap the `result` object in a call to `JSON.stringify` like this
-`JSON.stringify(result)`. You get a string containing the JSON representation
-of the parsed object that you can feed to JSON-hungry consumers.
-
-Displaying results
-------------------
-
-You might wonder why, using `console.dir` or `console.log` the output at some
-level is only `[Object]`. Don't worry, this is not because xml2js got lazy.
-That's because Node uses `util.inspect` to convert the object into strings and
-that function stops after `depth=2` which is a bit low for most XML.
-
-To display the whole deal, you can use `console.log(util.inspect(result, false,
-null))`, which displays the whole result.
-
-So much for that, but what if you use
-[eyes](https://github.com/cloudhead/eyes.js) for nice colored output and it
-truncates the output with `…`? Don't fear, there's also a solution for that,
-you just need to increase the `maxLength` limit by creating a custom inspector
-`var inspect = require('eyes').inspector({maxLength: false})` and then you can
-easily `inspect(result)`.
-
-Options
-=======
-
-Apart from the default settings, there is a number of options that can be
-specified for the parser. Options are specified by ``new Parser({optionName:
-value})``. Possible options are:
-
-  * `explicitCharkey` (default: `false`)
-  * `trim` (default: `true`): Trim the whitespace at the beginning and end of
-    text nodes.
-  * `normalize` (default: `true`): Trim whitespaces inside text nodes.
-  * `explicitRoot` (default: `false`): Set this if you want to get the root
-    node in the resulting object.
-  * `emptyTag` (default: `undefined`): what will the value of empty nodes be.
-    Default is `{}`.
-  * `explicitArray` (default: `false`): Always put child nodes in an array if
-    true; otherwise an array is created only if there is more than one.
-  * `ignoreAttrs` (default: `false`): Ignore all XML attributes and only create
-    text nodes.
-  * `mergeAttrs` (default: `false`): Merge attributes and child elements as
-    properties of the parent, instead of keying attributes off a child
-    attribute object. This option is ignored if `ignoreAttrs` is `false`.
-
-These default settings are for backward-compatibility (and might change in the
-future). For the most 'clean' parsing, you should disable `normalize` and
-`trimming` and enable `explicitRoot`.
-
-Running tests, development
-==========================
-
-The development requirements are handled by npm, you just need to install
-them. We also have a number of unit tests, they can be run using `zap`
-directly from the project root.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/lib/xml2js.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/lib/xml2js.js b/blackberry10/node_modules/xml2js/lib/xml2js.js
deleted file mode 100644
index 0938746..0000000
--- a/blackberry10/node_modules/xml2js/lib/xml2js.js
+++ /dev/null
@@ -1,152 +0,0 @@
-(function() {
-  var events, isEmpty, sax;
-  var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.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; };
-
-  sax = require('sax');
-
-  events = require('events');
-
-  isEmpty = function(thing) {
-    return typeof thing === "object" && (thing != null) && Object.keys(thing).length === 0;
-  };
-
-  exports.Parser = (function() {
-
-    __extends(Parser, events.EventEmitter);
-
-    function Parser(opts) {
-      this.parseString = __bind(this.parseString, this);
-      this.reset = __bind(this.reset, this);
-      var key, value;
-      this.options = {
-        explicitCharkey: false,
-        trim: true,
-        normalize: true,
-        attrkey: "@",
-        charkey: "#",
-        explicitArray: false,
-        ignoreAttrs: false,
-        mergeAttrs: false
-      };
-      for (key in opts) {
-        if (!__hasProp.call(opts, key)) continue;
-        value = opts[key];
-        this.options[key] = value;
-      }
-      this.reset();
-    }
-
-    Parser.prototype.reset = function() {
-      var attrkey, charkey, err, stack;
-      var _this = this;
-      this.removeAllListeners();
-      this.saxParser = sax.parser(true, {
-        trim: false,
-        normalize: false
-      });
-      err = false;
-      this.saxParser.onerror = function(error) {
-        if (!err) {
-          err = true;
-          return _this.emit("error", error);
-        }
-      };
-      this.EXPLICIT_CHARKEY = this.options.explicitCharkey;
-      this.resultObject = null;
-      stack = [];
-      attrkey = this.options.attrkey;
-      charkey = this.options.charkey;
-      this.saxParser.onopentag = function(node) {
-        var key, obj, _ref;
-        obj = {};
-        obj[charkey] = "";
-        if (!_this.options.ignoreAttrs) {
-          _ref = node.attributes;
-          for (key in _ref) {
-            if (!__hasProp.call(_ref, key)) continue;
-            if (!(attrkey in obj) && !_this.options.mergeAttrs) obj[attrkey] = {};
-            if (_this.options.mergeAttrs) {
-              obj[key] = node.attributes[key];
-            } else {
-              obj[attrkey][key] = node.attributes[key];
-            }
-          }
-        }
-        obj["#name"] = node.name;
-        return stack.push(obj);
-      };
-      this.saxParser.onclosetag = function() {
-        var nodeName, obj, old, s;
-        obj = stack.pop();
-        nodeName = obj["#name"];
-        delete obj["#name"];
-        s = stack[stack.length - 1];
-        if (obj[charkey].match(/^\s*$/)) {
-          delete obj[charkey];
-        } else {
-          if (_this.options.trim) obj[charkey] = obj[charkey].trim();
-          if (_this.options.normalize) {
-            obj[charkey] = obj[charkey].replace(/\s{2,}/g, " ").trim();
-          }
-          if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {
-            obj = obj[charkey];
-          }
-        }
-        if (_this.options.emptyTag !== void 0 && isEmpty(obj)) {
-          obj = _this.options.emptyTag;
-        }
-        if (stack.length > 0) {
-          if (!_this.options.explicitArray) {
-            if (!(nodeName in s)) {
-              return s[nodeName] = obj;
-            } else if (s[nodeName] instanceof Array) {
-              return s[nodeName].push(obj);
-            } else {
-              old = s[nodeName];
-              s[nodeName] = [old];
-              return s[nodeName].push(obj);
-            }
-          } else {
-            if (!(s[nodeName] instanceof Array)) s[nodeName] = [];
-            return s[nodeName].push(obj);
-          }
-        } else {
-          if (_this.options.explicitRoot) {
-            old = obj;
-            obj = {};
-            obj[nodeName] = old;
-          }
-          _this.resultObject = obj;
-          return _this.emit("end", _this.resultObject);
-        }
-      };
-      return this.saxParser.ontext = this.saxParser.oncdata = function(text) {
-        var s;
-        s = stack[stack.length - 1];
-        if (s) return s[charkey] += text;
-      };
-    };
-
-    Parser.prototype.parseString = function(str, cb) {
-      if ((cb != null) && typeof cb === "function") {
-        this.on("end", function(result) {
-          this.reset();
-          return cb(null, result);
-        });
-        this.on("error", function(err) {
-          this.reset();
-          return cb(err);
-        });
-      }
-      if (str.toString().trim() === '') {
-        this.emit("end", null);
-        return true;
-      }
-      return this.saxParser.write(str.toString());
-    };
-
-    return Parser;
-
-  })();
-
-}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/node_modules/sax/AUTHORS
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/node_modules/sax/AUTHORS b/blackberry10/node_modules/xml2js/node_modules/sax/AUTHORS
deleted file mode 100644
index 7145cbc..0000000
--- a/blackberry10/node_modules/xml2js/node_modules/sax/AUTHORS
+++ /dev/null
@@ -1,10 +0,0 @@
-# contributors sorted by whether or not they're me.
-Isaac Z. Schlueter <i...@izs.me>
-Stein Martin Hustad <st...@hustad.com>
-Mikeal Rogers <mi...@gmail.com>
-Laurie Harper <la...@holoweb.net>
-Jann Horn <ja...@Jann-PC.fritz.box>
-Elijah Insua <tm...@gmail.com>
-Henry Rawas <he...@schakra.com>
-Justin Makeig <jm...@makeig.com>
-Mike Schilling <mi...@emotive.com>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE b/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE
deleted file mode 100644
index 62e4ccf..0000000
--- a/blackberry10/node_modules/xml2js/node_modules/sax/LICENSE
+++ /dev/null
@@ -1,32 +0,0 @@
-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.
-
-
-The file "examples/strict.dtd" is licensed by the W3C and used according
-to the terms of the W3C SOFTWARE NOTICE AND LICENSE.  See LICENSE-W3C.html
-for details.


[12/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/package.json
deleted file mode 100644
index 80fc13a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/async/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "name": "async",
-  "description": "Higher-order functions and common patterns for asynchronous code",
-  "main": "./index",
-  "author": {
-    "name": "Caolan McMahon"
-  },
-  "version": "0.1.22",
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/caolan/async.git"
-  },
-  "bugs": {
-    "url": "http://github.com/caolan/async/issues"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "http://github.com/caolan/async/raw/master/LICENSE"
-    }
-  ],
-  "devDependencies": {
-    "nodeunit": ">0.0.0",
-    "uglify-js": "1.2.x",
-    "nodelint": ">0.0.0"
-  },
-  "readme": "# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser.\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, forEach…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n    async.map(['file1','file2','file3'], fs.stat, function(err, results){\n        // results is now an array of stats for each file\n    });\n\n    async.filter(['file1','file2','file3'], path.exists, function(results){\n        // results now equals an array of the existing files\n    });\n\n    async.parallel([\n        function(){ ... },\n     
    function(){ ... }\n    ], callback);\n\n    async.series([\n        function(){ ... },\n        function(){ ... }\n    ]);\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n\n## Download\n\nReleases are available for download from\n[GitHub](http://github.com/caolan/async/downloads).\nAlternatively, you can install using Node Package Manager (npm):\n\n    npm install async\n\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed\n\n__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped\n\n\n## In the Browser\n\nSo far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n    <script type=\"text/javascript\" src=\"async.js\"></script>\n    <script type=\"text/javascript\">\n\n        async.map(data,
  asyncProcess, function(err, results){\n            alert(results);\n        });\n\n    </script>\n\n\n## Documentation\n\n### Collections\n\n* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this call
 back, the main\ncallback for the forEach function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n    // assuming openFiles is an array of file names and saveFile is a function\n    // to save the modified contents of that file:\n\n    async.forEach(openFiles, saveFile, function(err){\n        // if any of the saves produced an error, err would equal that error\n    });\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n### forEachSeries(arr, iterator, callback)\n\nThe 
 same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n    // Assume documents is an array of JSON objects and 
 requestApi is a\n    // function that interacts with a rate-limited REST api.\n\n    async.forEachLimit(documents, 20, requestApi, function(err){\n        // if any of the saves produced an error, err would equal that error\n    });\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Argumen
 ts__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed\n  with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n    async.map(['file1','file2','file3'], fs.stat, function(err, results){\n        // results is now an array of stats for each file\n    });\n\n---------------------------------------\n\n<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n----------------------------
 -----------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n  functions have finished.\n\n__Example__\n\n    async.filter(['file1','file2','file3'], path.exists, function(results){\n        // results now equals an array of the existing files\n    });\n\n--------------------
 -------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name=\"reject\" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the 
 initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n  array to produce the next step in the reduction. The iterator is passed a\n  callback which accepts an optional error as its first argument, and the state\n  of the reduction as the second. If an error is passed to the callback, the\n  reduction is stopped and the main callback is immediately called with the\n  error.\n* callback(err, result) - A callback which is called after all the iterator\n  functions have finis
 hed. Result is the reduced value.\n\n__Example__\n\n    async.reduce([1,2,3], 0, function(memo, item, callback){\n        // pointless async:\n        process.nextTick(function(){\n            callback(null, memo + item)\n        });\n    }, function(err, result){\n        // result is now equal to the last value of memo, which is 6\n    });\n\n---------------------------------------\n\n<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order wi
 thin the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  the first item in the array that passes the truth test (iterator) or the\n  value undefined if none passed.\n\n__Example__\n\n    async.detect(['file1','file2','file3'], path.exists, function(result){\n        // result now equals the first file in the list that exists\n    });\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms
  of array order) that passes the truth test.\n\n\n---------------------------------------\n\n<a name=\"sortBy\" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed\n  with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is the items from\n  the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n    async.sortBy(['file1','file2','file3'], function(file, callback){\n        fs.stat(file, function(err, stats){\n            callback(err, stats.mtime);\n        });\n    }, function(err, results){\n        // results is n
 ow the original array of files sorted by\n        // modified date\n    });\n\n\n---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  either true or false depending on the values of the 
 async tests.\n\n__Example__\n\n    async.some(['file1','file2','file3'], path.exists, function(result){\n        // if result is true then at least one of the files exists\n    });\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called after all the iterator\n  functions have finished. Result will be either true or false depending on\n  the values of the async tests.\n\n__Exam
 ple__\n\n    async.every(['file1','file2','file3'], path.exists, function(result){\n        // if result is true then every file exists\n    });\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback which must be called once it has completed\n  with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an 
 array containing\n  the concatenated results of the iterator function.\n\n__Example__\n\n    async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n        // files is now a list of filenames that exist in the 3 directories\n    });\n\n---------------------------------------\n\n<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results wil
 l be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n  a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets an array of all the arguments passed to\n  the callbacks used in the array.\n\n__Example__\n\n    async.series([\n        function(callback){\n            // do some stuff ...\n            callback(null, 'one');\n        },\n        function(callback){\n            // do some more stuff ...\n            callback(null, 'two');\n        },\n    ],\n    // optional callback\n    function(err, results){\n        // results is now equal to ['one', 'two']\n    });\n\n\n    // an example using an object instead of an array\n    async.series({\n        one: function(callback){\n            setT
 imeout(function(){\n                callback(null, 1);\n            }, 200);\n        },\n        two: function(callback){\n            setTimeout(function(){\n                callback(null, 2);\n            }, 100);\n        },\n    },\n    function(err, results) {\n        // results is now equal to: {one: 1, two: 2}\n    });\n\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results fr
 om\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n  callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets an array of all the arguments passed to\n  the callbacks used in the array.\n\n__Example__\n\n    async.parallel([\n        function(callback){\n            setTimeout(function(){\n                callback(null, 'one');\n            }, 200);\n        },\n        function(callback){\n            setTimeout(function(){\n                callback(null, 'two');\n            }, 100);\n        },\n    ],\n    // optional callback\n    function(err, results){\n        // the results array will equal ['one','two'] even though\n        // the second function had a shorter timeout.\n    });\n\n\n    // an example using an object instead of an array\n    async.parallel({\n        one: function(callback){\n           
  setTimeout(function(){\n                callback(null, 1);\n            }, 200);\n        },\n        two: function(callback){\n            setTimeout(function(){\n                callback(null, 2);\n            }, 100);\n        },\n    },\n    function(err, results) {\n        // results is now equals to: {one: 1, two: 2}\n    });\n\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n  passed a callback which must be called once it has completed with an optional\n  error as the first argument.\n* callback(err) - A callback which is called after the test fails and repeated\n  execution of fn has stopped.\n\n__Example__\n\n    var count = 0;\n\n    async.whilst(\
 n        function () { return count < 5; },\n        function (callback) {\n            count++;\n            setTimeout(callback, 1000);\n        },\n        function (err) {\n            // 5 seconds have passed\n        }\n    );\n\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n  must call on completion.\n* callback(err, [results]) - An optional 
 callback to run once all the functions\n  have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n    async.waterfall([\n        function(callback){\n            callback(null, 'one', 'two');\n        },\n        function(arg1, arg2, callback){\n            callback(null, 'three');\n        },\n        function(arg1, callback){\n            // arg1 now equals 'three'\n            callback(null, 'done');\n        }\n    ], function (err, result) {\n       // result now equals 'done'    \n    });\n\n\n---------------------------------------\n\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous f
 unction for processing a queued\n  task.\n* concurrency - An integer for determining how many worker functions should be\n  run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n  run in parallel. This property can be changed after a queue is created to\n  alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* 
 drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n    // create a queue object with concurrency 2\n\n    var q = async.queue(function (task, callback) {\n        console.log('hello ' + task.name);\n        callback();\n    }, 2);\n\n\n    // assign a callback\n    q.drain = function() {\n        console.log('all items have been processed');\n    }\n\n    // add some items to the queue\n\n    q.push({name: 'foo'}, function (err) {\n        console.log('finished processing foo');\n    });\n    q.push({name: 'bar'}, function (err) {\n        console.log('finished processing bar');\n    });\n\n    // add some items to the queue (batch-wise)\n\n    q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n        console.log('finished processing bar');\n    });\n\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based
  on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n  requirements, with the function itself the last item in the array. The key\n  used for each function or array is used when specifying requirements. The\n  syntax is easier to understand by looking at the example.\n* callback(err, results) - An optional callback which is called when all the\n  tasks have been completed. The callback will receive an error as an argument\n  if any tasks pass an error to their callback. If
  all tasks complete\n  successfully, it will receive an object containing their results.\n\n__Example__\n\n    async.auto({\n        get_data: function(callback){\n            // async code to get some data\n        },\n        make_folder: function(callback){\n            // async code to create a directory to store a file in\n            // this is run at the same time as getting the data\n        },\n        write_file: ['get_data', 'make_folder', function(callback){\n            // once there is some data and the directory exists,\n            // write the data to a file in the directory\n            callback(null, filename);\n        }],\n        email_link: ['write_file', function(callback, results){\n            // once the file is written let's email a link to it...\n            // results.write_file contains the filename returned by write_file.\n        }]\n    });\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look 
 like this:\n\n    async.parallel([\n        function(callback){\n            // async code to get some data\n        },\n        function(callback){\n            // async code to create a directory to store a file in\n            // this is run at the same time as getting the data\n        }\n    ],\n    function(results){\n        async.series([\n            function(callback){\n                // once there is some data and the directory exists,\n                // write the data to a file in the directory\n            },\n            email_link: function(callback){\n                // once the file is written let's email a link to it...\n            }\n        ]);\n    });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nretur
 ning a continuation to call the next one after that. Its also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n  must call on completion.\n\n__Example__\n\n    var iterator = async.iterator([\n        function(){ sys.p('one'); },\n        function(){ sys.p('two'); },\n        function(){ sys.p('three'); }\n    ]);\n\n    node> var iterator2 = iterator();\n    'one'\n    node> var iterator3 = iterator2();\n    'two'\n    node> iterator3();\n    'three'\n    node> var nextfn = iterator2.next();\n    node> nextfn();\n    'three'\n\n\n---------------------------------------\n\n<a name=\"apply\" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined 
 with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n  continuation is called.\n\n__Example__\n\n    // using apply\n\n    async.parallel([\n        async.apply(fs.writeFile, 'testfile1', 'test1'),\n        async.apply(fs.writeFile, 'testfile2', 'test2'),\n    ]);\n\n\n    // the same process without using apply\n\n    async.parallel([\n        function(callback){\n            fs.writeFile('testfile1', 'test1', callback);\n        },\n        function(callback){\n            fs.writeFile('testfile2', 'test2', callback);\n        },\n    ]);\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n    node> var fn = async.apply(sys.puts, 'one');\n    node> fn('two', 'three');\n    one\n    two\n   
  three\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n    var call_order = [];\n    async.nextTick(function(){\n        call_order.push('two');\n        // call_order now equals ['one','two]\n    });\n    call_order.push('one')\n\n\n## Utils\n\n<a name=\"memoize\" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\n__Arguments__\n\n* fn - the function you to pr
 oxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n  results, it has all the arguments applied to it apart from the callback, and\n  must be synchronous.\n\n__Example__\n\n    var slow_fn = function (name, callback) {\n        // do something\n        callback(null, result);\n    };\n    var fn = async.memoize(slow_fn);\n\n    // fn can now be used as if it were slow_fn\n    fn('some name', function () {\n        // callback\n    });\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n<a name=\"log\" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argu
 ment in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n    var hello = function(name, callback){\n        setTimeout(function(){\n            callback(null, 'hello ' + name);\n        }, 1000);\n    };\n\n    node> async.log(hello, 'world');\n    'hello world'\n\n\n---------------------------------------\n\n<a name=\"dir\" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the functio
 n.\n\n__Example__\n\n    var hello = function(name, callback){\n        setTimeout(function(){\n            callback(null, {hello: name});\n        }, 1000);\n    };\n\n    node> async.dir(hello, 'world');\n    {hello: 'world'}\n\n\n---------------------------------------\n\n<a name=\"noConflict\" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n",
-  "readmeFilename": "README.md",
-  "_id": "async@0.1.22",
-  "_from": "async@0.1.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/MIT-LICENSE.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/MIT-LICENSE.txt b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/MIT-LICENSE.txt
deleted file mode 100644
index 7dca107..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/MIT-LICENSE.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2010 
-
-Marak Squires
-Alexis Sellier (cloudhead)
-
-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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/ReadMe.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/ReadMe.md b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/ReadMe.md
deleted file mode 100644
index 0eda52d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/ReadMe.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# colors.js - get color and style in your node.js console ( and browser ) like what
-
-<img src="http://i.imgur.com/goJdO.png" border = "0"/>
-
-
-## Installation
-
-    npm install colors
-
-## colors and styles!
-
-- bold
-- italic
-- underline
-- inverse
-- yellow
-- cyan
-- white
-- magenta
-- green
-- red
-- grey
-- blue
-- rainbow
-- zebra
-- random
-
-## Usage
-
-``` js
-var colors = require('./colors');
-
-console.log('hello'.green); // outputs green text
-console.log('i like cake and pies'.underline.red) // outputs red underlined text
-console.log('inverse the color'.inverse); // inverses the color
-console.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)
-```
-
-# Creating Custom themes
-
-```js
-
-var colors = require('colors');
-
-colors.setTheme({
-  silly: 'rainbow',
-  input: 'grey',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-});
-
-// outputs red text
-console.log("this is an error".error);
-
-// outputs yellow text
-console.log("this is a warning".warn);
-```
-
-
-### Contributors 
-
-Marak (Marak Squires)
-Alexis Sellier (cloudhead)
-mmalecki (Maciej Małecki)
-nicoreed (Nico Reed)
-morganrallen (Morgan Allen)
-JustinCampbell (Justin Campbell)
-ded (Dustin Diaz)
-
-
-####  , Marak Squires , Justin Campbell, Dustin Diaz (@ded)

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/colors.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/colors.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/colors.js
deleted file mode 100644
index 7a537d8..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/colors.js
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
-colors.js
-
-Copyright (c) 2010
-
-Marak Squires
-Alexis Sellier (cloudhead)
-
-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.
-
-*/
-
-var isHeadless = false;
-
-if (typeof module !== 'undefined') {
-  isHeadless = true;
-}
-
-if (!isHeadless) {
-  var exports = {};
-  var module = {};
-  var colors = exports;
-  exports.mode = "browser";
-} else {
-  exports.mode = "console";
-}
-
-//
-// Prototypes the string object to have additional method calls that add terminal colors
-//
-var addProperty = function (color, func) {
-  exports[color] = function (str) {
-    return func.apply(str);
-  };
-  String.prototype.__defineGetter__(color, func);
-};
-
-function stylize(str, style) {
-
-  var styles;
-
-  if (exports.mode === 'console') {
-    styles = {
-      //styles
-      'bold'      : ['\x1B[1m',  '\x1B[22m'],
-      'italic'    : ['\x1B[3m',  '\x1B[23m'],
-      'underline' : ['\x1B[4m',  '\x1B[24m'],
-      'inverse'   : ['\x1B[7m',  '\x1B[27m'],
-      'strikethrough' : ['\x1B[9m',  '\x1B[29m'],
-      //text colors
-      //grayscale
-      'white'     : ['\x1B[37m', '\x1B[39m'],
-      'grey'      : ['\x1B[90m', '\x1B[39m'],
-      'black'     : ['\x1B[30m', '\x1B[39m'],
-      //colors
-      'blue'      : ['\x1B[34m', '\x1B[39m'],
-      'cyan'      : ['\x1B[36m', '\x1B[39m'],
-      'green'     : ['\x1B[32m', '\x1B[39m'],
-      'magenta'   : ['\x1B[35m', '\x1B[39m'],
-      'red'       : ['\x1B[31m', '\x1B[39m'],
-      'yellow'    : ['\x1B[33m', '\x1B[39m'],
-      //background colors
-      //grayscale
-      'whiteBG'     : ['\x1B[47m', '\x1B[49m'],
-      'greyBG'      : ['\x1B[49;5;8m', '\x1B[49m'],
-      'blackBG'     : ['\x1B[40m', '\x1B[49m'],
-      //colors
-      'blueBG'      : ['\x1B[44m', '\x1B[49m'],
-      'cyanBG'      : ['\x1B[46m', '\x1B[49m'],
-      'greenBG'     : ['\x1B[42m', '\x1B[49m'],
-      'magentaBG'   : ['\x1B[45m', '\x1B[49m'],
-      'redBG'       : ['\x1B[41m', '\x1B[49m'],
-      'yellowBG'    : ['\x1B[43m', '\x1B[49m']
-    };
-  } else if (exports.mode === 'browser') {
-    styles = {
-      //styles
-      'bold'      : ['<b>',  '</b>'],
-      'italic'    : ['<i>',  '</i>'],
-      'underline' : ['<u>',  '</u>'],
-      'inverse'   : ['<span style="background-color:black;color:white;">',  '</span>'],
-      'strikethrough' : ['<del>',  '</del>'],
-      //text colors
-      //grayscale
-      'white'     : ['<span style="color:white;">',   '</span>'],
-      'grey'      : ['<span style="color:gray;">',    '</span>'],
-      'black'     : ['<span style="color:black;">',   '</span>'],
-      //colors
-      'blue'      : ['<span style="color:blue;">',    '</span>'],
-      'cyan'      : ['<span style="color:cyan;">',    '</span>'],
-      'green'     : ['<span style="color:green;">',   '</span>'],
-      'magenta'   : ['<span style="color:magenta;">', '</span>'],
-      'red'       : ['<span style="color:red;">',     '</span>'],
-      'yellow'    : ['<span style="color:yellow;">',  '</span>'],
-      //background colors
-      //grayscale
-      'whiteBG'     : ['<span style="background-color:white;">',   '</span>'],
-      'greyBG'      : ['<span style="background-color:gray;">',    '</span>'],
-      'blackBG'     : ['<span style="background-color:black;">',   '</span>'],
-      //colors
-      'blueBG'      : ['<span style="background-color:blue;">',    '</span>'],
-      'cyanBG'      : ['<span style="background-color:cyan;">',    '</span>'],
-      'greenBG'     : ['<span style="background-color:green;">',   '</span>'],
-      'magentaBG'   : ['<span style="background-color:magenta;">', '</span>'],
-      'redBG'       : ['<span style="background-color:red;">',     '</span>'],
-      'yellowBG'    : ['<span style="background-color:yellow;">',  '</span>']
-    };
-  } else if (exports.mode === 'none') {
-    return str + '';
-  } else {
-    console.log('unsupported mode, try "browser", "console" or "none"');
-  }
-  return styles[style][0] + str + styles[style][1];
-}
-
-function applyTheme(theme) {
-
-  //
-  // Remark: This is a list of methods that exist
-  // on String that you should not overwrite.
-  //
-  var stringPrototypeBlacklist = [
-    '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor',
-    'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt',
-    'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring',
-    'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight'
-  ];
-
-  Object.keys(theme).forEach(function (prop) {
-    if (stringPrototypeBlacklist.indexOf(prop) !== -1) {
-      console.log('warn: '.red + ('String.prototype' + prop).magenta + ' is probably something you don\'t want to override. Ignoring style name');
-    }
-    else {
-      if (typeof(theme[prop]) === 'string') {
-        addProperty(prop, function () {
-          return exports[theme[prop]](this);
-        });
-      }
-      else {
-        addProperty(prop, function () {
-          var ret = this;
-          for (var t = 0; t < theme[prop].length; t++) {
-            ret = exports[theme[prop][t]](ret);
-          }
-          return ret;
-        });
-      }
-    }
-  });
-}
-
-
-//
-// Iterate through all default styles and colors
-//
-var x = ['bold', 'underline', 'strikethrough', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta', 'greyBG', 'blackBG', 'yellowBG', 'redBG', 'greenBG', 'blueBG', 'whiteBG', 'cyanBG', 'magentaBG'];
-x.forEach(function (style) {
-
-  // __defineGetter__ at the least works in more browsers
-  // http://robertnyman.com/javascript/javascript-getters-setters.html
-  // Object.defineProperty only works in Chrome
-  addProperty(style, function () {
-    return stylize(this, style);
-  });
-});
-
-function sequencer(map) {
-  return function () {
-    if (!isHeadless) {
-      return this.replace(/( )/, '$1');
-    }
-    var exploded = this.split(""), i = 0;
-    exploded = exploded.map(map);
-    return exploded.join("");
-  };
-}
-
-var rainbowMap = (function () {
-  var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV
-  return function (letter, i, exploded) {
-    if (letter === " ") {
-      return letter;
-    } else {
-      return stylize(letter, rainbowColors[i++ % rainbowColors.length]);
-    }
-  };
-})();
-
-exports.themes = {};
-
-exports.addSequencer = function (name, map) {
-  addProperty(name, sequencer(map));
-};
-
-exports.addSequencer('rainbow', rainbowMap);
-exports.addSequencer('zebra', function (letter, i, exploded) {
-  return i % 2 === 0 ? letter : letter.inverse;
-});
-
-exports.setTheme = function (theme) {
-  if (typeof theme === 'string') {
-    try {
-      exports.themes[theme] = require(theme);
-      applyTheme(exports.themes[theme]);
-      return exports.themes[theme];
-    } catch (err) {
-      console.log(err);
-      return err;
-    }
-  } else {
-    applyTheme(theme);
-  }
-};
-
-
-addProperty('stripColors', function () {
-  return ("" + this).replace(/\x1B\[\d+m/g, '');
-});
-
-// please no
-function zalgo(text, options) {
-  var soul = {
-    "up" : [
-      '̍', '̎', '̄', '̅',
-      '̿', '̑', '̆', '̐',
-      '͒', '͗', '͑', '̇',
-      '̈', '̊', '͂', '̓',
-      '̈', '͊', '͋', '͌',
-      '̃', '̂', '̌', '͐',
-      '̀', '́', '̋', '̏',
-      '̒', '̓', '̔', '̽',
-      '̉', 'ͣ', 'ͤ', 'ͥ',
-      'ͦ', 'ͧ', 'ͨ', 'ͩ',
-      'ͪ', 'ͫ', 'ͬ', 'ͭ',
-      'ͮ', 'ͯ', '̾', '͛',
-      '͆', '̚'
-    ],
-    "down" : [
-      '̖', '̗', '̘', '̙',
-      '̜', '̝', '̞', '̟',
-      '̠', '̤', '̥', '̦',
-      '̩', '̪', '̫', '̬',
-      '̭', '̮', '̯', '̰',
-      '̱', '̲', '̳', '̹',
-      '̺', '̻', '̼', 'ͅ',
-      '͇', '͈', '͉', '͍',
-      '͎', '͓', '͔', '͕',
-      '͖', '͙', '͚', '̣'
-    ],
-    "mid" : [
-      '̕', '̛', '̀', '́',
-      '͘', '̡', '̢', '̧',
-      '̨', '̴', '̵', '̶',
-      '͜', '͝', '͞',
-      '͟', '͠', '͢', '̸',
-      '̷', '͡', ' ҉'
-    ]
-  },
-  all = [].concat(soul.up, soul.down, soul.mid),
-  zalgo = {};
-
-  function randomNumber(range) {
-    var r = Math.floor(Math.random() * range);
-    return r;
-  }
-
-  function is_char(character) {
-    var bool = false;
-    all.filter(function (i) {
-      bool = (i === character);
-    });
-    return bool;
-  }
-
-  function heComes(text, options) {
-    var result = '', counts, l;
-    options = options || {};
-    options["up"] = options["up"] || true;
-    options["mid"] = options["mid"] || true;
-    options["down"] = options["down"] || true;
-    options["size"] = options["size"] || "maxi";
-    text = text.split('');
-    for (l in text) {
-      if (is_char(l)) {
-        continue;
-      }
-      result = result + text[l];
-      counts = {"up" : 0, "down" : 0, "mid" : 0};
-      switch (options.size) {
-      case 'mini':
-        counts.up = randomNumber(8);
-        counts.min = randomNumber(2);
-        counts.down = randomNumber(8);
-        break;
-      case 'maxi':
-        counts.up = randomNumber(16) + 3;
-        counts.min = randomNumber(4) + 1;
-        counts.down = randomNumber(64) + 3;
-        break;
-      default:
-        counts.up = randomNumber(8) + 1;
-        counts.mid = randomNumber(6) / 2;
-        counts.down = randomNumber(8) + 1;
-        break;
-      }
-
-      var arr = ["up", "mid", "down"];
-      for (var d in arr) {
-        var index = arr[d];
-        for (var i = 0 ; i <= counts[index]; i++) {
-          if (options[index]) {
-            result = result + soul[index][randomNumber(soul[index].length)];
-          }
-        }
-      }
-    }
-    return result;
-  }
-  return heComes(text);
-}
-
-
-// don't summon zalgo
-addProperty('zalgo', function () {
-  return zalgo(this);
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.html b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.html
deleted file mode 100644
index 7a2ae60..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML>
-<html lang="en-us">
-  <head>
-    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
-    <title>Colors Example</title>
-    <script src="colors.js"></script>
-  </head>
-  <body>
-    <script>
-
-    var test = colors.red("hopefully colorless output");
-
-    document.write('Rainbows are fun!'.rainbow + '<br/>');
-    document.write('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported
-    document.write('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
-    //document.write('zalgo time!'.zalgo);
-    document.write(test.stripColors);
-    document.write("a".grey + " b".black);
-
-    document.write("Zebras are so fun!".zebra);
-
-    document.write(colors.rainbow('Rainbows are fun!'));
-    document.write("This is " + "not".strikethrough + " fun.");
-
-    document.write(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported
-    document.write(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported
-    //document.write(colors.zalgo('zalgo time!'));
-    document.write(colors.stripColors(test));
-    document.write(colors.grey("a") + colors.black(" b"));
-
-    colors.addSequencer("america", function(letter, i, exploded) {
-      if(letter === " ") return letter;
-      switch(i%3) {
-        case 0: return letter.red;
-        case 1: return letter.white;
-        case 2: return letter.blue;
-      }
-    });
-
-    colors.addSequencer("random", (function() {
-      var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
-
-      return function(letter, i, exploded) {
-        return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]];
-      };
-    })());
-
-    document.write("AMERICA! F--K YEAH!".america);
-    document.write("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random);
-
-    //
-    // Custom themes
-    //
-
-    colors.setTheme({
-      silly: 'rainbow',
-      input: 'grey',
-      verbose: 'cyan',
-      prompt: 'grey',
-      info: 'green',
-      data: 'grey',
-      help: 'cyan',
-      warn: 'yellow',
-      debug: 'blue',
-      error: 'red'
-    });
-
-    // outputs red text
-    document.write("this is an error".error);
-
-    // outputs yellow text
-    document.write("this is a warning".warn);
-
-    </script>
-  </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.js
deleted file mode 100644
index b1e03a4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/example.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var colors = require('./colors');
-
-//colors.mode = "browser";
-
-var test = colors.red("hopefully colorless output");
-console.log('Rainbows are fun!'.rainbow);
-console.log('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported
-console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
-//console.log('zalgo time!'.zalgo);
-console.log(test.stripColors);
-console.log("a".grey + " b".black);
-console.log("Zebras are so fun!".zebra);
-console.log('background color attack!'.black.whiteBG)
-
-//
-// Remark: .strikethrough may not work with Mac OS Terminal App
-//
-console.log("This is " + "not".strikethrough + " fun.");
-console.log(colors.rainbow('Rainbows are fun!'));
-console.log(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported
-console.log(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported
-//console.log(colors.zalgo('zalgo time!'));
-console.log(colors.stripColors(test));
-console.log(colors.grey("a") + colors.black(" b"));
-
-colors.addSequencer("america", function(letter, i, exploded) {
-  if(letter === " ") return letter;
-  switch(i%3) {
-    case 0: return letter.red;
-    case 1: return letter.white;
-    case 2: return letter.blue;
-  }
-});
-
-colors.addSequencer("random", (function() {
-  var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
-
-  return function(letter, i, exploded) {
-    return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]];
-  };
-})());
-
-console.log("AMERICA! F--K YEAH!".america);
-console.log("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random);
-
-//
-// Custom themes
-//
-
-// Load theme with JSON literal
-colors.setTheme({
-  silly: 'rainbow',
-  input: 'grey',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-});
-
-// outputs red text
-console.log("this is an error".error);
-
-// outputs yellow text
-console.log("this is a warning".warn);
-
-// outputs grey text
-console.log("this is an input".input);
-
-// Load a theme from file
-colors.setTheme('./themes/winston-dark.js');
-
-console.log("this is an input".input);
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/package.json
deleted file mode 100644
index 1c96d12..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "name": "colors",
-  "description": "get colors in your node.js console like what",
-  "version": "0.6.2",
-  "author": {
-    "name": "Marak Squires"
-  },
-  "homepage": "https://github.com/Marak/colors.js",
-  "bugs": {
-    "url": "https://github.com/Marak/colors.js/issues"
-  },
-  "keywords": [
-    "ansi",
-    "terminal",
-    "colors"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/Marak/colors.js.git"
-  },
-  "engines": {
-    "node": ">=0.1.90"
-  },
-  "main": "colors",
-  "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n    npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n  silly: 'rainbow',\n  input: 'grey',\n  verbose: 'cyan',\n  prompt: 'grey',\n  info: 'green',\n  data: 'grey',\n  help: 'cyan',\n  warn: 'yellow',\n  debug: 'blue',\n  error: 'red'\n});\n\n// output
 s red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n####  , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n",
-  "readmeFilename": "ReadMe.md",
-  "_id": "colors@0.6.2",
-  "_from": "colors@0.x.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/test.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/test.js
deleted file mode 100644
index c32417d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/test.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var assert = require('assert'),
-    colors = require('./colors');
-
-var s = 'string';
-
-function a(s, code) {
-  return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m';
-}
-
-function aE(s, color, code) {
-  assert.equal(s[color], a(s, code));
-  assert.equal(colors[color](s), a(s, code));
-  assert.equal(s[color], colors[color](s));
-  assert.equal(s[color].stripColors, s);
-  assert.equal(s[color].stripColors, colors.stripColors(s));
-}
-
-function h(s, color) {
-  return '<span style="color:' + color + ';">' + s + '</span>';
-}
-
-var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow'];
-var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']);
-
-colors.mode = 'console';
-assert.equal(s.bold, '\x1B[1m' + s + '\x1B[22m');
-assert.equal(s.italic, '\x1B[3m' + s + '\x1B[23m');
-assert.equal(s.underline, '\x1B[4m' + s + '\x1B[24m');
-assert.equal(s.strikethrough, '\x1B[9m' + s + '\x1B[29m');
-assert.equal(s.inverse, '\x1B[7m' + s + '\x1B[27m');
-assert.ok(s.rainbow);
-aE(s, 'white', 37);
-aE(s, 'grey', 90);
-aE(s, 'black', 30);
-aE(s, 'blue', 34);
-aE(s, 'cyan', 36);
-aE(s, 'green', 32);
-aE(s, 'magenta', 35);
-aE(s, 'red', 31);
-aE(s, 'yellow', 33);
-assert.equal(s, 'string');
-
-colors.setTheme({error:'red'});
-
-assert.equal(typeof("astring".red),'string');
-assert.equal(typeof("astring".error),'string');
-
-colors.mode = 'browser';
-assert.equal(s.bold, '<b>' + s + '</b>');
-assert.equal(s.italic, '<i>' + s + '</i>');
-assert.equal(s.underline, '<u>' + s + '</u>');
-assert.equal(s.strikethrough, '<del>' + s + '</del>');
-assert.equal(s.inverse, '<span style="background-color:black;color:white;">' + s + '</span>');
-assert.ok(s.rainbow);
-stylesColors.forEach(function (color) {
-  assert.equal(s[color], h(s, color));
-  assert.equal(colors[color](s), h(s, color));
-});
-
-assert.equal(typeof("astring".red),'string');
-assert.equal(typeof("astring".error),'string');
-
-colors.mode = 'none';
-stylesAll.forEach(function (style) {
-  assert.equal(s[style], s);
-  assert.equal(colors[style](s), s);
-});
-
-assert.equal(typeof("astring".red),'string');
-assert.equal(typeof("astring".error),'string');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-dark.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-dark.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-dark.js
deleted file mode 100644
index 49a905b..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-dark.js
+++ /dev/null
@@ -1,12 +0,0 @@
-module['exports'] = {
-  silly: 'rainbow',
-  input: 'black',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-light.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-light.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-light.js
deleted file mode 100644
index 571972c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/colors/themes/winston-light.js
+++ /dev/null
@@ -1,12 +0,0 @@
-module['exports'] = {
-  silly: 'rainbow',
-  input: 'grey',
-  verbose: 'cyan',
-  prompt: 'grey',
-  info: 'green',
-  data: 'grey',
-  help: 'cyan',
-  warn: 'yellow',
-  debug: 'blue',
-  error: 'red'
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/README.md b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/README.md
deleted file mode 100644
index de9a06d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-Fork of https://github.com/douglascrockford/JSON-js, maintained in npm as `cycle`.
-
-# Contributors
-
-* Douglas Crockford
-* Nuno Job
-* Justin Warkentin
-
-# JSON in JavaScript
-
-Douglas Crockford
-douglas@crockford.com
-
-2010-11-18
-
-
-JSON is a light-weight, language independent, data interchange format.
-See http://www.JSON.org/
-
-The files in this collection implement JSON encoders/decoders in JavaScript.
-
-JSON became a built-in feature of JavaScript when the ECMAScript Programming
-Language Standard - Fifth Edition was adopted by the ECMA General Assembly
-in December 2009. Most of the files in this collection are for applications
-that are expected to run in obsolete web browsers. For most purposes, json2.js
-is the best choice.
-
-
-json2.js: This file creates a JSON property in the global object, if there
-isn't already one, setting its value to an object containing a stringify
-method and a parse method. The parse method uses the eval method to do the
-parsing, guarding it with several regular expressions to defend against
-accidental code execution hazards. On current browsers, this file does nothing,
-prefering the built-in JSON object.
-
-json.js: This file does everything that json2.js does. It also adds a
-toJSONString method and a parseJSON method to Object.prototype. Use of this
-file is not recommended.
-
-json_parse.js: This file contains an alternative JSON parse function that
-uses recursive descent instead of eval.
-
-json_parse_state.js: This files contains an alternative JSON parse function that
-uses a state machine instead of eval.
-
-cycle.js: This file contains two functions, JSON.decycle and JSON.retrocycle,
-which make it possible to encode cyclical structures and dags in JSON, and to
-then recover them. JSONPath is used to represent the links.
-http://GOESSNER.net/articles/JsonPath/

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/cycle.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/cycle.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/cycle.js
deleted file mode 100644
index 2e776ad..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/cycle.js
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
-    cycle.js
-    2013-02-19
-
-    Public Domain.
-
-    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
-
-    This code should be minified before deployment.
-    See http://javascript.crockford.com/jsmin.html
-
-    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
-    NOT CONTROL.
-*/
-
-/*jslint evil: true, regexp: true */
-
-/*members $ref, apply, call, decycle, hasOwnProperty, length, prototype, push,
-    retrocycle, stringify, test, toString
-*/
-
-var cycle = exports;
-
-cycle.decycle = function decycle(object) {
-    'use strict';
-
-// Make a deep copy of an object or array, assuring that there is at most
-// one instance of each object or array in the resulting structure. The
-// duplicate references (which might be forming cycles) are replaced with
-// an object of the form
-//      {$ref: PATH}
-// where the PATH is a JSONPath string that locates the first occurance.
-// So,
-//      var a = [];
-//      a[0] = a;
-//      return JSON.stringify(JSON.decycle(a));
-// produces the string '[{"$ref":"$"}]'.
-
-// JSONPath is used to locate the unique object. $ indicates the top level of
-// the object or array. [NUMBER] or [STRING] indicates a child member or
-// property.
-
-    var objects = [],   // Keep a reference to each unique object or array
-        paths = [];     // Keep the path to each unique object or array
-
-    return (function derez(value, path) {
-
-// The derez recurses through the object, producing the deep copy.
-
-        var i,          // The loop counter
-            name,       // Property name
-            nu;         // The new object or array
-
-// typeof null === 'object', so go on if this value is really an object but not
-// one of the weird builtin objects.
-
-        if (typeof value === 'object' && value !== null &&
-                !(value instanceof Boolean) &&
-                !(value instanceof Date)    &&
-                !(value instanceof Number)  &&
-                !(value instanceof RegExp)  &&
-                !(value instanceof String)) {
-
-// If the value is an object or array, look to see if we have already
-// encountered it. If so, return a $ref/path object. This is a hard way,
-// linear search that will get slower as the number of unique objects grows.
-
-            for (i = 0; i < objects.length; i += 1) {
-                if (objects[i] === value) {
-                    return {$ref: paths[i]};
-                }
-            }
-
-// Otherwise, accumulate the unique value and its path.
-
-            objects.push(value);
-            paths.push(path);
-
-// If it is an array, replicate the array.
-
-            if (Object.prototype.toString.apply(value) === '[object Array]') {
-                nu = [];
-                for (i = 0; i < value.length; i += 1) {
-                    nu[i] = derez(value[i], path + '[' + i + ']');
-                }
-            } else {
-
-// If it is an object, replicate the object.
-
-                nu = {};
-                for (name in value) {
-                    if (Object.prototype.hasOwnProperty.call(value, name)) {
-                        nu[name] = derez(value[name],
-                            path + '[' + JSON.stringify(name) + ']');
-                    }
-                }
-            }
-            return nu;
-        }
-        return value;
-    }(object, '$'));
-};
-
-
-cycle.retrocycle = function retrocycle($) {
-    'use strict';
-
-// Restore an object that was reduced by decycle. Members whose values are
-// objects of the form
-//      {$ref: PATH}
-// are replaced with references to the value found by the PATH. This will
-// restore cycles. The object will be mutated.
-
-// The eval function is used to locate the values described by a PATH. The
-// root object is kept in a $ variable. A regular expression is used to
-// assure that the PATH is extremely well formed. The regexp contains nested
-// * quantifiers. That has been known to have extremely bad performance
-// problems on some browsers for very long strings. A PATH is expected to be
-// reasonably short. A PATH is allowed to belong to a very restricted subset of
-// Goessner's JSONPath.
-
-// So,
-//      var s = '[{"$ref":"$"}]';
-//      return JSON.retrocycle(JSON.parse(s));
-// produces an array containing a single element which is the array itself.
-
-    var px =
-        /^\$(?:\[(?:\d+|\"(?:[^\\\"\u0000-\u001f]|\\([\\\"\/bfnrt]|u[0-9a-zA-Z]{4}))*\")\])*$/;
-
-    (function rez(value) {
-
-// The rez function walks recursively through the object looking for $ref
-// properties. When it finds one that has a value that is a path, then it
-// replaces the $ref object with a reference to the value that is found by
-// the path.
-
-        var i, item, name, path;
-
-        if (value && typeof value === 'object') {
-            if (Object.prototype.toString.apply(value) === '[object Array]') {
-                for (i = 0; i < value.length; i += 1) {
-                    item = value[i];
-                    if (item && typeof item === 'object') {
-                        path = item.$ref;
-                        if (typeof path === 'string' && px.test(path)) {
-                            value[i] = eval(path);
-                        } else {
-                            rez(item);
-                        }
-                    }
-                }
-            } else {
-                for (name in value) {
-                    if (typeof value[name] === 'object') {
-                        item = value[name];
-                        if (item) {
-                            path = item.$ref;
-                            if (typeof path === 'string' && px.test(path)) {
-                                value[name] = eval(path);
-                            } else {
-                                rez(item);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }($));
-    return $;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/package.json
deleted file mode 100644
index 70edde3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/cycle/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "name": "cycle",
-  "description": "decycle your json",
-  "author": "",
-  "version": "1.0.3",
-  "main": "./cycle.js",
-  "homepage": "https://github.com/douglascrockford/JSON-js",
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/dscape/cycle.git"
-  },
-  "bugs": {
-    "url": "http://github.com/douglascrockford/JSON-js/issues"
-  },
-  "keywords": [
-    "json",
-    "cycle",
-    "stringify",
-    "parse"
-  ],
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "readme": "Fork of https://github.com/douglascrockford/JSON-js, maintained in npm as `cycle`.\n\n# Contributors\n\n* Douglas Crockford\n* Nuno Job\n* Justin Warkentin\n\n# JSON in JavaScript\n\nDouglas Crockford\ndouglas@crockford.com\n\n2010-11-18\n\n\nJSON is a light-weight, language independent, data interchange format.\nSee http://www.JSON.org/\n\nThe files in this collection implement JSON encoders/decoders in JavaScript.\n\nJSON became a built-in feature of JavaScript when the ECMAScript Programming\nLanguage Standard - Fifth Edition was adopted by the ECMA General Assembly\nin December 2009. Most of the files in this collection are for applications\nthat are expected to run in obsolete web browsers. For most purposes, json2.js\nis the best choice.\n\n\njson2.js: This file creates a JSON property in the global object, if there\nisn't already one, setting its value to an object containing a stringify\nmethod and a parse method. The parse method uses the eval method to do the\
 nparsing, guarding it with several regular expressions to defend against\naccidental code execution hazards. On current browsers, this file does nothing,\nprefering the built-in JSON object.\n\njson.js: This file does everything that json2.js does. It also adds a\ntoJSONString method and a parseJSON method to Object.prototype. Use of this\nfile is not recommended.\n\njson_parse.js: This file contains an alternative JSON parse function that\nuses recursive descent instead of eval.\n\njson_parse_state.js: This files contains an alternative JSON parse function that\nuses a state machine instead of eval.\n\ncycle.js: This file contains two functions, JSON.decycle and JSON.retrocycle,\nwhich make it possible to encode cyclical structures and dags in JSON, and to\nthen recover them. JSONPath is used to represent the links.\nhttp://GOESSNER.net/articles/JsonPath/\n",
-  "readmeFilename": "README.md",
-  "_id": "cycle@1.0.3",
-  "_from": "cycle@1.0.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/LICENSE b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/LICENSE
deleted file mode 100644
index a1edd93..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2009 cloudhead
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/Makefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/Makefile b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/Makefile
deleted file mode 100644
index a121dea..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-test:
-	@@node test/eyes-test.js
-
-.PHONY: test

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/README.md b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/README.md
deleted file mode 100644
index c4f6f76..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-eyes
-====
-
-a customizable value inspector for Node.js
-
-synopsis
---------
-
-I was tired of looking at cluttered output in the console -- something needed to be done,
-`sys.inspect()` didn't display regexps correctly, and was too verbose, and I had an hour or two to spare. 
-So I decided to have some fun. _eyes_ were born.
-
-![eyes-ss](http://dl.dropbox.com/u/251849/eyes-js-ss.gif)
-
-_example of the output of a user-customized eyes.js inspector_
-
-*eyes* also deals with circular objects in an intelligent way, and can pretty-print object literals.
-
-usage
------
-
-    var inspect = require('eyes').inspector({styles: {all: 'magenta'}});
-
-    inspect(something); // inspect with the settings passed to `inspector`
-
-or
-
-    var eyes = require('eyes');
-
-    eyes.inspect(something); // inspect with the default settings
-
-you can pass a _label_ to `inspect()`, to keep track of your inspections:
-
-    eyes.inspect(something, "a random value");
-
-If you want to return the output of eyes without printing it, you can set it up this way:
-
-    var inspect = require('eyes').inspector({ stream: null });
-
-    sys.puts(inspect({ something: 42 }));
-
-customization
--------------
-
-These are the default styles and settings used by _eyes_.
-
-    styles: {                 // Styles applied to stdout
-        all:     'cyan',      // Overall style applied to everything
-        label:   'underline', // Inspection labels, like 'array' in `array: [1, 2, 3]`
-        other:   'inverted',  // Objects which don't have a literal representation, such as functions
-        key:     'bold',      // The keys in object literals, like 'a' in `{a: 1}`
-        special: 'grey',      // null, undefined...
-        string:  'green',
-        number:  'magenta',
-        bool:    'blue',      // true false
-        regexp:  'green',     // /\d+/
-    },
-    
-    pretty: true,             // Indent object literals
-    hideFunctions: false,     // Don't output functions at all
-    stream: process.stdout,   // Stream to write to, or null
-    maxLength: 2048           // Truncate output if longer
-
-You can overwrite them with your own, by passing a similar object to `inspector()` or `inspect()`.
-
-    var inspect = require('eyes').inspector({
-        styles: {
-            all: 'magenta',
-            special: 'bold'
-        },
-        maxLength: 512
-    });
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/lib/eyes.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/lib/eyes.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/lib/eyes.js
deleted file mode 100644
index 10d964b..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/eyes/lib/eyes.js
+++ /dev/null
@@ -1,236 +0,0 @@
-//
-// Eyes.js - a customizable value inspector for Node.js
-//
-//   usage:
-//
-//       var inspect = require('eyes').inspector({styles: {all: 'magenta'}});
-//       inspect(something); // inspect with the settings passed to `inspector`
-//
-//     or
-//
-//       var eyes = require('eyes');
-//       eyes.inspect(something); // inspect with the default settings
-//
-var eyes = exports,
-    stack = [];
-
-eyes.defaults = {
-    styles: {                 // Styles applied to stdout
-        all:     'cyan',      // Overall style applied to everything
-        label:   'underline', // Inspection labels, like 'array' in `array: [1, 2, 3]`
-        other:   'inverted',  // Objects which don't have a literal representation, such as functions
-        key:     'bold',      // The keys in object literals, like 'a' in `{a: 1}`
-        special: 'grey',      // null, undefined...
-        string:  'green',
-        number:  'magenta',
-        bool:    'blue',      // true false
-        regexp:  'green',     // /\d+/
-    },
-    pretty: true,             // Indent object literals
-    hideFunctions: false,
-    showHidden: false,
-    stream: process.stdout,
-    maxLength: 2048           // Truncate output if longer
-};
-
-// Return a curried inspect() function, with the `options` argument filled in.
-eyes.inspector = function (options) {
-    var that = this;
-    return function (obj, label, opts) {
-        return that.inspect.call(that, obj, label,
-            merge(options || {}, opts || {}));
-    };
-};
-
-// If we have a `stream` defined, use it to print a styled string,
-// if not, we just return the stringified object.
-eyes.inspect = function (obj, label, options) {
-    options = merge(this.defaults, options || {});
-
-    if (options.stream) {
-        return this.print(stringify(obj, options), label, options);
-    } else {
-        return stringify(obj, options) + (options.styles ? '\033[39m' : '');
-    }
-};
-
-// Output using the 'stream', and an optional label
-// Loop through `str`, and truncate it after `options.maxLength` has been reached.
-// Because escape sequences are, at this point embeded within
-// the output string, we can't measure the length of the string
-// in a useful way, without separating what is an escape sequence,
-// versus a printable character (`c`). So we resort to counting the
-// length manually.
-eyes.print = function (str, label, options) {
-    for (var c = 0, i = 0; i < str.length; i++) {
-        if (str.charAt(i) === '\033') { i += 4 } // `4` because '\033[25m'.length + 1 == 5
-        else if (c === options.maxLength) {
-           str = str.slice(0, i - 1) + '…';
-           break;
-        } else { c++ }
-    }
-    return options.stream.write.call(options.stream, (label ?
-        this.stylize(label, options.styles.label, options.styles) + ': ' : '') +
-        this.stylize(str,   options.styles.all, options.styles) + '\033[0m' + "\n");
-};
-
-// Apply a style to a string, eventually,
-// I'd like this to support passing multiple
-// styles.
-eyes.stylize = function (str, style, styles) {
-    var codes = {
-        'bold'      : [1,  22],
-        'underline' : [4,  24],
-        'inverse'   : [7,  27],
-        'cyan'      : [36, 39],
-        'magenta'   : [35, 39],
-        'blue'      : [34, 39],
-        'yellow'    : [33, 39],
-        'green'     : [32, 39],
-        'red'       : [31, 39],
-        'grey'      : [90, 39]
-    }, endCode;
-
-    if (style && codes[style]) {
-        endCode = (codes[style][1] === 39 && styles.all) ? codes[styles.all][0]
-                                                         : codes[style][1];
-        return '\033[' + codes[style][0] + 'm' + str +
-               '\033[' + endCode + 'm';
-    } else { return str }
-};
-
-// Convert any object to a string, ready for output.
-// When an 'array' or an 'object' are encountered, they are
-// passed to specialized functions, which can then recursively call
-// stringify().
-function stringify(obj, options) {
-    var that = this, stylize = function (str, style) {
-        return eyes.stylize(str, options.styles[style], options.styles)
-    }, index, result;
-
-    if ((index = stack.indexOf(obj)) !== -1) {
-        return stylize(new(Array)(stack.length - index + 1).join('.'), 'special');
-    }
-    stack.push(obj);
-
-    result = (function (obj) {
-        switch (typeOf(obj)) {
-            case "string"   : obj = stringifyString(obj.indexOf("'") === -1 ? "'" + obj + "'"
-                                                                            : '"' + obj + '"');
-                              return stylize(obj, 'string');
-            case "regexp"   : return stylize('/' + obj.source + '/', 'regexp');
-            case "number"   : return stylize(obj + '',    'number');
-            case "function" : return options.stream ? stylize("Function", 'other') : '[Function]';
-            case "null"     : return stylize("null",      'special');
-            case "undefined": return stylize("undefined", 'special');
-            case "boolean"  : return stylize(obj + '',    'bool');
-            case "date"     : return stylize(obj.toUTCString());
-            case "array"    : return stringifyArray(obj,  options, stack.length);
-            case "object"   : return stringifyObject(obj, options, stack.length);
-        }
-    })(obj);
-
-    stack.pop();
-    return result;
-};
-
-// Escape invisible characters in a string
-function stringifyString (str, options) {
-    return str.replace(/\\/g, '\\\\')
-              .replace(/\n/g, '\\n')
-              .replace(/[\u0001-\u001F]/g, function (match) {
-                  return '\\0' + match[0].charCodeAt(0).toString(8);
-              });
-}
-
-// Convert an array to a string, such as [1, 2, 3].
-// This function calls stringify() for each of the elements
-// in the array.
-function stringifyArray(ary, options, level) {
-    var out = [];
-    var pretty = options.pretty && (ary.length > 4 || ary.some(function (o) {
-        return (o !== null && typeof(o) === 'object' && Object.keys(o).length > 0) ||
-               (Array.isArray(o) && o.length > 0);
-    }));
-    var ws = pretty ? '\n' + new(Array)(level * 4 + 1).join(' ') : ' ';
-
-    for (var i = 0; i < ary.length; i++) {
-        out.push(stringify(ary[i], options));
-    }
-
-    if (out.length === 0) {
-        return '[]';
-    } else {
-        return '[' + ws
-                   + out.join(',' + (pretty ? ws : ' '))
-                   + (pretty ? ws.slice(0, -4) : ws) +
-               ']';
-    }
-};
-
-// Convert an object to a string, such as {a: 1}.
-// This function calls stringify() for each of its values,
-// and does not output functions or prototype values.
-function stringifyObject(obj, options, level) {
-    var out = [];
-    var pretty = options.pretty && (Object.keys(obj).length > 2 ||
-                                    Object.keys(obj).some(function (k) { return typeof(obj[k]) === 'object' }));
-    var ws = pretty ? '\n' + new(Array)(level * 4 + 1).join(' ') : ' ';
-
-    var keys = options.showHidden ? Object.keys(obj) : Object.getOwnPropertyNames(obj);
-    keys.forEach(function (k) {
-        if (Object.prototype.hasOwnProperty.call(obj, k) 
-          && !(obj[k] instanceof Function && options.hideFunctions)) {
-            out.push(eyes.stylize(k, options.styles.key, options.styles) + ': ' +
-                     stringify(obj[k], options));
-        }
-    });
-
-    if (out.length === 0) {
-        return '{}';
-    } else {
-        return "{" + ws
-                   + out.join(',' + (pretty ? ws : ' '))
-                   + (pretty ? ws.slice(0, -4) : ws) +
-               "}";
-   }
-};
-
-// A better `typeof`
-function typeOf(value) {
-    var s = typeof(value),
-        types = [Object, Array, String, RegExp, Number, Function, Boolean, Date];
-
-    if (s === 'object' || s === 'function') {
-        if (value) {
-            types.forEach(function (t) {
-                if (value instanceof t) { s = t.name.toLowerCase() }
-            });
-        } else { s = 'null' }
-    }
-    return s;
-}
-
-function merge(/* variable args */) {
-    var objs = Array.prototype.slice.call(arguments);
-    var target = {};
-
-    objs.forEach(function (o) {
-        Object.keys(o).forEach(function (k) {
-            if (k === 'styles') {
-                if (! o.styles) {
-                    target.styles = false;
-                } else {
-                    target.styles = {}
-                    for (var s in o.styles) {
-                        target.styles[s] = o.styles[s];
-                    }
-                }
-            } else {
-                target[k] = o[k];
-            }
-        });
-    });
-    return target;
-}
-


[45/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/configUriOrigin.xml
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/configUriOrigin.xml b/bin/test/cordova/unit/configUriOrigin.xml
new file mode 100644
index 0000000..7635682
--- /dev/null
+++ b/bin/test/cordova/unit/configUriOrigin.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widget xmlns=" http://www.w3.org/ns/widgets"
+        xmlns:rim="http://www.blackberry.com/ns/widgets"
+        version="1.0.0"
+        id="My WidgetId"
+        rim:header="RIM-Widget:rim/widget"
+        rim:userAgent="A Test-User-Agent/(Blackberry-Agent)">
+    <name>Demo</name>
+    <content src="local:///startPage.html"/>
+    <author rim:copyright="No Copyright"
+            href="http://www.rim.com/"
+            email = "author@rim.com">Research In Motion Ltd.</author>
+    <description>This app does everything.</description>
+    <license href="http://www.apache.org/licenses/LICENSE-2.0">My License</license>
+    <icon src="test.png" />
+    <rim:permissions>
+        <rim:permit>access_shared</rim:permit>
+        <rim:permit>read_geolocation</rim:permit>
+        <rim:permit>use_camera</rim:permit>
+    </rim:permissions>
+    <feature id="blackberry.app.orientation">
+        <param name="mode" value="portrait" />
+        <param name="other" value="portrait" />
+      </feature>
+    <feature id="blackberry.app" required="true" version="1.0.0.0">
+        <param name="childBrowser" value="disable" />
+        <param name="websecurity" value="disable" />
+        <param name="popupBlocker" value="enable" />
+    </feature>
+    <feature id="blackberry.system" required="true" version="1.0.0.3"/>
+    <access uri="http://www.somedomain1.com" subdomains="true">
+        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
+        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
+    </access>
+    <access origin="http://www.somedomain1.com" subdomains="true">
+        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
+        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
+    </access>
+    <rim:invoke-target id="com.domain.subdomain.appname.app1">
+	<type>APPLICATION</type>
+        <require-source-permissions>invoke_across_perimeters,access_shared</require-source-permissions>
+        <filter>
+            <action>bb.action.OPEN</action>
+            <action>bb.action.SET</action>
+            <action>bb.action.VIEW</action>
+            <mime-type>image/*</mime-type>
+            <mime-type>text/*</mime-type>
+            <property var="uris" value="ftp://" />
+            <property var="uris" value="http://" />
+            <property var="uris" value="https://" />
+            <property var="exts" value="jpg" />
+            <property var="exts" value="png" />
+            <property var="exts" value="txt" />
+            <property var="exts" value="doc" />
+        </filter>
+    </rim:invoke-target>
+</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/data/ascii_text.txt
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/data/ascii_text.txt b/bin/test/cordova/unit/data/ascii_text.txt
new file mode 100644
index 0000000..5e1c309
--- /dev/null
+++ b/bin/test/cordova/unit/data/ascii_text.txt
@@ -0,0 +1 @@
+Hello World
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/data/ucs2be_text.txt
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/data/ucs2be_text.txt b/bin/test/cordova/unit/data/ucs2be_text.txt
new file mode 100644
index 0000000..f999e5f
Binary files /dev/null and b/bin/test/cordova/unit/data/ucs2be_text.txt differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/data/ucs2le_text.txt
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/data/ucs2le_text.txt b/bin/test/cordova/unit/data/ucs2le_text.txt
new file mode 100644
index 0000000..088fa80
Binary files /dev/null and b/bin/test/cordova/unit/data/ucs2le_text.txt differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/data/utf8_text.txt
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/data/utf8_text.txt b/bin/test/cordova/unit/data/utf8_text.txt
new file mode 100644
index 0000000..05eac02
--- /dev/null
+++ b/bin/test/cordova/unit/data/utf8_text.txt
@@ -0,0 +1 @@
+Hello World
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/params-bad.json
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/params-bad.json b/bin/test/cordova/unit/params-bad.json
new file mode 100644
index 0000000..16c75eb
--- /dev/null
+++ b/bin/test/cordova/unit/params-bad.json
@@ -0,0 +1,10 @@
+{
+EVIL!
+	"blackberry-signer": {
+		"-proxyhost": "abc.com",
+		"-proxyport": "80"
+	},
+	"blackberry-nativepackager": {
+
+	}
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/params.json
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/params.json b/bin/test/cordova/unit/params.json
new file mode 100644
index 0000000..6a3506f
--- /dev/null
+++ b/bin/test/cordova/unit/params.json
@@ -0,0 +1,9 @@
+{
+	"blackberry-signer": {
+		"-proxyhost": "abc.com",
+		"-proxyport": "80"
+	},
+	"blackberry-nativepackager": {
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/bar-builder.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/bar-builder.js b/bin/test/cordova/unit/spec/lib/bar-builder.js
new file mode 100644
index 0000000..f701b34
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/bar-builder.js
@@ -0,0 +1,55 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    path = require("path"),
+    wrench = require("wrench"),
+    barBuilder = require(srcPath + "bar-builder"),
+    fileMgr = require(srcPath + "file-manager"),
+    nativePkgr = require(srcPath + "native-packager"),
+    logger = require(srcPath + "logger"),
+    testData = require("./test-data"),
+    extManager = null;
+
+describe("BAR builder", function () {
+    it("build() create BAR for specified session", function () {
+        var callback = jasmine.createSpy(),
+            session = testData.session,
+            config = testData.config,
+            target = session.targets[0];
+
+        wrench.mkdirSyncRecursive(path.join(session.sourcePaths.LIB, "config"));
+
+        spyOn(wrench, "mkdirSyncRecursive");
+        spyOn(fileMgr, "copyWebworks");
+        spyOn(fileMgr, "generateFrameworkModulesJS");
+        spyOn(nativePkgr, "exec").andCallFake(function (session, target, config, callback) {
+            callback(0);
+        });
+
+        barBuilder.build(session, testData.config, callback);
+
+        expect(wrench.mkdirSyncRecursive).toHaveBeenCalledWith(session.outputDir + "/" + target);
+        expect(fileMgr.generateFrameworkModulesJS).toHaveBeenCalledWith(session);
+        expect(nativePkgr.exec).toHaveBeenCalledWith(session, target, config, jasmine.any(Function));
+        expect(callback).toHaveBeenCalledWith(0);
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/bbwpignore.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/bbwpignore.js b/bin/test/cordova/unit/spec/lib/bbwpignore.js
new file mode 100644
index 0000000..7c68ee9
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/bbwpignore.js
@@ -0,0 +1,135 @@
+/*
+ *  Copyright 2012 Research In Motion Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    BBWPignore = require(srcPath + "bbwpignore"),
+    fs = require('fs');
+
+describe("bbwpignore can match", function () {
+    it("a basic file set", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
+                                           "x/y/def.js");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
+                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
+        expect(bbwpignore.matchedFiles.length).toBe(4);
+        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("a/b/x/y/def.js")).not.toBe(-1);
+    });
+
+    it("a basic file set with directories", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
+                                           "x/y/");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
+                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
+
+        expect(bbwpignore.matchedFiles.length).toBe(4);
+        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("a/b/x/y/def.js")).not.toBe(-1);
+    });
+
+    it("a basic file set with directories that being with slash", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
+                                           "/x/y/");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
+                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
+        expect(bbwpignore.matchedFiles.length).toBe(4);
+        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("/x/y")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
+
+    });
+
+    it("a basic file set that begin with a slash on the directory", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
+                                           "/x/y/def.js");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
+                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
+
+        expect(bbwpignore.matchedFiles.length).toBe(3);
+        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("x/y/def.js")).not.toBe(-1);
+
+    });
+
+    it("a basic file set that begin with a slash", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("abc.js\n" +
+                                           "/def.js");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
+                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
+
+        expect(bbwpignore.matchedFiles.length).toBe(2);
+        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
+
+    });
+
+    it("a basic file set that begin with a slash and has a wildcard", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("abcd.js\n" +
+                                           "/*.js");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
+                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
+
+        expect(bbwpignore.matchedFiles.length).toBe(2);
+        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("ted.js")).not.toBe(-1);
+
+    });
+
+    it("a basic file set that begin with a slash and has a wildcard", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("abcd.js\n" +
+                                           "a*.js");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["d/e/abc.js", "abc.js", "ted.js", ".DS_Store",
+                                        "x/y/def.js", "x/def.js", "a/b/x/y/def.js"]);
+
+        expect(bbwpignore.matchedFiles.length).toBe(2);
+        expect(bbwpignore.matchedFiles.indexOf("d/e/abc.js")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("abc.js")).not.toBe(-1);
+
+    });
+
+    it("a basic directory set that begin with a slash", function () {
+        var bbwpignore;
+        spyOn(fs, "readFileSync").andReturn("/simulator/\n" +
+                                           "banana.js");
+        bbwpignore = new BBWPignore("FileNameIgnoreForTests",
+                                    ["simulator/a.js"]);
+
+        expect(bbwpignore.matchedFiles.length).toBe(2);
+        expect(bbwpignore.matchedFiles.indexOf("/simulator")).not.toBe(-1);
+        expect(bbwpignore.matchedFiles.indexOf("simulator/a.js")).not.toBe(-1);
+
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/cmdline.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/cmdline.js b/bin/test/cordova/unit/spec/lib/cmdline.js
new file mode 100644
index 0000000..421a95b
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/cmdline.js
@@ -0,0 +1,98 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    localize = require(srcPath + "localize"),
+    cmdline = require(srcPath + "cmdline"),
+    cmd;
+
+describe("Command line", function () {
+    beforeEach(function () {
+        cmd = cmdline
+                .parse(process.argv)
+                .commander;
+    });
+
+    it("accepts -o with argument", function () {
+        cmd.parseOptions(["-o", "outdir"]);
+        expect(cmd.output).toEqual("outdir");
+    });
+
+    it("arg following -o is required", function () {
+        spyOn(process, "exit");
+        spyOn(console, "error");
+        cmd.parseOptions(["-o"]);
+        expect(console.error).toHaveBeenCalled();
+        expect(process.exit).toHaveBeenCalled();
+    });
+
+    it("accepts -s without argument", function () {
+        cmd.parseOptions(["-s"]);
+        expect(cmd.source).toBeTruthy();
+    });
+
+    it("accepts -s with argument", function () {
+        cmd.parseOptions(["-s", "mySourceDir"]);
+        expect(cmd.source).toEqual("mySourceDir");
+    });
+
+    it("accepts -d", function () {
+        cmd.parseOptions(["-d"]);
+        expect(cmd.debug).toBeTruthy();
+    });
+
+    it("accepts --loglevel with argument", function () {
+        cmd.parseOptions(["--loglevel", "warn"]);
+        expect(cmd.loglevel).toBe("warn");
+    });
+
+    it("accepts -l", function () {
+        cmd.parseOptions(["-l", "error"]);
+        expect(cmd.loglevel).toBe("error");
+    });
+
+    it("accepts -g with argument", function () {
+        cmd.parseOptions(["-g", "myPassword"]);
+        expect(cmd.password).toEqual("myPassword");
+    });
+
+    it("accepts --buildId with argument", function () {
+        cmd.parseOptions(["--buildId", "100"]);
+        expect(cmd.buildId).toEqual("100");
+    });
+
+    it("accepts -buildId with argument", function () {
+        cmd.parseOptions(["-buildId", "100"]);
+        expect(cmd.buildId).toEqual("100");
+    });
+
+    it("accepts --appdesc with argument", function () {
+        cmd.parseOptions(["--appdesc", "bardescriptor"]);
+        expect(cmd.appdesc).toEqual("bardescriptor");
+    });
+
+    it("throws an error for invalid multi-word arguments", function () {
+        expect(function () {
+            require(srcPath + "cmdline").parse(["--src"]);
+        }).toThrow(localize.translate("EXCEPTION_CMDLINE_ARG_INVALID", "--src"));
+    });
+
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/config-parser.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/config-parser.js b/bin/test/cordova/unit/spec/lib/config-parser.js
new file mode 100644
index 0000000..2947e1b
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/config-parser.js
@@ -0,0 +1,1448 @@
+/*jshint sub:true*/
+
+var testData = require("./test-data"),
+    configParser = require(testData.libPath + "/config-parser"),
+    packagerUtils = require(testData.libPath + "/packager-utils"),
+    fileManager = require(testData.libPath + "/file-manager"),
+    logger = require(testData.libPath + "./logger"),
+    testUtilities = require("./test-utilities"),
+    xml2js = require('xml2js'),
+    localize = require(testData.libPath + "/localize"),
+    path = require("path"),
+    fs = require("fs"),
+    session = testData.session,
+    configPath = path.resolve("bin/test/cordova/unit/config.xml"),
+    configPathUri = path.resolve("bin/test/cordova/unit/configUri.xml"),
+    configPathUriOrigin = path.resolve("bin/test/cordova/unit/configUriOrigin.xml"),
+    configBadPath = path.resolve("test2/config.xml"),
+    configBareMinimumPath = path.resolve("bin/test/cordova/unit/config-bare-minimum.xml"),
+    mockParsing = testUtilities.mockParsing;
+
+describe("config parser", function () {
+    beforeEach(function () {
+        spyOn(logger, "warn");
+        spyOn(packagerUtils, "copyFile");
+    });
+
+    it("tries to open a config.xml file that doesn't exist", function () {
+        expect(function () {
+            configParser.parse(configBadPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_CONFIG_NOT_FOUND"));
+    });
+
+    it("parses standard elements in a config.xml", function () {
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.content).toEqual("local:///startPage.html");
+            expect(configObj.id).toEqual("My WidgetId");
+            expect(configObj.customHeaders).toEqual({ 'RIM-Widget' : 'rim/widget'});
+            expect(configObj.version).toEqual("1.0.0");
+            expect(configObj.license).toEqual("My License");
+            expect(configObj.licenseURL).toEqual("http://www.apache.org/licenses/LICENSE-2.0");
+            expect(configObj.icon).toEqual(["test.png"]);
+            expect(configObj.configXML).toEqual("config.xml");
+            expect(configObj.author).toEqual("Research In Motion Ltd.");
+            expect(configObj.authorURL).toEqual("http://www.rim.com/");
+            expect(configObj.copyright).toEqual("No Copyright");
+            expect(configObj.authorEmail).toEqual("author@rim.com");
+            expect(configObj.name).toEqual({ default : 'Demo' });
+            expect(configObj.description).toEqual({ default : 'This app does everything.' });
+            expect(configObj.permissions).toContain('access_shared');
+            expect(configObj.permissions).toContain('read_geolocation');
+            expect(configObj.permissions).toContain('use_camera');
+            expect(configObj.enableChildWebView).toBe(false);
+        });
+    });
+
+    it("parses Feature elements in a config.xml", function () {
+        var localAccessList,
+            accessListFeature;
+
+        configParser.parse(configPathUri, session, function (configObj) {
+            //validate WIDGET_LOCAL accessList
+            localAccessList = testUtilities.getAccessList(configObj.accessList, "WIDGET_LOCAL");
+            expect(localAccessList).toBeDefined();
+            expect(localAccessList.uri).toEqual("WIDGET_LOCAL");
+        });
+    });
+
+    it("parses Access elements a config.xml", function () {
+        var customAccessList,
+            accessListFeature;
+
+        configParser.parse(configPathUri, session, function (configObj) {
+            //validate http://www.somedomain1.com accessList
+            customAccessList = testUtilities.getAccessList(configObj.accessList, "http://www.somedomain1.com");
+            expect(customAccessList).toBeDefined();
+            expect(customAccessList.uri).toEqual("http://www.somedomain1.com");
+            expect(customAccessList.allowSubDomain).toEqual(true);
+        });
+    });
+
+    it("parses a bare minimum config.xml without error", function () {
+        var bareMinimumConfigPath = path.resolve("bin/test/cordova/unit/config-bare-minimum.xml");
+
+        configParser.parse(bareMinimumConfigPath, session, function (configObj) {
+            expect(configObj.content).toEqual("local:///startPage.html");
+            expect(configObj.version).toEqual("1.0.0");
+        });
+    });
+
+    it("license url is set even if license body is empty", function () {
+        var licenseConfigPath = path.resolve("bin/test/cordova/unit/config-license.xml");
+
+        configParser.parse(licenseConfigPath, session, function (configObj) {
+            expect(configObj.license).toEqual("");
+            expect(configObj.licenseURL).toEqual("http://www.apache.org/licenses/LICENSE-2.0");
+        });
+    });
+
+    it("fails when id is undefined", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["@"].id = undefined;
+
+        mockParsing(data);
+        //Should throw an EXCEPTION_INVALID_ID error
+        expect(function () {
+            configParser.parse(configPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_ID"));
+    });
+
+    it("fails when id is empty", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["@"].id = "";
+
+        mockParsing(data);
+
+        //Should throw an EXCEPTION_INVALID_ID error
+        expect(function () {
+            configParser.parse(configPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_ID"));
+    });
+
+    it("Fails when no name was provided - single element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = "";
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
+    });
+
+    it("Fails when no name was provided - multiple elements", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = ["",
+            { '#': 'API Smoke Test-FR', '@': { 'xml:lang': 'fr' } }
+        ];
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
+    });
+
+    it("Fails when localized name was provided but empty", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = ["API Smoke Test",
+            { '#': '', '@': { 'xml:lang': 'fr' } }
+        ];
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
+    });
+
+    it("Parses a name element - single element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = "API Smoke Test";
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.name).toEqual({"default": "API Smoke Test"});
+        });
+    });
+
+    it("Parses a name element with xml:lang - single element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } };
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.name).toEqual({"en": "EN VALUE"});
+        });
+    });
+
+    it("Parses a name element that is not case sensitive", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = { '#': 'EN VALUE', '@': { 'xml:lang': 'eN' } };
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.name).toEqual({"en": "EN VALUE"});
+        });
+    });
+
+    it("Parses a name element with xml:lang - multi element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = ['API Smoke Test',
+            { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } },
+            { '#': 'FR VALUE', '@': { 'xml:lang': 'fr' } }
+
+        ];
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.name).toEqual({"default": "API Smoke Test", "en": "EN VALUE", "fr": "FR VALUE"});
+        });
+    });
+
+    it("Fails when localized name was provided but empty", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.name = ['API Smoke Test',
+            { '#': '', '@': { 'xml:lang': 'fr' } }
+        ];
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_NAME"));
+    });
+
+    it("Parses a description element - single element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.description = "This is my app";
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.description).toEqual({"default": "This is my app"});
+        });
+    });
+
+    it("Parses a description element with xml:lang - single element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.description = { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } };
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.description).toEqual({"en": "EN VALUE"});
+        });
+    });
+
+    it("Parses a description element that is not case sensitive", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.description = { '#': 'EN VALUE', '@': { 'xml:lang': 'eN' } };
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.description).toEqual({"en": "EN VALUE"});
+        });
+    });
+
+    it("Parses a description element with xml:lang - multi element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.description = ['This is my app',
+            { '#': 'EN VALUE', '@': { 'xml:lang': 'en' } },
+            { '#': 'FR VALUE', '@': { 'xml:lang': 'fr' } }
+
+        ];
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.description).toEqual({"default": "This is my app", "en": "EN VALUE", "fr": "FR VALUE"});
+        });
+    });
+
+    it("adds local:/// protocol to urls", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.content["@"].src = "localFile.html";
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.content).toEqual("local:///localFile.html");
+        });
+    });
+
+    it("cleans source folder on error", function () {
+        mockParsing({}, "ERROR");
+
+        spyOn(logger, "error");
+        spyOn(fileManager, "cleanSource");
+
+        configParser.parse(configPath, session, function () {});
+
+        expect(fileManager.cleanSource).toHaveBeenCalled();
+    });
+
+    it("parses a single permission (comes in as string)", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['rim:permissions'] = {};
+        data['rim:permissions']['rim:permit'] = 'onePermissionNoAttribs';
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.permissions).toContain('onePermissionNoAttribs');
+        });
+    });
+
+    it("parses a single permission with attribs (comes in as object)", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['rim:permissions'] = {};
+        data['rim:permissions']['rim:permit'] = { '#': 'systemPerm', '@': { system: 'true' } };
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.permissions).toContain({ '#': 'systemPerm', '@': { system: 'true' } });
+        });
+    });
+
+    it("parses multiple permissions with no attribs (comes in as array)", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['rim:permissions'] = {};
+        data['rim:permissions']['rim:permit'] = [ 'access_shared', 'read_geolocation', 'use_camera' ];
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.permissions).toContain('access_shared');
+            expect(configObj.permissions).toContain('read_geolocation');
+            expect(configObj.permissions).toContain('use_camera');
+        });
+    });
+
+    it("parses multiple permissions with attribs (comes in as array)", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['rim:permissions'] = {};
+        data['rim:permissions']['rim:permit'] = [
+            { '#': 'systemPerm', '@': { system: 'true' } },
+            { '#': 'nonSystemPerm', '@': { system: 'false' } }
+        ];
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.permissions).toContain({ '#': 'systemPerm', '@': { system: 'true' } });
+            expect(configObj.permissions).toContain({ '#': 'nonSystemPerm', '@': { system: 'false' } });
+        });
+    });
+
+    it("parses a config with no permissions set", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        delete data['rim:permissions']; //No permissions set in config
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.permissions).toEqual([]);
+        });
+    });
+
+    it("enables the enable-flash feature when specified", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //Add the enable-flash feature element
+        data['feature'] = {'@': {id: 'enable-flash'}};
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.enableFlash).toEqual(true);
+        });
+    });
+
+    it("does not enable the enable-flash feature when specified in an access element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //Add the enable-flash to an access element
+        data['access'] = {"@" : {"uri" : "http://somewebsite.com"}, "feature" : {"@": {id: 'enable-flash'}}};
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.enableFlash).toEqual(false);
+        });
+    });
+
+    it("disables the enable-flash feature by default", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['feature'] = undefined;//no features
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.enableFlash).toEqual(false);
+        });
+    });
+
+    it("sets autoDeferNetworkingAndJavaScript to false when the blackberry.push feature is specified", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //Add the blackberry.push feature element
+        data["rim:permissions"] = {}; // ensure no run_when_backgrounded permission exists
+        data['feature'] = {'@': {id: 'blackberry.push'}};
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.autoDeferNetworkingAndJavaScript).toEqual(false);
+        });
+    });
+
+    it("sets autoDeferNetworkingAndJavaScript to false when the run_when_backgrounded permission is specified", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //Add the run_when_backgrounded permission
+        data['feature'] = undefined; // no features
+        data["rim:permissions"] = {
+            "rim:permit" : [ 'read_geolocation', 'run_when_backgrounded', 'access_internet' ]
+        };
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.permissions).toContain('run_when_backgrounded');
+            expect(configObj.autoDeferNetworkingAndJavaScript).toEqual(false);
+        });
+    });
+
+    it("sets autoDeferNetworkingAndJavaScript to true by default", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        data['feature'] = undefined; // no features
+        data["rim:permissions"] = {}; // ensure no run_when_backgrounded permission exists
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.autoDeferNetworkingAndJavaScript).toEqual(true);
+        });
+    });
+
+    it("does not throw an exception with empty permit tags", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['rim:permit'] = ['read_geolocation', {}, 'access_internet' ];
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).not.toThrow();
+    });
+
+    it("throws a warning when both uri and origin attributes exist", function () {
+        configParser.parse(configPathUriOrigin, session, function (configObj) {});
+        expect(logger.warn).toHaveBeenCalled();
+    });
+
+    it("multi access should be false if no access", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            //hasMultiAccess was set to false
+            expect(configObj.hasMultiAccess).toEqual(false);
+            expect(configObj.accessList).toEqual([ {
+                uri : 'WIDGET_LOCAL',
+                allowSubDomain : true
+            } ]);
+        });
+    });
+
+    it("multi access should be false if no uri is equal to *", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['access'] = {"@" : {"uri" : "http://www.somedomain1.com"}};
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            //hasMultiAccess was set to false
+            expect(configObj.hasMultiAccess).toEqual(false);
+            expect(configObj.accessList).toEqual([ {
+                uri : 'WIDGET_LOCAL',
+                allowSubDomain : true
+            }, {
+                "uri" : "http://www.somedomain1.com"
+            } ]);
+        });
+    });
+
+    it("multi access should be false if no origin is equal to *", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['access'] = {"@" : {"origin" : "http://www.somedomain1.com"}};
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            //hasMultiAccess was set to false
+            expect(configObj.hasMultiAccess).toEqual(false);
+            expect(configObj.accessList).toEqual([ {
+                uri : 'WIDGET_LOCAL',
+                allowSubDomain : true
+            }, {
+                "uri" : "http://www.somedomain1.com"
+            } ]);
+        });
+    });
+
+    it("multi access should be true with the uri being equal to *", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['access'] = {"@" : {"uri" : "*"}};
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            //hasMultiAccess was set to true
+            expect(configObj.hasMultiAccess).toEqual(true);
+            expect(configObj.accessList).toEqual([ {
+                uri : 'WIDGET_LOCAL',
+                allowSubDomain : true
+            } ]);
+        });
+    });
+
+    it("multi access should be true with one uri being equal to *", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['access'] = [{"@" : {"uri" : "*"}}, {"@" : {"uri" : "http://www.somedomain1.com"}}];
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            //hasMultiAccess was set to true
+            expect(configObj.hasMultiAccess).toEqual(true);
+            expect(configObj.accessList).toEqual([ {
+                uri : 'WIDGET_LOCAL',
+                allowSubDomain : true
+            }, {
+                "uri" : "http://www.somedomain1.com"
+            } ]);
+        });
+    });
+
+    it("should fail when feature is defined with the uri being equal to *", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['access'] = {"@" : {"uri" : "*"}, "feature" : {"@": {"id": "blackberry.app"}}};
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN"));
+    });
+
+    it("should fail when multi features are defined with the uri being equal to *", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data['access'] = {"@" : {"uri" : "*"}, "feature" : [{"@": {"id": "blackberry.app"}}, {"@": {"id": "blackberry.system"}}, {"@": {"id": "blackberry.invoke"}}]};
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN"));
+    });
+
+    it("should fail when the access uri attribute does not specify a protocol", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //Add an access element with one feature
+        data['access'] = {
+            '@': {
+                uri: 'rim.net',
+                subdomains: 'true'
+            },
+            feature: {
+                '@': { id: 'blackberry.system' }
+            }
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_PROTOCOL", data['access']['@'].uri));
+    });
+
+    it("should fail when the access uri attribute does not specify a URN", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //Add an access element with one feature
+        data['access'] = {
+            '@': {
+                uri: 'http://',
+                subdomains: 'true'
+            },
+            feature: {
+                '@': { id: 'blackberry.system' }
+            }
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_ACCESS_URI_NO_URN", data['access']['@'].uri));
+    });
+
+    it("does not fail when there is a single feature element in the access list", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //Add an access element with one feature
+        data['access'] = {
+            '@': {
+                uri: 'http://rim.net',
+                subdomains: 'true'
+            },
+            feature: {
+                '@': { id: 'blackberry.system' }
+            }
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).not.toThrow();
+    });
+
+    it("supports 4 digit version [build id]", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["@"].version = "1.0.0.50";
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.version).toEqual("1.0.0");
+            expect(configObj.buildId).toEqual("50");
+        });
+    });
+
+    it("uses --buildId when set", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+        //--buildId 100
+        session.buildId = "100";
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.buildId).toEqual("100");
+        });
+    });
+
+    it("overrides the build id specified in version with --buildId flag", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["@"].version = "1.0.0.50";
+
+        //--buildId 100
+        session.buildId = "100";
+
+        mockParsing(data);
+
+        configParser.parse(configPath, session, function (configObj) {
+            expect(configObj.version).toEqual("1.0.0");
+            expect(configObj.buildId).toEqual("100");
+        });
+    });
+
+    it("throws a proper error when author tag is empty", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data.author = {};
+
+        mockParsing(data);
+
+        //Should throw an EXCEPTION_INVALID_AUTHOR error
+        expect(function () {
+            configParser.parse(configPath, session, {});
+        }).toThrow(localize.translate("EXCEPTION_INVALID_AUTHOR"));
+    });
+
+    it("can parse a standard rim:invoke-target element", function () {
+
+        configParser.parse(configPath, session, function (configObj) {
+            var invokeTarget = configObj["invoke-target"][0];
+
+            expect(invokeTarget).toBeDefined();
+            expect(invokeTarget["@"]).toBeDefined();
+            expect(invokeTarget["@"]["id"]).toBeDefined();
+            expect(invokeTarget["@"]["id"]).toEqual("com.domain.subdomain.appname.app1");
+            expect(invokeTarget.type).toBeDefined();
+            expect(invokeTarget.type).toEqual("APPLICATION");
+            expect(invokeTarget["require-source-permissions"]).toBeDefined();
+            expect(invokeTarget["require-source-permissions"]).toEqual("invoke_across_perimeters,access_shared");
+            expect(invokeTarget.filter).toBeDefined();
+            expect(invokeTarget.filter[0].action).toBeDefined();
+            expect(invokeTarget.filter[0].action).toContain("bb.action.VIEW");
+            expect(invokeTarget.filter[0].action).toContain("bb.action.SET");
+            expect(invokeTarget.filter[0].action).toContain("bb.action.OPEN");
+            expect(invokeTarget.filter[0]["mime-type"]).toBeDefined();
+            expect(invokeTarget.filter[0]["mime-type"]).toContain("image/*");
+            expect(invokeTarget.filter[0]["mime-type"]).toContain("text/*");
+            expect(invokeTarget.filter[0].property).toBeDefined();
+
+            invokeTarget.filter[0].property.forEach(function (property) {
+                expect(property["@"]).toBeDefined();
+                expect(property["@"]["var"]).toBeDefined();
+                expect(property["@"]["var"]).toMatch("^(exts|uris)$");
+                if (property["@"]["var"] === "uris") {
+                    expect(property["@"]["value"]).toMatch("^(ftp|http|https):\/\/$");
+                } else if (property["@"]["var"] === "exts") {
+                    expect(property["@"]["value"]).toMatch("^(jpg|png|txt|doc)$");
+                }
+            });
+        });
+    });
+
+    it("can parse multiple filters in one element", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["rim:invoke-target"] = {
+            "@": {
+                "id": "com.domain.subdomain.appName.app"
+            },
+            "type": "application",
+            "filter":  [{
+                "action":  "bb.action.OPEN",
+                "mime-type": ["text/*", "image/*"]
+            }, {
+                "action": "bb.action.SET",
+                "mime-type": "image/*"
+            }]
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).not.toThrow();
+    });
+
+    it("can parse multiple invoke targets", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["rim:invoke-target"] = [{
+            "@": {
+                "id": "com.domain.subdomain.appName.app"
+            },
+            "type": "application"
+        }, {
+            "@": {
+                "id": "com.domain.subdomain.appName.viewer"
+            },
+            "type": "viewer"
+        }];
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).not.toThrow();
+
+    });
+
+    it("throws an error when an invoke target doesn't specify an invocation id", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["rim:invoke-target"] = {
+            type: "APPLICATION"
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_ID"));
+    });
+
+    it("throws and error when an invoke target xml doesn't specify an invocation type", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["rim:invoke-target"] = {
+            "@": {
+                "id": "com.domain.subdomain.appName.app"
+            },
+            type: {}
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_TYPE"));
+    });
+
+    it("throws an error when an invoke target doesn't specify an invocation type", function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["rim:invoke-target"] = {
+            "@": {
+                "id": "com.domain.subdomain.appName.app"
+            }
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_INVALID_TYPE"));
+    });
+
+    it("throws an error when an invoke target filter doesn't contain an action",  function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["rim:invoke-target"] = {
+            "@": {
+                "id": "com.domain.subdomain.appName.app"
+            },
+            "type": "APPLICATION",
+            "filter": {
+                "mime-type": "text/*",
+                "property": [{
+                    "@": {
+                        "var": "uris",
+                        "value": "https://"
+                    }
+                }, {
+                    "@": {
+                        "var": "exts",
+                        "value": "html"
+                    }
+                }, {
+                    "@": {
+                        "var": "exts",
+                        "value": "htm"
+                    }
+                }]
+            }
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_ACTION_INVALID"));
+    });
+
+    it("throws an error when a filter doesn't contain a mime-type",  function () {
+        var data = testUtilities.cloneObj(testData.xml2jsConfig);
+        data["rim:invoke-target"] = {
+            "@": {
+                "id": "com.domain.subdomain.appName.app"
+            },
+            "type": "application",
+            "filter": {
+                "action": "bb.action.OPEN",
+                "property": [{
+                    "@": {
+                        "var": "uris",
+                        "value": "https://"
+                    }
+                }, {
+                    "@": {
+                        "var": "exts",
+                        "value": "html"
+                    }
+                }]
+            }
+        };
+
+        mockParsing(data);
+
+        expect(function () {
+            configParser.parse(configPath, session, function (configObj) {});
+        }).toThrow(localize.translate("EXCEPTION_INVOKE_TARGET_MIME_TYPE_INVALID"));
+    });
+
+    describe("splash screen", function () {
+        it("throws error when rim:splash element does not contain src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["rim:splash"] = {};
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC"));
+        });
+
+        it("throws error when rim:splash element contains empty src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["rim:splash"] = {
+                "@": {
+                    "src": ""
+                }
+            };
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC"));
+        });
+
+        it("throws error when one of many rim:splash elements does not contain attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["rim:splash"] = [{
+                "@": {
+                    "src": "a.jpg"
+                }
+            }, {
+                "#": "blah"
+            }];
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC"));
+        });
+
+        it("allow one rim:splash element that contains non-empty src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["rim:splash"] = {
+                "@": {
+                    "src": "a.jpg"
+                }
+            };
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).not.toThrow();
+        });
+
+        it("allow multiple rim:splash elements that contain non-empty src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["rim:splash"] = [{
+                "@": {
+                    "src": "a.jpg"
+                }
+            }, {
+                "@": {
+                    "src": "b.jpg"
+                }
+            }];
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).not.toThrow();
+        });
+
+        it("throws error when rim:splash src starts with 'locales' subfolder", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["rim:splash"] = [{
+                "@": {
+                    "src": "a.jpg"
+                }
+            }, {
+                "@": {
+                    "src": "locales/en/b.jpg"
+                }
+            }];
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_SPLASH_SRC_LOCALES"));
+        });
+    });
+
+    describe("icon", function () {
+        it("throws error when icon element does not contain src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["icon"] = {};
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC"));
+        });
+
+        it("throws error when icon element contains empty src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["icon"] = {
+                "@": {
+                    "src": ""
+                }
+            };
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC"));
+        });
+
+        it("throws error when one of many icon elements does not contain attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["icon"] = [{
+                "@": {
+                    "src": "a.jpg"
+                }
+            }, {
+                "#": "blah"
+            }];
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC"));
+        });
+
+        it("allow one icon element that contains non-empty src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["icon"] = {
+                "@": {
+                    "src": "a.jpg"
+                }
+            };
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).not.toThrow();
+        });
+
+        it("allow multiple icon elements that contain non-empty src attribute", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["icon"] = [{
+                "@": {
+                    "src": "a.jpg"
+                }
+            }, {
+                "@": {
+                    "src": "b.jpg"
+                }
+            }];
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).not.toThrow();
+        });
+
+        it("throws error when icon src starts with 'locales' subfolder", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["icon"] = [{
+                "@": {
+                    "src": "a.jpg"
+                }
+            }, {
+                "@": {
+                    "src": "locales/en/b.jpg"
+                }
+            }];
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_ICON_SRC_LOCALES"));
+        });
+
+        it("should copy the default icon to the src dir when no icon specified", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).not.toThrow();
+
+            expect(packagerUtils.copyFile).toHaveBeenCalled();
+        });
+
+        it("should use the default icon config when no icon is specified", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+            mockParsing(data);
+
+            configParser.parse(configBareMinimumPath, session, function (configObj) {
+                expect(configObj.icon).toEqual(["default-icon.png"]);
+            });
+        });
+
+        it("should not use the default icon config when icon is specified", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["icon"] = {
+                "@": {
+                    "src": "test.png"
+                }
+            };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.icon).toEqual(["test.png"]);
+                expect(configObj.icon).not.toEqual(["default-icon.png"]);
+                expect(configObj.icon).not.toContain("default-icon.png");
+            });
+        });
+
+        it("sets orientation to landscape when specified", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': { name: 'orientation', value: 'landscape' } };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.orientation).toEqual("landscape");
+                expect(configObj.autoOrientation).toEqual(false);
+            });
+        });
+
+        it("sets orientation to portrait when specified", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': { name: 'orientation', value: 'portrait' } };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.orientation).toEqual("portrait");
+                expect(configObj.autoOrientation).toEqual(false);
+            });
+        });
+
+        it("sets auto orientation to true by default", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            delete data['preference'];//Remove any orientation data
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.autoOrientation).toEqual(true);
+            });
+        });
+
+        it("orientation remains auto when auto is specified", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': { name: 'orientation', value: 'auto' } };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.autoOrientation).toEqual(true);
+            });
+        });
+
+        it("orientation remains auto when default is specified", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': { name: 'orientation', value: 'default' } };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.autoOrientation).toEqual(true);
+            });
+        });
+
+        it("throws an error when preference.orientation value is invalid", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': { name: 'orientation', value: 'invalid' } };
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", "invalid"));
+
+        });
+
+        it("throws a warning when blackberry.app.orientation exists", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['feature'] = { '@': { id: 'blackberry.app.orientation', required: true },
+                param: { '@': { name: 'mode', value: 'portrait' } } };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {});
+            expect(logger.warn).toHaveBeenCalled();
+        });
+
+        it("throws an error when blackberry.app orientation exists with an invalid mode param", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': { name: 'orientation', value: 'notAValidMode' } };
+
+            mockParsing(data);
+
+            expect(function () {
+                configParser.parse(configPath, session, function (configObj) {});
+            }).toThrow(localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", "notavalidmode"));
+        });
+
+        it("sets backgroundColor when specified as a preference", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': {name: 'backgroundColor', value: '0xffffff' } };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.backgroundColor).toEqual(16777215);//Decimal value of 0xffffff
+            });
+        });
+
+        it("throws an error backgroundColor preference is not a number", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data['preference'] = { '@': { name: 'backgroundColor', value: '$UI*@@$' } };
+
+            mockParsing(data);
+
+            //Should throw an EXCEPTION_BGCOLOR_INVALID error
+            expect(function () {
+                configParser.parse(configPath, session, {});
+            }).toThrow(localize.translate("EXCEPTION_BGCOLOR_INVALID", "$ui*@@$"));
+        });
+
+        it("can properly parse the custom RIM-Widget:rim/widget element", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.customHeaders).toEqual({ 'RIM-Widget' : 'rim/widget'});
+            });
+        });
+
+        it("can properly parse the custom attributes but ignores improper headers", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["@"] = {
+                "xmlns": " http://www.w3.org/ns/widgets",
+                "xmlns:rim": "http://www.blackberry.com/ns/widgets",
+                "version": "1.0.0",
+                "id": "myID"
+            };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.id).toEqual("myID");
+                expect(configObj.customHeaders).toEqual(undefined);
+            });
+        });
+
+        it("can properly parse the custom attributes but ignores improper headers", function () {
+            var data = testUtilities.cloneObj(testData.xml2jsConfig);
+            data["@"] = {
+                "xmlns": " http://www.w3.org/ns/widgets",
+                "xmlns:rim": "http://www.blackberry.com/ns/widgets",
+                "version": "1.0.0",
+                "id": "myID",
+                "rim:userAgent" : "A Test-User-Agent/(Blackberry-Agent)"
+            };
+
+            mockParsing(data);
+
+            configParser.parse(configPath, session, function (configObj) {
+                expect(configObj.id).toEqual("myID");
+                expect(configObj.userAgent).toEqual("A Test-User-Agent/(Blackberry-Agent)");
+            });
+        });
+
+        describe('disabling childBrowser (childWebView)', function () {
+            it("sets enableChildWebView to true when childBrowser value is enable", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'childBrowser', value: 'enable' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableChildWebView).toBe(true);
+                });
+            });
+
+            it("sets enableChildWebView to false when value is disable", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'childBrowser', value: 'disable' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableChildWebView).toBe(false);
+                });
+            });
+        });
+
+        describe('disabling formcontrol', function () {
+            it("sets enableFormControl to true when HideKeyboardFormAccessoryBar value is disable", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'disable'  } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableFormControl).toBe(true);
+                });
+            });
+
+            it("sets enableFormControl to true when HideKeyboardFormAccessoryBar value is false", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'false'  } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableFormControl).toBe(true);
+                });
+            });
+
+            it("sets enableFormControl to false when value is enable", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'enable' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableFormControl).toBe(false);
+                });
+            });
+
+            it("sets enableFormControl to false when value is true", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'true' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableFormControl).toBe(false);
+                });
+            });
+        });
+
+        describe('setting theme for some core ui elements', function () {
+            function testTheme(themeInConfig, themeParsed) {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
+                if (themeInConfig) {
+                    data['preference'] = { '@': { name: 'theme', value: themeInConfig } };
+
+                    mockParsing(data);
+                }
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.theme).toBe(themeParsed);
+                });
+            }
+
+            it("sets theme to dark when config has theme with dark", function () {
+                testTheme("dark", "dark");
+            });
+
+            it("sets theme to bright when config has theme with bright", function () {
+                testTheme("bright", "bright");
+            });
+
+            it("sets theme to inherit when config has theme with inherit", function () {
+                testTheme("inherit", "inherit");
+            });
+
+            it("sets theme to default when config has theme with default", function () {
+                testTheme("default", "default");
+            });
+
+            it("sets theme to default when config has unsupported theme", function () {
+                testTheme("unsupportedthemename", "default");
+            });
+
+            it("sets theme to default when config has no theme provided", function () {
+                testTheme(undefined, "default");
+            });
+
+            it("sets theme to dark when config has theme with case insensitive dark", function () {
+                testTheme("dArK", "dark");
+            });
+
+            it("sets theme to bright when config has theme with case insensitive bright", function () {
+                testTheme("BriGht", "bright");
+            });
+
+            it("sets theme to inherit when config has theme with case insensitive inherit", function () {
+                testTheme("inHerIt", "inherit");
+            });
+
+            it("sets theme to inherit when config has theme with case insensitive inherit", function () {
+                testTheme("DefAulT", "default");
+            });
+
+            it("sets theme to default when config has NO theme tag provided", function () {
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.theme).toBe("default");
+                });
+            });
+        });
+
+        describe('disabling WebSecurity', function () {
+            it("doesn't set enableWebSecurity to anything when param value is anything but disable", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'webSecurity', value: (new Date()).toString() } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableWebSecurity).toBe(undefined);
+                    expect(logger.warn).not.toHaveBeenCalledWith(localize.translate("WARNING_WEBSECURITY_DISABLED"));
+                });
+            });
+
+            it("sets enableWebSecurity to false when value is disable", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'webSecurity', value: 'disable' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableWebSecurity).toBe(false);
+                    expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_WEBSECURITY_DISABLED"));
+                });
+            });
+
+            it("sets enableWebSecurity to false when value is disable case insensitive", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'webSecurity', value: 'DisAble' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enableWebSecurity).toBe(false);
+                    expect(logger.warn).toHaveBeenCalledWith(localize.translate("WARNING_WEBSECURITY_DISABLED"));
+                });
+            });
+        });
+
+        describe('enabling popupBlocker', function () {
+            it("sets enablePopupBlocker to true when value is enable", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'popupBlocker', value: 'enable' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enablePopupBlocker).toBe(true);
+                });
+            });
+
+            it("sets enablePopBlocker to false when value is disable case insensitive", function () {
+                var data = testUtilities.cloneObj(testData.xml2jsConfig);
+                data['preference'] = { '@': { name: 'popupBlocker', value: 'Disable' } };
+
+                mockParsing(data);
+
+                configParser.parse(configPath, session, function (configObj) {
+                    expect(configObj.enablePopupBlocker).toBe(false);
+                });
+            });
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/spec/lib/file-manager.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/spec/lib/file-manager.js b/bin/test/cordova/unit/spec/lib/file-manager.js
new file mode 100644
index 0000000..ae17e7b
--- /dev/null
+++ b/bin/test/cordova/unit/spec/lib/file-manager.js
@@ -0,0 +1,88 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var srcPath = __dirname + "/../../../../../templates/project/cordova/lib/",
+    barconf = require(srcPath + "bar-conf.js"),
+    fs = require("fs"),
+    path = require("path"),
+    util = require("util"),
+    packager_utils = require(srcPath + "packager-utils"),
+    localize = require(srcPath + "localize"),
+    wrench = require("wrench"),
+    logger = require(srcPath + "logger"),
+    conf = require(srcPath + "conf"),
+    fileMgr = require(srcPath + "file-manager"),
+    testData = require("./test-data"),
+    testUtilities = require("./test-utilities"),
+    session = testData.session,
+    extManager = {
+        getAllExtensionsToCopy: function (accessList) {
+            return ["app"];
+        },
+        getFeatureIdByExtensionBasename: function (extBasename) {
+            return "blackberry." + extBasename;
+        }
+    };
+
+describe("File manager", function () {
+
+    beforeEach(function () {
+        wrench.mkdirSyncRecursive(testData.session.outputDir);
+    });
+
+    afterEach(function () {
+        //cleanup packager-tests temp folder
+        wrench.rmdirSyncRecursive(testData.session.outputDir);
+    });
+
+    it("unzip() should extract 'from' zip file to 'to' directory", function () {
+        var from = session.archivePath,
+            to = session.sourceDir;
+
+        fileMgr.unzip(from, to);
+
+        expect(fs.statSync(session.sourceDir + "/a").isDirectory()).toBeTruthy();
+        expect(fs.statSync(session.sourceDir + "/a/dummy.txt").isFile()).toBeTruthy();
+        expect(fs.statSync(session.sourceDir + "/a/b").isDirectory()).toBeTruthy();
+        expect(fs.statSync(session.sourceDir + "/a/b/dummy2.txt").isFile()).toBeTruthy();
+        expect(fs.statSync(session.sourceDir + "/startPage.html").isFile()).toBeTruthy();
+        expect(fs.statSync(session.sourceDir + "/config.xml").isFile()).toBeTruthy();
+        expect(fs.statSync(session.sourceDir + "/test.png").isFile()).toBeTruthy();
+    });
+
+    it("cleanSource() should delete source folder", function () {
+        //Create packager-tests source folder
+        wrench.mkdirSyncRecursive(session.sourceDir);
+
+        fileMgr.cleanSource(session);
+        expect(fs.existsSync(session.sourceDir)).toBeFalsy();
+    });
+
+    it("prepareOutputFiles() should throw an error if the archive path doesn't exist", function () {
+        spyOn(wrench, "copyDirSyncRecursive");
+        var tempSession = testUtilities.cloneObj(session);
+        tempSession.archivePath = path.resolve("test/non-existant.zip");
+        expect(function () {
+            fileMgr.prepareOutputFiles(tempSession);
+        }).toThrow(localize.translate("EXCEPTION_INVALID_ARCHIVE_PATH", tempSession.archivePath));
+    });
+
+});


[05/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/lib/entities.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/lib/entities.js b/blackberry10/node_modules/validator/lib/entities.js
deleted file mode 100755
index ed80911..0000000
--- a/blackberry10/node_modules/validator/lib/entities.js
+++ /dev/null
@@ -1,291 +0,0 @@
-var entities = {
-    '&nbsp;': '\u00a0',
-    '&iexcl;': '\u00a1',
-    '&cent;': '\u00a2',
-    '&pound;': '\u00a3',
-    '&curren;': '\u20ac',
-    '&yen;': '\u00a5',
-    '&brvbar;': '\u0160',
-    '&sect;': '\u00a7',
-    '&uml;': '\u0161',
-    '&copy;': '\u00a9',
-    '&ordf;': '\u00aa',
-    '&laquo;': '\u00ab',
-    '&not;': '\u00ac',
-    '&shy;': '\u00ad',
-    '&reg;': '\u00ae',
-    '&macr;': '\u00af',
-    '&deg;': '\u00b0',
-    '&plusmn;': '\u00b1',
-    '&sup2;': '\u00b2',
-    '&sup3;': '\u00b3',
-    '&acute;': '\u017d',
-    '&micro;': '\u00b5',
-    '&para;': '\u00b6',
-    '&middot;': '\u00b7',
-    '&cedil;': '\u017e',
-    '&sup1;': '\u00b9',
-    '&ordm;': '\u00ba',
-    '&raquo;': '\u00bb',
-    '&frac14;': '\u0152',
-    '&frac12;': '\u0153',
-    '&frac34;': '\u0178',
-    '&iquest;': '\u00bf',
-    '&Agrave;': '\u00c0',
-    '&Aacute;': '\u00c1',
-    '&Acirc;': '\u00c2',
-    '&Atilde;': '\u00c3',
-    '&Auml;': '\u00c4',
-    '&Aring;': '\u00c5',
-    '&AElig;': '\u00c6',
-    '&Ccedil;': '\u00c7',
-    '&Egrave;': '\u00c8',
-    '&Eacute;': '\u00c9',
-    '&Ecirc;': '\u00ca',
-    '&Euml;': '\u00cb',
-    '&Igrave;': '\u00cc',
-    '&Iacute;': '\u00cd',
-    '&Icirc;': '\u00ce',
-    '&Iuml;': '\u00cf',
-    '&ETH;': '\u00d0',
-    '&Ntilde;': '\u00d1',
-    '&Ograve;': '\u00d2',
-    '&Oacute;': '\u00d3',
-    '&Ocirc;': '\u00d4',
-    '&Otilde;': '\u00d5',
-    '&Ouml;': '\u00d6',
-    '&times;': '\u00d7',
-    '&Oslash;': '\u00d8',
-    '&Ugrave;': '\u00d9',
-    '&Uacute;': '\u00da',
-    '&Ucirc;': '\u00db',
-    '&Uuml;': '\u00dc',
-    '&Yacute;': '\u00dd',
-    '&THORN;': '\u00de',
-    '&szlig;': '\u00df',
-    '&agrave;': '\u00e0',
-    '&aacute;': '\u00e1',
-    '&acirc;': '\u00e2',
-    '&atilde;': '\u00e3',
-    '&auml;': '\u00e4',
-    '&aring;': '\u00e5',
-    '&aelig;': '\u00e6',
-    '&ccedil;': '\u00e7',
-    '&egrave;': '\u00e8',
-    '&eacute;': '\u00e9',
-    '&ecirc;': '\u00ea',
-    '&euml;': '\u00eb',
-    '&igrave;': '\u00ec',
-    '&iacute;': '\u00ed',
-    '&icirc;': '\u00ee',
-    '&iuml;': '\u00ef',
-    '&eth;': '\u00f0',
-    '&ntilde;': '\u00f1',
-    '&ograve;': '\u00f2',
-    '&oacute;': '\u00f3',
-    '&ocirc;': '\u00f4',
-    '&otilde;': '\u00f5',
-    '&ouml;': '\u00f6',
-    '&divide;': '\u00f7',
-    '&oslash;': '\u00f8',
-    '&ugrave;': '\u00f9',
-    '&uacute;': '\u00fa',
-    '&ucirc;': '\u00fb',
-    '&uuml;': '\u00fc',
-    '&yacute;': '\u00fd',
-    '&thorn;': '\u00fe',
-    '&yuml;': '\u00ff',
-    '&quot;': '\u0022',
-    '&lt;': '\u003c',
-    '&gt;': '\u003e',
-    '&apos;': '\u0027',
-    '&minus;': '\u2212',
-    '&circ;': '\u02c6',
-    '&tilde;': '\u02dc',
-    '&Scaron;': '\u0160',
-    '&lsaquo;': '\u2039',
-    '&OElig;': '\u0152',
-    '&lsquo;': '\u2018',
-    '&rsquo;': '\u2019',
-    '&ldquo;': '\u201c',
-    '&rdquo;': '\u201d',
-    '&bull;': '\u2022',
-    '&ndash;': '\u2013',
-    '&mdash;': '\u2014',
-    '&trade;': '\u2122',
-    '&scaron;': '\u0161',
-    '&rsaquo;': '\u203a',
-    '&oelig;': '\u0153',
-    '&Yuml;': '\u0178',
-    '&fnof;': '\u0192',
-    '&Alpha;': '\u0391',
-    '&Beta;': '\u0392',
-    '&Gamma;': '\u0393',
-    '&Delta;': '\u0394',
-    '&Epsilon;': '\u0395',
-    '&Zeta;': '\u0396',
-    '&Eta;': '\u0397',
-    '&Theta;': '\u0398',
-    '&Iota;': '\u0399',
-    '&Kappa;': '\u039a',
-    '&Lambda;': '\u039b',
-    '&Mu;': '\u039c',
-    '&Nu;': '\u039d',
-    '&Xi;': '\u039e',
-    '&Omicron;': '\u039f',
-    '&Pi;': '\u03a0',
-    '&Rho;': '\u03a1',
-    '&Sigma;': '\u03a3',
-    '&Tau;': '\u03a4',
-    '&Upsilon;': '\u03a5',
-    '&Phi;': '\u03a6',
-    '&Chi;': '\u03a7',
-    '&Psi;': '\u03a8',
-    '&Omega;': '\u03a9',
-    '&alpha;': '\u03b1',
-    '&beta;': '\u03b2',
-    '&gamma;': '\u03b3',
-    '&delta;': '\u03b4',
-    '&epsilon;': '\u03b5',
-    '&zeta;': '\u03b6',
-    '&eta;': '\u03b7',
-    '&theta;': '\u03b8',
-    '&iota;': '\u03b9',
-    '&kappa;': '\u03ba',
-    '&lambda;': '\u03bb',
-    '&mu;': '\u03bc',
-    '&nu;': '\u03bd',
-    '&xi;': '\u03be',
-    '&omicron;': '\u03bf',
-    '&pi;': '\u03c0',
-    '&rho;': '\u03c1',
-    '&sigmaf;': '\u03c2',
-    '&sigma;': '\u03c3',
-    '&tau;': '\u03c4',
-    '&upsilon;': '\u03c5',
-    '&phi;': '\u03c6',
-    '&chi;': '\u03c7',
-    '&psi;': '\u03c8',
-    '&omega;': '\u03c9',
-    '&thetasym;': '\u03d1',
-    '&upsih;': '\u03d2',
-    '&piv;': '\u03d6',
-    '&ensp;': '\u2002',
-    '&emsp;': '\u2003',
-    '&thinsp;': '\u2009',
-    '&zwnj;': '\u200c',
-    '&zwj;': '\u200d',
-    '&lrm;': '\u200e',
-    '&rlm;': '\u200f',
-    '&sbquo;': '\u201a',
-    '&bdquo;': '\u201e',
-    '&dagger;': '\u2020',
-    '&Dagger;': '\u2021',
-    '&hellip;': '\u2026',
-    '&permil;': '\u2030',
-    '&prime;': '\u2032',
-    '&Prime;': '\u2033',
-    '&oline;': '\u203e',
-    '&frasl;': '\u2044',
-    '&euro;': '\u20ac',
-    '&image;': '\u2111',
-    '&weierp;': '\u2118',
-    '&real;': '\u211c',
-    '&alefsym;': '\u2135',
-    '&larr;': '\u2190',
-    '&uarr;': '\u2191',
-    '&rarr;': '\u2192',
-    '&darr;': '\u2193',
-    '&harr;': '\u2194',
-    '&crarr;': '\u21b5',
-    '&lArr;': '\u21d0',
-    '&uArr;': '\u21d1',
-    '&rArr;': '\u21d2',
-    '&dArr;': '\u21d3',
-    '&hArr;': '\u21d4',
-    '&forall;': '\u2200',
-    '&part;': '\u2202',
-    '&exist;': '\u2203',
-    '&empty;': '\u2205',
-    '&nabla;': '\u2207',
-    '&isin;': '\u2208',
-    '&notin;': '\u2209',
-    '&ni;': '\u220b',
-    '&prod;': '\u220f',
-    '&sum;': '\u2211',
-    '&lowast;': '\u2217',
-    '&radic;': '\u221a',
-    '&prop;': '\u221d',
-    '&infin;': '\u221e',
-    '&ang;': '\u2220',
-    '&and;': '\u2227',
-    '&or;': '\u2228',
-    '&cap;': '\u2229',
-    '&cup;': '\u222a',
-    '&int;': '\u222b',
-    '&there4;': '\u2234',
-    '&sim;': '\u223c',
-    '&cong;': '\u2245',
-    '&asymp;': '\u2248',
-    '&ne;': '\u2260',
-    '&equiv;': '\u2261',
-    '&le;': '\u2264',
-    '&ge;': '\u2265',
-    '&sub;': '\u2282',
-    '&sup;': '\u2283',
-    '&nsub;': '\u2284',
-    '&sube;': '\u2286',
-    '&supe;': '\u2287',
-    '&oplus;': '\u2295',
-    '&otimes;': '\u2297',
-    '&perp;': '\u22a5',
-    '&sdot;': '\u22c5',
-    '&lceil;': '\u2308',
-    '&rceil;': '\u2309',
-    '&lfloor;': '\u230a',
-    '&rfloor;': '\u230b',
-    '&lang;': '\u2329',
-    '&rang;': '\u232a',
-    '&loz;': '\u25ca',
-    '&spades;': '\u2660',
-    '&clubs;': '\u2663',
-    '&hearts;': '\u2665',
-    '&diams;': '\u2666'
-};
-
-exports.decode = function (str) {
-    if (!~str.indexOf('&')) return str;
-
-    //Decode literal entities
-    for (var i in entities) {
-        str = str.replace(new RegExp(i, 'g'), entities[i]);
-    }
-
-    //Decode hex entities
-    str = str.replace(/&#x(0*[0-9a-f]{2,5});?/gi, function (m, code) {
-        return String.fromCharCode(parseInt(+code, 16));
-    });
-
-    //Decode numeric entities
-    str = str.replace(/&#([0-9]{2,4});?/gi, function (m, code) {
-        return String.fromCharCode(+code);
-    });
-
-    str = str.replace(/&amp;/g, '&');
-
-    return str;
-}
-
-exports.encode = function (str) {
-    str = str.replace(/&/g, '&amp;');
-
-    //IE doesn't accept &apos;
-    str = str.replace(/'/g, '&#39;');
-
-    //Encode literal entities
-    for (var i in entities) {
-        str = str.replace(new RegExp(entities[i], 'g'), i);
-    }
-
-    return str;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/lib/filter.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/lib/filter.js b/blackberry10/node_modules/validator/lib/filter.js
deleted file mode 100755
index a7023d2..0000000
--- a/blackberry10/node_modules/validator/lib/filter.js
+++ /dev/null
@@ -1,102 +0,0 @@
-var entities = require('./entities');
-var xss = require('./xss');
-
-var Filter = exports.Filter = function() {}
-
-var whitespace = '\\r\\n\\t\\s';
-
-Filter.prototype.modify = function(str) {
-    this.str = str;
-}
-
-Filter.prototype.wrap = function (str) {
-    return str;
-}
-
-Filter.prototype.value = function () {
-    return this.str;
-}
-
-Filter.prototype.chain = function () {
-    this.wrap = function () { return this };
-    return this;
-}
-
-//Create some aliases - may help code readability
-Filter.prototype.convert = Filter.prototype.sanitize = function(str) {
-    this.str = str;
-    return this;
-}
-
-Filter.prototype.xss = function(is_image) {
-    this.modify(xss.clean(this.str, is_image));
-    return this.wrap(this.str);
-}
-
-Filter.prototype.entityDecode = function() {
-    this.modify(entities.decode(this.str));
-    return this.wrap(this.str);
-}
-
-Filter.prototype.entityEncode = function() {
-    this.modify(entities.encode(this.str));
-    return this.wrap(this.str);
-}
-
-Filter.prototype.ltrim = function(chars) {
-    chars = chars || whitespace;
-    this.modify(this.str.replace(new RegExp('^['+chars+']+', 'g'), ''));
-    return this.wrap(this.str);
-}
-
-Filter.prototype.rtrim = function(chars) {
-    chars = chars || whitespace;
-    this.modify(this.str.replace(new RegExp('['+chars+']+$', 'g'), ''));
-    return this.wrap(this.str);
-}
-
-Filter.prototype.trim = function(chars) {
-    chars = chars || whitespace;
-    this.modify(this.str.replace(new RegExp('^['+chars+']+|['+chars+']+$', 'g'), ''));
-    return this.wrap(this.str);
-}
-
-Filter.prototype.ifNull = function(replace) {
-    if (!this.str || this.str === '') {
-        this.modify(replace);
-    }
-    return this.wrap(this.str);
-}
-
-Filter.prototype.toFloat = function() {
-    this.modify(parseFloat(this.str));
-    return this.wrap(this.str);
-}
-
-Filter.prototype.toInt = function(radix) {
-    radix = radix || 10;
-    this.modify(parseInt(this.str, radix));
-    return this.wrap(this.str);
-}
-
-//Any strings with length > 0 (except for '0' and 'false') are considered true,
-//all other strings are false
-Filter.prototype.toBoolean = function() {
-    if (!this.str || this.str == '0' || this.str == 'false' || this.str == '') {
-        this.modify(false);
-    } else {
-        this.modify(true);
-    }
-    return this.wrap(this.str);
-}
-
-//String must be equal to '1' or 'true' to be considered true, all other strings
-//are false
-Filter.prototype.toBooleanStrict = function() {
-    if (this.str == '1' || this.str == 'true') {
-        this.modify(true);
-    } else {
-        this.modify(false);
-    }
-    return this.wrap(this.str);
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/lib/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/lib/index.js b/blackberry10/node_modules/validator/lib/index.js
deleted file mode 100755
index 5dc34fd..0000000
--- a/blackberry10/node_modules/validator/lib/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-exports.Validator = require('./validator').Validator;
-exports.Filter = require('./filter').Filter;
-exports.validators = require('./validators');
-
-exports.entities = require('./entities');
-
-//Quick access methods
-exports.sanitize = exports.convert = function(str) {
-    var filter = new exports.Filter();
-    return filter.sanitize(str);
-}
-
-exports.check = exports.validate = exports.assert = function(str, fail_msg) {
-    var validator = new exports.Validator();
-    return validator.check(str, fail_msg);
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/lib/validator.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/lib/validator.js b/blackberry10/node_modules/validator/lib/validator.js
deleted file mode 100644
index 7b431a3..0000000
--- a/blackberry10/node_modules/validator/lib/validator.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var validators = require('./validators');
-var defaultError = require('./defaultError');
-
-var Validator = exports.Validator = function() {}
-
-Validator.prototype.error = function (msg) {
-    throw new Error(msg);
-    return this;
-};
-
-Validator.prototype.check = function(str, fail_msg) {
-    this.str = (str == null || (isNaN(str) && str.length == undefined)) ? '' : str;
-    // Convert numbers to strings but keep arrays/objects
-    if (typeof this.str == 'number') {
-        this.str += '';
-    }
-    this.msg = fail_msg;
-    this._errors = this._errors || [];
-    return this;
-}
-
-for (var key in validators) {
-    if (validators.hasOwnProperty(key)) {
-        (function (key) {
-            Validator.prototype[key] = function() {
-                var args = Array.prototype.slice.call(arguments);
-                args.unshift(this.str);
-                if(!validators[key].apply(this, args)) {
-                    return this.error(this.msg || defaultError[key]);
-                }
-                return this;
-            };
-        })(key);
-    }
-}
-
-//Create some aliases - may help code readability
-Validator.prototype.validate = Validator.prototype.check;
-Validator.prototype.assert = Validator.prototype.check;
-Validator.prototype.isFloat = Validator.prototype.isDecimal;
-Validator.prototype.is = Validator.prototype.regex;
-Validator.prototype.not = Validator.prototype.notRegex;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/lib/validators.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/lib/validators.js b/blackberry10/node_modules/validator/lib/validators.js
deleted file mode 100644
index e0ae3fe..0000000
--- a/blackberry10/node_modules/validator/lib/validators.js
+++ /dev/null
@@ -1,155 +0,0 @@
-var net = require('net');
-
-// Helper function to avoid duplication of code
-function toDateTime(date) {
-    if (date instanceof Date) {
-        return date;
-    }
-    var intDate = Date.parse(date);
-    if (isNaN(intDate)) {
-        return null;
-    }
-    return new Date(intDate);
-}
-
-// Convert to date without the time component
-function toDate(date) {
-    if (!(date instanceof Date)) {
-        date = toDateTime(date);
-    }
-    if (!date) {
-        return null;
-    }
-    date.setHours(0);
-    date.setMinutes(0);
-    date.setSeconds(0);
-    date.setMilliseconds(0);
-    return date;
-}
-
-var validators = module.exports = {
-    isEmail: function(str) {
-        return str.match(/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/);
-    },
-    isUrl: function(str) {
-        return str.match(/^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?((?:(?:[-\w\d{1-3}]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|edu|co\.uk|ac\.uk|it|fr|tv|museum|asia|local|travel|[a-z]{2}))|((\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)(\.(\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)){3}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$ |\/.,*:;=]|%[a-f\d]{2})*)?$/i) || str.length > 2083;
-    },
-    isIP: function(str) {
-        // net.isIp requires node >= 0.3.0
-        var modernNode = typeof net.isIP === 'function';
-        var method = modernNode? validators.isIPNet : validators.isIPManual;
-        return method(str);
-    },
-    isIPNet: function(str) {
-        return net.isIP(str) !== 0;
-    },
-    isIPManual: function(str) {
-        return str.match(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/);
-    },
-    isAlpha: function(str) {
-        return str.match(/^[a-zA-Z]+$/);
-    },
-    isAlphanumeric: function(str) {
-        return str.match(/^[a-zA-Z0-9]+$/);
-    },
-    isNumeric: function(str) {
-        return str.match(/^-?[0-9]+$/);
-    },
-    isLowercase: function(str) {
-        return str.match(/^[a-z0-9]+$/);
-    },
-    isUppercase: function(str) {
-        return str.match(/^[A-Z0-9]+$/);
-    },
-    isInt: function(str) {
-        return str.match(/^(?:-?(?:[0-9][0-9]*)(?:\.?0+)?)$/);
-    },
-    isDecimal: function(str) {
-        return str !== '' && str.match(/^(?:-?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/);
-    },
-    isDivisibleBy: function(str, n) {
-        return !(parseFloat(str) % n);
-    },
-    notNull: function(str) {
-        return str !== '';
-    },
-    isNull: function(str) {
-        return str === '';
-    },
-    notEmpty: function(str) {
-        return !str.match(/^[\s\t\r\n]*$/);
-    },
-    equals: function(a, b) {
-        return a == b;
-    },
-    contains: function(str, elem) {
-        return str.indexOf(elem) >= 0;
-    },
-    notContains: function(str, elem) {
-        return !validators.contains(str, elem);
-    },
-    regex: function(str, pattern, modifiers) {
-        if (typeof pattern !== 'function') {
-            pattern = new RegExp(pattern, modifiers);
-        }
-        return str.match(pattern);
-    },
-    notRegex: function(str, pattern, modifiers) {
-        return !validators.regex(str, pattern, modifiers);
-    },
-    len: function(str, min, max) {
-        return str.length >= min && (max === undefined || str.length <= max);
-    },
-    //Thanks to github.com/sreuter for the idea.
-    isUUID: function(str, version) {
-        if (version == 3 || version == 'v3') {
-            pattern = /[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-        } else if (version == 4 || version == 'v4') {
-            pattern = /[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i;
-        } else {
-            pattern = /[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
-        }
-        return str.match(pattern);
-    },
-    isDate: function(str) {
-        var intDate = Date.parse(str);
-        return !isNaN(intDate);
-    },
-    isAfter: function(str, date) {
-        date = date || new Date();
-        var origDate = toDate(str);
-        var compDate = toDate(date);
-        return !(origDate && compDate && origDate < compDate);
-    },
-    isBefore: function(str, date) {
-        date = date || new Date();
-        var origDate = toDate(str);
-        var compDate = toDate(date);
-        return !(origDate && compDate && origDate > compDate);
-    },
-    isIn: function(str, options) {
-        var validOptions = options && typeof options.indexOf === 'function';
-        return validOptions && ~options.indexOf(str);
-    },
-    notIn: function(str, options) {
-        var validOptions = options && typeof options.indexOf === 'function';
-        return validOptions && options.indexOf(str) === -1;
-    },
-    min: function(str, val) {
-        var number = parseFloat(str);
-        return isNaN(number) || number >= val;
-    },
-    max: function(str, val) {
-        var number = parseFloat(str);
-        return isNaN(number) || number <= val;
-    },
-    isArray: function(str) {
-        return typeof str === 'object' && Object.prototype.toString.call(str) === '[object Array]';
-    },
-    //Will work against Visa, MasterCard, American Express, Discover, Diners Club, and JCB card numbering formats
-    isCreditCard: function(str) {
-        //remove all dashes, spaces, etc.
-        var sanitized = str.replace(/[^0-9]+/g, '');
-        return sanitized.match(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/);
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/lib/xss.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/lib/xss.js b/blackberry10/node_modules/validator/lib/xss.js
deleted file mode 100755
index 020fa2a..0000000
--- a/blackberry10/node_modules/validator/lib/xss.js
+++ /dev/null
@@ -1,203 +0,0 @@
-//This module is adapted from the CodeIgniter framework
-//The license is available at http://codeigniter.com/
-
-var html_entity_decode = require('./entities').decode;
-
-var never_allowed_str = {
-    'document.cookie':              '[removed]',
-    'document.write':               '[removed]',
-    '.parentNode':                  '[removed]',
-    '.innerHTML':                   '[removed]',
-    'window.location':              '[removed]',
-    '-moz-binding':                 '[removed]',
-    '<!--':                         '&lt;!--',
-    '-->':                          '--&gt;',
-    '<![CDATA[':                    '&lt;![CDATA['
-};
-
-var never_allowed_regex = {
-    'javascript\\s*:':              '[removed]',
-    'expression\\s*(\\(|&\\#40;)':  '[removed]',
-    'vbscript\\s*:':                '[removed]',
-    'Redirect\\s+302':              '[removed]'
-};
-
-var non_displayables = [
-    /%0[0-8bcef]/g,           // url encoded 00-08, 11, 12, 14, 15
-    /%1[0-9a-f]/g,            // url encoded 16-31
-    /[\x00-\x08]/g,           // 00-08
-    /\x0b/g, /\x0c/g,         // 11,12
-    /[\x0e-\x1f]/g            // 14-31
-];
-
-var compact_words = [
-    'javascript', 'expression', 'vbscript',
-    'script', 'applet', 'alert', 'document',
-    'write', 'cookie', 'window'
-];
-
-exports.clean = function(str, is_image) {
-
-    //Recursively clean objects and arrays
-    if (typeof str === 'object') {
-        for (var i in str) {
-            str[i] = exports.clean(str[i]);
-        }
-        return str;
-    }
-
-    //Remove invisible characters
-    str = remove_invisible_characters(str);
-
-    //Protect query string variables in URLs => 901119URL5918AMP18930PROTECT8198
-    str = str.replace(/\&([a-z\_0-9]+)\=([a-z\_0-9]+)/i, xss_hash() + '$1=$2');
-
-    //Validate standard character entities - add a semicolon if missing.  We do this to enable
-    //the conversion of entities to ASCII later.
-    str = str.replace(/(&\#?[0-9a-z]{2,})([\x00-\x20])*;?/i, '$1;$2');
-
-    //Validate UTF16 two byte encoding (x00) - just as above, adds a semicolon if missing.
-    str = str.replace(/(&\#x?)([0-9A-F]+);?/i, '$1;$2');
-
-    //Un-protect query string variables
-    str = str.replace(xss_hash(), '&');
-
-    //Decode just in case stuff like this is submitted:
-    //<a href="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">Google</a>
-    try{  
-      str = decodeURIComponent(str);
-    }
-    catch(error){
-      // str was not actually URI-encoded
-    }
-
-    //Convert character entities to ASCII - this permits our tests below to work reliably.
-    //We only convert entities that are within tags since these are the ones that will pose security problems.
-    str = str.replace(/[a-z]+=([\'\"]).*?\1/gi, function(m, match) {
-        return m.replace(match, convert_attribute(match));
-    });
-
-    //Remove invisible characters again
-    str = remove_invisible_characters(str);
-
-    //Convert tabs to spaces
-    str = str.replace('\t', ' ');
-
-    //Captured the converted string for later comparison
-    var converted_string = str;
-
-    //Remove strings that are never allowed
-    for (var i in never_allowed_str) {
-        str = str.replace(i, never_allowed_str[i]);
-    }
-
-    //Remove regex patterns that are never allowed
-    for (var i in never_allowed_regex) {
-        str = str.replace(new RegExp(i, 'i'), never_allowed_regex[i]);
-    }
-
-    //Compact any exploded words like:  j a v a s c r i p t
-    // We only want to do this when it is followed by a non-word character
-    for (var i in compact_words) {
-        var spacified = compact_words[i].split('').join('\\s*')+'\\s*';
-
-        str = str.replace(new RegExp('('+spacified+')(\\W)', 'ig'), function(m, compat, after) {
-            return compat.replace(/\s+/g, '') + after;
-        });
-    }
-
-    //Remove disallowed Javascript in links or img tags
-    do {
-        var original = str;
-
-        if (str.match(/<a/i)) {
-            str = str.replace(/<a\s+([^>]*?)(>|$)/gi, function(m, attributes, end_tag) {
-                attributes = filter_attributes(attributes.replace('<','').replace('>',''));
-                return m.replace(attributes, attributes.replace(/href=.*?(alert\(|alert&\#40;|javascript\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)/gi, ''));
-            });
-        }
-
-        if (str.match(/<img/i)) {
-            str = str.replace(/<img\s+([^>]*?)(\s?\/?>|$)/gi, function(m, attributes, end_tag) {
-                attributes = filter_attributes(attributes.replace('<','').replace('>',''));
-                return m.replace(attributes, attributes.replace(/src=.*?(alert\(|alert&\#40;|javascript\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)/gi, ''));
-            });
-        }
-
-        if (str.match(/script/i) || str.match(/xss/i)) {
-            str = str.replace(/<(\/*)(script|xss)(.*?)\>/gi, '[removed]');
-        }
-
-    } while(original != str);
-
-    //Remove JavaScript Event Handlers - Note: This code is a little blunt.  It removes the event
-    //handler and anything up to the closing >, but it's unlikely to be a problem.
-    event_handlers = ['[^a-z_\-]on\\w*'];
-
-    //Adobe Photoshop puts XML metadata into JFIF images, including namespacing,
-    //so we have to allow this for images
-    if (!is_image) {
-        event_handlers.push('xmlns');
-    }
-
-    str = str.replace(new RegExp("<([^><]+?)("+event_handlers.join('|')+")(\\s*=\\s*[^><]*)([><]*)", 'i'), '<$1$4');
-
-    //Sanitize naughty HTML elements
-    //If a tag containing any of the words in the list
-    //below is found, the tag gets converted to entities.
-    //So this: <blink>
-    //Becomes: &lt;blink&gt;
-    naughty = 'alert|applet|audio|basefont|base|behavior|bgsound|blink|body|embed|expression|form|frameset|frame|head|html|ilayer|iframe|input|isindex|layer|link|meta|object|plaintext|style|script|textarea|title|video|xml|xss';
-    str = str.replace(new RegExp('<(/*\\s*)('+naughty+')([^><]*)([><]*)', 'gi'), function(m, a, b, c, d) {
-        return '&lt;' + a + b + c + d.replace('>','&gt;').replace('<','&lt;');
-    });
-
-    //Sanitize naughty scripting elements Similar to above, only instead of looking for
-    //tags it looks for PHP and JavaScript commands that are disallowed.  Rather than removing the
-    //code, it simply converts the parenthesis to entities rendering the code un-executable.
-    //For example:    eval('some code')
-    //Becomes:        eval&#40;'some code'&#41;
-    str = str.replace(/(alert|cmd|passthru|eval|exec|expression|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(\s*)\((.*?)\)/gi, '$1$2&#40;$3&#41;');
-
-    //This adds a bit of extra precaution in case something got through the above filters
-    for (var i in never_allowed_str) {
-        str = str.replace(i, never_allowed_str[i]);
-    }
-    for (var i in never_allowed_regex) {
-        str = str.replace(new RegExp(i, 'i'), never_allowed_regex[i]);
-    }
-
-    //Images are handled in a special way
-    if (is_image && str !== converted_string) {
-        throw new Error('Image may contain XSS');
-    }
-
-    return str;
-}
-
-function remove_invisible_characters(str) {
-    for (var i in non_displayables) {
-        str = str.replace(non_displayables[i], '');
-    }
-    return str;
-}
-
-function xss_hash() {
-    //TODO: Create a random hash
-    return '!*$^#(@*#&';
-}
-
-function convert_attribute(str) {
-    return str.replace('>','&gt;').replace('<','&lt;').replace('\\','\\\\');
-}
-
-//Filter Attributes - filters tag attributes for consistency and safety
-function filter_attributes(str) {
-    out = '';
-
-    str.replace(/\s*[a-z\-]+\s*=\s*(?:\042|\047)(?:[^\1]*?)\1/gi, function(m) {
-        $out += m.replace(/\/\*.*?\*\//g, '');
-    });
-
-    return out;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/package.json b/blackberry10/node_modules/validator/package.json
deleted file mode 100644
index 71675fe..0000000
--- a/blackberry10/node_modules/validator/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "name": "validator",
-  "description": "Data validation, filtering and sanitization for node.js",
-  "version": "0.4.1",
-  "homepage": "http://github.com/chriso/node-validator",
-  "keywords": [
-    "validator",
-    "validation",
-    "assert",
-    "params",
-    "sanitization",
-    "xss",
-    "entities",
-    "sanitize",
-    "sanitisation",
-    "input"
-  ],
-  "author": {
-    "name": "Chris O'Hara",
-    "email": "cohara87@gmail.com"
-  },
-  "main": "./lib",
-  "directories": {
-    "lib": "./lib"
-  },
-  "bugs": {
-    "url": "http://github.com/chriso/node-validator/issues"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/chriso/node-validator.git"
-  },
-  "contributors": [
-    {
-      "name": "PING"
-    },
-    {
-      "name": "Dan VerWeire"
-    },
-    {
-      "name": "Branko Vukelic"
-    },
-    {
-      "name": "Mark Engel"
-    }
-  ],
-  "engines": {
-    "node": ">=0.2.2"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "http://github.com/chriso/node-validator/raw/master/LICENSE"
-    }
-  ],
-  "readme": "**node-validator is a library of string validation, filtering and sanitization methods.**\n\nTo install node-validator, use [npm](http://github.com/isaacs/npm):\n\n```bash\n$ npm install validator\n```\n\nTo use the library in the browser, include `validator-min.js`\n\n## Example\n\n```javascript\nvar check = require('validator').check,\n    sanitize = require('validator').sanitize\n\n//Validate\ncheck('test@email.com').len(6, 64).isEmail();        //Methods are chainable\ncheck('abc').isInt();                                //Throws 'Invalid integer'\ncheck('abc', 'Please enter a number').isInt();       //Throws 'Please enter a number'\ncheck('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);\n\n//Sanitize / Filter\nvar int = sanitize('0123').toInt();                  //123\nvar bool = sanitize('true').toBoolean();             //true\nvar str = sanitize(' \\s\\t\\r hello \\n').trim();       //'hello'\nvar str = sanitize('aaaaaaaaab').ltrim('a');         //'b'\nvar str = san
 itize(large_input_str).xss();\nvar str = sanitize('&lt;a&gt;').entityDecode();      //'<a>'\n```\n\n## Web development\n\nOften it's more desirable to check or automatically sanitize parameters by name (rather than the actual string). See [this gist](https://gist.github.com/752126) for instructions on binding the library to the `request` prototype.\n\nIf you are using the [express.js framework](https://github.com/visionmedia/express) you can use the [express-validator middleware](https://github.com/ctavan/express-validator) to seamlessly integrate node-validator.\n\nExample `http://localhost:8080/?zip=12345&foo=1&textarea=large_string`\n\n```javascript\nget('/', function (req, res) {\n    req.onValidationError(function (msg) {\n        //Redirect the user with error 'msg'\n    });\n\n    //Validate user input\n    req.check('zip', 'Please enter a valid ZIP code').len(4,5).isInt();\n    req.check('email', 'Please enter a valid email').len(6,64).isEmail();\n    req.checkHeader('refere
 r').contains('localhost');\n\n    //Sanitize user input\n    req.sanitize('textarea').xss();\n    req.sanitize('foo').toBoolean();\n\n    //etc.\n});\n```\n\n## List of validation methods\n\n```javascript\nis()                            //Alias for regex()\nnot()                           //Alias for notRegex()\nisEmail()\nisUrl()                         //Accepts http, https, ftp\nisIP()\nisAlpha()\nisAlphanumeric()\nisNumeric()\nisInt()                         //isNumeric accepts zero padded numbers, e.g. '001', isInt doesn't\nisLowercase()\nisUppercase()\nisDecimal()\nisFloat()                       //Alias for isDecimal\nnotNull()\nisNull()\nnotEmpty()                      //i.e. not just whitespace\nequals(equals)\ncontains(str)\nnotContains(str)\nregex(pattern, modifiers)       //Usage: regex(/[a-z]/i) or regex('[a-z]','i')\nnotRegex(pattern, modifiers)\nlen(min, max)                   //max is optional\nisUUID(version)                 //Version can be 3 or 4 or empty, see ht
 tp://en.wikipedia.org/wiki/Universally_unique_identifier\nisDate()                        //Uses Date.parse() - regex is probably a better choice\nisAfter(date)                   //Argument is optional and defaults to today\nisBefore(date)                  //Argument is optional and defaults to today\nisIn(options)                   //Accepts an array or string\nnotIn(options)\nmax(val)\nmin(val)\nisArray()\nisCreditCard()                  //Will work against Visa, MasterCard, American Express, Discover, Diners Club, and JCB card numbering formats\n```\n\n## List of sanitization / filter methods\n\n```javascript\ntrim(chars)                     //Trim optional `chars`, default is to trim whitespace (\\r\\n\\t\\s)\nltrim(chars)\nrtrim(chars)\nifNull(replace)\ntoFloat()\ntoInt()\ntoBoolean()                     //True unless str = '0', 'false', or str.length == 0\ntoBooleanStrict()               //False unless str = '1' or 'true'\nentityDecode()                  //Decode HTML entities
 \nentityEncode()\nxss()                           //Remove common XSS attack vectors from text (default)\nxss(true)                       //Remove common XSS attack vectors from images\n```\n\n## Extending the library\n\nWhen adding to the Validator prototype, use `this.str` to access the string and `this.error(this.msg || default_msg)` when the string is invalid\n\n```javascript\nvar Validator = require('validator').Validator;\nValidator.prototype.contains = function(str) {\n    if (!~this.str.indexOf(str)) {\n        this.error(this.msg || this.str + ' does not contain ' + str);\n    }\n    return this; //Allow method chaining\n}\n```\n\nWhen adding to the Filter (sanitize) prototype, use `this.str` to access the string and `this.modify(new_str)` to update it\n\n```javascript\nvar Filter = require('filter').Filter;\nFilter.prototype.removeNumbers = function() {\n    this.modify(this.str.replace(/[0-9]+/g, ''));\n    return this.str;\n}\n```\n\n## Error handling\n\nBy default, the 
 validation methods throw an exception when a check fails\n\n```javascript\ntry {\n    check('abc').notNull().isInt()\n} catch (e) {\n    console.log(e.message); //Invalid integer\n}\n```\n\nTo set a custom error message, set the second param of `check()`\n\n```javascript\ntry {\n    check('abc', 'Please enter a valid integer').notNull().isInt()\n} catch (e) {\n    console.log(e.message); //Please enter a valid integer\n}\n```\n\nTo attach a custom error handler, set the `error` method of the validator instance\n\n```javascript\nvar Validator = require('validator').Validator;\nvar v = new Validator();\nv.error = function(msg) {\n    console.log('Fail');\n}\nv.check('abc').isInt(); //'Fail'\n```\n\nYou might want to collect errors instead of throwing each time\n\n```javascript\nValidator.prototype.error = function (msg) {\n    this._errors.push(msg);\n}\n\nValidator.prototype.getErrors = function () {\n    return this._errors;\n}\n\nvar validator = new Validator();\n\nvalidator.check(
 'abc').isEmail();\nvalidator.check('hello').len(10,30);\n\nvar errors = validator.getErrors(); // ['Invalid email', 'String is too small']\n```\n\n## Contributors\n\n- [PING](https://github.com/PlNG) - Fixed entity encoding\n- [Dan VerWeire](https://github.com/wankdanker) - Modified the behaviour of the error handler\n- [ctavan](https://github.com/ctavan) - Added isArray and isUUID()\n- [foxbunny](https://github.com/foxbunny) - Added min(), max(), isAfter(), isBefore(), and improved isDate()\n- [oris](https://github.com/orls) - Added in()\n- [mren](https://github.com/mren) - Decoupled rules\n\n## LICENSE\n\n(MIT License)\n\nCopyright (c) 2010 Chris O'Hara <co...@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or se
 ll copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
-  "readmeFilename": "README.md",
-  "_id": "validator@0.4.1",
-  "_from": "validator@0.4.1"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/test.js b/blackberry10/node_modules/validator/test.js
deleted file mode 100644
index e290480..0000000
--- a/blackberry10/node_modules/validator/test.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-var xss = require('./validator').xssClean;
-
-console.log(xss('I <3 this'));

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/test/filter.test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/test/filter.test.js b/blackberry10/node_modules/validator/test/filter.test.js
deleted file mode 100755
index 264c8f4..0000000
--- a/blackberry10/node_modules/validator/test/filter.test.js
+++ /dev/null
@@ -1,145 +0,0 @@
-var node_validator = require('../lib'),
-    Filter = new node_validator.Filter(),
-    assert = require('assert');
-
-module.exports = {
-    'test #ifNull()': function () {
-
-        //Make sure sanitize returns the new string
-        assert.equal(5, Filter.sanitize('').ifNull(5));
-        assert.equal('abc', Filter.sanitize().ifNull('abc'));
-
-        //Modify Filter.modify() to automatically replace a var with the sanitized version
-        var param = '';
-        Filter.modify = function(str) {
-            this.str = str;
-            param = str;
-        }
-        Filter.sanitize(param).ifNull('foobar');
-        assert.equal('foobar', param);
-    },
-
-    'test #toBoolean()': function () {
-        assert.equal(true, Filter.sanitize('1').toBoolean());
-        assert.equal(true, Filter.sanitize('true').toBoolean());
-        assert.equal(true, Filter.sanitize('foobar').toBoolean());
-        assert.equal(true, Filter.sanitize(5).toBoolean());
-        assert.equal(true, Filter.sanitize('   ').toBoolean());
-
-        assert.equal(false, Filter.sanitize('0').toBoolean());
-        assert.equal(false, Filter.sanitize('false').toBoolean());
-        assert.equal(false, Filter.sanitize('').toBoolean());
-        assert.equal(false, Filter.sanitize('false').toBoolean());
-    },
-
-    'test #toBooleanStrict()': function () {
-        assert.equal(true, Filter.sanitize('1').toBooleanStrict());
-        assert.equal(true, Filter.sanitize('true').toBooleanStrict());
-
-        assert.equal(false, Filter.sanitize('foobar').toBooleanStrict());
-        assert.equal(false, Filter.sanitize(5).toBooleanStrict());
-        assert.equal(false, Filter.sanitize('   ').toBooleanStrict());
-        assert.equal(false, Filter.sanitize('0').toBooleanStrict());
-        assert.equal(false, Filter.sanitize('false').toBooleanStrict());
-        assert.equal(false, Filter.sanitize('').toBooleanStrict());
-        assert.equal(false, Filter.sanitize('false').toBooleanStrict());
-    },
-
-    'test #trim()': function () {
-        //Test trim() with spaces
-        assert.equal('abc', Filter.sanitize('  abc').trim());
-        assert.equal('abc', Filter.sanitize('abc  ').trim());
-        assert.equal('abc', Filter.sanitize('   abc  ').trim());
-
-        //Test trim() with \t
-        assert.equal('abc', Filter.sanitize('	abc').trim());
-        assert.equal('abc', Filter.sanitize('abc	').trim());
-        assert.equal('abc', Filter.sanitize('	abc	').trim());
-
-        //Test trim() with a mixture of \t, \s, \r and \n
-        assert.equal('abc', Filter.sanitize('	\r\n  abc\r\n	  ').trim());
-
-        //Test trim() with custom chars
-        assert.equal('2', Filter.sanitize('000020000').trim('0'));
-        assert.equal('202', Filter.sanitize('01000202100101').trim('01'));
-    },
-
-    'test #ltrim()': function () {
-        //Test ltrim() with spaces
-        assert.equal('abc', Filter.sanitize('  abc').ltrim());
-        assert.equal('abc  ', Filter.sanitize('   abc  ').ltrim());
-
-        //Test ltrim() with \t
-        assert.equal('abc', Filter.sanitize('	abc').ltrim());
-        assert.equal('abc	', Filter.sanitize(' abc	').ltrim());
-
-        //Test ltrim() with a mixture of \t, \s, \r and \n
-        assert.equal('abc\r\n', Filter.sanitize('	\r\n  abc\r\n').ltrim());
-
-        //Test ltrim() with custom chars
-        assert.equal('20', Filter.sanitize('000020').ltrim('0'));
-        assert.equal('201', Filter.sanitize('010100201').ltrim('01'));
-    },
-
-    'test #rtrim()': function () {
-        //Test rtrim() with spaces
-        assert.equal('  abc', Filter.sanitize('  abc  ').rtrim());
-        assert.equal('abc', Filter.sanitize('abc  ').rtrim());
-
-        //Test rtrim() with \t
-        assert.equal('	abc', Filter.sanitize('	abc').rtrim());
-        assert.equal('abc', Filter.sanitize('abc	').rtrim());
-
-        //Test rtrim() with a mixture of \t, \s, \r and \n
-        assert.equal('	\r\n  abc', Filter.sanitize('	\r\n  abc\r\n	  ').rtrim());
-
-        //Test rtrim() with custom chars
-        assert.equal('02', Filter.sanitize('02000').rtrim('0'));
-        assert.equal('012', Filter.sanitize('01201001').rtrim('01'));
-    },
-
-    'test #toInt()': function () {
-        assert.ok(3 === Filter.sanitize('3').toInt());
-        assert.ok(3 === Filter.sanitize('   3   ').toInt());
-    },
-
-    'test #toFloat()': function () {
-        assert.ok(3 === Filter.sanitize('3.').toFloat());
-        assert.ok(3 === Filter.sanitize('   3   ').toFloat());
-        assert.ok(0 === Filter.sanitize('.0').toFloat());
-        assert.ok(13.13 === Filter.sanitize('13.13').toFloat());
-    },
-
-    'test #entityDecode()': function () {
-        assert.equal('&', Filter.sanitize('&amp;').entityDecode());
-        assert.equal('&&', Filter.sanitize('&amp;&amp;').entityDecode());
-        assert.equal('""', Filter.sanitize('&quot;&quot;').entityDecode());
-        assert.equal('€', Filter.sanitize('&curren;').entityDecode());
-        assert.equal("'", Filter.sanitize("&#39;").entityDecode());
-        assert.equal("'", Filter.sanitize("&apos;").entityDecode());
-    },
-
-    'test #entityEncode()': function () {
-        assert.equal('&amp;', Filter.sanitize('&').entityEncode());
-        assert.equal('&amp;&amp;', Filter.sanitize('&&').entityEncode());
-        assert.equal('&#39;', Filter.sanitize("'").entityEncode());
-        assert.equal('&quot;&quot;', Filter.sanitize('""').entityEncode());
-        assert.equal('&curren;', Filter.sanitize('€').entityEncode());
-    },
-
-    'test #xss()': function () {
-        //Need more tests!
-        assert.equal('[removed] foobar', Filter.sanitize('javascript  : foobar').xss());
-        assert.equal('[removed] foobar', Filter.sanitize('j a vasc ri pt: foobar').xss());
-    },
-
-    'test chaining': function () {
-        assert.equal('&amp;amp;amp;', Filter.sanitize('&').chain().entityEncode().entityEncode().entityEncode().value());
-
-        //Return the default behaviour
-        Filter.wrap = function (str) {
-            return str;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/test/run.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/test/run.js b/blackberry10/node_modules/validator/test/run.js
deleted file mode 100644
index 8d01d2e..0000000
--- a/blackberry10/node_modules/validator/test/run.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var validatorTests = require('./validator.test.js');
-for (test in validatorTests) {
-  validatorTests[test]();
-}
-var filterTests = require('./filter.test.js');
-for (test in filterTests) {
-  filterTests[test]();
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/test/validator.test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/test/validator.test.js b/blackberry10/node_modules/validator/test/validator.test.js
deleted file mode 100644
index 568a875..0000000
--- a/blackberry10/node_modules/validator/test/validator.test.js
+++ /dev/null
@@ -1,604 +0,0 @@
-var node_validator = require('../lib'),
-    Validator = new node_validator.Validator(),
-    assert = require('assert');
-
-function dateFixture() {
-    var d = new Date();
-    var Y = d.getFullYear();
-    var M = d.getMonth() + 1; // 0-index
-    var D = d.getDate();
-    return {
-        tomorrow: Y + '-' + M + '-' + (D + 1), // YYYY-MM-DD
-        yesterday: Y + '-' + M + '-' + (D - 1) // YYYY-MM-DD
-    };
-}
-
-module.exports = {
-    'test #isEmail()': function () {
-        //Try some invalid emails
-        var invalid = [
-            'invalidemail@',
-            'invalid.com',
-            '@invalid.com'
-        ];
-        invalid.forEach(function(email) {
-            try {
-                Validator.check(email, 'Invalid').isEmail();
-                assert.ok(false, 'Invalid email ('+email+') passed validation');
-            } catch(e) {
-                assert.equal('Invalid', e.message);
-            }
-        });
-
-        //Now try some valid ones
-        var valid = [
-            'foo@bar.com',
-            'x@x.x',
-            'foo@bar.com.au',
-            'foo+bar@bar.com'
-        ];
-        try {
-            valid.forEach(function(email) {
-                Validator.check(email).isEmail();
-            });
-        } catch(e) {
-            assert.ok(false, 'A valid email did not pass validation');
-        }
-    },
-
-    'test #isUrl()': function () {
-        //Try some invalid URLs
-        var invalid = [
-            'xyz://foobar.com', //Only http, https and ftp are valid
-            'invalid/',
-            'invalid.x',
-            'invalid.',
-            '.com',
-            'http://com/',
-            'http://300.0.0.1/'
-        ];
-        invalid.forEach(function(url) {
-            try {
-                Validator.check(url, 'Invalid').isUrl();
-                assert.ok(false, 'Invalid url ('+url+') passed validation');
-            } catch(e) {
-                assert.equal('Invalid', e.message);
-            }
-        });
-
-        //Now try some valid ones
-        var valid = [
-            'foobar.com',
-            'www.foobar.com',
-            'foobar.com/',
-            'valid.au',
-            'http://www.foobar.com/',
-            'https://www.foobar.com/',
-            'ftp://www.foobar.com/',
-            'http://www.foobar.com/~foobar',
-            'http://user:pass@www.foobar.com/',
-            'http://127.0.0.1/',
-            'http://255.255.255.255/',
-            'http://duckduckgo.com/?q=%2F'
-        ];
-        try {
-            valid.forEach(function(url) {
-                Validator.check(url).isUrl();
-            });
-        } catch(e) {
-            assert.ok(false, 'A valid url did not pass validation');
-        }
-    },
-
-    'test #isIP()': function () {
-        //Try some invalid IPs
-        var invalid = [
-            'abc',
-            '256.0.0.0',
-            '0.0.0.256'
-        ];
-        invalid.forEach(function(ip) {
-            try {
-                Validator.check(ip, 'Invalid').isIP();
-                assert.ok(false, 'Invalid IP ('+ip+') passed validation');
-            } catch(e) {
-                assert.equal('Invalid', e.message);
-            }
-        });
-
-        //Now try some valid ones
-        var valid = [
-            '127.0.0.1',
-            '0.0.0.0',
-            '255.255.255.255',
-            '1.2.3.4'
-        ];
-        try {
-            valid.forEach(function(ip) {
-                Validator.check(ip).isIP();
-            });
-        } catch(e) {
-            assert.ok(false, 'A valid IP did not pass validation');
-        }
-    },
-
-    'test #isAlpha()': function () {
-        assert.ok(Validator.check('abc').isAlpha());
-        assert.ok(Validator.check('ABC').isAlpha());
-        assert.ok(Validator.check('FoObAr').isAlpha());
-
-        ['123',123,'abc123','  ',''].forEach(function(str) {
-            try {
-                Validator.check(str).isAlpha();
-                assert.ok(false, 'isAlpha failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #isAlphanumeric()': function () {
-        assert.ok(Validator.check('abc13').isAlphanumeric());
-        assert.ok(Validator.check('123').isAlphanumeric());
-        assert.ok(Validator.check('F1oO3bAr').isAlphanumeric());
-
-        ['(*&ASD','  ','.',''].forEach(function(str) {
-            try {
-                Validator.check(str).isAlphanumeric();
-                assert.ok(false, 'isAlphanumeric failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #isNumeric()': function () {
-        assert.ok(Validator.check('123').isNumeric());
-        assert.ok(Validator.check('00123').isNumeric());
-        assert.ok(Validator.check('-00123').isNumeric());
-        assert.ok(Validator.check('0').isNumeric());
-        assert.ok(Validator.check('-0').isNumeric());
-
-        ['123.123','  ','.',''].forEach(function(str) {
-            try {
-                Validator.check(str).isNumeric();
-                assert.ok(false, 'isNumeric failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #isLowercase()': function () {
-        assert.ok(Validator.check('abc').isLowercase());
-        assert.ok(Validator.check('foobar').isLowercase());
-        assert.ok(Validator.check('a').isLowercase());
-        assert.ok(Validator.check('123').isLowercase());
-        assert.ok(Validator.check('abc123').isLowercase());
-
-        ['123A','ABC','.',''].forEach(function(str) {
-            try {
-                Validator.check(str).isLowercase();
-                assert.ok(false, 'isLowercase failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #isUppercase()': function () {
-        assert.ok(Validator.check('FOOBAR').isUppercase());
-        assert.ok(Validator.check('A').isUppercase());
-        assert.ok(Validator.check('123').isUppercase());
-        assert.ok(Validator.check('ABC123').isUppercase());
-
-        ['abc','123aBC','.',''].forEach(function(str) {
-            try {
-                Validator.check(str).isUppercase();
-                assert.ok(false, 'isUpper failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #isInt()': function () {
-        assert.ok(Validator.check('13').isInt());
-        assert.ok(Validator.check('123').isInt());
-        assert.ok(Validator.check('0').isInt());
-        assert.ok(Validator.check(0).isInt());
-        assert.ok(Validator.check(123).isInt());
-        assert.ok(Validator.check('-0').isInt());
-        assert.ok(Validator.check('01').isInt());
-        assert.ok(Validator.check('-01').isInt());
-        assert.ok(Validator.check('000').isInt());
-
-        ['123.123','  ',''].forEach(function(str) {
-            try {
-                Validator.check(str).isInt();
-                assert.ok(false, 'falsepositive');
-            } catch (e) {
-              if (e.message == 'falsepositive') {
-                e.message = 'isInt had a false positive: ' + str;
-                throw e;
-              }
-            }
-        });
-    },
-
-    'test #isDecimal()': function () {
-        assert.ok(Validator.check('123').isDecimal());
-        assert.ok(Validator.check('123.').isDecimal());
-        assert.ok(Validator.check('123.123').isDecimal());
-        assert.ok(Validator.check('-123.123').isDecimal());
-        assert.ok(Validator.check('0.123').isDecimal());
-        assert.ok(Validator.check('.123').isDecimal());
-        assert.ok(Validator.check('.0').isDecimal());
-        assert.ok(Validator.check('0').isDecimal());
-        assert.ok(Validator.check('-0').isDecimal());
-        assert.ok(Validator.check('01.123').isDecimal());
-
-        assert.ok(Validator.check('2.2250738585072011e-308').isDecimal());
-        assert.ok(Validator.check('-0.22250738585072011e-307').isDecimal());
-        assert.ok(Validator.check('-0.22250738585072011E-307').isDecimal());
-
-        ['-.123','  ',''].forEach(function(str) {
-            try {
-                Validator.check(str).isDecimal();
-                assert.ok(false, 'falsepositive');
-            } catch (e) {
-              if (e.message == 'falsepositive') {
-                e.message = 'isDecimal had a false positive: ' + str;
-                throw e;
-              }
-            }
-        });
-    },
-
-    //Alias for isDecimal()
-    'test #isFloat()': function () {
-        assert.ok(Validator.check('0.5').isFloat());
-    },
-
-    'test #isNull()': function () {
-        assert.ok(Validator.check('').isNull());
-        assert.ok(Validator.check().isNull());
-
-        ['  ','123','abc'].forEach(function(str) {
-            try {
-                Validator.check(str).isNull();
-                assert.ok(false, 'isNull failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #notNull()': function () {
-        assert.ok(Validator.check('abc').notNull());
-        assert.ok(Validator.check('123').notNull());
-        assert.ok(Validator.check('   ').notNull());
-
-        [false,''].forEach(function(str) {
-            try {
-                Validator.check(str).notNull();
-                assert.ok(false, 'notNull failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #notEmpty()': function () {
-        assert.ok(Validator.check('abc').notEmpty());
-        assert.ok(Validator.check('123').notEmpty());
-        assert.ok(Validator.check('   123   ').notEmpty());
-
-        [false,'  ','\r\n','	','', NaN].forEach(function(str) {
-            try {
-                Validator.check(str).notEmpty();
-                assert.ok(false, 'notEmpty failed');
-            } catch (e) {}
-        });
-    },
-
-    'test #equals()': function () {
-        assert.ok(Validator.check('abc').equals('abc'));
-        assert.ok(Validator.check('123').equals(123));
-        assert.ok(Validator.check('   ').equals('   '));
-        assert.ok(Validator.check().equals(''));
-
-        try {
-            Validator.check(123).equals('abc');
-            assert.ok(false, 'equals failed');
-        } catch (e) {}
-
-        try {
-            Validator.check('').equals('   ');
-            assert.ok(false, 'equals failed');
-        } catch (e) {}
-    },
-
-    'test #contains()': function () {
-        assert.ok(Validator.check('abc').contains('abc'));
-        assert.ok(Validator.check('foobar').contains('oo'));
-        assert.ok(Validator.check('abc').contains('a'));
-        assert.ok(Validator.check('  ').contains(' '));
-        assert.ok(Validator.check('abc').contains(''));
-
-        try {
-            Validator.check(123).contains('abc');
-            assert.ok(false, 'contains failed');
-        } catch (e) {}
-
-        try {
-            Validator.check('\t').contains('\t\t');
-            assert.ok(false, 'contains failed');
-        } catch (e) {}
-    },
-
-    'test #notContains()': function () {
-        assert.ok(Validator.check('abc').notContains('a '));
-        assert.ok(Validator.check('foobar').notContains('foobars'));
-        assert.ok(Validator.check('abc').notContains('123'));
-
-        try {
-            Validator.check(123).notContains(1);
-            assert.ok(false, 'notContains failed');
-        } catch (e) {}
-
-        try {
-            Validator.check(' ').contains('');
-            assert.ok(false, 'notContains failed');
-        } catch (e) {}
-    },
-
-    'test #regex()': function () {
-        assert.ok(Validator.check('abc').regex(/a/));
-        assert.ok(Validator.check('abc').regex(/^abc$/));
-        assert.ok(Validator.check('abc').regex('abc'));
-        assert.ok(Validator.check('ABC').regex(/^abc$/i));
-        assert.ok(Validator.check('ABC').regex('abc', 'i'));
-        assert.ok(Validator.check(12390947686129).regex(/^[0-9]+$/));
-
-        //Check the is() alias
-        assert.ok(Validator.check(12390947686129).is(/^[0-9]+$/));
-
-        try {
-            Validator.check(123).regex(/^1234$/);
-            assert.ok(false, 'regex failed');
-        } catch (e) {}
-    },
-
-    'test #notRegex()': function () {
-        assert.ok(Validator.check('foobar').notRegex(/e/));
-        assert.ok(Validator.check('ABC').notRegex('abc'));
-        assert.ok(Validator.check(12390947686129).notRegex(/a/));
-
-        //Check the not() alias
-        assert.ok(Validator.check(12390947686129).not(/^[a-z]+$/));
-
-        try {
-            Validator.check(123).notRegex(/123/);
-            assert.ok(false, 'regex failed');
-        } catch (e) {}
-    },
-
-    'test #len()': function () {
-        assert.ok(Validator.check('a').len(1));
-        assert.ok(Validator.check(123).len(2));
-        assert.ok(Validator.check(123).len(2, 4));
-        assert.ok(Validator.check(12).len(2,2));
-        assert.ok(Validator.check([1, 2]).len(2,2));
-        assert.ok(Validator.check([1, 2, 3]).len(2,4));
-
-        try {
-            Validator.check('abc').len(4);
-            assert.ok(false, 'len failed');
-        } catch (e) {}
-        try {
-            Validator.check('abcd').len(1, 3);
-            assert.ok(false, 'len failed');
-        } catch (e) {}
-    },
-
-    'test #isUUID()': function () {
-        ////xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-
-        assert.ok(Validator.check('A987FBC9-4BED-3078-CF07-9141BA07C9F3').isUUID());
-        assert.ok(Validator.check('A987FBC9-4BED-3078-CF07-9141BA07C9F3').isUUID(1));
-        assert.ok(Validator.check('A987FBC9-4BED-3078-CF07-9141BA07C9F3').isUUID(2));
-        assert.ok(Validator.check('A987FBC9-4BED-3078-CF07-9141BA07C9F3').isUUID(3));
-        assert.ok(Validator.check('A987FBC9-4BED-4078-8F07-9141BA07C9F3').isUUID(4));
-
-        try {
-            Validator.check('A987FBC9-4BED-3078-CF07-9141BA07C9F3').isUUID(4);
-            assert.ok(false, 'isUUID failed');
-        } catch (e) {}
-
-        try {
-            Validator.check('A987FBC9-4BED-4078-0F07-9141BA07C9F3').isUUID(4);
-            assert.ok(false, 'isUUID failed');
-        } catch (e) {}
-
-        try {
-            Validator.check('abc').isUUID();
-            assert.ok(false, 'isUUID failed');
-        } catch (e) {}
-
-        try {
-            Validator.check('A987FBC932-4BED-3078-CF07-9141BA07C9').isUUID();
-            assert.ok(false, 'isUUID failed');
-        } catch (e) {}
-
-        try {
-            Validator.check('A987FBG9-4BED-3078-CF07-9141BA07C9DE').isUUID();
-            assert.ok(false, 'isUUID failed');
-        } catch (e) {}
-
-    },
-
-    'test #isIn(options)': function () {
-
-        assert.ok(Validator.check('foo').isIn('foobar'));
-        assert.ok(Validator.check('foo').isIn('I love football'));
-
-        assert.ok(Validator.check('foo').isIn(['foo', 'bar', 'baz']));
-
-        assert.throws(function() {
-            Validator.check('foo').isIn(['bar', 'baz']);
-          }, /unexpected/i
-        );
-
-        assert.throws(function() {
-            Validator.check('foo').isIn('bar, baz');
-          }, /unexpected/i
-        );
-
-        assert.throws(function() {
-            Validator.check('foo').isIn(1234567);
-          }, /invalid/i
-        );
-
-        assert.throws(function() {
-            Validator.check('foo').isIn({foo:"foo",bar:"bar"});
-          }, /invalid/i
-        );
-    },
-
-    'test #notIn(options)': function () {
-
-        assert.ok(Validator.check('foo').notIn('bar'));
-        assert.ok(Validator.check('foo').notIn('awesome'));
-
-        assert.ok(Validator.check('foo').notIn(['foobar', 'bar', 'baz']));
-
-        assert.throws(function() {
-            Validator.check('foo').notIn(['foo', 'bar', 'baz']);
-          }, /unexpected/i
-        );
-
-        assert.throws(function() {
-            Validator.check('foo').notIn('foobar');
-          }, /unexpected/i
-        );
-
-        assert.throws(function() {
-            Validator.check('foo').notIn(1234567);
-          }, /invalid/i
-        );
-
-        assert.throws(function() {
-            Validator.check('foo').notIn({foo:"foo",bar:"bar"});
-          }, /invalid/i
-        );
-    },
-    
-    'test #isDate()': function() {
-        assert.ok(Validator.check('2011-08-04').isDate());
-        assert.ok(Validator.check('04. 08. 2011.').isDate());
-        assert.ok(Validator.check('08/04/2011').isDate());
-        assert.ok(Validator.check('2011.08.04').isDate());
-        assert.ok(Validator.check('4. 8. 2011. GMT').isDate());
-        assert.ok(Validator.check('2011-08-04 12:00').isDate());
-
-        assert.throws(Validator.check('foo').isDate);
-        assert.throws(Validator.check('2011-foo-04').isDate);
-        assert.throws(Validator.check('GMT').isDate);
-    },
-
-    'test #min()': function() {
-        assert.ok(Validator.check('4').min(2));
-        assert.ok(Validator.check('5').min(5));
-        assert.ok(Validator.check('3.2').min(3));
-        assert.ok(Validator.check('4.2').min(4.2));
-
-        assert.throws(function() {
-            Validator.check('5').min(10);
-        });
-        assert.throws(function() {
-            Validator.check('5.1').min(5.11);
-        });
-    },
-
-    'test #max()': function() {
-        assert.ok(Validator.check('4').max(5));
-        assert.ok(Validator.check('7').max(7));
-        assert.ok(Validator.check('6.3').max(7));
-        assert.ok(Validator.check('2.9').max(2.9));
-
-        assert.throws(function() {
-            Validator.check('5').max(2);
-        });
-        assert.throws(function() {
-            Validator.check('4.9').max(4.2);
-        });
-    },
-
-    'test #isArray()': function () {
-        assert.ok(Validator.check(new Array()).isArray());
-        assert.ok(Validator.check([]).isArray());
-        assert.ok(Validator.check([1, 2]).isArray());
-        assert.ok(Validator.check(['a', 'b', 'c']).isArray());
-        assert.ok(Validator.check([{}, {}]).isArray());
-
-        try {
-            assert.ok(Validator.check('a').isArray());
-            assert.ok(false, 'len failed');
-        } catch (e) {}
-        try {
-            assert.ok(Validator.check({}).isArray());
-            assert.ok(false, 'len failed');
-        } catch (e) {}
-        try {
-            assert.ok(Validator.check({a: 1, b: 2}).isArray());
-            assert.ok(false, 'len failed');
-        } catch (e) {}
-        try {
-            assert.ok(Validator.check(new Object()).isArray());
-            assert.ok(false, 'len failed');
-        } catch (e) {}
-    },
-
-    'test #isDate()': function() {
-        assert.ok(Validator.check('2011-08-04').isDate());
-        assert.ok(Validator.check('04. 08. 2011.').isDate());
-        assert.ok(Validator.check('08/04/2011').isDate());
-        assert.ok(Validator.check('2011.08.04').isDate());
-        assert.ok(Validator.check('4. 8. 2011. GMT').isDate());
-        assert.ok(Validator.check('2011-08-04 12:00').isDate());
-
-        assert.throws(Validator.check('foo').isDate);
-        assert.throws(Validator.check('2011-foo-04').isDate);
-        assert.throws(Validator.check('GMT').isDate);
-    },
-
-    'test #isAfter()': function() {
-        var f = dateFixture();
-
-        assert.ok(Validator.check('2011-08-04').isAfter('2011-08-03'));
-        assert.ok(Validator.check('08. 04. 2011.').isAfter(new Date('2011-08-04')));
-        assert.ok(Validator.check(f.tomorrow).isAfter());
-        
-        assert.throws(function() {
-            Validator.check('08/04/2011').isAfter('2011-09-01');
-        });
-        assert.throws(function() {
-            Validator.check(f.yesterday).isAfter();
-        });
-    },
-
-    'test #isBefore()': function() {
-        var f = dateFixture();
-
-        assert.ok(Validator.check('2011-08-04').isBefore('2011-08-06'));
-        assert.ok(Validator.check('08. 04. 2011.').isBefore(new Date('2011-08-04')));
-        assert.ok(Validator.check(f.yesterday).isBefore());
-        
-        assert.throws(function() {
-            Validator.check('08/04/2011').isBefore('2011-07-01');
-        });
-        assert.throws(function() {
-            Validator.check(f.tomorrow).isBefore();
-        });
-    },
-
-    'test #isDivisibleBy()': function() {
-        assert.ok(Validator.check('10').isDivisibleBy(2));
-        assert.ok(Validator.check('6').isDivisibleBy(3));
-        
-        assert.throws(function() {
-            Validator.check('5').isDivisibleBy(2);
-        });
-
-        assert.throws(function() {
-            Validator.check('6.7').isDivisibleBy(3);
-        });
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/validator/validator-min.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/validator/validator-min.js b/blackberry10/node_modules/validator/validator-min.js
deleted file mode 100644
index acc1d3c..0000000
--- a/blackberry10/node_modules/validator/validator-min.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*!
- * Copyright (c) 2010 Chris O'Hara <co...@gmail.com>
- *
- * 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(a){function i(a){for(var b in g)a=a.replace(g[b],"");return a}function j(){return"!*$^#(@*#&"}function k(a){return a.replace(">","&gt;").replace("<","&lt;").replace("\\","\\\\")}function l(a){return out="",a.replace(/\s*[a-z\-]+\s*=\s*(?:\042|\047)(?:[^\1]*?)\1/gi,function(a){out+=a.replace(/\/\*.*?\*\//g,"")}),out}var b={"&nbsp;":"\u00a0","&iexcl;":"\u00a1","&cent;":"\u00a2","&pound;":"\u00a3","&curren;":"\u20ac","&yen;":"\u00a5","&brvbar;":"\u0160","&sect;":"\u00a7","&uml;":"\u0161","&copy;":"\u00a9","&ordf;":"\u00aa","&laquo;":"\u00ab","&not;":"\u00ac","&shy;":"\u00ad","&reg;":"\u00ae","&macr;":"\u00af","&deg;":"\u00b0","&plusmn;":"\u00b1","&sup2;":"\u00b2","&sup3;":"\u00b3","&acute;":"\u017d","&micro;":"\u00b5","&para;":"\u00b6","&middot;":"\u00b7","&cedil;":"\u017e","&sup1;":"\u00b9","&ordm;":"\u00ba","&raquo;":"\u00bb","&frac14;":"\u0152","&frac12;":"\u0153","&frac34;":"\u0178","&iquest;":"\u00bf","&Agrave;":"\u00c0","&Aacute;":"\u00c1","&Acirc;":"\u00c2","&Atilde
 ;":"\u00c3","&Auml;":"\u00c4","&Aring;":"\u00c5","&AElig;":"\u00c6","&Ccedil;":"\u00c7","&Egrave;":"\u00c8","&Eacute;":"\u00c9","&Ecirc;":"\u00ca","&Euml;":"\u00cb","&Igrave;":"\u00cc","&Iacute;":"\u00cd","&Icirc;":"\u00ce","&Iuml;":"\u00cf","&ETH;":"\u00d0","&Ntilde;":"\u00d1","&Ograve;":"\u00d2","&Oacute;":"\u00d3","&Ocirc;":"\u00d4","&Otilde;":"\u00d5","&Ouml;":"\u00d6","&times;":"\u00d7","&Oslash;":"\u00d8","&Ugrave;":"\u00d9","&Uacute;":"\u00da","&Ucirc;":"\u00db","&Uuml;":"\u00dc","&Yacute;":"\u00dd","&THORN;":"\u00de","&szlig;":"\u00df","&agrave;":"\u00e0","&aacute;":"\u00e1","&acirc;":"\u00e2","&atilde;":"\u00e3","&auml;":"\u00e4","&aring;":"\u00e5","&aelig;":"\u00e6","&ccedil;":"\u00e7","&egrave;":"\u00e8","&eacute;":"\u00e9","&ecirc;":"\u00ea","&euml;":"\u00eb","&igrave;":"\u00ec","&iacute;":"\u00ed","&icirc;":"\u00ee","&iuml;":"\u00ef","&eth;":"\u00f0","&ntilde;":"\u00f1","&ograve;":"\u00f2","&oacute;":"\u00f3","&ocirc;":"\u00f4","&otilde;":"\u00f5","&ouml;":"\u00f6","&di
 vide;":"\u00f7","&oslash;":"\u00f8","&ugrave;":"\u00f9","&uacute;":"\u00fa","&ucirc;":"\u00fb","&uuml;":"\u00fc","&yacute;":"\u00fd","&thorn;":"\u00fe","&yuml;":"\u00ff","&quot;":'"',"&lt;":"<","&gt;":">","&apos;":"'","&minus;":"\u2212","&circ;":"\u02c6","&tilde;":"\u02dc","&Scaron;":"\u0160","&lsaquo;":"\u2039","&OElig;":"\u0152","&lsquo;":"\u2018","&rsquo;":"\u2019","&ldquo;":"\u201c","&rdquo;":"\u201d","&bull;":"\u2022","&ndash;":"\u2013","&mdash;":"\u2014","&trade;":"\u2122","&scaron;":"\u0161","&rsaquo;":"\u203a","&oelig;":"\u0153","&Yuml;":"\u0178","&fnof;":"\u0192","&Alpha;":"\u0391","&Beta;":"\u0392","&Gamma;":"\u0393","&Delta;":"\u0394","&Epsilon;":"\u0395","&Zeta;":"\u0396","&Eta;":"\u0397","&Theta;":"\u0398","&Iota;":"\u0399","&Kappa;":"\u039a","&Lambda;":"\u039b","&Mu;":"\u039c","&Nu;":"\u039d","&Xi;":"\u039e","&Omicron;":"\u039f","&Pi;":"\u03a0","&Rho;":"\u03a1","&Sigma;":"\u03a3","&Tau;":"\u03a4","&Upsilon;":"\u03a5","&Phi;":"\u03a6","&Chi;":"\u03a7","&Psi;":"\u03a8","
 &Omega;":"\u03a9","&alpha;":"\u03b1","&beta;":"\u03b2","&gamma;":"\u03b3","&delta;":"\u03b4","&epsilon;":"\u03b5","&zeta;":"\u03b6","&eta;":"\u03b7","&theta;":"\u03b8","&iota;":"\u03b9","&kappa;":"\u03ba","&lambda;":"\u03bb","&mu;":"\u03bc","&nu;":"\u03bd","&xi;":"\u03be","&omicron;":"\u03bf","&pi;":"\u03c0","&rho;":"\u03c1","&sigmaf;":"\u03c2","&sigma;":"\u03c3","&tau;":"\u03c4","&upsilon;":"\u03c5","&phi;":"\u03c6","&chi;":"\u03c7","&psi;":"\u03c8","&omega;":"\u03c9","&thetasym;":"\u03d1","&upsih;":"\u03d2","&piv;":"\u03d6","&ensp;":"\u2002","&emsp;":"\u2003","&thinsp;":"\u2009","&zwnj;":"\u200c","&zwj;":"\u200d","&lrm;":"\u200e","&rlm;":"\u200f","&sbquo;":"\u201a","&bdquo;":"\u201e","&dagger;":"\u2020","&Dagger;":"\u2021","&hellip;":"\u2026","&permil;":"\u2030","&prime;":"\u2032","&Prime;":"\u2033","&oline;":"\u203e","&frasl;":"\u2044","&euro;":"\u20ac","&image;":"\u2111","&weierp;":"\u2118","&real;":"\u211c","&alefsym;":"\u2135","&larr;":"\u2190","&uarr;":"\u2191","&rarr;":"\u21
 92","&darr;":"\u2193","&harr;":"\u2194","&crarr;":"\u21b5","&lArr;":"\u21d0","&uArr;":"\u21d1","&rArr;":"\u21d2","&dArr;":"\u21d3","&hArr;":"\u21d4","&forall;":"\u2200","&part;":"\u2202","&exist;":"\u2203","&empty;":"\u2205","&nabla;":"\u2207","&isin;":"\u2208","&notin;":"\u2209","&ni;":"\u220b","&prod;":"\u220f","&sum;":"\u2211","&lowast;":"\u2217","&radic;":"\u221a","&prop;":"\u221d","&infin;":"\u221e","&ang;":"\u2220","&and;":"\u2227","&or;":"\u2228","&cap;":"\u2229","&cup;":"\u222a","&int;":"\u222b","&there4;":"\u2234","&sim;":"\u223c","&cong;":"\u2245","&asymp;":"\u2248","&ne;":"\u2260","&equiv;":"\u2261","&le;":"\u2264","&ge;":"\u2265","&sub;":"\u2282","&sup;":"\u2283","&nsub;":"\u2284","&sube;":"\u2286","&supe;":"\u2287","&oplus;":"\u2295","&otimes;":"\u2297","&perp;":"\u22a5","&sdot;":"\u22c5","&lceil;":"\u2308","&rceil;":"\u2309","&lfloor;":"\u230a","&rfloor;":"\u230b","&lang;":"\u2329","&rang;":"\u232a","&loz;":"\u25ca","&spades;":"\u2660","&clubs;":"\u2663","&hearts;":"\u
 2665","&diams;":"\u2666"},c=function(a){if(!~a.indexOf("&"))return a;for(var c in b)a=a.replace(new RegExp(c,"g"),b[c]);return a=a.replace(/&#x(0*[0-9a-f]{2,5});?/gi,function(a,b){return String.fromCharCode(parseInt(+b,16))}),a=a.replace(/&#([0-9]{2,4});?/gi,function(a,b){return String.fromCharCode(+b)}),a=a.replace(/&amp;/g,"&"),a},d=function(a){a=a.replace(/&/g,"&amp;"),a=a.replace(/'/g,"&#39;");for(var c in b)a=a.replace(new RegExp(b[c],"g"),c);return a};a.entities={encode:d,decode:c};var e={"document.cookie":"[removed]","document.write":"[removed]",".parentNode":"[removed]",".innerHTML":"[removed]","window.location":"[removed]","-moz-binding":"[removed]","<!--":"&lt;!--","-->":"--&gt;","<![CDATA[":"&lt;![CDATA["},f={"javascript\\s*:":"[removed]","expression\\s*(\\(|&\\#40;)":"[removed]","vbscript\\s*:":"[removed]","Redirect\\s+302":"[removed]"},g=[/%0[0-8bcef]/g,/%1[0-9a-f]/g,/[\x00-\x08]/g,/\x0b/g,/\x0c/g,/[\x0e-\x1f]/g],h=["javascript","expression","vbscript","script","applet"
 ,"alert","document","write","cookie","window"];a.xssClean=function(b,c){if(typeof b=="object"){for(var d in b)b[d]=a.xssClean(b[d]);return b}b=i(b),b=b.replace(/\&([a-z\_0-9]+)\=([a-z\_0-9]+)/i,j()+"$1=$2"),b=b.replace(/(&\#?[0-9a-z]{2,})([\x00-\x20])*;?/i,"$1;$2"),b=b.replace(/(&\#x?)([0-9A-F]+);?/i,"$1;$2"),b=b.replace(j(),"&");try{b=decodeURIComponent(b)}catch(g){}b=b.replace(/[a-z]+=([\'\"]).*?\1/gi,function(a,b){return a.replace(b,k(b))}),b=i(b),b=b.replace("\t"," ");var m=b;for(var d in e)b=b.replace(d,e[d]);for(var d in f)b=b.replace(new RegExp(d,"i"),f[d]);for(var d in h){var n=h[d].split("").join("\\s*")+"\\s*";b=b.replace(new RegExp("("+n+")(\\W)","ig"),function(a,b,c){return b.replace(/\s+/g,"")+c})}do{var o=b;b.match(/<a/i)&&(b=b.replace(/<a\s+([^>]*?)(>|$)/gi,function(a,b,c){return b=l(b.replace("<","").replace(">","")),a.replace(b,b.replace(/href=.*?(alert\(|alert&\#40;|javascript\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)/gi,""))})),b.match(/<im
 g/i)&&(b=b.replace(/<img\s+([^>]*?)(\s?\/?>|$)/gi,function(a,b,c){return b=l(b.replace("<","").replace(">","")),a.replace(b,b.replace(/src=.*?(alert\(|alert&\#40;|javascript\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)/gi,""))}));if(b.match(/script/i)||b.match(/xss/i))b=b.replace(/<(\/*)(script|xss)(.*?)\>/gi,"[removed]")}while(o!=b);event_handlers=["[^a-z_-]on\\w*"],c||event_handlers.push("xmlns"),b=b.replace(new RegExp("<([^><]+?)("+event_handlers.join("|")+")(\\s*=\\s*[^><]*)([><]*)","i"),"<$1$4"),naughty="alert|applet|audio|basefont|base|behavior|bgsound|blink|body|embed|expression|form|frameset|frame|head|html|ilayer|iframe|input|isindex|layer|link|meta|object|plaintext|style|script|textarea|title|video|xml|xss",b=b.replace(new RegExp("<(/*\\s*)("+naughty+")([^><]*)([><]*)","gi"),function(a,b,c,d,e){return"&lt;"+b+c+d+e.replace(">","&gt;").replace("<","&lt;")}),b=b.replace(/(alert|cmd|passthru|eval|exec|expression|system|fopen|fsockopen|file|file_get_conten
 ts|readfile|unlink)(\s*)\((.*?)\)/gi,"$1$2&#40;$3&#41;");for(var d in e)b=b.replace(d,e[d]);for(var d in f)b=b.replace(new RegExp(d,"i"),f[d]);if(c&&b!==m)throw new Error("Image may contain XSS");return b};var m=a.Validator=function(){};m.prototype.check=function(a,b){return this.str=a==null||isNaN(a)&&a.length==undefined?"":a+"",this.msg=b,this._errors=[],this},m.prototype.validate=m.prototype.check,m.prototype.assert=m.prototype.check,m.prototype.error=function(a){throw new Error(a)},m.prototype.isEmail=function(){return this.str.match(/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/)?this:this.error(this.msg||"Invalid email")},m.prototype.isCreditCard=function(){return this.str=this.str.replace(/[^0-9]+/g,""),this.str.match(/^(?:4[0-9]{
 12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/)?this:this.error(this.msg||"Invalid credit card")},m.prototype.isUrl=function(){return!this.str.match(/^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?((?:(?:[-\w\d{1-3}]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|edu|co\.uk|ac\.uk|it|fr|tv|museum|asia|local|travel|[a-z]{2}))|((\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)(\.(\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)){3}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$ |\/.,*:;=]|%[a-f\d]{2})*)?$/i)||this.str.length>2083?this.error(this.msg||"Invalid URL"):this},m.prototype.isIP=function(){return this.str.match(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|
 [01]?[0-9][0-9]?)$/)?this:this.error(this.msg||"Invalid IP")},m.prototype.isAlpha=function(){return this.str.match(/^[a-zA-Z]+$/)?this:this.error(this.msg||"Invalid characters")},m.prototype.isAlphanumeric=function(){return this.str.match(/^[a-zA-Z0-9]+$/)?this:this.error(this.msg||"Invalid characters")},m.prototype.isNumeric=function(){return this.str.match(/^-?[0-9]+$/)?this:this.error(this.msg||"Invalid number")},m.prototype.isLowercase=function(){return this.str.match(/^[a-z0-9]+$/)?this:this.error(this.msg||"Invalid characters")},m.prototype.isUppercase=function(){return this.str.match(/^[A-Z0-9]+$/)?this:this.error(this.msg||"Invalid characters")},m.prototype.isInt=function(){return this.str.match(/^(?:-?(?:0|[1-9][0-9]*))$/)?this:this.error(this.msg||"Invalid integer")},m.prototype.isDecimal=function(){return this.str.match(/^(?:-?(?:0|[1-9][0-9]*))?(?:\.[0-9]*)?$/)?this:this.error(this.msg||"Invalid decimal")},m.prototype.isFloat=function(){return this.isDecimal()},m.prototy
 pe.notNull=function(){return this.str===""?this.error(this.msg||"Invalid characters"):this},m.prototype.isNull=function(){return this.str!==""?this.error(this.msg||"Invalid characters"):this},m.prototype.notEmpty=function(){return this.str.match(/^[\s\t\r\n]*$/)?this.error(this.msg||"String is whitespace"):this},m.prototype.equals=function(a){return this.str!=a?this.error(this.msg||"Not equal"):this},m.prototype.contains=function(a){return this.str.indexOf(a)===-1?this.error(this.msg||"Invalid characters"):this},m.prototype.notContains=function(a){return this.str.indexOf(a)>=0?this.error(this.msg||"Invalid characters"):this},m.prototype.regex=m.prototype.is=function(a,b){return typeof a!="function"&&(a=new RegExp(a,b)),this.str.match(a)?this:this.error(this.msg||"Invalid characters")},m.prototype.notRegex=m.prototype.not=function(a,b){return typeof a!="function"&&(a=new RegExp(a,b)),this.str.match(a)&&this.error(this.msg||"Invalid characters"),this},m.prototype.len=function(a,b){ret
 urn this.str.length<a&&this.error(this.msg||"String is too small"),typeof b!==undefined&&this.str.length>b?this.error(this.msg||"String is too large"):this},m.prototype.isUUID=function(a){return a==3||a=="v3"?pattern=/[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i:a==4||a=="v4"?pattern=/[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i:pattern=/[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,this.str.match(pattern)?this:this.error(this.msg||"Not a UUID")},m.prototype.isDate=function(){var a=Date.parse(this.str);return isNaN(a)?this.error(this.msg||"Not a date"):this},m.prototype.isIn=function(a){return a&&typeof a.indexOf=="function"?~a.indexOf(this.str)?this:this.error(this.msg||"Unexpected value"):this.error(this.msg||"Invalid in() argument")},m.prototype.notIn=function(a){return a&&typeof a.indexOf=="function"?a.indexOf(this.str)!==-1?this.error(this.msg||"Unexpected value"):this:this.error(this.msg||"Invalid notIn() argument
 ")},m.prototype.min=function(a){var b=parseFloat(this.str);return!isNaN(b)&&b<a?this.error(this.msg||"Invalid number"):this},m.prototype.max=function(a){var b=parseFloat(this.str);return!isNaN(b)&&b>a?this.error(this.msg||"Invalid number"):this},m.prototype.isArray=function(){return Array.isArray(this.str)?this:this.error(this.msg||"Not an array")};var n=a.Filter=function(){},o="\\r\\n\\t\\s";n.prototype.modify=function(a){this.str=a},n.prototype.convert=n.prototype.sanitize=function(a){return this.str=a,this},n.prototype.xss=function(b){return this.modify(a.xssClean(this.str,b)),this.str},n.prototype.entityDecode=function(){return this.modify(c(this.str)),this.str},n.prototype.entityEncode=function(){return this.modify(d(this.str)),this.str},n.prototype.ltrim=function(a){return a=a||o,this.modify(this.str.replace(new RegExp("^["+a+"]+","g"),"")),this.str},n.prototype.rtrim=function(a){return a=a||o,this.modify(this.str.replace(new RegExp("["+a+"]+$","g"),"")),this.str},n.prototype.
 trim=function(a){return a=a||o,this.modify(this.str.replace(new RegExp("^["+a+"]+|["+a+"]+$","g"),"")),this.str},n.prototype.ifNull=function(a){return(!this.str||this.str==="")&&this.modify(a),this.str},n.prototype.toFloat=function(){return this.modify(parseFloat(this.str)),this.str},n.prototype.toInt=function(a){return a=a||10,this.modify(parseInt(this.str),a),this.str},n.prototype.toBoolean=function(){return!this.str||this.str=="0"||this.str=="false"||this.str==""?this.modify(!1):this.modify(!0),this.str},n.prototype.toBooleanStrict=function(){return this.str=="1"||this.str=="true"?this.modify(!0):this.modify(!1),this.str},a.sanitize=a.convert=function(b){var c=new a.Filter;return c.sanitize(b)},a.check=a.validate=a.assert=function(b,c){var d=new a.Validator;return d.check(b,c)}})(typeof exports=="undefined"?window:exports);
\ No newline at end of file


[10/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/main.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/main.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/main.js
deleted file mode 100644
index 2407a93..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/main.js
+++ /dev/null
@@ -1,974 +0,0 @@
-// Copyright 2010-2012 Mikeal Rogers
-//
-//    Licensed under the Apache License, Version 2.0 (the "License");
-//    you may not use this file except in compliance with the License.
-//    You may obtain a copy of the License at
-//
-//        http://www.apache.org/licenses/LICENSE-2.0
-//
-//    Unless required by applicable law or agreed to in writing, software
-//    distributed under the License is distributed on an "AS IS" BASIS,
-//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//    See the License for the specific language governing permissions and
-//    limitations under the License.
-
-var http = require('http')
-  , https = false
-  , tls = false
-  , url = require('url')
-  , util = require('util')
-  , stream = require('stream')
-  , qs = require('querystring')
-  , mimetypes = require('./mimetypes')
-  , oauth = require('./oauth')
-  , uuid = require('./uuid')
-  , ForeverAgent = require('./forever')
-  , Cookie = require('./vendor/cookie')
-  , CookieJar = require('./vendor/cookie/jar')
-  , cookieJar = new CookieJar
-  , tunnel = require('./tunnel')
-  , aws = require('./aws')
-  ;
-  
-if (process.logging) {
-  var log = process.logging('request')
-}
-
-try {
-  https = require('https')
-} catch (e) {}
-
-try {
-  tls = require('tls')
-} catch (e) {}
-
-function toBase64 (str) {
-  return (new Buffer(str || "", "ascii")).toString("base64")
-}
-
-// Hacky fix for pre-0.4.4 https
-if (https && !https.Agent) {
-  https.Agent = function (options) {
-    http.Agent.call(this, options)
-  }
-  util.inherits(https.Agent, http.Agent)
-  https.Agent.prototype._getConnection = function (host, port, cb) {
-    var s = tls.connect(port, host, this.options, function () {
-      // do other checks here?
-      if (cb) cb()
-    })
-    return s
-  }
-}
-
-function isReadStream (rs) {
-  if (rs.readable && rs.path && rs.mode) {
-    return true
-  }
-}
-
-function copy (obj) {
-  var o = {}
-  Object.keys(obj).forEach(function (i) {
-    o[i] = obj[i]
-  })
-  return o
-}
-
-var isUrl = /^https?:/
-
-var globalPool = {}
-
-function Request (options) {
-  stream.Stream.call(this)
-  this.readable = true
-  this.writable = true
-
-  if (typeof options === 'string') {
-    options = {uri:options}
-  }
-  
-  var reserved = Object.keys(Request.prototype)
-  for (var i in options) {
-    if (reserved.indexOf(i) === -1) {
-      this[i] = options[i]
-    } else {
-      if (typeof options[i] === 'function') {
-        delete options[i]
-      }
-    }
-  }
-  options = copy(options)
-  
-  this.init(options)
-}
-util.inherits(Request, stream.Stream)
-Request.prototype.init = function (options) {
-  var self = this
-  
-  if (!options) options = {}
-  
-  if (!self.pool && self.pool !== false) self.pool = globalPool
-  self.dests = []
-  self.__isRequestRequest = true
-  
-  // Protect against double callback
-  if (!self._callback && self.callback) {
-    self._callback = self.callback
-    self.callback = function () {
-      if (self._callbackCalled) return // Print a warning maybe?
-      self._callback.apply(self, arguments)
-      self._callbackCalled = true
-    }
-    self.on('error', self.callback.bind())
-    self.on('complete', self.callback.bind(self, null))
-  }
-
-  if (self.url) {
-    // People use this property instead all the time so why not just support it.
-    self.uri = self.url
-    delete self.url
-  }
-
-  if (!self.uri) {
-    throw new Error("options.uri is a required argument")
-  } else {
-    if (typeof self.uri == "string") self.uri = url.parse(self.uri)
-  }
-  if (self.proxy) {
-    if (typeof self.proxy == 'string') self.proxy = url.parse(self.proxy)
-
-    // do the HTTP CONNECT dance using koichik/node-tunnel
-    if (http.globalAgent && self.uri.protocol === "https:") {
-      self.tunnel = true
-      var tunnelFn = self.proxy.protocol === "http:"
-                   ? tunnel.httpsOverHttp : tunnel.httpsOverHttps
-
-      var tunnelOptions = { proxy: { host: self.proxy.hostname
-                                   , port: +self.proxy.port 
-                                   , proxyAuth: self.proxy.auth }
-                          , ca: this.ca }
-
-      self.agent = tunnelFn(tunnelOptions)
-      self.tunnel = true
-    }
-  }
-
-  if (!self.uri.host || !self.uri.pathname) {
-    // Invalid URI: it may generate lot of bad errors, like "TypeError: Cannot call method 'indexOf' of undefined" in CookieJar
-    // Detect and reject it as soon as possible
-    var faultyUri = url.format(self.uri)
-    var message = 'Invalid URI "' + faultyUri + '"'
-    if (Object.keys(options).length === 0) {
-      // No option ? This can be the sign of a redirect
-      // As this is a case where the user cannot do anything (he didn't call request directly with this URL)
-      // he should be warned that it can be caused by a redirection (can save some hair)
-      message += '. This can be caused by a crappy redirection.'
-    }
-    self.emit('error', new Error(message))
-    return // This error was fatal
-  }
-
-  self._redirectsFollowed = self._redirectsFollowed || 0
-  self.maxRedirects = (self.maxRedirects !== undefined) ? self.maxRedirects : 10
-  self.followRedirect = (self.followRedirect !== undefined) ? self.followRedirect : true
-  self.followAllRedirects = (self.followAllRedirects !== undefined) ? self.followAllRedirects : false;
-  if (self.followRedirect || self.followAllRedirects)
-    self.redirects = self.redirects || []
-
-  self.headers = self.headers ? copy(self.headers) : {}
-
-  self.setHost = false
-  if (!self.headers.host) {
-    self.headers.host = self.uri.hostname
-    if (self.uri.port) {
-      if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') &&
-           !(self.uri.port === 443 && self.uri.protocol === 'https:') )
-      self.headers.host += (':'+self.uri.port)
-    }
-    self.setHost = true
-  }
-  
-  self.jar(self._jar || options.jar)
-
-  if (!self.uri.pathname) {self.uri.pathname = '/'}
-  if (!self.uri.port) {
-    if (self.uri.protocol == 'http:') {self.uri.port = 80}
-    else if (self.uri.protocol == 'https:') {self.uri.port = 443}
-  }
-
-  if (self.proxy && !self.tunnel) {
-    self.port = self.proxy.port
-    self.host = self.proxy.hostname
-  } else {
-    self.port = self.uri.port
-    self.host = self.uri.hostname
-  }
-
-  self.clientErrorHandler = function (error) {
-    if (self._aborted) return
-    
-    if (self.setHost) delete self.headers.host
-    if (self.req._reusedSocket && error.code === 'ECONNRESET'
-        && self.agent.addRequestNoreuse) {
-      self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) }
-      self.start()
-      self.req.end()
-      return
-    }
-    if (self.timeout && self.timeoutTimer) {
-      clearTimeout(self.timeoutTimer)
-      self.timeoutTimer = null
-    }
-    self.emit('error', error)
-  }
-
-  if (options.form) {
-    self.form(options.form)
-  }
-
-  if (options.oauth) {
-    self.oauth(options.oauth)
-  }
-  
-  if (options.aws) {
-    self.aws(options.aws)
-  }
-
-  if (self.uri.auth && !self.headers.authorization) {
-    self.headers.authorization = "Basic " + toBase64(self.uri.auth.split(':').map(function(item){ return qs.unescape(item)}).join(':'))
-  }
-  if (self.proxy && self.proxy.auth && !self.headers['proxy-authorization'] && !self.tunnel) {
-    self.headers['proxy-authorization'] = "Basic " + toBase64(self.proxy.auth.split(':').map(function(item){ return qs.unescape(item)}).join(':'))
-  }
-
-  if (options.qs) self.qs(options.qs)
-
-  if (self.uri.path) {
-    self.path = self.uri.path
-  } else {
-    self.path = self.uri.pathname + (self.uri.search || "")
-  }
-
-  if (self.path.length === 0) self.path = '/'
-
-  if (self.proxy && !self.tunnel) self.path = (self.uri.protocol + '//' + self.uri.host + self.path)
-
-  if (options.json) {
-    self.json(options.json)
-  } else if (options.multipart) {
-    self.boundary = uuid()
-    self.multipart(options.multipart)
-  }
-
-  if (self.body) {
-    var length = 0
-    if (!Buffer.isBuffer(self.body)) {
-      if (Array.isArray(self.body)) {
-        for (var i = 0; i < self.body.length; i++) {
-          length += self.body[i].length
-        }
-      } else {
-        self.body = new Buffer(self.body)
-        length = self.body.length
-      }
-    } else {
-      length = self.body.length
-    }
-    if (length) {
-      self.headers['content-length'] = length
-    } else {
-      throw new Error('Argument error, options.body.')
-    }
-  }
-
-  var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol
-    , defaultModules = {'http:':http, 'https:':https}
-    , httpModules = self.httpModules || {}
-    ;
-  self.httpModule = httpModules[protocol] || defaultModules[protocol]
-
-  if (!self.httpModule) throw new Error("Invalid protocol")
-
-  if (options.ca) self.ca = options.ca
-
-  if (!self.agent) {
-    if (options.agentOptions) self.agentOptions = options.agentOptions
-
-    if (options.agentClass) {
-      self.agentClass = options.agentClass
-    } else if (options.forever) {
-      self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL
-    } else {
-      self.agentClass = self.httpModule.Agent
-    }
-  }
-
-  if (self.pool === false) {
-    self.agent = false
-  } else {
-    self.agent = self.agent || self.getAgent()
-    if (self.maxSockets) {
-      // Don't use our pooling if node has the refactored client
-      self.agent.maxSockets = self.maxSockets
-    }
-    if (self.pool.maxSockets) {
-      // Don't use our pooling if node has the refactored client
-      self.agent.maxSockets = self.pool.maxSockets
-    }
-  }
-
-  self.once('pipe', function (src) {
-    if (self.ntick) throw new Error("You cannot pipe to this stream after the first nextTick() after creation of the request stream.")
-    self.src = src
-    if (isReadStream(src)) {
-      if (!self.headers['content-type'] && !self.headers['Content-Type'])
-        self.headers['content-type'] = mimetypes.lookup(src.path.slice(src.path.lastIndexOf('.')+1))
-    } else {
-      if (src.headers) {
-        for (var i in src.headers) {
-          if (!self.headers[i]) {
-            self.headers[i] = src.headers[i]
-          }
-        }
-      }
-      if (src.method && !self.method) {
-        self.method = src.method
-      }
-    }
-
-    self.on('pipe', function () {
-      console.error("You have already piped to this stream. Pipeing twice is likely to break the request.")
-    })
-  })
-
-  process.nextTick(function () {
-    if (self._aborted) return
-    
-    if (self.body) {
-      if (Array.isArray(self.body)) {
-        self.body.forEach(function (part) {
-          self.write(part)
-        })
-      } else {
-        self.write(self.body)
-      }
-      self.end()
-    } else if (self.requestBodyStream) {
-      console.warn("options.requestBodyStream is deprecated, please pass the request object to stream.pipe.")
-      self.requestBodyStream.pipe(self)
-    } else if (!self.src) {
-      if (self.method !== 'GET' && typeof self.method !== 'undefined') {
-        self.headers['content-length'] = 0;
-      }
-      self.end();
-    }
-    self.ntick = true
-  })
-}
-
-Request.prototype.getAgent = function () {
-  var Agent = this.agentClass
-  var options = {}
-  if (this.agentOptions) {
-    for (var i in this.agentOptions) {
-      options[i] = this.agentOptions[i]
-    }
-  }
-  if (this.ca) options.ca = this.ca
-
-  var poolKey = ''
-
-  // different types of agents are in different pools
-  if (Agent !== this.httpModule.Agent) {
-    poolKey += Agent.name
-  }
-
-  if (!this.httpModule.globalAgent) {
-    // node 0.4.x
-    options.host = this.host
-    options.port = this.port
-    if (poolKey) poolKey += ':'
-    poolKey += this.host + ':' + this.port
-  }
-
-  if (options.ca) {
-    if (poolKey) poolKey += ':'
-    poolKey += options.ca
-  }
-
-  if (!poolKey && Agent === this.httpModule.Agent && this.httpModule.globalAgent) {
-    // not doing anything special.  Use the globalAgent
-    return this.httpModule.globalAgent
-  }
-
-  // already generated an agent for this setting
-  if (this.pool[poolKey]) return this.pool[poolKey]
-
-  return this.pool[poolKey] = new Agent(options)
-}
-
-Request.prototype.start = function () {
-  var self = this
-  
-  if (self._aborted) return
-  
-  self._started = true
-  self.method = self.method || 'GET'
-  self.href = self.uri.href
-  if (log) log('%method %href', self)
-  
-  if (self.src && self.src.stat && self.src.stat.size) {
-    self.headers['content-length'] = self.src.stat.size
-  }
-  if (self._aws) {
-    self.aws(self._aws, true)
-  }
-  
-  self.req = self.httpModule.request(self, function (response) {
-    if (self._aborted) return
-    if (self._paused) response.pause()
-    
-    self.response = response
-    response.request = self
-    response.toJSON = toJSON
-
-    if (self.httpModule === https &&
-        self.strictSSL &&
-        !response.client.authorized) {
-      var sslErr = response.client.authorizationError
-      self.emit('error', new Error('SSL Error: '+ sslErr))
-      return
-    }
-
-    if (self.setHost) delete self.headers.host
-    if (self.timeout && self.timeoutTimer) {
-      clearTimeout(self.timeoutTimer)
-      self.timeoutTimer = null
-    }  
-    
-    var addCookie = function (cookie) {
-      if (self._jar) self._jar.add(new Cookie(cookie))
-      else cookieJar.add(new Cookie(cookie))
-    }
-
-    if (response.headers['set-cookie'] && (!self._disableCookies)) {
-      if (Array.isArray(response.headers['set-cookie'])) response.headers['set-cookie'].forEach(addCookie)
-      else addCookie(response.headers['set-cookie'])
-    }
-
-    if (response.statusCode >= 300 && response.statusCode < 400  &&
-        (self.followAllRedirects ||
-         (self.followRedirect && (self.method !== 'PUT' && self.method !== 'POST' && self.method !== 'DELETE'))) &&
-        response.headers.location) {
-      if (self._redirectsFollowed >= self.maxRedirects) {
-        self.emit('error', new Error("Exceeded maxRedirects. Probably stuck in a redirect loop."))
-        return
-      }
-      self._redirectsFollowed += 1
-
-      if (!isUrl.test(response.headers.location)) {
-        response.headers.location = url.resolve(self.uri.href, response.headers.location)
-      }
-      self.uri = response.headers.location
-      self.redirects.push(
-        { statusCode : response.statusCode
-        , redirectUri: response.headers.location 
-        }
-      )
-      if (self.followAllRedirects) self.method = 'GET'
-      // self.method = 'GET'; // Force all redirects to use GET || commented out fixes #215
-      delete self.req
-      delete self.agent
-      delete self._started
-      delete self.body
-      if (self.headers) {
-        delete self.headers.host
-      }
-      if (log) log('Redirect to %uri', self)
-      self.init()
-      return // Ignore the rest of the response
-    } else {
-      self._redirectsFollowed = self._redirectsFollowed || 0
-      // Be a good stream and emit end when the response is finished.
-      // Hack to emit end on close because of a core bug that never fires end
-      response.on('close', function () {
-        if (!self._ended) self.response.emit('end')
-      })
-
-      if (self.encoding) {
-        if (self.dests.length !== 0) {
-          console.error("Ingoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.")
-        } else {
-          response.setEncoding(self.encoding)
-        }
-      }
-
-      self.dests.forEach(function (dest) {
-        self.pipeDest(dest)
-      })
-
-      response.on("data", function (chunk) {
-        self._destdata = true
-        self.emit("data", chunk)
-      })
-      response.on("end", function (chunk) {
-        self._ended = true
-        self.emit("end", chunk)
-      })
-      response.on("close", function () {self.emit("close")})
-
-      self.emit('response', response)
-
-      if (self.callback) {
-        var buffer = []
-        var bodyLen = 0
-        self.on("data", function (chunk) {
-          buffer.push(chunk)
-          bodyLen += chunk.length
-        })
-        self.on("end", function () {
-          if (self._aborted) return
-          
-          if (buffer.length && Buffer.isBuffer(buffer[0])) {
-            var body = new Buffer(bodyLen)
-            var i = 0
-            buffer.forEach(function (chunk) {
-              chunk.copy(body, i, 0, chunk.length)
-              i += chunk.length
-            })
-            if (self.encoding === null) {
-              response.body = body
-            } else {
-              response.body = body.toString()
-            }
-          } else if (buffer.length) {
-            response.body = buffer.join('')
-          }
-
-          if (self._json) {
-            try {
-              response.body = JSON.parse(response.body)
-            } catch (e) {}
-          }
-          
-          self.emit('complete', response, response.body)
-        })
-      }
-    }
-  })
-
-  if (self.timeout && !self.timeoutTimer) {
-    self.timeoutTimer = setTimeout(function () {
-      self.req.abort()
-      var e = new Error("ETIMEDOUT")
-      e.code = "ETIMEDOUT"
-      self.emit("error", e)
-    }, self.timeout)
-    
-    // Set additional timeout on socket - in case if remote
-    // server freeze after sending headers
-    if (self.req.setTimeout) { // only works on node 0.6+
-      self.req.setTimeout(self.timeout, function () {
-        if (self.req) {
-          self.req.abort()
-          var e = new Error("ESOCKETTIMEDOUT")
-          e.code = "ESOCKETTIMEDOUT"
-          self.emit("error", e)
-        }
-      })
-    }
-  }
-  
-  self.req.on('error', self.clientErrorHandler)
-  self.req.on('drain', function() {
-    self.emit('drain')
-  })
-  
-  self.emit('request', self.req)
-}
-
-Request.prototype.abort = function () {
-  this._aborted = true;
-  
-  if (this.req) {
-    this.req.abort()
-  }
-  else if (this.response) {
-    this.response.abort()
-  }
-  
-  this.emit("abort")
-}
-
-Request.prototype.pipeDest = function (dest) {
-  var response = this.response
-  // Called after the response is received
-  if (dest.headers) {
-    dest.headers['content-type'] = response.headers['content-type']
-    if (response.headers['content-length']) {
-      dest.headers['content-length'] = response.headers['content-length']
-    }
-  }
-  if (dest.setHeader) {
-    for (var i in response.headers) {
-      dest.setHeader(i, response.headers[i])
-    }
-    dest.statusCode = response.statusCode
-  }
-  if (this.pipefilter) this.pipefilter(response, dest)
-}
-
-// Composable API
-Request.prototype.setHeader = function (name, value, clobber) {
-  if (clobber === undefined) clobber = true
-  if (clobber || !this.headers.hasOwnProperty(name)) this.headers[name] = value
-  else this.headers[name] += ',' + value
-  return this
-}
-Request.prototype.setHeaders = function (headers) {
-  for (var i in headers) {this.setHeader(i, headers[i])}
-  return this
-}
-Request.prototype.qs = function (q, clobber) {
-  var base
-  if (!clobber && this.uri.query) base = qs.parse(this.uri.query)
-  else base = {}
-  
-  for (var i in q) {
-    base[i] = q[i]
-  }
-  
-  this.uri = url.parse(this.uri.href.split('?')[0] + '?' + qs.stringify(base))
-  this.url = this.uri
-  
-  return this
-}
-Request.prototype.form = function (form) {
-  this.headers['content-type'] = 'application/x-www-form-urlencoded; charset=utf-8'
-  this.body = qs.stringify(form).toString('utf8')
-  return this
-}
-Request.prototype.multipart = function (multipart) {
-  var self = this
-  self.body = []
-
-  if (!self.headers['content-type']) {
-    self.headers['content-type'] = 'multipart/related; boundary=' + self.boundary;
-  } else {
-    self.headers['content-type'] = self.headers['content-type'].split(';')[0] + '; boundary=' + self.boundary;
-  }
-
-  console.log('boundary >> ' + self.boundary)
-
-  if (!multipart.forEach) throw new Error('Argument error, options.multipart.')
-
-  multipart.forEach(function (part) {
-    var body = part.body
-    if(body == null) throw Error('Body attribute missing in multipart.')
-    delete part.body
-    var preamble = '--' + self.boundary + '\r\n'
-    Object.keys(part).forEach(function (key) {
-      preamble += key + ': ' + part[key] + '\r\n'
-    })
-    preamble += '\r\n'
-    self.body.push(new Buffer(preamble))
-    self.body.push(new Buffer(body))
-    self.body.push(new Buffer('\r\n'))
-  })
-  self.body.push(new Buffer('--' + self.boundary + '--'))
-  return self
-}
-Request.prototype.json = function (val) {
-  this.setHeader('content-type', 'application/json')
-  this.setHeader('accept', 'application/json')
-  this._json = true
-  if (typeof val === 'boolean') {
-    if (typeof this.body === 'object') this.body = JSON.stringify(this.body)
-  } else {
-    this.body = JSON.stringify(val)
-  }
-  return this
-}
-Request.prototype.aws = function (opts, now) {
-  if (!now) {
-    this._aws = opts
-    return this
-  }
-  var date = new Date()
-  this.setHeader('date', date.toUTCString())
-  this.setHeader('authorization', aws.authorization(
-    { key: opts.key
-    , secret: opts.secret
-    , verb: this.method
-    , date: date
-    , resource: aws.canonicalizeResource('/' + opts.bucket + this.path)
-    , contentType: this.headers['content-type'] || ''
-    , md5: this.headers['content-md5'] || ''
-    , amazonHeaders: aws.canonicalizeHeaders(this.headers)
-    }
-  ))
-  
-  return this
-}
-
-Request.prototype.oauth = function (_oauth) {
-  var form
-  if (this.headers['content-type'] && 
-      this.headers['content-type'].slice(0, 'application/x-www-form-urlencoded'.length) ===
-        'application/x-www-form-urlencoded' 
-     ) {
-    form = qs.parse(this.body)
-  }
-  if (this.uri.query) {
-    form = qs.parse(this.uri.query)
-  } 
-  if (!form) form = {}
-  var oa = {}
-  for (var i in form) oa[i] = form[i]
-  for (var i in _oauth) oa['oauth_'+i] = _oauth[i]
-  if (!oa.oauth_version) oa.oauth_version = '1.0'
-  if (!oa.oauth_timestamp) oa.oauth_timestamp = Math.floor( (new Date()).getTime() / 1000 ).toString()
-  if (!oa.oauth_nonce) oa.oauth_nonce = uuid().replace(/-/g, '')
-  
-  oa.oauth_signature_method = 'HMAC-SHA1'
-  
-  var consumer_secret = oa.oauth_consumer_secret
-  delete oa.oauth_consumer_secret
-  var token_secret = oa.oauth_token_secret
-  delete oa.oauth_token_secret
-  
-  var baseurl = this.uri.protocol + '//' + this.uri.host + this.uri.pathname
-  var signature = oauth.hmacsign(this.method, baseurl, oa, consumer_secret, token_secret)
-  
-  // oa.oauth_signature = signature
-  for (var i in form) {
-    if ( i.slice(0, 'oauth_') in _oauth) {
-      // skip 
-    } else {
-      delete oa['oauth_'+i]
-    }
-  }
-  this.headers.Authorization = 
-    'OAuth '+Object.keys(oa).sort().map(function (i) {return i+'="'+oauth.rfc3986(oa[i])+'"'}).join(',')
-  this.headers.Authorization += ',oauth_signature="'+oauth.rfc3986(signature)+'"'
-  return this
-}
-Request.prototype.jar = function (jar) {
-  var cookies
-  
-  if (this._redirectsFollowed === 0) {
-    this.originalCookieHeader = this.headers.cookie
-  }
-  
-  if (jar === false) {
-    // disable cookies
-    cookies = false;
-    this._disableCookies = true;
-  } else if (jar) {
-    // fetch cookie from the user defined cookie jar
-    cookies = jar.get({ url: this.uri.href })
-  } else {
-    // fetch cookie from the global cookie jar
-    cookies = cookieJar.get({ url: this.uri.href })
-  }
-  
-  if (cookies && cookies.length) {
-    var cookieString = cookies.map(function (c) {
-      return c.name + "=" + c.value
-    }).join("; ")
-
-    if (this.originalCookieHeader) {
-      // Don't overwrite existing Cookie header
-      this.headers.cookie = this.originalCookieHeader + '; ' + cookieString
-    } else {
-      this.headers.cookie = cookieString
-    }
-  }
-  this._jar = jar
-  return this
-}
-
-
-// Stream API
-Request.prototype.pipe = function (dest, opts) {
-  if (this.response) {
-    if (this._destdata) {
-      throw new Error("You cannot pipe after data has been emitted from the response.")
-    } else if (this._ended) {
-      throw new Error("You cannot pipe after the response has been ended.")
-    } else {
-      stream.Stream.prototype.pipe.call(this, dest, opts)
-      this.pipeDest(dest)
-      return dest
-    }
-  } else {
-    this.dests.push(dest)
-    stream.Stream.prototype.pipe.call(this, dest, opts)
-    return dest
-  }
-}
-Request.prototype.write = function () {
-  if (!this._started) this.start()
-  return this.req.write.apply(this.req, arguments)
-}
-Request.prototype.end = function (chunk) {
-  if (chunk) this.write(chunk)
-  if (!this._started) this.start()
-  this.req.end()
-}
-Request.prototype.pause = function () {
-  if (!this.response) this._paused = true
-  else this.response.pause.apply(this.response, arguments)
-}
-Request.prototype.resume = function () {
-  if (!this.response) this._paused = false
-  else this.response.resume.apply(this.response, arguments)
-}
-Request.prototype.destroy = function () {
-  if (!this._ended) this.end()
-}
-
-// organize params for post, put, head, del
-function initParams(uri, options, callback) {
-  if ((typeof options === 'function') && !callback) callback = options;
-  if (options && typeof options === 'object') {
-    options.uri = uri;
-  } else if (typeof uri === 'string') {
-    options = {uri:uri};
-  } else {
-    options = uri;
-    uri = options.uri;
-  }
-  return { uri: uri, options: options, callback: callback };
-}
-
-function request (uri, options, callback) {
-  if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.')
-  if ((typeof options === 'function') && !callback) callback = options;
-  if (options && typeof options === 'object') {
-    options.uri = uri;
-  } else if (typeof uri === 'string') {
-    options = {uri:uri};
-  } else {
-    options = uri;
-  }
-
-  if (callback) options.callback = callback;
-  var r = new Request(options)
-  return r
-}
-
-module.exports = request
-
-request.defaults = function (options) {
-  var def = function (method) {
-    var d = function (uri, opts, callback) {
-      var params = initParams(uri, opts, callback);
-      for (var i in options) {
-        if (params.options[i] === undefined) params.options[i] = options[i]
-      }
-      return method(params.options, params.callback)
-    }
-    return d
-  }
-  var de = def(request)
-  de.get = def(request.get)
-  de.post = def(request.post)
-  de.put = def(request.put)
-  de.head = def(request.head)
-  de.del = def(request.del)
-  de.cookie = def(request.cookie)
-  de.jar = def(request.jar)
-  return de
-}
-
-request.forever = function (agentOptions, optionsArg) {
-  var options = {}
-  if (optionsArg) {
-    for (option in optionsArg) {
-      options[option] = optionsArg[option]
-    }
-  }
-  if (agentOptions) options.agentOptions = agentOptions
-  options.forever = true
-  return request.defaults(options)
-}
-
-request.get = request
-request.post = function (uri, options, callback) {
-  var params = initParams(uri, options, callback);
-  params.options.method = 'POST';
-  return request(params.uri || null, params.options, params.callback)
-}
-request.put = function (uri, options, callback) {
-  var params = initParams(uri, options, callback);
-  params.options.method = 'PUT'
-  return request(params.uri || null, params.options, params.callback)
-}
-request.head = function (uri, options, callback) {
-  var params = initParams(uri, options, callback);
-  params.options.method = 'HEAD'
-  if (params.options.body || 
-      params.options.requestBodyStream || 
-      (params.options.json && typeof params.options.json !== 'boolean') || 
-      params.options.multipart) {
-    throw new Error("HTTP HEAD requests MUST NOT include a request body.")
-  }
-  return request(params.uri || null, params.options, params.callback)
-}
-request.del = function (uri, options, callback) {
-  var params = initParams(uri, options, callback);
-  params.options.method = 'DELETE'
-  return request(params.uri || null, params.options, params.callback)
-}
-request.jar = function () {
-  return new CookieJar
-}
-request.cookie = function (str) {
-  if (str && str.uri) str = str.uri
-  if (typeof str !== 'string') throw new Error("The cookie function only accepts STRING as param")
-  return new Cookie(str)
-}
-
-// Safe toJSON
-
-function getSafe (self, uuid) {  
-  if (typeof self === 'object' || typeof self === 'function') var safe = {}
-  if (Array.isArray(self)) var safe = []
-
-  var recurse = []
-  
-  Object.defineProperty(self, uuid, {})
-  
-  var attrs = Object.keys(self).filter(function (i) {
-    if (i === uuid) return false 
-    if ( (typeof self[i] !== 'object' && typeof self[i] !== 'function') || self[i] === null) return true
-    return !(Object.getOwnPropertyDescriptor(self[i], uuid))
-  })
-  
-  
-  for (var i=0;i<attrs.length;i++) {
-    if ( (typeof self[attrs[i]] !== 'object' && typeof self[attrs[i]] !== 'function') || 
-          self[attrs[i]] === null
-        ) {
-      safe[attrs[i]] = self[attrs[i]]
-    } else {
-      recurse.push(attrs[i])
-      Object.defineProperty(self[attrs[i]], uuid, {})
-    }
-  }
-
-  for (var i=0;i<recurse.length;i++) {
-    safe[recurse[i]] = getSafe(self[recurse[i]], uuid)
-  }
-  
-  return safe
-}
-
-function toJSON () {
-  return getSafe(this, (((1+Math.random())*0x10000)|0).toString(16))
-}
-
-Request.prototype.toJSON = toJSON
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/mimetypes.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/mimetypes.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/mimetypes.js
deleted file mode 100644
index 59b21b4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/mimetypes.js
+++ /dev/null
@@ -1,152 +0,0 @@
-// from http://github.com/felixge/node-paperboy
-exports.types = {
-  "3gp":"video/3gpp",
-  "aiff":"audio/x-aiff",
-  "arj":"application/x-arj-compressed",
-  "asf":"video/x-ms-asf",
-  "asx":"video/x-ms-asx",
-  "au":"audio/ulaw",
-  "avi":"video/x-msvideo",
-  "bcpio":"application/x-bcpio",
-  "ccad":"application/clariscad",
-  "cod":"application/vnd.rim.cod",
-  "com":"application/x-msdos-program",
-  "cpio":"application/x-cpio",
-  "cpt":"application/mac-compactpro",
-  "csh":"application/x-csh",
-  "css":"text/css",
-  "deb":"application/x-debian-package",
-  "dl":"video/dl",
-  "doc":"application/msword",
-  "drw":"application/drafting",
-  "dvi":"application/x-dvi",
-  "dwg":"application/acad",
-  "dxf":"application/dxf",
-  "dxr":"application/x-director",
-  "etx":"text/x-setext",
-  "ez":"application/andrew-inset",
-  "fli":"video/x-fli",
-  "flv":"video/x-flv",
-  "gif":"image/gif",
-  "gl":"video/gl",
-  "gtar":"application/x-gtar",
-  "gz":"application/x-gzip",
-  "hdf":"application/x-hdf",
-  "hqx":"application/mac-binhex40",
-  "html":"text/html",
-  "ice":"x-conference/x-cooltalk",
-  "ico":"image/x-icon",
-  "ief":"image/ief",
-  "igs":"model/iges",
-  "ips":"application/x-ipscript",
-  "ipx":"application/x-ipix",
-  "jad":"text/vnd.sun.j2me.app-descriptor",
-  "jar":"application/java-archive",
-  "jpeg":"image/jpeg",
-  "jpg":"image/jpeg",
-  "js":"text/javascript",
-  "json":"application/json",
-  "latex":"application/x-latex",
-  "lsp":"application/x-lisp",
-  "lzh":"application/octet-stream",
-  "m":"text/plain",
-  "m3u":"audio/x-mpegurl",
-  "m4v":"video/mp4",
-  "man":"application/x-troff-man",
-  "me":"application/x-troff-me",
-  "midi":"audio/midi",
-  "mif":"application/x-mif",
-  "mime":"www/mime",
-  "mkv":"  video/x-matrosk",
-  "movie":"video/x-sgi-movie",
-  "mp4":"video/mp4",
-  "mp41":"video/mp4",
-  "mp42":"video/mp4",
-  "mpg":"video/mpeg",
-  "mpga":"audio/mpeg",
-  "ms":"application/x-troff-ms",
-  "mustache":"text/plain",
-  "nc":"application/x-netcdf",
-  "oda":"application/oda",
-  "ogm":"application/ogg",
-  "pbm":"image/x-portable-bitmap",
-  "pdf":"application/pdf",
-  "pgm":"image/x-portable-graymap",
-  "pgn":"application/x-chess-pgn",
-  "pgp":"application/pgp",
-  "pm":"application/x-perl",
-  "png":"image/png",
-  "pnm":"image/x-portable-anymap",
-  "ppm":"image/x-portable-pixmap",
-  "ppz":"application/vnd.ms-powerpoint",
-  "pre":"application/x-freelance",
-  "prt":"application/pro_eng",
-  "ps":"application/postscript",
-  "qt":"video/quicktime",
-  "ra":"audio/x-realaudio",
-  "rar":"application/x-rar-compressed",
-  "ras":"image/x-cmu-raster",
-  "rgb":"image/x-rgb",
-  "rm":"audio/x-pn-realaudio",
-  "rpm":"audio/x-pn-realaudio-plugin",
-  "rtf":"text/rtf",
-  "rtx":"text/richtext",
-  "scm":"application/x-lotusscreencam",
-  "set":"application/set",
-  "sgml":"text/sgml",
-  "sh":"application/x-sh",
-  "shar":"application/x-shar",
-  "silo":"model/mesh",
-  "sit":"application/x-stuffit",
-  "skt":"application/x-koan",
-  "smil":"application/smil",
-  "snd":"audio/basic",
-  "sol":"application/solids",
-  "spl":"application/x-futuresplash",
-  "src":"application/x-wais-source",
-  "stl":"application/SLA",
-  "stp":"application/STEP",
-  "sv4cpio":"application/x-sv4cpio",
-  "sv4crc":"application/x-sv4crc",
-  "svg":"image/svg+xml",
-  "swf":"application/x-shockwave-flash",
-  "tar":"application/x-tar",
-  "tcl":"application/x-tcl",
-  "tex":"application/x-tex",
-  "texinfo":"application/x-texinfo",
-  "tgz":"application/x-tar-gz",
-  "tiff":"image/tiff",
-  "tr":"application/x-troff",
-  "tsi":"audio/TSP-audio",
-  "tsp":"application/dsptype",
-  "tsv":"text/tab-separated-values",
-  "unv":"application/i-deas",
-  "ustar":"application/x-ustar",
-  "vcd":"application/x-cdlink",
-  "vda":"application/vda",
-  "vivo":"video/vnd.vivo",
-  "vrm":"x-world/x-vrml",
-  "wav":"audio/x-wav",
-  "wax":"audio/x-ms-wax",
-  "webm":"video/webm",
-  "wma":"audio/x-ms-wma",
-  "wmv":"video/x-ms-wmv",
-  "wmx":"video/x-ms-wmx",
-  "wrl":"model/vrml",
-  "wvx":"video/x-ms-wvx",
-  "xbm":"image/x-xbitmap",
-  "xlw":"application/vnd.ms-excel",
-  "xml":"text/xml",
-  "xpm":"image/x-xpixmap",
-  "xwd":"image/x-xwindowdump",
-  "xyz":"chemical/x-pdb",
-  "zip":"application/zip"
-};
-
-exports.lookup = function(ext, defaultType) {
-  defaultType = defaultType || 'application/octet-stream';
-
-  return (ext in exports.types)
-    ? exports.types[ext]
-    : defaultType;
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/oauth.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/oauth.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/oauth.js
deleted file mode 100644
index ebde3fd..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/oauth.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var crypto = require('crypto')
-  , qs = require('querystring')
-  ;
-
-function sha1 (key, body) {
-  return crypto.createHmac('sha1', key).update(body).digest('base64')
-}
-
-function rfc3986 (str) {
-  return encodeURIComponent(str)
-    .replace(/!/g,'%21')
-    .replace(/\*/g,'%2A')
-    .replace(/\(/g,'%28')
-    .replace(/\)/g,'%29')
-    .replace(/'/g,'%27')
-    ;
-}
-
-function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret, body) {
-  // adapted from https://dev.twitter.com/docs/auth/oauth
-  var base = 
-    (httpMethod || 'GET') + "&" +
-    encodeURIComponent(  base_uri ) + "&" +
-    Object.keys(params).sort().map(function (i) {
-      // big WTF here with the escape + encoding but it's what twitter wants
-      return escape(rfc3986(i)) + "%3D" + escape(rfc3986(params[i]))
-    }).join("%26")
-  var key = encodeURIComponent(consumer_secret) + '&'
-  if (token_secret) key += encodeURIComponent(token_secret)
-  return sha1(key, base)
-}
-
-exports.hmacsign = hmacsign
-exports.rfc3986 = rfc3986
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/package.json b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/package.json
deleted file mode 100644
index c13b2ef..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-  "name": "request",
-  "description": "Simplified HTTP request client.",
-  "tags": [
-    "http",
-    "simple",
-    "util",
-    "utility"
-  ],
-  "version": "2.9.203",
-  "author": {
-    "name": "Mikeal Rogers",
-    "email": "mikeal.rogers@gmail.com"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mikeal/request.git"
-  },
-  "bugs": {
-    "url": "http://github.com/mikeal/request/issues"
-  },
-  "engines": [
-    "node >= 0.3.6"
-  ],
-  "main": "./main",
-  "scripts": {
-    "test": "node tests/run.js"
-  },
-  "readme": "# Request -- Simplified HTTP request method\n\n## Install\n\n<pre>\n  npm install request\n</pre>\n\nOr from source:\n\n<pre>\n  git clone git://github.com/mikeal/request.git \n  cd request\n  npm link\n</pre>\n\n## Super simple to use\n\nRequest is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.\n\n```javascript\nvar request = require('request');\nrequest('http://www.google.com', function (error, response, body) {\n  if (!error && response.statusCode == 200) {\n    console.log(body) // Print the google web page.\n  }\n})\n```\n\n## Streaming\n\nYou can stream any response to a file stream.\n\n```javascript\nrequest('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))\n```\n\nYou can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types, in this case `application/json`, and use the proper content
 -type in the PUT request if one is not already provided in the headers.\n\n```javascript\nfs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))\n```\n\nRequest can also pipe to itself. When doing so the content-type and content-length will be preserved in the PUT headers.\n\n```javascript\nrequest.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))\n```\n\nNow let's get fancy.\n\n```javascript\nhttp.createServer(function (req, resp) {\n  if (req.url === '/doodle.png') {\n    if (req.method === 'PUT') {\n      req.pipe(request.put('http://mysite.com/doodle.png'))\n    } else if (req.method === 'GET' || req.method === 'HEAD') {\n      request.get('http://mysite.com/doodle.png').pipe(resp)\n    } \n  }\n})\n```\n\nYou can also pipe() from a http.ServerRequest instance and to a http.ServerResponse instance. The HTTP method and headers will be sent as well as the entity-body data. Which means that, if you don't really care about secu
 rity, you can do:\n\n```javascript\nhttp.createServer(function (req, resp) {\n  if (req.url === '/doodle.png') {\n    var x = request('http://mysite.com/doodle.png')\n    req.pipe(x)\n    x.pipe(resp)\n  }\n})\n```\n\nAnd since pipe() returns the destination stream in node 0.5.x you can do one line proxying :)\n\n```javascript\nreq.pipe(request('http://mysite.com/doodle.png')).pipe(resp)\n```\n\nAlso, none of this new functionality conflicts with requests previous features, it just expands them.\n\n```javascript\nvar r = request.defaults({'proxy':'http://localproxy.com'})\n\nhttp.createServer(function (req, resp) {\n  if (req.url === '/doodle.png') {\n    r.get('http://google.com/doodle.png').pipe(resp)\n  }\n})\n```\n\nYou can still use intermediate proxies, the requests will still follow HTTP forwards, etc.\n\n## OAuth Signing\n\n```javascript\n// Twitter OAuth\nvar qs = require('querystring')\n  , oauth =\n    { callback: 'http://mysite.com/callback/'\n    , consumer_key: CONSUME
 R_KEY\n    , consumer_secret: CONSUMER_SECRET\n    }\n  , url = 'https://api.twitter.com/oauth/request_token'\n  ;\nrequest.post({url:url, oauth:oauth}, function (e, r, body) {\n  // Assume by some stretch of magic you aquired the verifier\n  var access_token = qs.parse(body)\n    , oauth = \n      { consumer_key: CONSUMER_KEY\n      , consumer_secret: CONSUMER_SECRET\n      , token: access_token.oauth_token\n      , verifier: VERIFIER\n      , token_secret: access_token.oauth_token_secret\n      }\n    , url = 'https://api.twitter.com/oauth/access_token'\n    ;\n  request.post({url:url, oauth:oauth}, function (e, r, body) {\n    var perm_token = qs.parse(body)\n      , oauth = \n        { consumer_key: CONSUMER_KEY\n        , consumer_secret: CONSUMER_SECRET\n        , token: perm_token.oauth_token\n        , token_secret: perm_token.oauth_token_secret\n        }\n      , url = 'https://api.twitter.com/1/users/show.json?'\n      , params = \n        { screen_name: perm_token.screen
 _name\n        , user_id: perm_token.user_id\n        }\n      ;\n    url += qs.stringify(params)\n    request.get({url:url, oauth:oauth, json:true}, function (e, r, user) {\n      console.log(user)\n    })\n  })\n})\n```\n\n\n\n### request(options, callback)\n\nThe first argument can be either a url or an options object. The only required option is uri, all others are optional.\n\n* `uri` || `url` - fully qualified uri or a parsed url object from url.parse()\n* `qs` - object containing querystring values to be appended to the uri\n* `method` - http method, defaults to GET\n* `headers` - http headers, defaults to {}\n* `body` - entity body for POST and PUT requests. Must be buffer or string.\n* `form` - sets `body` but to querystring representation of value and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header.\n* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header.\n* `multipart` - (experimental) array
  of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below.\n* `followRedirect` - follow HTTP 3xx responses as redirects. defaults to true.\n* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects. defaults to false.\n* `maxRedirects` - the maximum number of redirects to follow, defaults to 10.\n* `encoding` - Encoding to be used on `setEncoding` of response data. If set to `null`, the body is returned as a Buffer.\n* `pool` - A hash object containing the agents for these requests. If omitted this request will use the global pool which is set to node's default maxSockets.\n* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.\n* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request\t\n* `proxy` - An HTTP proxy to be used. Support proxy Auth with Basic Auth the same way it's supported with the `url` parameter by em
 bedding the auth info in the uri.\n* `oauth` - Options for OAuth HMAC-SHA1 signing, see documentation above.\n* `strictSSL` - Set to `true` to require that SSL certificates be valid. Note: to use your own certificate authority, you need to specify an agent that was created with that ca as an option.\n* `jar` - Set to `false` if you don't want cookies to be remembered for future use or define your custom cookie jar (see examples section)\n\n\nThe callback argument gets 3 arguments. The first is an error when applicable (usually from the http.Client option not the http.ClientRequest object). The second in an http.ClientResponse object. The third is the response body String or Buffer.\n\n## Convenience methods\n\nThere are also shorthand methods for different HTTP METHODs and some other conveniences.\n\n### request.defaults(options)  \n  \nThis method returns a wrapper around the normal request API that defaults to whatever options you pass in to it.\n\n### request.put\n\nSame as reque
 st() but defaults to `method: \"PUT\"`.\n\n```javascript\nrequest.put(url)\n```\n\n### request.post\n\nSame as request() but defaults to `method: \"POST\"`.\n\n```javascript\nrequest.post(url)\n```\n\n### request.head\n\nSame as request() but defaults to `method: \"HEAD\"`.\n\n```javascript\nrequest.head(url)\n```\n\n### request.del\n\nSame as request() but defaults to `method: \"DELETE\"`.\n\n```javascript\nrequest.del(url)\n```\n\n### request.get\n\nAlias to normal request method for uniformity.\n\n```javascript\nrequest.get(url)\n```\n### request.cookie\n\nFunction that creates a new cookie.\n\n```javascript\nrequest.cookie('cookie_string_here')\n```\n### request.jar\n\nFunction that creates a new cookie jar.\n\n```javascript\nrequest.jar()\n```\n\n\n## Examples:\n\n```javascript\n  var request = require('request')\n    , rand = Math.floor(Math.random()*100000000).toString()\n    ;\n  request(\n    { method: 'PUT'\n    , uri: 'http://mikeal.iriscouch.com/testjs/' + rand\n    , mu
 ltipart: \n      [ { 'content-type': 'application/json'\n        ,  body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})\n        }\n      , { body: 'I am an attachment' }\n      ] \n    }\n  , function (error, response, body) {\n      if(response.statusCode == 201){\n        console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)\n      } else {\n        console.log('error: '+ response.statusCode)\n        console.log(body)\n      }\n    }\n  )\n```\nCookies are enabled by default (so they can be used in subsequent requests). To disable cookies set jar to false (either in defaults or in the options sent).\n\n```javascript\nvar request = request.defaults({jar: false})\nrequest('http://www.google.com', function () {\n  request('http://images.google.com')\n})\n```\n\nIf you to use a custom cookie jar (instead of letting request use its own global cookie jar) you do so by setting the jar defaul
 t or by specifying it as an option:\n\n```javascript\nvar j = request.jar()\nvar request = request.defaults({jar:j})\nrequest('http://www.google.com', function () {\n  request('http://images.google.com')\n})\n```\nOR\n\n```javascript\nvar j = request.jar()\nvar cookie = request.cookie('your_cookie_here')\nj.add(cookie)\nrequest({url: 'http://www.google.com', jar: j}, function () {\n  request('http://images.google.com')\n})\n```\n",
-  "readmeFilename": "README.md",
-  "_id": "request@2.9.203",
-  "_from": "request@2.9.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/googledoodle.png
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/googledoodle.png b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/googledoodle.png
deleted file mode 100644
index f80c9c5..0000000
Binary files a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/googledoodle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/run.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/run.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/run.js
deleted file mode 100644
index f3a30d3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/run.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var spawn = require('child_process').spawn
-  , exitCode = 0
-  ;
-
-var tests = [
-    'test-body.js'
-  , 'test-cookie.js'
-  , 'test-cookiejar.js'
-  , 'test-defaults.js'
-  , 'test-errors.js'
-  , 'test-headers.js'
-  , 'test-httpModule.js'
-  , 'test-https.js'
-  , 'test-https-strict.js'
-  , 'test-oauth.js'
-  , 'test-pipes.js'
-  , 'test-pool.js'
-  , 'test-proxy.js'
-  , 'test-qs.js'
-  , 'test-redirect.js'
-  , 'test-timeout.js'
-  , 'test-toJSON.js'
-  , 'test-tunnel.js'
-] 
-
-var next = function () {
-  if (tests.length === 0) process.exit(exitCode);
-  
-  var file = tests.shift()
-  console.log(file)
-  var proc = spawn('node', [ 'tests/' + file ])
-  proc.stdout.pipe(process.stdout)
-  proc.stderr.pipe(process.stderr)
-  proc.on('exit', function (code) {
-  	exitCode += code || 0
-  	next()
-  })
-}
-next()

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/server.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/server.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/server.js
deleted file mode 100644
index 921f512..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/server.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var fs = require('fs')
-  , http = require('http')
-  , path = require('path')
-  , https = require('https')
-  , events = require('events')
-  , stream = require('stream')
-  , assert = require('assert')
-  ;
-
-exports.createServer =  function (port) {
-  port = port || 6767
-  var s = http.createServer(function (req, resp) {
-    s.emit(req.url, req, resp);
-  })
-  s.port = port
-  s.url = 'http://localhost:'+port
-  return s;
-}
-
-exports.createSSLServer = function(port, opts) {
-  port = port || 16767
-
-  var options = { 'key' : path.join(__dirname, 'ssl', 'test.key')
-                , 'cert': path.join(__dirname, 'ssl', 'test.crt')
-                }
-  if (opts) {
-    for (var i in opts) options[i] = opts[i]
-  }
-
-  for (var i in options) {
-    options[i] = fs.readFileSync(options[i])
-  }
-
-  var s = https.createServer(options, function (req, resp) {
-    s.emit(req.url, req, resp);
-  })
-  s.port = port
-  s.url = 'https://localhost:'+port
-  return s;
-}
-
-exports.createPostStream = function (text) {
-  var postStream = new stream.Stream();
-  postStream.writeable = true;
-  postStream.readable = true;
-  setTimeout(function () {postStream.emit('data', new Buffer(text)); postStream.emit('end')}, 0);
-  return postStream;
-}
-exports.createPostValidator = function (text) {
-  var l = function (req, resp) {
-    var r = '';
-    req.on('data', function (chunk) {r += chunk})
-    req.on('end', function () {
-    if (r !== text) console.log(r, text);
-    assert.equal(r, text)
-    resp.writeHead(200, {'content-type':'text/plain'})
-    resp.write('OK')
-    resp.end()
-    })
-  }
-  return l;
-}
-exports.createGetResponse = function (text, contentType) {
-  var l = function (req, resp) {
-    contentType = contentType || 'text/plain'
-    resp.writeHead(200, {'content-type':contentType})
-    resp.write(text)
-    resp.end()
-  }
-  return l;
-}
-exports.createChunkResponse = function (chunks, contentType) {
-  var l = function (req, resp) {
-    contentType = contentType || 'text/plain'
-    resp.writeHead(200, {'content-type':contentType})
-    chunks.forEach(function (chunk) {
-      resp.write(chunk)
-    })
-    resp.end()
-  }
-  return l;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/squid.conf
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/squid.conf b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/squid.conf
deleted file mode 100644
index 0d4a3b6..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/squid.conf
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# Recommended minimum configuration:
-#
-acl manager proto cache_object
-acl localhost src 127.0.0.1/32 ::1
-acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
-
-# Example rule allowing access from your local networks.
-# Adapt to list your (internal) IP networks from where browsing
-# should be allowed
-acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
-acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
-acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
-acl localnet src fc00::/7       # RFC 4193 local private network range
-acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
-
-acl SSL_ports port 443
-acl Safe_ports port 80		# http
-acl Safe_ports port 21		# ftp
-acl Safe_ports port 443		# https
-acl Safe_ports port 70		# gopher
-acl Safe_ports port 210		# wais
-acl Safe_ports port 1025-65535	# unregistered ports
-acl Safe_ports port 280		# http-mgmt
-acl Safe_ports port 488		# gss-http
-acl Safe_ports port 591		# filemaker
-acl Safe_ports port 777		# multiling http
-acl CONNECT method CONNECT
-
-#
-# Recommended minimum Access Permission configuration:
-#
-# Only allow cachemgr access from localhost
-http_access allow manager localhost
-http_access deny manager
-
-# Deny requests to certain unsafe ports
-http_access deny !Safe_ports
-
-# Deny CONNECT to other than secure SSL ports
-#http_access deny CONNECT !SSL_ports
-
-# We strongly recommend the following be uncommented to protect innocent
-# web applications running on the proxy server who think the only
-# one who can access services on "localhost" is a local user
-#http_access deny to_localhost
-
-#
-# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
-#
-
-# Example rule allowing access from your local networks.
-# Adapt localnet in the ACL section to list your (internal) IP networks
-# from where browsing should be allowed
-http_access allow localnet
-http_access allow localhost
-
-# And finally deny all other access to this proxy
-http_access deny all
-
-# Squid normally listens to port 3128
-http_port 3128
-
-# We recommend you to use at least the following line.
-hierarchy_stoplist cgi-bin ?
-
-# Uncomment and adjust the following to add a disk cache directory.
-#cache_dir ufs /usr/local/var/cache 100 16 256
-
-# Leave coredumps in the first cache dir
-coredump_dir /usr/local/var/cache
-
-# Add any of your own refresh_pattern entries above these.
-refresh_pattern ^ftp:		1440	20%	10080
-refresh_pattern ^gopher:	1440	0%	1440
-refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
-refresh_pattern .		0	20%	4320

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.cnf
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.cnf b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.cnf
deleted file mode 100644
index 425a889..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.cnf
+++ /dev/null
@@ -1,20 +0,0 @@
-[ req ]
-default_bits           = 1024
-days                   = 3650
-distinguished_name     = req_distinguished_name
-attributes             = req_attributes
-prompt                 = no
-output_password        = password
-
-[ req_distinguished_name ]
-C                      = US
-ST                     = CA
-L                      = Oakland
-O                      = request
-OU                     = request Certificate Authority
-CN                     = requestCA
-emailAddress           = mikeal@mikealrogers.com
-
-[ req_attributes ]
-challengePassword              = password challenge
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.crl
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.crl b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.crl
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.crt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.crt b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.crt
deleted file mode 100644
index b4524e4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.crt
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICvTCCAiYCCQDn+P/MSbDsWjANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC
-VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1
-ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG
-A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n
-ZXJzLmNvbTAeFw0xMjAzMDEyMjUwNTZaFw0yMjAyMjcyMjUwNTZaMIGiMQswCQYD
-VQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNVBAcTB09ha2xhbmQxEDAOBgNVBAoT
-B3JlcXVlc3QxJjAkBgNVBAsTHXJlcXVlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
-MRIwEAYDVQQDEwlyZXF1ZXN0Q0ExJjAkBgkqhkiG9w0BCQEWF21pa2VhbEBtaWtl
-YWxyb2dlcnMuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7t9pQUAK4
-5XJYTI6NrF0n3G2HZsfN+rPYSVzzL8SuVyb1tHXos+vbPm3NKI4E8X1yVAXU8CjJ
-5SqXnp4DAypAhaseho81cbhk7LXUhFz78OvAa+OD+xTAEAnNQ8tGUr4VGyplEjfD
-xsBVuqV2j8GPNTftr+drOCFlqfAgMrBn4wIDAQABMA0GCSqGSIb3DQEBBQUAA4GB
-ADVdTlVAL45R+PACNS7Gs4o81CwSclukBu4FJbxrkd4xGQmurgfRrYYKjtqiopQm
-D7ysRamS3HMN9/VKq2T7r3z1PMHPAy7zM4uoXbbaTKwlnX4j/8pGPn8Ca3qHXYlo
-88L/OOPc6Di7i7qckS3HFbXQCTiULtxWmy97oEuTwrAj
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.csr
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.csr b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.csr
deleted file mode 100644
index e48c56e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.csr
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICBjCCAW8CAQAwgaIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEQMA4GA1UE
-BxMHT2FrbGFuZDEQMA4GA1UEChMHcmVxdWVzdDEmMCQGA1UECxMdcmVxdWVzdCBD
-ZXJ0aWZpY2F0ZSBBdXRob3JpdHkxEjAQBgNVBAMTCXJlcXVlc3RDQTEmMCQGCSqG
-SIb3DQEJARYXbWlrZWFsQG1pa2VhbHJvZ2Vycy5jb20wgZ8wDQYJKoZIhvcNAQEB
-BQADgY0AMIGJAoGBALu32lBQArjlclhMjo2sXSfcbYdmx836s9hJXPMvxK5XJvW0
-deiz69s+bc0ojgTxfXJUBdTwKMnlKpeengMDKkCFqx6GjzVxuGTstdSEXPvw68Br
-44P7FMAQCc1Dy0ZSvhUbKmUSN8PGwFW6pXaPwY81N+2v52s4IWWp8CAysGfjAgMB
-AAGgIzAhBgkqhkiG9w0BCQcxFBMScGFzc3dvcmQgY2hhbGxlbmdlMA0GCSqGSIb3
-DQEBBQUAA4GBAGJO7grHeVHXetjHEK8urIxdnvfB2qeZeObz4GPKIkqUurjr0rfj
-bA3EK1kDMR5aeQWR8RunixdM16Q6Ry0lEdLVWkdSwRN9dmirIHT9cypqnD/FYOia
-SdezZ0lUzXgmJIwRYRwB1KSMMocIf52ll/xC2bEGg7/ZAEuAyAgcZV3X
------END CERTIFICATE REQUEST-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.key
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.key b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.key
deleted file mode 100644
index a53e7f7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.key
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,C8B5887048377F02
-
-nyD5ZH0Wup2uWsDvurq5mKDaDrf8lvNn9w0SH/ZkVnfR1/bkwqrFriqJWvZNUG+q
-nS0iBYczsWLJnbub9a1zLOTENWUKVD5uqbC3aGHhnoUTNSa27DONgP8gHOn6JgR+
-GAKo01HCSTiVT4LjkwN337QKHnMP2fTzg+IoC/CigvMcq09hRLwU1/guq0GJKGwH
-gTxYNuYmQC4Tjh8vdS4liF+Ve/P3qPR2CehZrIOkDT8PHJBGQJRo4xGUIB7Tpk38
-VCk+UZ0JCS2coY8VkY/9tqFJp/ZnnQQVmaNbdRqg7ECKL+bXnNo7yjzmazPZmPe3
-/ShbE0+CTt7LrjCaQAxWbeDzqfo1lQfgN1LulTm8MCXpQaJpv7v1VhIhQ7afjMYb
-4thW/ypHPiYS2YJCAkAVlua9Oxzzh1qJoh8Df19iHtpd79Q77X/qf+1JvITlMu0U
-gi7yEatmQcmYNws1mtTC1q2DXrO90c+NZ0LK/Alse6NRL/xiUdjug2iHeTf/idOR
-Gg/5dSZbnnlj1E5zjSMDkzg6EHAFmHV4jYGSAFLEQgp4V3ZhMVoWZrvvSHgKV/Qh
-FqrAK4INr1G2+/QTd09AIRzfy3/j6yD4A9iNaOsEf9Ua7Qh6RcALRCAZTWR5QtEf
-dX+iSNJ4E85qXs0PqwkMDkoaxIJ+tmIRJY7y8oeylV8cfGAi8Soubt/i3SlR8IHC
-uDMas/2OnwafK3N7ODeE1i7r7wkzQkSHaEz0TrF8XRnP25jAICCSLiMdAAjKfxVb
-EvzsFSuAy3Jt6bU3hSLY9o4YVYKE+68ITMv9yNjvTsEiW+T+IbN34w==
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.srl
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.srl b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.srl
deleted file mode 100644
index 17128db..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/ca.srl
+++ /dev/null
@@ -1 +0,0 @@
-ADF62016AA40C9C3

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.cnf
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.cnf b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.cnf
deleted file mode 100644
index cd1fd1e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.cnf
+++ /dev/null
@@ -1,19 +0,0 @@
-[ req ]
-default_bits           = 1024
-days                   = 3650
-distinguished_name     = req_distinguished_name
-attributes             = req_attributes
-prompt                 = no
-
-[ req_distinguished_name ]
-C                      = US
-ST                     = CA
-L                      = Oakland
-O                      = request
-OU                     = testing
-CN                     = testing.request.mikealrogers.com
-emailAddress           = mikeal@mikealrogers.com
-
-[ req_attributes ]
-challengePassword              = password challenge
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.crt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.crt b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.crt
deleted file mode 100644
index efe96ce..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.crt
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICejCCAeMCCQCt9iAWqkDJwzANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC
-VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1
-ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG
-A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n
-ZXJzLmNvbTAeFw0xMjAzMDEyMjUwNTZaFw0yMjAyMjcyMjUwNTZaMIGjMQswCQYD
-VQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNVBAcTB09ha2xhbmQxEDAOBgNVBAoT
-B3JlcXVlc3QxEDAOBgNVBAsTB3Rlc3RpbmcxKTAnBgNVBAMTIHRlc3RpbmcucmVx
-dWVzdC5taWtlYWxyb2dlcnMuY29tMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlr
-ZWFscm9nZXJzLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDgVl0jMumvOpmM
-20W5v9yhGgZj8hPhEQF/N7yCBVBn/rWGYm70IHC8T/pR5c0LkWc5gdnCJEvKWQjh
-DBKxZD8FAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEABShRkNgFbgs4vUWW9R9deNJj
-7HJoiTmvkmoOC7QzcYkjdgHbOxsSq3rBnwxsVjY9PAtPwBn0GRspOeG7KzKRgySB
-kb22LyrCFKbEOfKO/+CJc80ioK9zEPVjGsFMyAB+ftYRqM+s/4cQlTg/m89l01wC
-yapjN3RxZbInGhWR+jA=
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.csr
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.csr b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.csr
deleted file mode 100644
index a8e7595..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.csr
+++ /dev/null
@@ -1,11 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIIBgjCCASwCAQAwgaMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEQMA4GA1UE
-BxMHT2FrbGFuZDEQMA4GA1UEChMHcmVxdWVzdDEQMA4GA1UECxMHdGVzdGluZzEp
-MCcGA1UEAxMgdGVzdGluZy5yZXF1ZXN0Lm1pa2VhbHJvZ2Vycy5jb20xJjAkBgkq
-hkiG9w0BCQEWF21pa2VhbEBtaWtlYWxyb2dlcnMuY29tMFwwDQYJKoZIhvcNAQEB
-BQADSwAwSAJBAOBWXSMy6a86mYzbRbm/3KEaBmPyE+ERAX83vIIFUGf+tYZibvQg
-cLxP+lHlzQuRZzmB2cIkS8pZCOEMErFkPwUCAwEAAaAjMCEGCSqGSIb3DQEJBzEU
-ExJwYXNzd29yZCBjaGFsbGVuZ2UwDQYJKoZIhvcNAQEFBQADQQBD3E5WekQzCEJw
-7yOcqvtPYIxGaX8gRKkYfLPoj3pm3GF5SGqtJKhylKfi89szHXgktnQgzff9FN+A
-HidVJ/3u
------END CERTIFICATE REQUEST-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.js
deleted file mode 100644
index 05e21c1..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var fs = require("fs")
-var https = require("https")
-var options = { key: fs.readFileSync("./server.key")
-              , cert: fs.readFileSync("./server.crt") }
-
-var server = https.createServer(options, function (req, res) {
-  res.writeHead(200)
-  res.end()
-  server.close()
-})
-server.listen(1337)
-
-var ca = fs.readFileSync("./ca.crt")
-var agent = new https.Agent({ host: "localhost", port: 1337, ca: ca })
-
-https.request({ host: "localhost"
-              , method: "HEAD"
-              , port: 1337
-              , headers: { host: "testing.request.mikealrogers.com" }
-              , agent: agent
-              , ca: [ ca ]
-              , path: "/" }, function (res) {
-  if (res.client.authorized) {
-    console.log("node test: OK")
-  } else {
-    throw new Error(res.client.authorizationError)
-  }
-}).end()

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.key
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.key b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.key
deleted file mode 100644
index 72d8698..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/ca/server.key
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIBOwIBAAJBAOBWXSMy6a86mYzbRbm/3KEaBmPyE+ERAX83vIIFUGf+tYZibvQg
-cLxP+lHlzQuRZzmB2cIkS8pZCOEMErFkPwUCAwEAAQJAK+r8ZM2sze8s7FRo/ApB
-iRBtO9fCaIdJwbwJnXKo4RKwZDt1l2mm+fzZ+/QaQNjY1oTROkIIXmnwRvZWfYlW
-gQIhAPKYsG+YSBN9o8Sdp1DMyZ/rUifKX3OE6q9tINkgajDVAiEA7Ltqh01+cnt0
-JEnud/8HHcuehUBLMofeg0G+gCnSbXECIQCqDvkXsWNNLnS/3lgsnvH0Baz4sbeJ
-rjIpuVEeg8eM5QIgbu0+9JmOV6ybdmmiMV4yAncoF35R/iKGVHDZCAsQzDECIQDZ
-0jGz22tlo5YMcYSqrdD3U4sds1pwiAaWFRbCunoUJw==
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/npm-ca.crt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/npm-ca.crt b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/npm-ca.crt
deleted file mode 100644
index fde2fe9..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/npm-ca.crt
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC
-VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x
-IjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w
-bUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y
-MTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV
-BAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj
-YXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA
-aXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE
-OgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz
-Gn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl
-y0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC
-l7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv
-yNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl
-ZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.crt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.crt b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.crt
deleted file mode 100644
index b357f86..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.crt
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICQzCCAawCCQCO/XWtRFck1jANBgkqhkiG9w0BAQUFADBmMQswCQYDVQQGEwJU
-SDEQMA4GA1UECBMHQmFuZ2tvazEOMAwGA1UEBxMFU2lsb20xGzAZBgNVBAoTElRo
-ZSBSZXF1ZXN0IE1vZHVsZTEYMBYGA1UEAxMPcmVxdWVzdC5leGFtcGxlMB4XDTEx
-MTIwMzAyMjkyM1oXDTIxMTEzMDAyMjkyM1owZjELMAkGA1UEBhMCVEgxEDAOBgNV
-BAgTB0Jhbmdrb2sxDjAMBgNVBAcTBVNpbG9tMRswGQYDVQQKExJUaGUgUmVxdWVz
-dCBNb2R1bGUxGDAWBgNVBAMTD3JlcXVlc3QuZXhhbXBsZTCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEAwmctddZqlA48+NXs0yOy92DijcQV1jf87zMiYAIlNUto
-wghVbTWgJU5r0pdKrD16AptnWJTzKanhItEX8XCCPgsNkq1afgTtJP7rNkwu3xcj
-eIMkhJg/ay4ZnkbnhYdsii5VTU5prix6AqWRAhbkBgoA+iVyHyof8wvZyKBoFTMC
-AwEAATANBgkqhkiG9w0BAQUFAAOBgQB6BybMJbpeiABgihDfEVBcAjDoQ8gUMgwV
-l4NulugfKTDmArqnR9aPd4ET5jX5dkMP4bwCHYsvrcYDeWEQy7x5WWuylOdKhua4
-L4cEi2uDCjqEErIG3cc1MCOk6Cl6Ld6tkIzQSf953qfdEACRytOeUqLNQcrXrqeE
-c7U8F6MWLQ==
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.key
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.key b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.key
deleted file mode 100644
index b85810d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/ssl/test.key
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQDCZy111mqUDjz41ezTI7L3YOKNxBXWN/zvMyJgAiU1S2jCCFVt
-NaAlTmvSl0qsPXoCm2dYlPMpqeEi0RfxcII+Cw2SrVp+BO0k/us2TC7fFyN4gySE
-mD9rLhmeRueFh2yKLlVNTmmuLHoCpZECFuQGCgD6JXIfKh/zC9nIoGgVMwIDAQAB
-AoGBALXFwfUf8vHTSmGlrdZS2AGFPvEtuvldyoxi9K5u8xmdFCvxnOcLsF2RsTHt
-Mu5QYWhUpNJoG+IGLTPf7RJdj/kNtEs7xXqWy4jR36kt5z5MJzqiK+QIgiO9UFWZ
-fjUb6oeDnTIJA9YFBdYi97MDuL89iU/UK3LkJN3hd4rciSbpAkEA+MCkowF5kSFb
-rkOTBYBXZfiAG78itDXN6DXmqb9XYY+YBh3BiQM28oxCeQYyFy6pk/nstnd4TXk6
-V/ryA2g5NwJBAMgRKTY9KvxJWbESeMEFe2iBIV0c26/72Amgi7ZKUCLukLfD4tLF
-+WSZdmTbbqI1079YtwaiOVfiLm45Q/3B0eUCQAaQ/0eWSGE+Yi8tdXoVszjr4GXb
-G81qBi91DMu6U1It+jNfIba+MPsiHLcZJMVb4/oWBNukN7bD1nhwFWdlnu0CQQCf
-Is9WHkdvz2RxbZDxb8verz/7kXXJQJhx5+rZf7jIYFxqX3yvTNv3wf2jcctJaWlZ
-fVZwB193YSivcgt778xlAkEAprYUz3jczjF5r2hrgbizPzPDR94tM5BTO3ki2v3w
-kbf+j2g7FNAx6kZiVN8XwfLc8xEeUGiPKwtq3ddPDFh17w==
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-body.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-body.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-body.js
deleted file mode 100644
index e3fc75d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-body.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var server = require('./server')
-  , events = require('events')
-  , stream = require('stream')
-  , assert = require('assert')
-  , request = require('../main.js')
-  ;
-
-var s = server.createServer();
-
-var tests =
-  { testGet :
-    { resp : server.createGetResponse("TESTING!")
-    , expectBody: "TESTING!"
-    }
-  , testGetChunkBreak :
-    { resp : server.createChunkResponse(
-      [ new Buffer([239])
-      , new Buffer([163])
-      , new Buffer([191])
-      , new Buffer([206])
-      , new Buffer([169])
-      , new Buffer([226])
-      , new Buffer([152])
-      , new Buffer([131])
-      ])
-    , expectBody: "Ω☃"
-    }
-  , testGetBuffer :
-    { resp : server.createGetResponse(new Buffer("TESTING!"))
-    , encoding: null
-    , expectBody: new Buffer("TESTING!")
-    }
-  , testGetJSON :
-     { resp : server.createGetResponse('{"test":true}', 'application/json')
-     , json : true
-     , expectBody: {"test":true}
-     }
-  , testPutString :
-    { resp : server.createPostValidator("PUTTINGDATA")
-    , method : "PUT"
-    , body : "PUTTINGDATA"
-    }
-  , testPutBuffer :
-    { resp : server.createPostValidator("PUTTINGDATA")
-    , method : "PUT"
-    , body : new Buffer("PUTTINGDATA")
-    }
-  , testPutJSON :
-    { resp : server.createPostValidator(JSON.stringify({foo: 'bar'}))
-    , method: "PUT"
-    , json: {foo: 'bar'}
-    }
-
-  }
-
-s.listen(s.port, function () {
-
-  var counter = 0
-
-  for (i in tests) {
-    (function () {
-      var test = tests[i]
-      s.on('/'+i, test.resp)
-      test.uri = s.url + '/' + i
-      request(test, function (err, resp, body) {
-        if (err) throw err
-        if (test.expectBody) {
-          assert.deepEqual(test.expectBody, body)
-        }
-        counter = counter - 1;
-        if (counter === 0) {
-          console.log(Object.keys(tests).length+" tests passed.")
-          s.close()
-        }
-      })
-      counter++
-    })()
-  }
-})
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookie.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookie.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookie.js
deleted file mode 100644
index 6c6a7a7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookie.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var Cookie = require('../vendor/cookie')
-  , assert = require('assert');
-
-var str = 'Sid="s543qactge.wKE61E01Bs%2BKhzmxrwrnug="; Path=/; httpOnly; Expires=Sat, 04 Dec 2010 23:27:28 GMT';
-var cookie = new Cookie(str);
-
-// test .toString()
-assert.equal(cookie.toString(), str);
-
-// test .path
-assert.equal(cookie.path, '/');
-
-// test .httpOnly
-assert.equal(cookie.httpOnly, true);
-
-// test .name
-assert.equal(cookie.name, 'Sid');
-
-// test .value
-assert.equal(cookie.value, '"s543qactge.wKE61E01Bs%2BKhzmxrwrnug="');
-
-// test .expires
-assert.equal(cookie.expires instanceof Date, true);
-
-// test .path default
-var cookie = new Cookie('foo=bar', { url: 'http://foo.com/bar' });
-assert.equal(cookie.path, '/bar');
-
-console.log('All tests passed');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookiejar.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookiejar.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookiejar.js
deleted file mode 100644
index 76fcd71..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-cookiejar.js
+++ /dev/null
@@ -1,90 +0,0 @@
-var Cookie = require('../vendor/cookie')
-  , Jar = require('../vendor/cookie/jar')
-  , assert = require('assert');
-
-function expires(ms) {
-  return new Date(Date.now() + ms).toUTCString();
-}
-
-// test .get() expiration
-(function() {
-  var jar = new Jar;
-  var cookie = new Cookie('sid=1234; path=/; expires=' + expires(1000));
-  jar.add(cookie);
-  setTimeout(function(){
-    var cookies = jar.get({ url: 'http://foo.com/foo' });
-    assert.equal(cookies.length, 1);
-    assert.equal(cookies[0], cookie);
-    setTimeout(function(){
-      var cookies = jar.get({ url: 'http://foo.com/foo' });
-      assert.equal(cookies.length, 0);
-    }, 1000);
-  }, 5);
-})();
-
-// test .get() path support
-(function() {
-  var jar = new Jar;
-  var a = new Cookie('sid=1234; path=/');
-  var b = new Cookie('sid=1111; path=/foo/bar');
-  var c = new Cookie('sid=2222; path=/');
-  jar.add(a);
-  jar.add(b);
-  jar.add(c);
-
-  // should remove the duplicates
-  assert.equal(jar.cookies.length, 2);
-
-  // same name, same path, latter prevails
-  var cookies = jar.get({ url: 'http://foo.com/' });
-  assert.equal(cookies.length, 1);
-  assert.equal(cookies[0], c);
-
-  // same name, diff path, path specifity prevails, latter prevails
-  var cookies = jar.get({ url: 'http://foo.com/foo/bar' });
-  assert.equal(cookies.length, 1);
-  assert.equal(cookies[0], b);
-
-  var jar = new Jar;
-  var a = new Cookie('sid=1111; path=/foo/bar');
-  var b = new Cookie('sid=1234; path=/');
-  jar.add(a);
-  jar.add(b);
-
-  var cookies = jar.get({ url: 'http://foo.com/foo/bar' });
-  assert.equal(cookies.length, 1);
-  assert.equal(cookies[0], a);
-
-  var cookies = jar.get({ url: 'http://foo.com/' });
-  assert.equal(cookies.length, 1);
-  assert.equal(cookies[0], b);
-
-  var jar = new Jar;
-  var a = new Cookie('sid=1111; path=/foo/bar');
-  var b = new Cookie('sid=3333; path=/foo/bar');
-  var c = new Cookie('pid=3333; path=/foo/bar');
-  var d = new Cookie('sid=2222; path=/foo/');
-  var e = new Cookie('sid=1234; path=/');
-  jar.add(a);
-  jar.add(b);
-  jar.add(c);
-  jar.add(d);
-  jar.add(e);
-
-  var cookies = jar.get({ url: 'http://foo.com/foo/bar' });
-  assert.equal(cookies.length, 2);
-  assert.equal(cookies[0], b);
-  assert.equal(cookies[1], c);
-
-  var cookies = jar.get({ url: 'http://foo.com/foo/' });
-  assert.equal(cookies.length, 1);
-  assert.equal(cookies[0], d);
-
-  var cookies = jar.get({ url: 'http://foo.com/' });
-  assert.equal(cookies.length, 1);
-  assert.equal(cookies[0], e);
-})();
-
-setTimeout(function() {
-  console.log('All tests passed');
-}, 1200);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-defaults.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-defaults.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-defaults.js
deleted file mode 100644
index 6c8b58f..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-defaults.js
+++ /dev/null
@@ -1,68 +0,0 @@
-var server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-  ;
-
-var s = server.createServer();
-
-s.listen(s.port, function () {
-  var counter = 0;
-  s.on('/get', function (req, resp) {
-    assert.equal(req.headers.foo, 'bar');
-    assert.equal(req.method, 'GET')
-    resp.writeHead(200, {'Content-Type': 'text/plain'});
-    resp.end('TESTING!');
-  });
-
-  // test get(string, function)
-  request.defaults({headers:{foo:"bar"}})(s.url + '/get', function (e, r, b){
-    if (e) throw e;
-    assert.deepEqual("TESTING!", b);
-    counter += 1;
-  });
-
-  s.on('/post', function (req, resp) {
-    assert.equal(req.headers.foo, 'bar');
-    assert.equal(req.headers['content-type'], 'application/json');
-    assert.equal(req.method, 'POST')
-    resp.writeHead(200, {'Content-Type': 'application/json'});
-    resp.end(JSON.stringify({foo:'bar'}));
-  });
-
-  // test post(string, object, function)
-  request.defaults({headers:{foo:"bar"}}).post(s.url + '/post', {json: true}, function (e, r, b){
-    if (e) throw e;
-    assert.deepEqual('bar', b.foo);
-    counter += 1;
-  });
-
-  s.on('/del', function (req, resp) {
-    assert.equal(req.headers.foo, 'bar');
-    assert.equal(req.method, 'DELETE')
-    resp.writeHead(200, {'Content-Type': 'application/json'});
-    resp.end(JSON.stringify({foo:'bar'}));
-  });
-
-  // test .del(string, function)
-  request.defaults({headers:{foo:"bar"}, json:true}).del(s.url + '/del', function (e, r, b){
-    if (e) throw e;
-    assert.deepEqual('bar', b.foo);
-    counter += 1;
-  });
-
-  s.on('/head', function (req, resp) {
-    assert.equal(req.headers.foo, 'bar');
-    assert.equal(req.method, 'HEAD')
-    resp.writeHead(200, {'Content-Type': 'text/plain'});
-    resp.end();
-  });
-
-  // test head.(object, function)
-  request.defaults({headers:{foo:"bar"}}).head({uri: s.url + '/head'}, function (e, r, b){
-    if (e) throw e;
-    counter += 1;
-    console.log(counter.toString() + " tests passed.")
-    s.close()
-  });
-
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-errors.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-errors.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-errors.js
deleted file mode 100644
index 1986a59..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-errors.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var server = require('./server')
-  , events = require('events')
-  , assert = require('assert')
-  , request = require('../main.js')
-  ;
-
-var local = 'http://localhost:8888/asdf'
-
-try {
-  request({uri:local, body:{}})
-  assert.fail("Should have throw") 
-} catch(e) {
-  assert.equal(e.message, 'Argument error, options.body.')
-}
-
-try {
-  request({uri:local, multipart: 'foo'})
-  assert.fail("Should have throw")
-} catch(e) {
-  assert.equal(e.message, 'Argument error, options.multipart.')
-}
-
-try {
-  request({uri:local, multipart: [{}]})
-  assert.fail("Should have throw")
-} catch(e) {
-  assert.equal(e.message, 'Body attribute missing in multipart.')
-}
-
-try {
-  request(local, {multipart: [{}]})
-  assert.fail("Should have throw")
-} catch(e) {
-  assert.equal(e.message, 'Body attribute missing in multipart.')
-}
-
-console.log("All tests passed.")

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-headers.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-headers.js b/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-headers.js
deleted file mode 100644
index 31fe3f4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/node_modules/request/tests/test-headers.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var server = require('./server')
-  , assert = require('assert')
-  , request = require('../main.js')
-  , Cookie = require('../vendor/cookie')
-  , Jar = require('../vendor/cookie/jar')
-  , s = server.createServer()
-
-s.listen(s.port, function () {
-  var serverUri = 'http://localhost:' + s.port
-    , numTests = 0
-    , numOutstandingTests = 0
-
-  function createTest(requestObj, serverAssertFn) {
-    var testNumber = numTests;
-    numTests += 1;
-    numOutstandingTests += 1;
-    s.on('/' + testNumber, function (req, res) {
-      serverAssertFn(req, res);
-      res.writeHead(200);
-      res.end();
-    });
-    requestObj.url = serverUri + '/' + testNumber
-    request(requestObj, function (err, res, body) {
-      assert.ok(!err)
-      assert.equal(res.statusCode, 200)
-      numOutstandingTests -= 1
-      if (numOutstandingTests === 0) {
-        console.log(numTests + ' tests passed.')
-        s.close()
-      }
-    })
-  }
-
-  // Issue #125: headers.cookie shouldn't be replaced when a cookie jar isn't specified
-  createTest({headers: {cookie: 'foo=bar'}}, function (req, res) {
-    assert.ok(req.headers.cookie)
-    assert.equal(req.headers.cookie, 'foo=bar')
-  })
-
-  // Issue #125: headers.cookie + cookie jar
-  var jar = new Jar()
-  jar.add(new Cookie('quux=baz'));
-  createTest({jar: jar, headers: {cookie: 'foo=bar'}}, function (req, res) {
-    assert.ok(req.headers.cookie)
-    assert.equal(req.headers.cookie, 'foo=bar; quux=baz')
-  })
-
-  // There should be no cookie header when neither headers.cookie nor a cookie jar is specified
-  createTest({}, function (req, res) {
-    assert.ok(!req.headers.cookie)
-  })
-})


[23/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/1000-stderr.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/1000-stderr.txt b/blackberry10/node_modules/exit/test/fixtures/1000-stderr.txt
deleted file mode 100644
index d637510..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/1000-stderr.txt
+++ /dev/null
@@ -1,1000 +0,0 @@
-stderr 0
-stderr 1
-stderr 2
-stderr 3
-stderr 4
-stderr 5
-stderr 6
-stderr 7
-stderr 8
-stderr 9
-stderr 10
-stderr 11
-stderr 12
-stderr 13
-stderr 14
-stderr 15
-stderr 16
-stderr 17
-stderr 18
-stderr 19
-stderr 20
-stderr 21
-stderr 22
-stderr 23
-stderr 24
-stderr 25
-stderr 26
-stderr 27
-stderr 28
-stderr 29
-stderr 30
-stderr 31
-stderr 32
-stderr 33
-stderr 34
-stderr 35
-stderr 36
-stderr 37
-stderr 38
-stderr 39
-stderr 40
-stderr 41
-stderr 42
-stderr 43
-stderr 44
-stderr 45
-stderr 46
-stderr 47
-stderr 48
-stderr 49
-stderr 50
-stderr 51
-stderr 52
-stderr 53
-stderr 54
-stderr 55
-stderr 56
-stderr 57
-stderr 58
-stderr 59
-stderr 60
-stderr 61
-stderr 62
-stderr 63
-stderr 64
-stderr 65
-stderr 66
-stderr 67
-stderr 68
-stderr 69
-stderr 70
-stderr 71
-stderr 72
-stderr 73
-stderr 74
-stderr 75
-stderr 76
-stderr 77
-stderr 78
-stderr 79
-stderr 80
-stderr 81
-stderr 82
-stderr 83
-stderr 84
-stderr 85
-stderr 86
-stderr 87
-stderr 88
-stderr 89
-stderr 90
-stderr 91
-stderr 92
-stderr 93
-stderr 94
-stderr 95
-stderr 96
-stderr 97
-stderr 98
-stderr 99
-stderr 100
-stderr 101
-stderr 102
-stderr 103
-stderr 104
-stderr 105
-stderr 106
-stderr 107
-stderr 108
-stderr 109
-stderr 110
-stderr 111
-stderr 112
-stderr 113
-stderr 114
-stderr 115
-stderr 116
-stderr 117
-stderr 118
-stderr 119
-stderr 120
-stderr 121
-stderr 122
-stderr 123
-stderr 124
-stderr 125
-stderr 126
-stderr 127
-stderr 128
-stderr 129
-stderr 130
-stderr 131
-stderr 132
-stderr 133
-stderr 134
-stderr 135
-stderr 136
-stderr 137
-stderr 138
-stderr 139
-stderr 140
-stderr 141
-stderr 142
-stderr 143
-stderr 144
-stderr 145
-stderr 146
-stderr 147
-stderr 148
-stderr 149
-stderr 150
-stderr 151
-stderr 152
-stderr 153
-stderr 154
-stderr 155
-stderr 156
-stderr 157
-stderr 158
-stderr 159
-stderr 160
-stderr 161
-stderr 162
-stderr 163
-stderr 164
-stderr 165
-stderr 166
-stderr 167
-stderr 168
-stderr 169
-stderr 170
-stderr 171
-stderr 172
-stderr 173
-stderr 174
-stderr 175
-stderr 176
-stderr 177
-stderr 178
-stderr 179
-stderr 180
-stderr 181
-stderr 182
-stderr 183
-stderr 184
-stderr 185
-stderr 186
-stderr 187
-stderr 188
-stderr 189
-stderr 190
-stderr 191
-stderr 192
-stderr 193
-stderr 194
-stderr 195
-stderr 196
-stderr 197
-stderr 198
-stderr 199
-stderr 200
-stderr 201
-stderr 202
-stderr 203
-stderr 204
-stderr 205
-stderr 206
-stderr 207
-stderr 208
-stderr 209
-stderr 210
-stderr 211
-stderr 212
-stderr 213
-stderr 214
-stderr 215
-stderr 216
-stderr 217
-stderr 218
-stderr 219
-stderr 220
-stderr 221
-stderr 222
-stderr 223
-stderr 224
-stderr 225
-stderr 226
-stderr 227
-stderr 228
-stderr 229
-stderr 230
-stderr 231
-stderr 232
-stderr 233
-stderr 234
-stderr 235
-stderr 236
-stderr 237
-stderr 238
-stderr 239
-stderr 240
-stderr 241
-stderr 242
-stderr 243
-stderr 244
-stderr 245
-stderr 246
-stderr 247
-stderr 248
-stderr 249
-stderr 250
-stderr 251
-stderr 252
-stderr 253
-stderr 254
-stderr 255
-stderr 256
-stderr 257
-stderr 258
-stderr 259
-stderr 260
-stderr 261
-stderr 262
-stderr 263
-stderr 264
-stderr 265
-stderr 266
-stderr 267
-stderr 268
-stderr 269
-stderr 270
-stderr 271
-stderr 272
-stderr 273
-stderr 274
-stderr 275
-stderr 276
-stderr 277
-stderr 278
-stderr 279
-stderr 280
-stderr 281
-stderr 282
-stderr 283
-stderr 284
-stderr 285
-stderr 286
-stderr 287
-stderr 288
-stderr 289
-stderr 290
-stderr 291
-stderr 292
-stderr 293
-stderr 294
-stderr 295
-stderr 296
-stderr 297
-stderr 298
-stderr 299
-stderr 300
-stderr 301
-stderr 302
-stderr 303
-stderr 304
-stderr 305
-stderr 306
-stderr 307
-stderr 308
-stderr 309
-stderr 310
-stderr 311
-stderr 312
-stderr 313
-stderr 314
-stderr 315
-stderr 316
-stderr 317
-stderr 318
-stderr 319
-stderr 320
-stderr 321
-stderr 322
-stderr 323
-stderr 324
-stderr 325
-stderr 326
-stderr 327
-stderr 328
-stderr 329
-stderr 330
-stderr 331
-stderr 332
-stderr 333
-stderr 334
-stderr 335
-stderr 336
-stderr 337
-stderr 338
-stderr 339
-stderr 340
-stderr 341
-stderr 342
-stderr 343
-stderr 344
-stderr 345
-stderr 346
-stderr 347
-stderr 348
-stderr 349
-stderr 350
-stderr 351
-stderr 352
-stderr 353
-stderr 354
-stderr 355
-stderr 356
-stderr 357
-stderr 358
-stderr 359
-stderr 360
-stderr 361
-stderr 362
-stderr 363
-stderr 364
-stderr 365
-stderr 366
-stderr 367
-stderr 368
-stderr 369
-stderr 370
-stderr 371
-stderr 372
-stderr 373
-stderr 374
-stderr 375
-stderr 376
-stderr 377
-stderr 378
-stderr 379
-stderr 380
-stderr 381
-stderr 382
-stderr 383
-stderr 384
-stderr 385
-stderr 386
-stderr 387
-stderr 388
-stderr 389
-stderr 390
-stderr 391
-stderr 392
-stderr 393
-stderr 394
-stderr 395
-stderr 396
-stderr 397
-stderr 398
-stderr 399
-stderr 400
-stderr 401
-stderr 402
-stderr 403
-stderr 404
-stderr 405
-stderr 406
-stderr 407
-stderr 408
-stderr 409
-stderr 410
-stderr 411
-stderr 412
-stderr 413
-stderr 414
-stderr 415
-stderr 416
-stderr 417
-stderr 418
-stderr 419
-stderr 420
-stderr 421
-stderr 422
-stderr 423
-stderr 424
-stderr 425
-stderr 426
-stderr 427
-stderr 428
-stderr 429
-stderr 430
-stderr 431
-stderr 432
-stderr 433
-stderr 434
-stderr 435
-stderr 436
-stderr 437
-stderr 438
-stderr 439
-stderr 440
-stderr 441
-stderr 442
-stderr 443
-stderr 444
-stderr 445
-stderr 446
-stderr 447
-stderr 448
-stderr 449
-stderr 450
-stderr 451
-stderr 452
-stderr 453
-stderr 454
-stderr 455
-stderr 456
-stderr 457
-stderr 458
-stderr 459
-stderr 460
-stderr 461
-stderr 462
-stderr 463
-stderr 464
-stderr 465
-stderr 466
-stderr 467
-stderr 468
-stderr 469
-stderr 470
-stderr 471
-stderr 472
-stderr 473
-stderr 474
-stderr 475
-stderr 476
-stderr 477
-stderr 478
-stderr 479
-stderr 480
-stderr 481
-stderr 482
-stderr 483
-stderr 484
-stderr 485
-stderr 486
-stderr 487
-stderr 488
-stderr 489
-stderr 490
-stderr 491
-stderr 492
-stderr 493
-stderr 494
-stderr 495
-stderr 496
-stderr 497
-stderr 498
-stderr 499
-stderr 500
-stderr 501
-stderr 502
-stderr 503
-stderr 504
-stderr 505
-stderr 506
-stderr 507
-stderr 508
-stderr 509
-stderr 510
-stderr 511
-stderr 512
-stderr 513
-stderr 514
-stderr 515
-stderr 516
-stderr 517
-stderr 518
-stderr 519
-stderr 520
-stderr 521
-stderr 522
-stderr 523
-stderr 524
-stderr 525
-stderr 526
-stderr 527
-stderr 528
-stderr 529
-stderr 530
-stderr 531
-stderr 532
-stderr 533
-stderr 534
-stderr 535
-stderr 536
-stderr 537
-stderr 538
-stderr 539
-stderr 540
-stderr 541
-stderr 542
-stderr 543
-stderr 544
-stderr 545
-stderr 546
-stderr 547
-stderr 548
-stderr 549
-stderr 550
-stderr 551
-stderr 552
-stderr 553
-stderr 554
-stderr 555
-stderr 556
-stderr 557
-stderr 558
-stderr 559
-stderr 560
-stderr 561
-stderr 562
-stderr 563
-stderr 564
-stderr 565
-stderr 566
-stderr 567
-stderr 568
-stderr 569
-stderr 570
-stderr 571
-stderr 572
-stderr 573
-stderr 574
-stderr 575
-stderr 576
-stderr 577
-stderr 578
-stderr 579
-stderr 580
-stderr 581
-stderr 582
-stderr 583
-stderr 584
-stderr 585
-stderr 586
-stderr 587
-stderr 588
-stderr 589
-stderr 590
-stderr 591
-stderr 592
-stderr 593
-stderr 594
-stderr 595
-stderr 596
-stderr 597
-stderr 598
-stderr 599
-stderr 600
-stderr 601
-stderr 602
-stderr 603
-stderr 604
-stderr 605
-stderr 606
-stderr 607
-stderr 608
-stderr 609
-stderr 610
-stderr 611
-stderr 612
-stderr 613
-stderr 614
-stderr 615
-stderr 616
-stderr 617
-stderr 618
-stderr 619
-stderr 620
-stderr 621
-stderr 622
-stderr 623
-stderr 624
-stderr 625
-stderr 626
-stderr 627
-stderr 628
-stderr 629
-stderr 630
-stderr 631
-stderr 632
-stderr 633
-stderr 634
-stderr 635
-stderr 636
-stderr 637
-stderr 638
-stderr 639
-stderr 640
-stderr 641
-stderr 642
-stderr 643
-stderr 644
-stderr 645
-stderr 646
-stderr 647
-stderr 648
-stderr 649
-stderr 650
-stderr 651
-stderr 652
-stderr 653
-stderr 654
-stderr 655
-stderr 656
-stderr 657
-stderr 658
-stderr 659
-stderr 660
-stderr 661
-stderr 662
-stderr 663
-stderr 664
-stderr 665
-stderr 666
-stderr 667
-stderr 668
-stderr 669
-stderr 670
-stderr 671
-stderr 672
-stderr 673
-stderr 674
-stderr 675
-stderr 676
-stderr 677
-stderr 678
-stderr 679
-stderr 680
-stderr 681
-stderr 682
-stderr 683
-stderr 684
-stderr 685
-stderr 686
-stderr 687
-stderr 688
-stderr 689
-stderr 690
-stderr 691
-stderr 692
-stderr 693
-stderr 694
-stderr 695
-stderr 696
-stderr 697
-stderr 698
-stderr 699
-stderr 700
-stderr 701
-stderr 702
-stderr 703
-stderr 704
-stderr 705
-stderr 706
-stderr 707
-stderr 708
-stderr 709
-stderr 710
-stderr 711
-stderr 712
-stderr 713
-stderr 714
-stderr 715
-stderr 716
-stderr 717
-stderr 718
-stderr 719
-stderr 720
-stderr 721
-stderr 722
-stderr 723
-stderr 724
-stderr 725
-stderr 726
-stderr 727
-stderr 728
-stderr 729
-stderr 730
-stderr 731
-stderr 732
-stderr 733
-stderr 734
-stderr 735
-stderr 736
-stderr 737
-stderr 738
-stderr 739
-stderr 740
-stderr 741
-stderr 742
-stderr 743
-stderr 744
-stderr 745
-stderr 746
-stderr 747
-stderr 748
-stderr 749
-stderr 750
-stderr 751
-stderr 752
-stderr 753
-stderr 754
-stderr 755
-stderr 756
-stderr 757
-stderr 758
-stderr 759
-stderr 760
-stderr 761
-stderr 762
-stderr 763
-stderr 764
-stderr 765
-stderr 766
-stderr 767
-stderr 768
-stderr 769
-stderr 770
-stderr 771
-stderr 772
-stderr 773
-stderr 774
-stderr 775
-stderr 776
-stderr 777
-stderr 778
-stderr 779
-stderr 780
-stderr 781
-stderr 782
-stderr 783
-stderr 784
-stderr 785
-stderr 786
-stderr 787
-stderr 788
-stderr 789
-stderr 790
-stderr 791
-stderr 792
-stderr 793
-stderr 794
-stderr 795
-stderr 796
-stderr 797
-stderr 798
-stderr 799
-stderr 800
-stderr 801
-stderr 802
-stderr 803
-stderr 804
-stderr 805
-stderr 806
-stderr 807
-stderr 808
-stderr 809
-stderr 810
-stderr 811
-stderr 812
-stderr 813
-stderr 814
-stderr 815
-stderr 816
-stderr 817
-stderr 818
-stderr 819
-stderr 820
-stderr 821
-stderr 822
-stderr 823
-stderr 824
-stderr 825
-stderr 826
-stderr 827
-stderr 828
-stderr 829
-stderr 830
-stderr 831
-stderr 832
-stderr 833
-stderr 834
-stderr 835
-stderr 836
-stderr 837
-stderr 838
-stderr 839
-stderr 840
-stderr 841
-stderr 842
-stderr 843
-stderr 844
-stderr 845
-stderr 846
-stderr 847
-stderr 848
-stderr 849
-stderr 850
-stderr 851
-stderr 852
-stderr 853
-stderr 854
-stderr 855
-stderr 856
-stderr 857
-stderr 858
-stderr 859
-stderr 860
-stderr 861
-stderr 862
-stderr 863
-stderr 864
-stderr 865
-stderr 866
-stderr 867
-stderr 868
-stderr 869
-stderr 870
-stderr 871
-stderr 872
-stderr 873
-stderr 874
-stderr 875
-stderr 876
-stderr 877
-stderr 878
-stderr 879
-stderr 880
-stderr 881
-stderr 882
-stderr 883
-stderr 884
-stderr 885
-stderr 886
-stderr 887
-stderr 888
-stderr 889
-stderr 890
-stderr 891
-stderr 892
-stderr 893
-stderr 894
-stderr 895
-stderr 896
-stderr 897
-stderr 898
-stderr 899
-stderr 900
-stderr 901
-stderr 902
-stderr 903
-stderr 904
-stderr 905
-stderr 906
-stderr 907
-stderr 908
-stderr 909
-stderr 910
-stderr 911
-stderr 912
-stderr 913
-stderr 914
-stderr 915
-stderr 916
-stderr 917
-stderr 918
-stderr 919
-stderr 920
-stderr 921
-stderr 922
-stderr 923
-stderr 924
-stderr 925
-stderr 926
-stderr 927
-stderr 928
-stderr 929
-stderr 930
-stderr 931
-stderr 932
-stderr 933
-stderr 934
-stderr 935
-stderr 936
-stderr 937
-stderr 938
-stderr 939
-stderr 940
-stderr 941
-stderr 942
-stderr 943
-stderr 944
-stderr 945
-stderr 946
-stderr 947
-stderr 948
-stderr 949
-stderr 950
-stderr 951
-stderr 952
-stderr 953
-stderr 954
-stderr 955
-stderr 956
-stderr 957
-stderr 958
-stderr 959
-stderr 960
-stderr 961
-stderr 962
-stderr 963
-stderr 964
-stderr 965
-stderr 966
-stderr 967
-stderr 968
-stderr 969
-stderr 970
-stderr 971
-stderr 972
-stderr 973
-stderr 974
-stderr 975
-stderr 976
-stderr 977
-stderr 978
-stderr 979
-stderr 980
-stderr 981
-stderr 982
-stderr 983
-stderr 984
-stderr 985
-stderr 986
-stderr 987
-stderr 988
-stderr 989
-stderr 990
-stderr 991
-stderr 992
-stderr 993
-stderr 994
-stderr 995
-stderr 996
-stderr 997
-stderr 998
-stderr 999

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/1000-stdout-stderr.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/1000-stdout-stderr.txt b/blackberry10/node_modules/exit/test/fixtures/1000-stdout-stderr.txt
deleted file mode 100644
index 4fde2b4..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/1000-stdout-stderr.txt
+++ /dev/null
@@ -1,2000 +0,0 @@
-stdout 0
-stderr 0
-stdout 1
-stderr 1
-stdout 2
-stderr 2
-stdout 3
-stderr 3
-stdout 4
-stderr 4
-stdout 5
-stderr 5
-stdout 6
-stderr 6
-stdout 7
-stderr 7
-stdout 8
-stderr 8
-stdout 9
-stderr 9
-stdout 10
-stderr 10
-stdout 11
-stderr 11
-stdout 12
-stderr 12
-stdout 13
-stderr 13
-stdout 14
-stderr 14
-stdout 15
-stderr 15
-stdout 16
-stderr 16
-stdout 17
-stderr 17
-stdout 18
-stderr 18
-stdout 19
-stderr 19
-stdout 20
-stderr 20
-stdout 21
-stderr 21
-stdout 22
-stderr 22
-stdout 23
-stderr 23
-stdout 24
-stderr 24
-stdout 25
-stderr 25
-stdout 26
-stderr 26
-stdout 27
-stderr 27
-stdout 28
-stderr 28
-stdout 29
-stderr 29
-stdout 30
-stderr 30
-stdout 31
-stderr 31
-stdout 32
-stderr 32
-stdout 33
-stderr 33
-stdout 34
-stderr 34
-stdout 35
-stderr 35
-stdout 36
-stderr 36
-stdout 37
-stderr 37
-stdout 38
-stderr 38
-stdout 39
-stderr 39
-stdout 40
-stderr 40
-stdout 41
-stderr 41
-stdout 42
-stderr 42
-stdout 43
-stderr 43
-stdout 44
-stderr 44
-stdout 45
-stderr 45
-stdout 46
-stderr 46
-stdout 47
-stderr 47
-stdout 48
-stderr 48
-stdout 49
-stderr 49
-stdout 50
-stderr 50
-stdout 51
-stderr 51
-stdout 52
-stderr 52
-stdout 53
-stderr 53
-stdout 54
-stderr 54
-stdout 55
-stderr 55
-stdout 56
-stderr 56
-stdout 57
-stderr 57
-stdout 58
-stderr 58
-stdout 59
-stderr 59
-stdout 60
-stderr 60
-stdout 61
-stderr 61
-stdout 62
-stderr 62
-stdout 63
-stderr 63
-stdout 64
-stderr 64
-stdout 65
-stderr 65
-stdout 66
-stderr 66
-stdout 67
-stderr 67
-stdout 68
-stderr 68
-stdout 69
-stderr 69
-stdout 70
-stderr 70
-stdout 71
-stderr 71
-stdout 72
-stderr 72
-stdout 73
-stderr 73
-stdout 74
-stderr 74
-stdout 75
-stderr 75
-stdout 76
-stderr 76
-stdout 77
-stderr 77
-stdout 78
-stderr 78
-stdout 79
-stderr 79
-stdout 80
-stderr 80
-stdout 81
-stderr 81
-stdout 82
-stderr 82
-stdout 83
-stderr 83
-stdout 84
-stderr 84
-stdout 85
-stderr 85
-stdout 86
-stderr 86
-stdout 87
-stderr 87
-stdout 88
-stderr 88
-stdout 89
-stderr 89
-stdout 90
-stderr 90
-stdout 91
-stderr 91
-stdout 92
-stderr 92
-stdout 93
-stderr 93
-stdout 94
-stderr 94
-stdout 95
-stderr 95
-stdout 96
-stderr 96
-stdout 97
-stderr 97
-stdout 98
-stderr 98
-stdout 99
-stderr 99
-stdout 100
-stderr 100
-stdout 101
-stderr 101
-stdout 102
-stderr 102
-stdout 103
-stderr 103
-stdout 104
-stderr 104
-stdout 105
-stderr 105
-stdout 106
-stderr 106
-stdout 107
-stderr 107
-stdout 108
-stderr 108
-stdout 109
-stderr 109
-stdout 110
-stderr 110
-stdout 111
-stderr 111
-stdout 112
-stderr 112
-stdout 113
-stderr 113
-stdout 114
-stderr 114
-stdout 115
-stderr 115
-stdout 116
-stderr 116
-stdout 117
-stderr 117
-stdout 118
-stderr 118
-stdout 119
-stderr 119
-stdout 120
-stderr 120
-stdout 121
-stderr 121
-stdout 122
-stderr 122
-stdout 123
-stderr 123
-stdout 124
-stderr 124
-stdout 125
-stderr 125
-stdout 126
-stderr 126
-stdout 127
-stderr 127
-stdout 128
-stderr 128
-stdout 129
-stderr 129
-stdout 130
-stderr 130
-stdout 131
-stderr 131
-stdout 132
-stderr 132
-stdout 133
-stderr 133
-stdout 134
-stderr 134
-stdout 135
-stderr 135
-stdout 136
-stderr 136
-stdout 137
-stderr 137
-stdout 138
-stderr 138
-stdout 139
-stderr 139
-stdout 140
-stderr 140
-stdout 141
-stderr 141
-stdout 142
-stderr 142
-stdout 143
-stderr 143
-stdout 144
-stderr 144
-stdout 145
-stderr 145
-stdout 146
-stderr 146
-stdout 147
-stderr 147
-stdout 148
-stderr 148
-stdout 149
-stderr 149
-stdout 150
-stderr 150
-stdout 151
-stderr 151
-stdout 152
-stderr 152
-stdout 153
-stderr 153
-stdout 154
-stderr 154
-stdout 155
-stderr 155
-stdout 156
-stderr 156
-stdout 157
-stderr 157
-stdout 158
-stderr 158
-stdout 159
-stderr 159
-stdout 160
-stderr 160
-stdout 161
-stderr 161
-stdout 162
-stderr 162
-stdout 163
-stderr 163
-stdout 164
-stderr 164
-stdout 165
-stderr 165
-stdout 166
-stderr 166
-stdout 167
-stderr 167
-stdout 168
-stderr 168
-stdout 169
-stderr 169
-stdout 170
-stderr 170
-stdout 171
-stderr 171
-stdout 172
-stderr 172
-stdout 173
-stderr 173
-stdout 174
-stderr 174
-stdout 175
-stderr 175
-stdout 176
-stderr 176
-stdout 177
-stderr 177
-stdout 178
-stderr 178
-stdout 179
-stderr 179
-stdout 180
-stderr 180
-stdout 181
-stderr 181
-stdout 182
-stderr 182
-stdout 183
-stderr 183
-stdout 184
-stderr 184
-stdout 185
-stderr 185
-stdout 186
-stderr 186
-stdout 187
-stderr 187
-stdout 188
-stderr 188
-stdout 189
-stderr 189
-stdout 190
-stderr 190
-stdout 191
-stderr 191
-stdout 192
-stderr 192
-stdout 193
-stderr 193
-stdout 194
-stderr 194
-stdout 195
-stderr 195
-stdout 196
-stderr 196
-stdout 197
-stderr 197
-stdout 198
-stderr 198
-stdout 199
-stderr 199
-stdout 200
-stderr 200
-stdout 201
-stderr 201
-stdout 202
-stderr 202
-stdout 203
-stderr 203
-stdout 204
-stderr 204
-stdout 205
-stderr 205
-stdout 206
-stderr 206
-stdout 207
-stderr 207
-stdout 208
-stderr 208
-stdout 209
-stderr 209
-stdout 210
-stderr 210
-stdout 211
-stderr 211
-stdout 212
-stderr 212
-stdout 213
-stderr 213
-stdout 214
-stderr 214
-stdout 215
-stderr 215
-stdout 216
-stderr 216
-stdout 217
-stderr 217
-stdout 218
-stderr 218
-stdout 219
-stderr 219
-stdout 220
-stderr 220
-stdout 221
-stderr 221
-stdout 222
-stderr 222
-stdout 223
-stderr 223
-stdout 224
-stderr 224
-stdout 225
-stderr 225
-stdout 226
-stderr 226
-stdout 227
-stderr 227
-stdout 228
-stderr 228
-stdout 229
-stderr 229
-stdout 230
-stderr 230
-stdout 231
-stderr 231
-stdout 232
-stderr 232
-stdout 233
-stderr 233
-stdout 234
-stderr 234
-stdout 235
-stderr 235
-stdout 236
-stderr 236
-stdout 237
-stderr 237
-stdout 238
-stderr 238
-stdout 239
-stderr 239
-stdout 240
-stderr 240
-stdout 241
-stderr 241
-stdout 242
-stderr 242
-stdout 243
-stderr 243
-stdout 244
-stderr 244
-stdout 245
-stderr 245
-stdout 246
-stderr 246
-stdout 247
-stderr 247
-stdout 248
-stderr 248
-stdout 249
-stderr 249
-stdout 250
-stderr 250
-stdout 251
-stderr 251
-stdout 252
-stderr 252
-stdout 253
-stderr 253
-stdout 254
-stderr 254
-stdout 255
-stderr 255
-stdout 256
-stderr 256
-stdout 257
-stderr 257
-stdout 258
-stderr 258
-stdout 259
-stderr 259
-stdout 260
-stderr 260
-stdout 261
-stderr 261
-stdout 262
-stderr 262
-stdout 263
-stderr 263
-stdout 264
-stderr 264
-stdout 265
-stderr 265
-stdout 266
-stderr 266
-stdout 267
-stderr 267
-stdout 268
-stderr 268
-stdout 269
-stderr 269
-stdout 270
-stderr 270
-stdout 271
-stderr 271
-stdout 272
-stderr 272
-stdout 273
-stderr 273
-stdout 274
-stderr 274
-stdout 275
-stderr 275
-stdout 276
-stderr 276
-stdout 277
-stderr 277
-stdout 278
-stderr 278
-stdout 279
-stderr 279
-stdout 280
-stderr 280
-stdout 281
-stderr 281
-stdout 282
-stderr 282
-stdout 283
-stderr 283
-stdout 284
-stderr 284
-stdout 285
-stderr 285
-stdout 286
-stderr 286
-stdout 287
-stderr 287
-stdout 288
-stderr 288
-stdout 289
-stderr 289
-stdout 290
-stderr 290
-stdout 291
-stderr 291
-stdout 292
-stderr 292
-stdout 293
-stderr 293
-stdout 294
-stderr 294
-stdout 295
-stderr 295
-stdout 296
-stderr 296
-stdout 297
-stderr 297
-stdout 298
-stderr 298
-stdout 299
-stderr 299
-stdout 300
-stderr 300
-stdout 301
-stderr 301
-stdout 302
-stderr 302
-stdout 303
-stderr 303
-stdout 304
-stderr 304
-stdout 305
-stderr 305
-stdout 306
-stderr 306
-stdout 307
-stderr 307
-stdout 308
-stderr 308
-stdout 309
-stderr 309
-stdout 310
-stderr 310
-stdout 311
-stderr 311
-stdout 312
-stderr 312
-stdout 313
-stderr 313
-stdout 314
-stderr 314
-stdout 315
-stderr 315
-stdout 316
-stderr 316
-stdout 317
-stderr 317
-stdout 318
-stderr 318
-stdout 319
-stderr 319
-stdout 320
-stderr 320
-stdout 321
-stderr 321
-stdout 322
-stderr 322
-stdout 323
-stderr 323
-stdout 324
-stderr 324
-stdout 325
-stderr 325
-stdout 326
-stderr 326
-stdout 327
-stderr 327
-stdout 328
-stderr 328
-stdout 329
-stderr 329
-stdout 330
-stderr 330
-stdout 331
-stderr 331
-stdout 332
-stderr 332
-stdout 333
-stderr 333
-stdout 334
-stderr 334
-stdout 335
-stderr 335
-stdout 336
-stderr 336
-stdout 337
-stderr 337
-stdout 338
-stderr 338
-stdout 339
-stderr 339
-stdout 340
-stderr 340
-stdout 341
-stderr 341
-stdout 342
-stderr 342
-stdout 343
-stderr 343
-stdout 344
-stderr 344
-stdout 345
-stderr 345
-stdout 346
-stderr 346
-stdout 347
-stderr 347
-stdout 348
-stderr 348
-stdout 349
-stderr 349
-stdout 350
-stderr 350
-stdout 351
-stderr 351
-stdout 352
-stderr 352
-stdout 353
-stderr 353
-stdout 354
-stderr 354
-stdout 355
-stderr 355
-stdout 356
-stderr 356
-stdout 357
-stderr 357
-stdout 358
-stderr 358
-stdout 359
-stderr 359
-stdout 360
-stderr 360
-stdout 361
-stderr 361
-stdout 362
-stderr 362
-stdout 363
-stderr 363
-stdout 364
-stderr 364
-stdout 365
-stderr 365
-stdout 366
-stderr 366
-stdout 367
-stderr 367
-stdout 368
-stderr 368
-stdout 369
-stderr 369
-stdout 370
-stderr 370
-stdout 371
-stderr 371
-stdout 372
-stderr 372
-stdout 373
-stderr 373
-stdout 374
-stderr 374
-stdout 375
-stderr 375
-stdout 376
-stderr 376
-stdout 377
-stderr 377
-stdout 378
-stderr 378
-stdout 379
-stderr 379
-stdout 380
-stderr 380
-stdout 381
-stderr 381
-stdout 382
-stderr 382
-stdout 383
-stderr 383
-stdout 384
-stderr 384
-stdout 385
-stderr 385
-stdout 386
-stderr 386
-stdout 387
-stderr 387
-stdout 388
-stderr 388
-stdout 389
-stderr 389
-stdout 390
-stderr 390
-stdout 391
-stderr 391
-stdout 392
-stderr 392
-stdout 393
-stderr 393
-stdout 394
-stderr 394
-stdout 395
-stderr 395
-stdout 396
-stderr 396
-stdout 397
-stderr 397
-stdout 398
-stderr 398
-stdout 399
-stderr 399
-stdout 400
-stderr 400
-stdout 401
-stderr 401
-stdout 402
-stderr 402
-stdout 403
-stderr 403
-stdout 404
-stderr 404
-stdout 405
-stderr 405
-stdout 406
-stderr 406
-stdout 407
-stderr 407
-stdout 408
-stderr 408
-stdout 409
-stderr 409
-stdout 410
-stderr 410
-stdout 411
-stderr 411
-stdout 412
-stderr 412
-stdout 413
-stderr 413
-stdout 414
-stderr 414
-stdout 415
-stderr 415
-stdout 416
-stderr 416
-stdout 417
-stderr 417
-stdout 418
-stderr 418
-stdout 419
-stderr 419
-stdout 420
-stderr 420
-stdout 421
-stderr 421
-stdout 422
-stderr 422
-stdout 423
-stderr 423
-stdout 424
-stderr 424
-stdout 425
-stderr 425
-stdout 426
-stderr 426
-stdout 427
-stderr 427
-stdout 428
-stderr 428
-stdout 429
-stderr 429
-stdout 430
-stderr 430
-stdout 431
-stderr 431
-stdout 432
-stderr 432
-stdout 433
-stderr 433
-stdout 434
-stderr 434
-stdout 435
-stderr 435
-stdout 436
-stderr 436
-stdout 437
-stderr 437
-stdout 438
-stderr 438
-stdout 439
-stderr 439
-stdout 440
-stderr 440
-stdout 441
-stderr 441
-stdout 442
-stderr 442
-stdout 443
-stderr 443
-stdout 444
-stderr 444
-stdout 445
-stderr 445
-stdout 446
-stderr 446
-stdout 447
-stderr 447
-stdout 448
-stderr 448
-stdout 449
-stderr 449
-stdout 450
-stderr 450
-stdout 451
-stderr 451
-stdout 452
-stderr 452
-stdout 453
-stderr 453
-stdout 454
-stderr 454
-stdout 455
-stderr 455
-stdout 456
-stderr 456
-stdout 457
-stderr 457
-stdout 458
-stderr 458
-stdout 459
-stderr 459
-stdout 460
-stderr 460
-stdout 461
-stderr 461
-stdout 462
-stderr 462
-stdout 463
-stderr 463
-stdout 464
-stderr 464
-stdout 465
-stderr 465
-stdout 466
-stderr 466
-stdout 467
-stderr 467
-stdout 468
-stderr 468
-stdout 469
-stderr 469
-stdout 470
-stderr 470
-stdout 471
-stderr 471
-stdout 472
-stderr 472
-stdout 473
-stderr 473
-stdout 474
-stderr 474
-stdout 475
-stderr 475
-stdout 476
-stderr 476
-stdout 477
-stderr 477
-stdout 478
-stderr 478
-stdout 479
-stderr 479
-stdout 480
-stderr 480
-stdout 481
-stderr 481
-stdout 482
-stderr 482
-stdout 483
-stderr 483
-stdout 484
-stderr 484
-stdout 485
-stderr 485
-stdout 486
-stderr 486
-stdout 487
-stderr 487
-stdout 488
-stderr 488
-stdout 489
-stderr 489
-stdout 490
-stderr 490
-stdout 491
-stderr 491
-stdout 492
-stderr 492
-stdout 493
-stderr 493
-stdout 494
-stderr 494
-stdout 495
-stderr 495
-stdout 496
-stderr 496
-stdout 497
-stderr 497
-stdout 498
-stderr 498
-stdout 499
-stderr 499
-stdout 500
-stderr 500
-stdout 501
-stderr 501
-stdout 502
-stderr 502
-stdout 503
-stderr 503
-stdout 504
-stderr 504
-stdout 505
-stderr 505
-stdout 506
-stderr 506
-stdout 507
-stderr 507
-stdout 508
-stderr 508
-stdout 509
-stderr 509
-stdout 510
-stderr 510
-stdout 511
-stderr 511
-stdout 512
-stderr 512
-stdout 513
-stderr 513
-stdout 514
-stderr 514
-stdout 515
-stderr 515
-stdout 516
-stderr 516
-stdout 517
-stderr 517
-stdout 518
-stderr 518
-stdout 519
-stderr 519
-stdout 520
-stderr 520
-stdout 521
-stderr 521
-stdout 522
-stderr 522
-stdout 523
-stderr 523
-stdout 524
-stderr 524
-stdout 525
-stderr 525
-stdout 526
-stderr 526
-stdout 527
-stderr 527
-stdout 528
-stderr 528
-stdout 529
-stderr 529
-stdout 530
-stderr 530
-stdout 531
-stderr 531
-stdout 532
-stderr 532
-stdout 533
-stderr 533
-stdout 534
-stderr 534
-stdout 535
-stderr 535
-stdout 536
-stderr 536
-stdout 537
-stderr 537
-stdout 538
-stderr 538
-stdout 539
-stderr 539
-stdout 540
-stderr 540
-stdout 541
-stderr 541
-stdout 542
-stderr 542
-stdout 543
-stderr 543
-stdout 544
-stderr 544
-stdout 545
-stderr 545
-stdout 546
-stderr 546
-stdout 547
-stderr 547
-stdout 548
-stderr 548
-stdout 549
-stderr 549
-stdout 550
-stderr 550
-stdout 551
-stderr 551
-stdout 552
-stderr 552
-stdout 553
-stderr 553
-stdout 554
-stderr 554
-stdout 555
-stderr 555
-stdout 556
-stderr 556
-stdout 557
-stderr 557
-stdout 558
-stderr 558
-stdout 559
-stderr 559
-stdout 560
-stderr 560
-stdout 561
-stderr 561
-stdout 562
-stderr 562
-stdout 563
-stderr 563
-stdout 564
-stderr 564
-stdout 565
-stderr 565
-stdout 566
-stderr 566
-stdout 567
-stderr 567
-stdout 568
-stderr 568
-stdout 569
-stderr 569
-stdout 570
-stderr 570
-stdout 571
-stderr 571
-stdout 572
-stderr 572
-stdout 573
-stderr 573
-stdout 574
-stderr 574
-stdout 575
-stderr 575
-stdout 576
-stderr 576
-stdout 577
-stderr 577
-stdout 578
-stderr 578
-stdout 579
-stderr 579
-stdout 580
-stderr 580
-stdout 581
-stderr 581
-stdout 582
-stderr 582
-stdout 583
-stderr 583
-stdout 584
-stderr 584
-stdout 585
-stderr 585
-stdout 586
-stderr 586
-stdout 587
-stderr 587
-stdout 588
-stderr 588
-stdout 589
-stderr 589
-stdout 590
-stderr 590
-stdout 591
-stderr 591
-stdout 592
-stderr 592
-stdout 593
-stderr 593
-stdout 594
-stderr 594
-stdout 595
-stderr 595
-stdout 596
-stderr 596
-stdout 597
-stderr 597
-stdout 598
-stderr 598
-stdout 599
-stderr 599
-stdout 600
-stderr 600
-stdout 601
-stderr 601
-stdout 602
-stderr 602
-stdout 603
-stderr 603
-stdout 604
-stderr 604
-stdout 605
-stderr 605
-stdout 606
-stderr 606
-stdout 607
-stderr 607
-stdout 608
-stderr 608
-stdout 609
-stderr 609
-stdout 610
-stderr 610
-stdout 611
-stderr 611
-stdout 612
-stderr 612
-stdout 613
-stderr 613
-stdout 614
-stderr 614
-stdout 615
-stderr 615
-stdout 616
-stderr 616
-stdout 617
-stderr 617
-stdout 618
-stderr 618
-stdout 619
-stderr 619
-stdout 620
-stderr 620
-stdout 621
-stderr 621
-stdout 622
-stderr 622
-stdout 623
-stderr 623
-stdout 624
-stderr 624
-stdout 625
-stderr 625
-stdout 626
-stderr 626
-stdout 627
-stderr 627
-stdout 628
-stderr 628
-stdout 629
-stderr 629
-stdout 630
-stderr 630
-stdout 631
-stderr 631
-stdout 632
-stderr 632
-stdout 633
-stderr 633
-stdout 634
-stderr 634
-stdout 635
-stderr 635
-stdout 636
-stderr 636
-stdout 637
-stderr 637
-stdout 638
-stderr 638
-stdout 639
-stderr 639
-stdout 640
-stderr 640
-stdout 641
-stderr 641
-stdout 642
-stderr 642
-stdout 643
-stderr 643
-stdout 644
-stderr 644
-stdout 645
-stderr 645
-stdout 646
-stderr 646
-stdout 647
-stderr 647
-stdout 648
-stderr 648
-stdout 649
-stderr 649
-stdout 650
-stderr 650
-stdout 651
-stderr 651
-stdout 652
-stderr 652
-stdout 653
-stderr 653
-stdout 654
-stderr 654
-stdout 655
-stderr 655
-stdout 656
-stderr 656
-stdout 657
-stderr 657
-stdout 658
-stderr 658
-stdout 659
-stderr 659
-stdout 660
-stderr 660
-stdout 661
-stderr 661
-stdout 662
-stderr 662
-stdout 663
-stderr 663
-stdout 664
-stderr 664
-stdout 665
-stderr 665
-stdout 666
-stderr 666
-stdout 667
-stderr 667
-stdout 668
-stderr 668
-stdout 669
-stderr 669
-stdout 670
-stderr 670
-stdout 671
-stderr 671
-stdout 672
-stderr 672
-stdout 673
-stderr 673
-stdout 674
-stderr 674
-stdout 675
-stderr 675
-stdout 676
-stderr 676
-stdout 677
-stderr 677
-stdout 678
-stderr 678
-stdout 679
-stderr 679
-stdout 680
-stderr 680
-stdout 681
-stderr 681
-stdout 682
-stderr 682
-stdout 683
-stderr 683
-stdout 684
-stderr 684
-stdout 685
-stderr 685
-stdout 686
-stderr 686
-stdout 687
-stderr 687
-stdout 688
-stderr 688
-stdout 689
-stderr 689
-stdout 690
-stderr 690
-stdout 691
-stderr 691
-stdout 692
-stderr 692
-stdout 693
-stderr 693
-stdout 694
-stderr 694
-stdout 695
-stderr 695
-stdout 696
-stderr 696
-stdout 697
-stderr 697
-stdout 698
-stderr 698
-stdout 699
-stderr 699
-stdout 700
-stderr 700
-stdout 701
-stderr 701
-stdout 702
-stderr 702
-stdout 703
-stderr 703
-stdout 704
-stderr 704
-stdout 705
-stderr 705
-stdout 706
-stderr 706
-stdout 707
-stderr 707
-stdout 708
-stderr 708
-stdout 709
-stderr 709
-stdout 710
-stderr 710
-stdout 711
-stderr 711
-stdout 712
-stderr 712
-stdout 713
-stderr 713
-stdout 714
-stderr 714
-stdout 715
-stderr 715
-stdout 716
-stderr 716
-stdout 717
-stderr 717
-stdout 718
-stderr 718
-stdout 719
-stderr 719
-stdout 720
-stderr 720
-stdout 721
-stderr 721
-stdout 722
-stderr 722
-stdout 723
-stderr 723
-stdout 724
-stderr 724
-stdout 725
-stderr 725
-stdout 726
-stderr 726
-stdout 727
-stderr 727
-stdout 728
-stderr 728
-stdout 729
-stderr 729
-stdout 730
-stderr 730
-stdout 731
-stderr 731
-stdout 732
-stderr 732
-stdout 733
-stderr 733
-stdout 734
-stderr 734
-stdout 735
-stderr 735
-stdout 736
-stderr 736
-stdout 737
-stderr 737
-stdout 738
-stderr 738
-stdout 739
-stderr 739
-stdout 740
-stderr 740
-stdout 741
-stderr 741
-stdout 742
-stderr 742
-stdout 743
-stderr 743
-stdout 744
-stderr 744
-stdout 745
-stderr 745
-stdout 746
-stderr 746
-stdout 747
-stderr 747
-stdout 748
-stderr 748
-stdout 749
-stderr 749
-stdout 750
-stderr 750
-stdout 751
-stderr 751
-stdout 752
-stderr 752
-stdout 753
-stderr 753
-stdout 754
-stderr 754
-stdout 755
-stderr 755
-stdout 756
-stderr 756
-stdout 757
-stderr 757
-stdout 758
-stderr 758
-stdout 759
-stderr 759
-stdout 760
-stderr 760
-stdout 761
-stderr 761
-stdout 762
-stderr 762
-stdout 763
-stderr 763
-stdout 764
-stderr 764
-stdout 765
-stderr 765
-stdout 766
-stderr 766
-stdout 767
-stderr 767
-stdout 768
-stderr 768
-stdout 769
-stderr 769
-stdout 770
-stderr 770
-stdout 771
-stderr 771
-stdout 772
-stderr 772
-stdout 773
-stderr 773
-stdout 774
-stderr 774
-stdout 775
-stderr 775
-stdout 776
-stderr 776
-stdout 777
-stderr 777
-stdout 778
-stderr 778
-stdout 779
-stderr 779
-stdout 780
-stderr 780
-stdout 781
-stderr 781
-stdout 782
-stderr 782
-stdout 783
-stderr 783
-stdout 784
-stderr 784
-stdout 785
-stderr 785
-stdout 786
-stderr 786
-stdout 787
-stderr 787
-stdout 788
-stderr 788
-stdout 789
-stderr 789
-stdout 790
-stderr 790
-stdout 791
-stderr 791
-stdout 792
-stderr 792
-stdout 793
-stderr 793
-stdout 794
-stderr 794
-stdout 795
-stderr 795
-stdout 796
-stderr 796
-stdout 797
-stderr 797
-stdout 798
-stderr 798
-stdout 799
-stderr 799
-stdout 800
-stderr 800
-stdout 801
-stderr 801
-stdout 802
-stderr 802
-stdout 803
-stderr 803
-stdout 804
-stderr 804
-stdout 805
-stderr 805
-stdout 806
-stderr 806
-stdout 807
-stderr 807
-stdout 808
-stderr 808
-stdout 809
-stderr 809
-stdout 810
-stderr 810
-stdout 811
-stderr 811
-stdout 812
-stderr 812
-stdout 813
-stderr 813
-stdout 814
-stderr 814
-stdout 815
-stderr 815
-stdout 816
-stderr 816
-stdout 817
-stderr 817
-stdout 818
-stderr 818
-stdout 819
-stderr 819
-stdout 820
-stderr 820
-stdout 821
-stderr 821
-stdout 822
-stderr 822
-stdout 823
-stderr 823
-stdout 824
-stderr 824
-stdout 825
-stderr 825
-stdout 826
-stderr 826
-stdout 827
-stderr 827
-stdout 828
-stderr 828
-stdout 829
-stderr 829
-stdout 830
-stderr 830
-stdout 831
-stderr 831
-stdout 832
-stderr 832
-stdout 833
-stderr 833
-stdout 834
-stderr 834
-stdout 835
-stderr 835
-stdout 836
-stderr 836
-stdout 837
-stderr 837
-stdout 838
-stderr 838
-stdout 839
-stderr 839
-stdout 840
-stderr 840
-stdout 841
-stderr 841
-stdout 842
-stderr 842
-stdout 843
-stderr 843
-stdout 844
-stderr 844
-stdout 845
-stderr 845
-stdout 846
-stderr 846
-stdout 847
-stderr 847
-stdout 848
-stderr 848
-stdout 849
-stderr 849
-stdout 850
-stderr 850
-stdout 851
-stderr 851
-stdout 852
-stderr 852
-stdout 853
-stderr 853
-stdout 854
-stderr 854
-stdout 855
-stderr 855
-stdout 856
-stderr 856
-stdout 857
-stderr 857
-stdout 858
-stderr 858
-stdout 859
-stderr 859
-stdout 860
-stderr 860
-stdout 861
-stderr 861
-stdout 862
-stderr 862
-stdout 863
-stderr 863
-stdout 864
-stderr 864
-stdout 865
-stderr 865
-stdout 866
-stderr 866
-stdout 867
-stderr 867
-stdout 868
-stderr 868
-stdout 869
-stderr 869
-stdout 870
-stderr 870
-stdout 871
-stderr 871
-stdout 872
-stderr 872
-stdout 873
-stderr 873
-stdout 874
-stderr 874
-stdout 875
-stderr 875
-stdout 876
-stderr 876
-stdout 877
-stderr 877
-stdout 878
-stderr 878
-stdout 879
-stderr 879
-stdout 880
-stderr 880
-stdout 881
-stderr 881
-stdout 882
-stderr 882
-stdout 883
-stderr 883
-stdout 884
-stderr 884
-stdout 885
-stderr 885
-stdout 886
-stderr 886
-stdout 887
-stderr 887
-stdout 888
-stderr 888
-stdout 889
-stderr 889
-stdout 890
-stderr 890
-stdout 891
-stderr 891
-stdout 892
-stderr 892
-stdout 893
-stderr 893
-stdout 894
-stderr 894
-stdout 895
-stderr 895
-stdout 896
-stderr 896
-stdout 897
-stderr 897
-stdout 898
-stderr 898
-stdout 899
-stderr 899
-stdout 900
-stderr 900
-stdout 901
-stderr 901
-stdout 902
-stderr 902
-stdout 903
-stderr 903
-stdout 904
-stderr 904
-stdout 905
-stderr 905
-stdout 906
-stderr 906
-stdout 907
-stderr 907
-stdout 908
-stderr 908
-stdout 909
-stderr 909
-stdout 910
-stderr 910
-stdout 911
-stderr 911
-stdout 912
-stderr 912
-stdout 913
-stderr 913
-stdout 914
-stderr 914
-stdout 915
-stderr 915
-stdout 916
-stderr 916
-stdout 917
-stderr 917
-stdout 918
-stderr 918
-stdout 919
-stderr 919
-stdout 920
-stderr 920
-stdout 921
-stderr 921
-stdout 922
-stderr 922
-stdout 923
-stderr 923
-stdout 924
-stderr 924
-stdout 925
-stderr 925
-stdout 926
-stderr 926
-stdout 927
-stderr 927
-stdout 928
-stderr 928
-stdout 929
-stderr 929
-stdout 930
-stderr 930
-stdout 931
-stderr 931
-stdout 932
-stderr 932
-stdout 933
-stderr 933
-stdout 934
-stderr 934
-stdout 935
-stderr 935
-stdout 936
-stderr 936
-stdout 937
-stderr 937
-stdout 938
-stderr 938
-stdout 939
-stderr 939
-stdout 940
-stderr 940
-stdout 941
-stderr 941
-stdout 942
-stderr 942
-stdout 943
-stderr 943
-stdout 944
-stderr 944
-stdout 945
-stderr 945
-stdout 946
-stderr 946
-stdout 947
-stderr 947
-stdout 948
-stderr 948
-stdout 949
-stderr 949
-stdout 950
-stderr 950
-stdout 951
-stderr 951
-stdout 952
-stderr 952
-stdout 953
-stderr 953
-stdout 954
-stderr 954
-stdout 955
-stderr 955
-stdout 956
-stderr 956
-stdout 957
-stderr 957
-stdout 958
-stderr 958
-stdout 959
-stderr 959
-stdout 960
-stderr 960
-stdout 961
-stderr 961
-stdout 962
-stderr 962
-stdout 963
-stderr 963
-stdout 964
-stderr 964
-stdout 965
-stderr 965
-stdout 966
-stderr 966
-stdout 967
-stderr 967
-stdout 968
-stderr 968
-stdout 969
-stderr 969
-stdout 970
-stderr 970
-stdout 971
-stderr 971
-stdout 972
-stderr 972
-stdout 973
-stderr 973
-stdout 974
-stderr 974
-stdout 975
-stderr 975
-stdout 976
-stderr 976
-stdout 977
-stderr 977
-stdout 978
-stderr 978
-stdout 979
-stderr 979
-stdout 980
-stderr 980
-stdout 981
-stderr 981
-stdout 982
-stderr 982
-stdout 983
-stderr 983
-stdout 984
-stderr 984
-stdout 985
-stderr 985
-stdout 986
-stderr 986
-stdout 987
-stderr 987
-stdout 988
-stderr 988
-stdout 989
-stderr 989
-stdout 990
-stderr 990
-stdout 991
-stderr 991
-stdout 992
-stderr 992
-stdout 993
-stderr 993
-stdout 994
-stderr 994
-stdout 995
-stderr 995
-stdout 996
-stderr 996
-stdout 997
-stderr 997
-stdout 998
-stderr 998
-stdout 999
-stderr 999

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/1000-stdout.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/1000-stdout.txt b/blackberry10/node_modules/exit/test/fixtures/1000-stdout.txt
deleted file mode 100644
index d3649d0..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/1000-stdout.txt
+++ /dev/null
@@ -1,1000 +0,0 @@
-stdout 0
-stdout 1
-stdout 2
-stdout 3
-stdout 4
-stdout 5
-stdout 6
-stdout 7
-stdout 8
-stdout 9
-stdout 10
-stdout 11
-stdout 12
-stdout 13
-stdout 14
-stdout 15
-stdout 16
-stdout 17
-stdout 18
-stdout 19
-stdout 20
-stdout 21
-stdout 22
-stdout 23
-stdout 24
-stdout 25
-stdout 26
-stdout 27
-stdout 28
-stdout 29
-stdout 30
-stdout 31
-stdout 32
-stdout 33
-stdout 34
-stdout 35
-stdout 36
-stdout 37
-stdout 38
-stdout 39
-stdout 40
-stdout 41
-stdout 42
-stdout 43
-stdout 44
-stdout 45
-stdout 46
-stdout 47
-stdout 48
-stdout 49
-stdout 50
-stdout 51
-stdout 52
-stdout 53
-stdout 54
-stdout 55
-stdout 56
-stdout 57
-stdout 58
-stdout 59
-stdout 60
-stdout 61
-stdout 62
-stdout 63
-stdout 64
-stdout 65
-stdout 66
-stdout 67
-stdout 68
-stdout 69
-stdout 70
-stdout 71
-stdout 72
-stdout 73
-stdout 74
-stdout 75
-stdout 76
-stdout 77
-stdout 78
-stdout 79
-stdout 80
-stdout 81
-stdout 82
-stdout 83
-stdout 84
-stdout 85
-stdout 86
-stdout 87
-stdout 88
-stdout 89
-stdout 90
-stdout 91
-stdout 92
-stdout 93
-stdout 94
-stdout 95
-stdout 96
-stdout 97
-stdout 98
-stdout 99
-stdout 100
-stdout 101
-stdout 102
-stdout 103
-stdout 104
-stdout 105
-stdout 106
-stdout 107
-stdout 108
-stdout 109
-stdout 110
-stdout 111
-stdout 112
-stdout 113
-stdout 114
-stdout 115
-stdout 116
-stdout 117
-stdout 118
-stdout 119
-stdout 120
-stdout 121
-stdout 122
-stdout 123
-stdout 124
-stdout 125
-stdout 126
-stdout 127
-stdout 128
-stdout 129
-stdout 130
-stdout 131
-stdout 132
-stdout 133
-stdout 134
-stdout 135
-stdout 136
-stdout 137
-stdout 138
-stdout 139
-stdout 140
-stdout 141
-stdout 142
-stdout 143
-stdout 144
-stdout 145
-stdout 146
-stdout 147
-stdout 148
-stdout 149
-stdout 150
-stdout 151
-stdout 152
-stdout 153
-stdout 154
-stdout 155
-stdout 156
-stdout 157
-stdout 158
-stdout 159
-stdout 160
-stdout 161
-stdout 162
-stdout 163
-stdout 164
-stdout 165
-stdout 166
-stdout 167
-stdout 168
-stdout 169
-stdout 170
-stdout 171
-stdout 172
-stdout 173
-stdout 174
-stdout 175
-stdout 176
-stdout 177
-stdout 178
-stdout 179
-stdout 180
-stdout 181
-stdout 182
-stdout 183
-stdout 184
-stdout 185
-stdout 186
-stdout 187
-stdout 188
-stdout 189
-stdout 190
-stdout 191
-stdout 192
-stdout 193
-stdout 194
-stdout 195
-stdout 196
-stdout 197
-stdout 198
-stdout 199
-stdout 200
-stdout 201
-stdout 202
-stdout 203
-stdout 204
-stdout 205
-stdout 206
-stdout 207
-stdout 208
-stdout 209
-stdout 210
-stdout 211
-stdout 212
-stdout 213
-stdout 214
-stdout 215
-stdout 216
-stdout 217
-stdout 218
-stdout 219
-stdout 220
-stdout 221
-stdout 222
-stdout 223
-stdout 224
-stdout 225
-stdout 226
-stdout 227
-stdout 228
-stdout 229
-stdout 230
-stdout 231
-stdout 232
-stdout 233
-stdout 234
-stdout 235
-stdout 236
-stdout 237
-stdout 238
-stdout 239
-stdout 240
-stdout 241
-stdout 242
-stdout 243
-stdout 244
-stdout 245
-stdout 246
-stdout 247
-stdout 248
-stdout 249
-stdout 250
-stdout 251
-stdout 252
-stdout 253
-stdout 254
-stdout 255
-stdout 256
-stdout 257
-stdout 258
-stdout 259
-stdout 260
-stdout 261
-stdout 262
-stdout 263
-stdout 264
-stdout 265
-stdout 266
-stdout 267
-stdout 268
-stdout 269
-stdout 270
-stdout 271
-stdout 272
-stdout 273
-stdout 274
-stdout 275
-stdout 276
-stdout 277
-stdout 278
-stdout 279
-stdout 280
-stdout 281
-stdout 282
-stdout 283
-stdout 284
-stdout 285
-stdout 286
-stdout 287
-stdout 288
-stdout 289
-stdout 290
-stdout 291
-stdout 292
-stdout 293
-stdout 294
-stdout 295
-stdout 296
-stdout 297
-stdout 298
-stdout 299
-stdout 300
-stdout 301
-stdout 302
-stdout 303
-stdout 304
-stdout 305
-stdout 306
-stdout 307
-stdout 308
-stdout 309
-stdout 310
-stdout 311
-stdout 312
-stdout 313
-stdout 314
-stdout 315
-stdout 316
-stdout 317
-stdout 318
-stdout 319
-stdout 320
-stdout 321
-stdout 322
-stdout 323
-stdout 324
-stdout 325
-stdout 326
-stdout 327
-stdout 328
-stdout 329
-stdout 330
-stdout 331
-stdout 332
-stdout 333
-stdout 334
-stdout 335
-stdout 336
-stdout 337
-stdout 338
-stdout 339
-stdout 340
-stdout 341
-stdout 342
-stdout 343
-stdout 344
-stdout 345
-stdout 346
-stdout 347
-stdout 348
-stdout 349
-stdout 350
-stdout 351
-stdout 352
-stdout 353
-stdout 354
-stdout 355
-stdout 356
-stdout 357
-stdout 358
-stdout 359
-stdout 360
-stdout 361
-stdout 362
-stdout 363
-stdout 364
-stdout 365
-stdout 366
-stdout 367
-stdout 368
-stdout 369
-stdout 370
-stdout 371
-stdout 372
-stdout 373
-stdout 374
-stdout 375
-stdout 376
-stdout 377
-stdout 378
-stdout 379
-stdout 380
-stdout 381
-stdout 382
-stdout 383
-stdout 384
-stdout 385
-stdout 386
-stdout 387
-stdout 388
-stdout 389
-stdout 390
-stdout 391
-stdout 392
-stdout 393
-stdout 394
-stdout 395
-stdout 396
-stdout 397
-stdout 398
-stdout 399
-stdout 400
-stdout 401
-stdout 402
-stdout 403
-stdout 404
-stdout 405
-stdout 406
-stdout 407
-stdout 408
-stdout 409
-stdout 410
-stdout 411
-stdout 412
-stdout 413
-stdout 414
-stdout 415
-stdout 416
-stdout 417
-stdout 418
-stdout 419
-stdout 420
-stdout 421
-stdout 422
-stdout 423
-stdout 424
-stdout 425
-stdout 426
-stdout 427
-stdout 428
-stdout 429
-stdout 430
-stdout 431
-stdout 432
-stdout 433
-stdout 434
-stdout 435
-stdout 436
-stdout 437
-stdout 438
-stdout 439
-stdout 440
-stdout 441
-stdout 442
-stdout 443
-stdout 444
-stdout 445
-stdout 446
-stdout 447
-stdout 448
-stdout 449
-stdout 450
-stdout 451
-stdout 452
-stdout 453
-stdout 454
-stdout 455
-stdout 456
-stdout 457
-stdout 458
-stdout 459
-stdout 460
-stdout 461
-stdout 462
-stdout 463
-stdout 464
-stdout 465
-stdout 466
-stdout 467
-stdout 468
-stdout 469
-stdout 470
-stdout 471
-stdout 472
-stdout 473
-stdout 474
-stdout 475
-stdout 476
-stdout 477
-stdout 478
-stdout 479
-stdout 480
-stdout 481
-stdout 482
-stdout 483
-stdout 484
-stdout 485
-stdout 486
-stdout 487
-stdout 488
-stdout 489
-stdout 490
-stdout 491
-stdout 492
-stdout 493
-stdout 494
-stdout 495
-stdout 496
-stdout 497
-stdout 498
-stdout 499
-stdout 500
-stdout 501
-stdout 502
-stdout 503
-stdout 504
-stdout 505
-stdout 506
-stdout 507
-stdout 508
-stdout 509
-stdout 510
-stdout 511
-stdout 512
-stdout 513
-stdout 514
-stdout 515
-stdout 516
-stdout 517
-stdout 518
-stdout 519
-stdout 520
-stdout 521
-stdout 522
-stdout 523
-stdout 524
-stdout 525
-stdout 526
-stdout 527
-stdout 528
-stdout 529
-stdout 530
-stdout 531
-stdout 532
-stdout 533
-stdout 534
-stdout 535
-stdout 536
-stdout 537
-stdout 538
-stdout 539
-stdout 540
-stdout 541
-stdout 542
-stdout 543
-stdout 544
-stdout 545
-stdout 546
-stdout 547
-stdout 548
-stdout 549
-stdout 550
-stdout 551
-stdout 552
-stdout 553
-stdout 554
-stdout 555
-stdout 556
-stdout 557
-stdout 558
-stdout 559
-stdout 560
-stdout 561
-stdout 562
-stdout 563
-stdout 564
-stdout 565
-stdout 566
-stdout 567
-stdout 568
-stdout 569
-stdout 570
-stdout 571
-stdout 572
-stdout 573
-stdout 574
-stdout 575
-stdout 576
-stdout 577
-stdout 578
-stdout 579
-stdout 580
-stdout 581
-stdout 582
-stdout 583
-stdout 584
-stdout 585
-stdout 586
-stdout 587
-stdout 588
-stdout 589
-stdout 590
-stdout 591
-stdout 592
-stdout 593
-stdout 594
-stdout 595
-stdout 596
-stdout 597
-stdout 598
-stdout 599
-stdout 600
-stdout 601
-stdout 602
-stdout 603
-stdout 604
-stdout 605
-stdout 606
-stdout 607
-stdout 608
-stdout 609
-stdout 610
-stdout 611
-stdout 612
-stdout 613
-stdout 614
-stdout 615
-stdout 616
-stdout 617
-stdout 618
-stdout 619
-stdout 620
-stdout 621
-stdout 622
-stdout 623
-stdout 624
-stdout 625
-stdout 626
-stdout 627
-stdout 628
-stdout 629
-stdout 630
-stdout 631
-stdout 632
-stdout 633
-stdout 634
-stdout 635
-stdout 636
-stdout 637
-stdout 638
-stdout 639
-stdout 640
-stdout 641
-stdout 642
-stdout 643
-stdout 644
-stdout 645
-stdout 646
-stdout 647
-stdout 648
-stdout 649
-stdout 650
-stdout 651
-stdout 652
-stdout 653
-stdout 654
-stdout 655
-stdout 656
-stdout 657
-stdout 658
-stdout 659
-stdout 660
-stdout 661
-stdout 662
-stdout 663
-stdout 664
-stdout 665
-stdout 666
-stdout 667
-stdout 668
-stdout 669
-stdout 670
-stdout 671
-stdout 672
-stdout 673
-stdout 674
-stdout 675
-stdout 676
-stdout 677
-stdout 678
-stdout 679
-stdout 680
-stdout 681
-stdout 682
-stdout 683
-stdout 684
-stdout 685
-stdout 686
-stdout 687
-stdout 688
-stdout 689
-stdout 690
-stdout 691
-stdout 692
-stdout 693
-stdout 694
-stdout 695
-stdout 696
-stdout 697
-stdout 698
-stdout 699
-stdout 700
-stdout 701
-stdout 702
-stdout 703
-stdout 704
-stdout 705
-stdout 706
-stdout 707
-stdout 708
-stdout 709
-stdout 710
-stdout 711
-stdout 712
-stdout 713
-stdout 714
-stdout 715
-stdout 716
-stdout 717
-stdout 718
-stdout 719
-stdout 720
-stdout 721
-stdout 722
-stdout 723
-stdout 724
-stdout 725
-stdout 726
-stdout 727
-stdout 728
-stdout 729
-stdout 730
-stdout 731
-stdout 732
-stdout 733
-stdout 734
-stdout 735
-stdout 736
-stdout 737
-stdout 738
-stdout 739
-stdout 740
-stdout 741
-stdout 742
-stdout 743
-stdout 744
-stdout 745
-stdout 746
-stdout 747
-stdout 748
-stdout 749
-stdout 750
-stdout 751
-stdout 752
-stdout 753
-stdout 754
-stdout 755
-stdout 756
-stdout 757
-stdout 758
-stdout 759
-stdout 760
-stdout 761
-stdout 762
-stdout 763
-stdout 764
-stdout 765
-stdout 766
-stdout 767
-stdout 768
-stdout 769
-stdout 770
-stdout 771
-stdout 772
-stdout 773
-stdout 774
-stdout 775
-stdout 776
-stdout 777
-stdout 778
-stdout 779
-stdout 780
-stdout 781
-stdout 782
-stdout 783
-stdout 784
-stdout 785
-stdout 786
-stdout 787
-stdout 788
-stdout 789
-stdout 790
-stdout 791
-stdout 792
-stdout 793
-stdout 794
-stdout 795
-stdout 796
-stdout 797
-stdout 798
-stdout 799
-stdout 800
-stdout 801
-stdout 802
-stdout 803
-stdout 804
-stdout 805
-stdout 806
-stdout 807
-stdout 808
-stdout 809
-stdout 810
-stdout 811
-stdout 812
-stdout 813
-stdout 814
-stdout 815
-stdout 816
-stdout 817
-stdout 818
-stdout 819
-stdout 820
-stdout 821
-stdout 822
-stdout 823
-stdout 824
-stdout 825
-stdout 826
-stdout 827
-stdout 828
-stdout 829
-stdout 830
-stdout 831
-stdout 832
-stdout 833
-stdout 834
-stdout 835
-stdout 836
-stdout 837
-stdout 838
-stdout 839
-stdout 840
-stdout 841
-stdout 842
-stdout 843
-stdout 844
-stdout 845
-stdout 846
-stdout 847
-stdout 848
-stdout 849
-stdout 850
-stdout 851
-stdout 852
-stdout 853
-stdout 854
-stdout 855
-stdout 856
-stdout 857
-stdout 858
-stdout 859
-stdout 860
-stdout 861
-stdout 862
-stdout 863
-stdout 864
-stdout 865
-stdout 866
-stdout 867
-stdout 868
-stdout 869
-stdout 870
-stdout 871
-stdout 872
-stdout 873
-stdout 874
-stdout 875
-stdout 876
-stdout 877
-stdout 878
-stdout 879
-stdout 880
-stdout 881
-stdout 882
-stdout 883
-stdout 884
-stdout 885
-stdout 886
-stdout 887
-stdout 888
-stdout 889
-stdout 890
-stdout 891
-stdout 892
-stdout 893
-stdout 894
-stdout 895
-stdout 896
-stdout 897
-stdout 898
-stdout 899
-stdout 900
-stdout 901
-stdout 902
-stdout 903
-stdout 904
-stdout 905
-stdout 906
-stdout 907
-stdout 908
-stdout 909
-stdout 910
-stdout 911
-stdout 912
-stdout 913
-stdout 914
-stdout 915
-stdout 916
-stdout 917
-stdout 918
-stdout 919
-stdout 920
-stdout 921
-stdout 922
-stdout 923
-stdout 924
-stdout 925
-stdout 926
-stdout 927
-stdout 928
-stdout 929
-stdout 930
-stdout 931
-stdout 932
-stdout 933
-stdout 934
-stdout 935
-stdout 936
-stdout 937
-stdout 938
-stdout 939
-stdout 940
-stdout 941
-stdout 942
-stdout 943
-stdout 944
-stdout 945
-stdout 946
-stdout 947
-stdout 948
-stdout 949
-stdout 950
-stdout 951
-stdout 952
-stdout 953
-stdout 954
-stdout 955
-stdout 956
-stdout 957
-stdout 958
-stdout 959
-stdout 960
-stdout 961
-stdout 962
-stdout 963
-stdout 964
-stdout 965
-stdout 966
-stdout 967
-stdout 968
-stdout 969
-stdout 970
-stdout 971
-stdout 972
-stdout 973
-stdout 974
-stdout 975
-stdout 976
-stdout 977
-stdout 978
-stdout 979
-stdout 980
-stdout 981
-stdout 982
-stdout 983
-stdout 984
-stdout 985
-stdout 986
-stdout 987
-stdout 988
-stdout 989
-stdout 990
-stdout 991
-stdout 992
-stdout 993
-stdout 994
-stdout 995
-stdout 996
-stdout 997
-stdout 998
-stdout 999

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/create-files.sh
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/create-files.sh b/blackberry10/node_modules/exit/test/fixtures/create-files.sh
deleted file mode 100755
index 6a526de..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/create-files.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-rm 10*.txt
-for n in 10 100 1000; do
-  node log.js 0 $n stdout stderr &> $n-stdout-stderr.txt
-  node log.js 0 $n stdout &> $n-stdout.txt
-  node log.js 0 $n stderr &> $n-stderr.txt
-done

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/log-broken.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/log-broken.js b/blackberry10/node_modules/exit/test/fixtures/log-broken.js
deleted file mode 100644
index 74c8f12..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/log-broken.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var errorCode = process.argv[2];
-var max = process.argv[3];
-var modes = process.argv.slice(4);
-
-function stdout(message) {
-  if (modes.indexOf('stdout') === -1) { return; }
-  process.stdout.write('stdout ' + message + '\n');
-}
-
-function stderr(message) {
-  if (modes.indexOf('stderr') === -1) { return; }
-  process.stderr.write('stderr ' + message + '\n');
-}
-
-for (var i = 0; i < max; i++) {
-  stdout(i);
-  stderr(i);
-}
-
-process.exit(errorCode);
-
-stdout('fail');
-stderr('fail');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/exit/test/fixtures/log.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/exit/test/fixtures/log.js b/blackberry10/node_modules/exit/test/fixtures/log.js
deleted file mode 100644
index 8a9ed9a..0000000
--- a/blackberry10/node_modules/exit/test/fixtures/log.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var exit = require('../../lib/exit');
-
-var errorCode = process.argv[2];
-var max = process.argv[3];
-var modes = process.argv.slice(4);
-
-function stdout(message) {
-  if (modes.indexOf('stdout') === -1) { return; }
-  process.stdout.write('stdout ' + message + '\n');
-}
-
-function stderr(message) {
-  if (modes.indexOf('stderr') === -1) { return; }
-  process.stderr.write('stderr ' + message + '\n');
-}
-
-for (var i = 0; i < max; i++) {
-  stdout(i);
-  stderr(i);
-}
-
-exit(errorCode);
-
-stdout('fail');
-stderr('fail');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/.npmignore b/blackberry10/node_modules/jWorkflow/.npmignore
deleted file mode 100644
index b4a9d1d..0000000
--- a/blackberry10/node_modules/jWorkflow/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-.redcar

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/LICENSE b/blackberry10/node_modules/jWorkflow/LICENSE
deleted file mode 100644
index b6cd384..0000000
--- a/blackberry10/node_modules/jWorkflow/LICENSE
+++ /dev/null
@@ -1,9 +0,0 @@
-** Licensed Under **
-
-The MIT License
-http://www.opensource.org/licenses/mit-license.php
-
-Copyright (c) 2010 all contributors:
-
-Gord Tanner
-tinyHippos Inc.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/README.md b/blackberry10/node_modules/jWorkflow/README.md
deleted file mode 100644
index 8f420b1..0000000
--- a/blackberry10/node_modules/jWorkflow/README.md
+++ /dev/null
@@ -1,170 +0,0 @@
-# jWorkflow
-Dude, where is my workflow?
-
-jWorkflow is a workflow engine for JavaScript that provides the ability to
-create workflows to chain methods together in an easy to understand syntax:
-
-    var fooodOrder = jWorkflow.order(garlicChicken)
-                              .andThen(whiteRice)
-                              .andThen(wontonSoup)
-                              .andThen(cookiesFortune)
-                              .andThen(noAndThen)
-                              .andThen(noAndThen)
-                              .andThen(noAndThen)
-                              .andThen(noAndThen);
-
-    fooodOrder.start();
-
-# Install
-
-jWorkflow can be used in node or included in the browser.  It can be installed with npm
-
-    npm install jWorkflow
-
-and used
-
-    var jWorkflow = require("jWorkflow");
-
-or just include jWorkflow.js in your webpage and use window.jWorkflow.
-
-# Usage
-
-jWorkflow orders are started with a call to jWorkflow.order:
-
-    function dude() {
-        // some of the best code in the world will live here
-    }
-
-    var order = jWorkflow.order(dude);
-
-    // orders can also be started with no initial function
-    var pizzacoli = jWorkflow.order();
-
-jWorkflow tasks at the root are just functions that will be invoked in the order they are built.
-Any number of tasks can be then appended to the order:
-
-    order.andThen(sweet).andThen(dude).andThen(sweet);
-
-The functions passed into the order will not be invoked until you call:
-
-    order.start();
-
-The context to be used when invoking the functions can be passed in while creating the order:
-
-    order.andThen(transfunctioner.photonAcceleratorAnnihilationBeam, transfunctioner);
-
-An initial value can be passed into the start method to seed the first function:
-
-    order.start({
-        initialValue: 10
-    });
-
-# Passing Values between tasks
-
-jWorkflow tasks can access the return value of the previous task with the previous parameter:
-
-    function meaningOfLife() {
-       //find the meaning of life
-       return 42; 
-    }
-    
-    function writeBook(previous) {
-       console.log("the meaning of life is " + previous);
-    }
-
-    var guide = jWorkflow.order(meaningOfLife).andThen(writeBook);
-    guide.start();
-
-# Handling Async calls
-
-Sometimes(probably all the time) you will need to do something async when working with
-tasks, jWorkflow provides the ability to control the execution of the workflow via a
-baton that is passed to the task
-
-    function procrastinate(previous, baton) {
-        //take the baton, this means the next task will not run until you pass the baton
-        baton.take();
-
-        window.setTimeout(function() {
-            //do some stuff
-
-            //please be nice and always remember to pass the baton!
-            baton.pass();
-        }, 1000);
-    }
-
-If you want to pass a return value to the next task you can pass it along with the
-baton.
-
-NOTE: if you did take the baton, the return value from your function will NOT be passed to 
-the next task:
-
-    function awesometown(previous, baton) {
-        baton.take();
-
-        window.setTimeout(function() {
-            
-            //do stuff
-            
-            baton.pass(420);    //This value will be passed to the next task
-        }, 100);
-
-        return 50; // this will NOT be passed to the next function since you took the baton.
-    }
-
-
-the start method provides a callback to execute when the workflow is finished.  The final
-return value is also passed to the callback:
-
-   order.start({
-       callback: function(review) {
-               console.log("dude!, your car is behind that mail truck!");
-               expect(review).toBe("two thumbs up");
-       }
-   });
-
-you can also pass context to use for the callback:
-
-   order.start({
-       callback: function() {
-           //do stuff
-       }, 
-       context: transfunctioner
-   });
-    
-# Waiting between tasks
-
-If you ever need to take a break and reflect on the moment you can add some time(in ms) to chill between tasks:
-
-    jWorkflow.order(seeDoubleRainbow)
-             .chill(1000)
-             .andThen(omg)
-             .andThen(omg)
-             .andThen(omg)
-             .chill(1000)
-             .andThen(freakOut);
-
-# Handling Parallel tasks
-
-If you need to handle some tasks and don't care about when they are done you can pass in an array of functions and / or other workflows to execute
-at the same time.
-
-    jWorkflow.order([man, man, halfMan])
-             .andThen([jWorkflow.order([guy, guy]).andThen(girl), pizzaPlace]);
-
-# Canceling Workflows
-
-To cancel the execution of the workflow you can call the drop method on the baton:
-
-    function (previous, baton) {
-        //the value passed to drop will be passed onto the final callback if it exists
-        baton.drop("I dropped the soap");
-        //this value will NOT be passed to the next workflow step
-        return 10;
-    }
-
-NOTE: This will force the workflow into async mode.
-
-# Contributers:
-
-    Gord Tanner <gt...@gmail.com>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/Rakefile
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/Rakefile b/blackberry10/node_modules/jWorkflow/Rakefile
deleted file mode 100644
index eb6b859..0000000
--- a/blackberry10/node_modules/jWorkflow/Rakefile
+++ /dev/null
@@ -1,12 +0,0 @@
-require 'rubygems'
-require 'closure-compiler'
-
-task :default => [:build]
-
-desc "Use the Closure Compiler to compress jWorkflow.js"
-task :build do
-  js  = File.open('lib/jWorkflow.js', 'r')
-  min = Closure::Compiler.new.compile(js)
-  File.open('jworkflow-min-0.7.0.js', 'w') {|f| f.write(min) }
-end
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/jworkflow-min-0.8.0.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/jworkflow-min-0.8.0.js b/blackberry10/node_modules/jWorkflow/jworkflow-min-0.8.0.js
deleted file mode 100644
index a448d51..0000000
--- a/blackberry10/node_modules/jWorkflow/jworkflow-min-0.8.0.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var jWorkflow=function(){return{order:function(j,k){var f=[],g,h=null,i=function(){var a=false;return{take:function(){a=true},pass:function(b){var c;a=false;g.length?(c=g.shift(),b=c.func.apply(c.context,[b,i]),a||i.pass(b)):h.func&&h.func.apply(h.context,[b])},drop:function(b){a=true;g=[];setTimeout(function(){i.pass(b)},1)}}}(),e={andThen:function(a,b){if(typeof a.andThen==="function"&&typeof a.start==="function"&&typeof a.chill==="function")f.push({func:function(c,d){d.take();a.start({callback:function(a){d.pass(a)},
-context:b,initialValue:c})},context:b});else if(a.map&&a.reduce)f.push({func:function(b,d){d.take();var f=a.length,g=function(){return--f||d.pass()};a.forEach(function(a){jWorkflow.order(a).start(g)})},context:b});else{if(typeof a!=="function")throw"expected function but was "+typeof a;f.push({func:a,context:b})}return e},chill:function(a){return e.andThen(function(b,c){c.take();setTimeout(function(){c.pass(b)},a)})},start:function(a,b){var c,d,e;a&&typeof a==="object"?(c=a.callback,d=a.context,e=
-a.initialValue):(c=a,d=b);h={func:c,context:d};g=f.slice();i.pass(e)}};return j?e.andThen(j,k):e}}}();if(typeof module==="object"&&typeof require==="function")module.exports=jWorkflow;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/lib/jWorkflow.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/lib/jWorkflow.js b/blackberry10/node_modules/jWorkflow/lib/jWorkflow.js
deleted file mode 100644
index 36380d5..0000000
--- a/blackberry10/node_modules/jWorkflow/lib/jWorkflow.js
+++ /dev/null
@@ -1,140 +0,0 @@
-// jWorkflow.js
-// (c) 2010 tinyHippos inc.
-// jWorkflow is freely distributable under the terms of the MIT license.
-// Portions of jWorkflow are inspired by Underscore.js
-var jWorkflow = (function () {
-    function _valid(func) {
-        if (typeof(func) !== 'function') {
-            throw "expected function but was " + typeof(func);
-        }
-    }
-
-    function _isWorkflow(func) {
-        return typeof func.andThen === 'function' &&
-               typeof func.start === 'function' &&
-               typeof func.chill === 'function';
-    }
-
-    function _isArray(func) {
-        return !!func.map && !!func.reduce;
-    }
-
-    var transfunctioner =  {
-        order: function (func, context) {
-            var _workflow = [],
-                _tasks,
-                _callback = null,
-                _baton = (function () {
-                    var _taken = false; 
-                    return {
-
-                        take: function () {
-                            _taken = true;
-                        },
-
-                        pass: function (result) {
-                            var task;
-                            _taken = false;
-
-                            if (_tasks.length) {
-                                task = _tasks.shift();
-                                result = task.func.apply(task.context, [result, _baton]);
-
-                                if (!_taken) {
-                                    _baton.pass(result);
-                                }
-                            }
-                            else { 
-                                if (_callback.func) {
-                                    _callback.func.apply(_callback.context, [result]);
-                                }
-                            }
-                        },
-
-                        drop: function (result) {
-                            _taken = true;
-                            _tasks = [];
-                            setTimeout(function () {
-                                _baton.pass(result);
-                            }, 1);
-                        }
-                    };
-                }()),
-                _self = {
-
-                    andThen: function (func, context) {
-                        if (_isWorkflow(func)) {
-                            var f = function (prev, baton) {
-                                baton.take();
-                                func.start({
-                                    callback: function (result) {
-                                        baton.pass(result);
-                                    }, 
-                                    context: context, 
-                                    initialValue: prev
-                                });
-                            };
-                            _workflow.push({func: f, context: context});
-                        }
-                        else if (_isArray(func)) {
-                            var orch = function (prev, baton) {
-                                baton.take();
-
-                                var l = func.length,
-                                    join = function () {
-                                        return --l || baton.pass();
-                                    };
-
-                                func.forEach(function (f) {
-                                    jWorkflow.order(f).start(join);
-                                });
-                            };
-                            _workflow.push({func: orch, context: context});
-                        }
-                        else {
-                            _valid(func);
-                            _workflow.push({func: func, context: context});
-                        }
-                        return _self;
-                    },
-
-                    chill: function (time) {
-                        return _self.andThen(function (prev, baton) {
-                            baton.take();
-                            setTimeout(function () {
-                                baton.pass(prev);
-                            }, time);
-                        });
-                    },
-
-                    start: function () {
-                        var callback,
-                            context,
-                            initialValue;
-
-                        if (arguments[0] && typeof arguments[0] === 'object') {
-                            callback = arguments[0].callback;
-                            context = arguments[0].context;
-                            initialValue = arguments[0].initialValue;
-                        }
-                        else {
-                            callback = arguments[0];
-                            context = arguments[1];
-                        }
-
-                        _callback = {func: callback, context: context};
-                        _tasks = _workflow.slice();
-                        _baton.pass(initialValue);
-                    }
-                };
-
-            return func ? _self.andThen(func, context) : _self;
-        }
-    };
-
-    return transfunctioner;
-}());
-
-if (typeof module === "object" && typeof require === "function") {
-    module.exports = jWorkflow;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/package.json b/blackberry10/node_modules/jWorkflow/package.json
deleted file mode 100644
index 817ec46..0000000
--- a/blackberry10/node_modules/jWorkflow/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "name": "jWorkflow",
-  "version": "0.8.0",
-  "description": "dude, wheres my workflow?",
-  "homepage": "https://github.com/tinyhippos/jWorkflow",
-  "author": {
-    "name": "gtanner"
-  },
-  "contributors": [
-    {
-      "name": "Gord Tanner",
-      "email": "gtanner@gmail.com",
-      "url": "http://github.com/gtanner"
-    }
-  ],
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": ""
-    }
-  ],
-  "main": "./lib/jWorkflow",
-  "readme": "# jWorkflow\nDude, where is my workflow?\n\njWorkflow is a workflow engine for JavaScript that provides the ability to\ncreate workflows to chain methods together in an easy to understand syntax:\n\n    var fooodOrder = jWorkflow.order(garlicChicken)\n                              .andThen(whiteRice)\n                              .andThen(wontonSoup)\n                              .andThen(cookiesFortune)\n                              .andThen(noAndThen)\n                              .andThen(noAndThen)\n                              .andThen(noAndThen)\n                              .andThen(noAndThen);\n\n    fooodOrder.start();\n\n# Install\n\njWorkflow can be used in node or included in the browser.  It can be installed with npm\n\n    npm install jWorkflow\n\nand used\n\n    var jWorkflow = require(\"jWorkflow\");\n\nor just include jWorkflow.js in your webpage and use window.jWorkflow.\n\n# Usage\n\njWorkflow orders are started with a call to jWorkflow.order:\n
 \n    function dude() {\n        // some of the best code in the world will live here\n    }\n\n    var order = jWorkflow.order(dude);\n\n    // orders can also be started with no initial function\n    var pizzacoli = jWorkflow.order();\n\njWorkflow tasks at the root are just functions that will be invoked in the order they are built.\nAny number of tasks can be then appended to the order:\n\n    order.andThen(sweet).andThen(dude).andThen(sweet);\n\nThe functions passed into the order will not be invoked until you call:\n\n    order.start();\n\nThe context to be used when invoking the functions can be passed in while creating the order:\n\n    order.andThen(transfunctioner.photonAcceleratorAnnihilationBeam, transfunctioner);\n\nAn initial value can be passed into the start method to seed the first function:\n\n    order.start({\n        initialValue: 10\n    });\n\n# Passing Values between tasks\n\njWorkflow tasks can access the return value of the previous task with the previous pa
 rameter:\n\n    function meaningOfLife() {\n       //find the meaning of life\n       return 42; \n    }\n    \n    function writeBook(previous) {\n       console.log(\"the meaning of life is \" + previous);\n    }\n\n    var guide = jWorkflow.order(meaningOfLife).andThen(writeBook);\n    guide.start();\n\n# Handling Async calls\n\nSometimes(probably all the time) you will need to do something async when working with\ntasks, jWorkflow provides the ability to control the execution of the workflow via a\nbaton that is passed to the task\n\n    function procrastinate(previous, baton) {\n        //take the baton, this means the next task will not run until you pass the baton\n        baton.take();\n\n        window.setTimeout(function() {\n            //do some stuff\n\n            //please be nice and always remember to pass the baton!\n            baton.pass();\n        }, 1000);\n    }\n\nIf you want to pass a return value to the next task you can pass it along with the\nbaton.\n\nNO
 TE: if you did take the baton, the return value from your function will NOT be passed to \nthe next task:\n\n    function awesometown(previous, baton) {\n        baton.take();\n\n        window.setTimeout(function() {\n            \n            //do stuff\n            \n            baton.pass(420);    //This value will be passed to the next task\n        }, 100);\n\n        return 50; // this will NOT be passed to the next function since you took the baton.\n    }\n\n\nthe start method provides a callback to execute when the workflow is finished.  The final\nreturn value is also passed to the callback:\n\n   order.start({\n       callback: function(review) {\n               console.log(\"dude!, your car is behind that mail truck!\");\n               expect(review).toBe(\"two thumbs up\");\n       }\n   });\n\nyou can also pass context to use for the callback:\n\n   order.start({\n       callback: function() {\n           //do stuff\n       }, \n       context: transfunctioner\n   })
 ;\n    \n# Waiting between tasks\n\nIf you ever need to take a break and reflect on the moment you can add some time(in ms) to chill between tasks:\n\n    jWorkflow.order(seeDoubleRainbow)\n             .chill(1000)\n             .andThen(omg)\n             .andThen(omg)\n             .andThen(omg)\n             .chill(1000)\n             .andThen(freakOut);\n\n# Handling Parallel tasks\n\nIf you need to handle some tasks and don't care about when they are done you can pass in an array of functions and / or other workflows to execute\nat the same time.\n\n    jWorkflow.order([man, man, halfMan])\n             .andThen([jWorkflow.order([guy, guy]).andThen(girl), pizzaPlace]);\n\n# Canceling Workflows\n\nTo cancel the execution of the workflow you can call the drop method on the baton:\n\n    function (previous, baton) {\n        //the value passed to drop will be passed onto the final callback if it exists\n        baton.drop(\"I dropped the soap\");\n        //this value will NOT be
  passed to the next workflow step\n        return 10;\n    }\n\nNOTE: This will force the workflow into async mode.\n\n# Contributers:\n\n    Gord Tanner <gt...@gmail.com>\n",
-  "readmeFilename": "README.md",
-  "_id": "jWorkflow@0.8.0",
-  "_from": "jWorkflow@0.8.0"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/test/test.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/test/test.html b/blackberry10/node_modules/jWorkflow/test/test.html
deleted file mode 100644
index 75e581b..0000000
--- a/blackberry10/node_modules/jWorkflow/test/test.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-  <title>jWorkflow Test Suite</title>
-  <link rel="stylesheet" href="vendor/qunit.css" type="text/css" media="screen" />
-  <script type="text/javascript" src="vendor/jquery.js"></script>
-  <script type="text/javascript" src="vendor/qunit.js"></script>
-  <script type="text/javascript" src="../lib/jWorkflow.js"></script>
-  <script type="text/javascript" src="test_jworkflow.js"></script>
-</head>
-    <body>
-      <h1 id="qunit-header">jWorkflow Test Suite</h1>
-      <h2 id="qunit-banner"></h2>
-      <h2 id="qunit-userAgent"></h2>
-      <ol id="qunit-tests"></ol>
-    </body>
-</html>


[21/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/jWorkflow/test/vendor/qunit.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/jWorkflow/test/vendor/qunit.js b/blackberry10/node_modules/jWorkflow/test/vendor/qunit.js
deleted file mode 100644
index 385f1e6..0000000
--- a/blackberry10/node_modules/jWorkflow/test/vendor/qunit.js
+++ /dev/null
@@ -1,997 +0,0 @@
-/*
- * QUnit - A JavaScript Unit Testing Framework
- * 
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2009 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- */
-
-(function(window) {
-
-var QUnit = {
-
-	// Initialize the configuration options
-	init: function init() {
-		config = {
-			stats: { all: 0, bad: 0 },
-			moduleStats: { all: 0, bad: 0 },
-			started: +new Date,
-			blocking: false,
-			autorun: false,
-			assertions: [],
-			filters: [],
-			queue: []
-		};
-
-		var tests = id("qunit-tests"),
-			banner = id("qunit-banner"),
-			result = id("qunit-testresult");
-
-		if ( tests ) {
-			tests.innerHTML = "";
-		}
-
-		if ( banner ) {
-			banner.className = "";
-		}
-
-		if ( result ) {
-			result.parentNode.removeChild( result );
-		}
-	},
-	
-	// call on start of module test to prepend name to all tests
-	module: function module(name, testEnvironment) {
-
-		synchronize(function() {
-			if ( config.currentModule ) {
-				QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
-			}
-
-			config.currentModule = name;
-			config.moduleTestEnvironment = testEnvironment;
-			config.moduleStats = { all: 0, bad: 0 };
-
-			QUnit.moduleStart( name, testEnvironment );
-		});
-	},
-
-	asyncTest: function asyncTest(testName, expected, callback) {
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = 0;
-		}
-
-		QUnit.test(testName, expected, callback, true);
-	},
-	
-	test: function test(testName, expected, callback, async) {
-		var name = testName, testEnvironment = {};
-
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-
-		if ( config.currentModule ) {
-			name = config.currentModule + " module: " + name;
-		}
-
-		if ( !validTest(name) ) {
-			return;
-		}
-
-		synchronize(function() {
-			QUnit.testStart( testName );
-
-			testEnvironment = extend({
-				setup: function() {},
-				teardown: function() {}
-			}, config.moduleTestEnvironment);
-
-			config.assertions = [];
-			config.expected = null;
-
-			if ( arguments.length >= 3 ) {
-				config.expected = callback;
-				callback = arguments[2];
-			}
-
-			try {
-				if ( !config.pollution ) {
-					saveGlobal();
-				}
-
-				testEnvironment.setup.call(testEnvironment);
-			} catch(e) {
-				QUnit.ok( false, "Setup failed on " + name + ": " + e.message );
-			}
-
-			if ( async ) {
-				QUnit.stop();
-			}
-
-			try {
-				callback.call(testEnvironment);
-			} catch(e) {
-				fail("Test " + name + " died, exception and test follows", e, callback);
-				QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message );
-				// else next test will carry the responsibility
-				saveGlobal();
-
-				// Restart the tests if they're blocking
-				if ( config.blocking ) {
-					start();
-				}
-			}
-		});
-
-		synchronize(function() {
-			try {
-				checkPollution();
-				testEnvironment.teardown.call(testEnvironment);
-			} catch(e) {
-				QUnit.ok( false, "Teardown failed on " + name + ": " + e.message );
-			}
-
-			try {
-				QUnit.reset();
-			} catch(e) {
-				fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset);
-			}
-
-			if ( config.expected && config.expected != config.assertions.length ) {
-				QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" );
-			}
-
-			var good = 0, bad = 0,
-				tests = id("qunit-tests");
-
-			config.stats.all += config.assertions.length;
-			config.moduleStats.all += config.assertions.length;
-
-			if ( tests ) {
-				var ol  = document.createElement("ol");
-				ol.style.display = "none";
-
-				for ( var i = 0; i < config.assertions.length; i++ ) {
-					var assertion = config.assertions[i];
-
-					var li = document.createElement("li");
-					li.className = assertion.result ? "pass" : "fail";
-					li.innerHTML = assertion.message || "(no message)";
-					ol.appendChild( li );
-
-					if ( assertion.result ) {
-						good++;
-					} else {
-						bad++;
-						config.stats.bad++;
-						config.moduleStats.bad++;
-					}
-				}
-
-				var b = document.createElement("strong");
-				b.innerHTML = name + " <b style='color:black;'>(<b class='fail'>" + bad + "</b>, <b class='pass'>" + good + "</b>, " + config.assertions.length + ")</b>";
-				
-				addEvent(b, "click", function() {
-					var next = b.nextSibling, display = next.style.display;
-					next.style.display = display === "none" ? "block" : "none";
-				});
-				
-				addEvent(b, "dblclick", function(e) {
-					var target = (e || window.event).target;
-					if ( target.nodeName.toLowerCase() === "strong" ) {
-						var text = "", node = target.firstChild;
-
-						while ( node.nodeType === 3 ) {
-							text += node.nodeValue;
-							node = node.nextSibling;
-						}
-
-						text = text.replace(/(^\s*|\s*$)/g, "");
-
-						if ( window.location ) {
-							window.location.href = window.location.href.match(/^(.+?)(\?.*)?$/)[1] + "?" + encodeURIComponent(text);
-						}
-					}
-				});
-
-				var li = document.createElement("li");
-				li.className = bad ? "fail" : "pass";
-				li.appendChild( b );
-				li.appendChild( ol );
-				tests.appendChild( li );
-
-				if ( bad ) {
-					var toolbar = id("qunit-testrunner-toolbar");
-					if ( toolbar ) {
-						toolbar.style.display = "block";
-						id("qunit-filter-pass").disabled = null;
-						id("qunit-filter-missing").disabled = null;
-					}
-				}
-
-			} else {
-				for ( var i = 0; i < config.assertions.length; i++ ) {
-					if ( !config.assertions[i].result ) {
-						bad++;
-						config.stats.bad++;
-						config.moduleStats.bad++;
-					}
-				}
-			}
-
-			QUnit.testDone( testName, bad, config.assertions.length );
-
-			if ( !window.setTimeout && !config.queue.length ) {
-				done();
-			}
-		});
-
-		if ( window.setTimeout && !config.doneTimer ) {
-			config.doneTimer = window.setTimeout(function(){
-				if ( !config.queue.length ) {
-					done();
-				} else {
-					synchronize( done );
-				}
-			}, 13);
-		}
-	},
-	
-	/**
-	 * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-	 */
-	expect: function expect(asserts) {
-		config.expected = asserts;
-	},
-
-	/**
-	 * Asserts true.
-	 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-	 */
-	ok: function ok(a, msg) {
-		QUnit.log(a, msg);
-
-		config.assertions.push({
-			result: !!a,
-			message: msg
-		});
-	},
-
-	/**
-	 * Checks that the first two arguments are equal, with an optional message.
-	 * Prints out both actual and expected values.
-	 *
-	 * Prefered to ok( actual == expected, message )
-	 *
-	 * @example equals( format("Received {0} bytes.", 2), "Received 2 bytes." );
-	 *
-	 * @param Object actual
-	 * @param Object expected
-	 * @param String message (optional)
-	 */
-	equals: function equals(actual, expected, message) {
-		push(expected == actual, actual, expected, message);
-	},
-	
-	same: function(a, b, message) {
-		push(QUnit.equiv(a, b), a, b, message);
-	},
-	
-	start: function start() {
-		// A slight delay, to avoid any current callbacks
-		if ( window.setTimeout ) {
-			window.setTimeout(function() {
-				if ( config.timeout ) {
-					clearTimeout(config.timeout);
-				}
-
-				config.blocking = false;
-				process();
-			}, 13);
-		} else {
-			config.blocking = false;
-			process();
-		}
-	},
-	
-	stop: function stop(timeout) {
-		config.blocking = true;
-
-		if ( timeout && window.setTimeout ) {
-			config.timeout = window.setTimeout(function() {
-				QUnit.ok( false, "Test timed out" );
-				QUnit.start();
-			}, timeout);
-		}
-	},
-	
-	/**
-	 * Resets the test setup. Useful for tests that modify the DOM.
-	 */
-	reset: function reset() {
-		if ( window.jQuery ) {
-			jQuery("#main").html( config.fixture );
-			jQuery.event.global = {};
-			jQuery.ajaxSettings = extend({}, config.ajaxSettings);
-		}
-	},
-	
-	/**
-	 * Trigger an event on an element.
-	 *
-	 * @example triggerEvent( document.body, "click" );
-	 *
-	 * @param DOMElement elem
-	 * @param String type
-	 */
-	triggerEvent: function triggerEvent( elem, type, event ) {
-		if ( document.createEvent ) {
-			event = document.createEvent("MouseEvents");
-			event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
-				0, 0, 0, 0, 0, false, false, false, false, 0, null);
-			elem.dispatchEvent( event );
-
-		} else if ( elem.fireEvent ) {
-			elem.fireEvent("on"+type);
-		}
-	},
-	
-	// Logging callbacks
-	done: function done(failures, total) {},
-	log: function log(result, message) {},
-	testStart: function testStart(name) {},
-	testDone: function testDone(name, failures, total) {},
-	moduleStart: function moduleStart(name, testEnvironment) {},
-	moduleDone: function moduleDone(name, failures, total) {}
-};
-
-// Maintain internal state
-var config = {
-	// The queue of tests to run
-	queue: [],
-
-	// block until document ready
-	blocking: true
-};
-
-// Load paramaters
-(function() {
-	var location = window.location || { search: "", protocol: "file:" },
-		GETParams = location.search.slice(1).split('&');
-
-	for ( var i = 0; i < GETParams.length; i++ ) {
-		GETParams[i] = decodeURIComponent( GETParams[i] );
-		if ( GETParams[i] === "noglobals" ) {
-			GETParams.splice( i, 1 );
-			i--;
-			config.noglobals = true;
-		}
-	}
-	
-	// restrict modules/tests by get parameters
-	config.filters = GETParams;
-	
-	// Figure out if we're running the tests from a server or not
-	QUnit.isLocal = !!(location.protocol === 'file:');
-})();
-
-// Expose the API as global variables, unless an 'exports'
-// object exists, in that case we assume we're in CommonJS
-if ( typeof exports === "undefined" || typeof require === "undefined" ) {
-	extend(window, QUnit);
-	window.QUnit = QUnit;
-} else {
-	extend(exports, QUnit);
-	exports.QUnit = QUnit;
-}
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
-	config.autorun = true;
-}
-
-addEvent(window, "load", function() {
-	// Initialize the config, saving the execution queue
-	var oldconfig = extend({}, config);
-	QUnit.init();
-	extend(config, oldconfig);
-
-	config.blocking = false;
-
-	var userAgent = id("qunit-userAgent");
-	if ( userAgent ) {
-		userAgent.innerHTML = navigator.userAgent;
-	}
-	
-	var toolbar = id("qunit-testrunner-toolbar");
-	if ( toolbar ) {
-		toolbar.style.display = "none";
-		
-		var filter = document.createElement("input");
-		filter.type = "checkbox";
-		filter.id = "qunit-filter-pass";
-		filter.disabled = true;
-		addEvent( filter, "click", function() {
-			var li = document.getElementsByTagName("li");
-			for ( var i = 0; i < li.length; i++ ) {
-				if ( li[i].className.indexOf("pass") > -1 ) {
-					li[i].style.display = filter.checked ? "none" : "block";
-				}
-			}
-		});
-		toolbar.appendChild( filter );
-
-		var label = document.createElement("label");
-		label.setAttribute("for", "filter-pass");
-		label.innerHTML = "Hide passed tests";
-		toolbar.appendChild( label );
-
-		var missing = document.createElement("input");
-		missing.type = "checkbox";
-		missing.id = "qunit-filter-missing";
-		missing.disabled = true;
-		addEvent( missing, "click", function() {
-			var li = document.getElementsByTagName("li");
-			for ( var i = 0; i < li.length; i++ ) {
-				if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) {
-					li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block";
-				}
-			}
-		});
-		toolbar.appendChild( missing );
-
-		label = document.createElement("label");
-		label.setAttribute("for", "filter-missing");
-		label.innerHTML = "Hide missing tests (untested code is broken code)";
-		toolbar.appendChild( label );
-	}
-
-	var main = id('main');
-	if ( main ) {
-		config.fixture = main.innerHTML;
-	}
-
-	if ( window.jQuery ) {
-		config.ajaxSettings = window.jQuery.ajaxSettings;
-	}
-
-	QUnit.start();
-});
-
-function done() {
-	if ( config.doneTimer && window.clearTimeout ) {
-		window.clearTimeout( config.doneTimer );
-		config.doneTimer = null;
-	}
-
-	if ( config.queue.length ) {
-		config.doneTimer = window.setTimeout(function(){
-			if ( !config.queue.length ) {
-				done();
-			} else {
-				synchronize( done );
-			}
-		}, 13);
-
-		return;
-	}
-
-	config.autorun = true;
-
-	// Log the last module results
-	if ( config.currentModule ) {
-		QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
-	}
-
-	var banner = id("qunit-banner"),
-		tests = id("qunit-tests"),
-		html = ['Tests completed in ',
-		+new Date - config.started, ' milliseconds.<br/>',
-		'<span class="bad">', config.stats.all - config.stats.bad, '</span> tests of <span class="all">', config.stats.all, '</span> passed, ', config.stats.bad,' failed.'].join('');
-
-	if ( banner ) {
-		banner.className += " " + (config.stats.bad ? "fail" : "pass");
-	}
-
-	if ( tests ) {	
-		var result = id("qunit-testresult");
-
-		if ( !result ) {
-			result = document.createElement("p");
-			result.id = "qunit-testresult";
-			result.className = "result";
-			tests.parentNode.insertBefore( result, tests.nextSibling );
-		}
-
-		result.innerHTML = html;
-	}
-
-	QUnit.done( config.stats.bad, config.stats.all );
-}
-
-function validTest( name ) {
-	var i = config.filters.length,
-		run = false;
-
-	if ( !i ) {
-		return true;
-	}
-	
-	while ( i-- ) {
-		var filter = config.filters[i],
-			not = filter.charAt(0) == '!';
-
-		if ( not ) {
-			filter = filter.slice(1);
-		}
-
-		if ( name.indexOf(filter) !== -1 ) {
-			return !not;
-		}
-
-		if ( not ) {
-			run = true;
-		}
-	}
-
-	return run;
-}
-
-function push(result, actual, expected, message) {
-	message = message || (result ? "okay" : "failed");
-	QUnit.ok( result, result ? message + ": " + expected : message + ", expected: " + QUnit.jsDump.parse(expected) + " result: " + QUnit.jsDump.parse(actual) );
-}
-
-function synchronize( callback ) {
-	config.queue.push( callback );
-
-	if ( config.autorun && !config.blocking ) {
-		process();
-	}
-}
-
-function process() {
-	while ( config.queue.length && !config.blocking ) {
-		config.queue.shift()();
-	}
-}
-
-function saveGlobal() {
-	config.pollution = [];
-	
-	if ( config.noglobals ) {
-		for ( var key in window ) {
-			config.pollution.push( key );
-		}
-	}
-}
-
-function checkPollution( name ) {
-	var old = config.pollution;
-	saveGlobal();
-	
-	var newGlobals = diff( old, config.pollution );
-	if ( newGlobals.length > 0 ) {
-		ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
-		config.expected++;
-	}
-
-	var deletedGlobals = diff( config.pollution, old );
-	if ( deletedGlobals.length > 0 ) {
-		ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
-		config.expected++;
-	}
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
-	var result = a.slice();
-	for ( var i = 0; i < result.length; i++ ) {
-		for ( var j = 0; j < b.length; j++ ) {
-			if ( result[i] === b[j] ) {
-				result.splice(i, 1);
-				i--;
-				break;
-			}
-		}
-	}
-	return result;
-}
-
-function fail(message, exception, callback) {
-	if ( typeof console !== "undefined" && console.error && console.warn ) {
-		console.error(message);
-		console.error(exception);
-		console.warn(callback.toString());
-
-	} else if ( window.opera && opera.postError ) {
-		opera.postError(message, exception, callback.toString);
-	}
-}
-
-function extend(a, b) {
-	for ( var prop in b ) {
-		a[prop] = b[prop];
-	}
-
-	return a;
-}
-
-function addEvent(elem, type, fn) {
-	if ( elem.addEventListener ) {
-		elem.addEventListener( type, fn, false );
-	} else if ( elem.attachEvent ) {
-		elem.attachEvent( "on" + type, fn );
-	} else {
-		fn();
-	}
-}
-
-function id(name) {
-	return !!(typeof document !== "undefined" && document && document.getElementById) &&
-		document.getElementById( name );
-}
-
-// Test for equality any JavaScript type.
-// Discussions and reference: http://philrathe.com/articles/equiv
-// Test suites: http://philrathe.com/tests/equiv
-// Author: Philippe Rathé <pr...@gmail.com>
-QUnit.equiv = function () {
-
-    var innerEquiv; // the real equiv function
-    var callers = []; // stack to decide between skip/abort functions
-
-
-    // Determine what is o.
-    function hoozit(o) {
-        if (o.constructor === String) {
-            return "string";
-            
-        } else if (o.constructor === Boolean) {
-            return "boolean";
-
-        } else if (o.constructor === Number) {
-
-            if (isNaN(o)) {
-                return "nan";
-            } else {
-                return "number";
-            }
-
-        } else if (typeof o === "undefined") {
-            return "undefined";
-
-        // consider: typeof null === object
-        } else if (o === null) {
-            return "null";
-
-        // consider: typeof [] === object
-        } else if (o instanceof Array) {
-            return "array";
-        
-        // consider: typeof new Date() === object
-        } else if (o instanceof Date) {
-            return "date";
-
-        // consider: /./ instanceof Object;
-        //           /./ instanceof RegExp;
-        //          typeof /./ === "function"; // => false in IE and Opera,
-        //                                          true in FF and Safari
-        } else if (o instanceof RegExp) {
-            return "regexp";
-
-        } else if (typeof o === "object") {
-            return "object";
-
-        } else if (o instanceof Function) {
-            return "function";
-        } else {
-            return undefined;
-        }
-    }
-
-    // Call the o related callback with the given arguments.
-    function bindCallbacks(o, callbacks, args) {
-        var prop = hoozit(o);
-        if (prop) {
-            if (hoozit(callbacks[prop]) === "function") {
-                return callbacks[prop].apply(callbacks, args);
-            } else {
-                return callbacks[prop]; // or undefined
-            }
-        }
-    }
-    
-    var callbacks = function () {
-
-        // for string, boolean, number and null
-        function useStrictEquality(b, a) {
-            if (b instanceof a.constructor || a instanceof b.constructor) {
-                // to catch short annotaion VS 'new' annotation of a declaration
-                // e.g. var i = 1;
-                //      var j = new Number(1);
-                return a == b;
-            } else {
-                return a === b;
-            }
-        }
-
-        return {
-            "string": useStrictEquality,
-            "boolean": useStrictEquality,
-            "number": useStrictEquality,
-            "null": useStrictEquality,
-            "undefined": useStrictEquality,
-
-            "nan": function (b) {
-                return isNaN(b);
-            },
-
-            "date": function (b, a) {
-                return hoozit(b) === "date" && a.valueOf() === b.valueOf();
-            },
-
-            "regexp": function (b, a) {
-                return hoozit(b) === "regexp" &&
-                    a.source === b.source && // the regex itself
-                    a.global === b.global && // and its modifers (gmi) ...
-                    a.ignoreCase === b.ignoreCase &&
-                    a.multiline === b.multiline;
-            },
-
-            // - skip when the property is a method of an instance (OOP)
-            // - abort otherwise,
-            //   initial === would have catch identical references anyway
-            "function": function () {
-                var caller = callers[callers.length - 1];
-                return caller !== Object &&
-                        typeof caller !== "undefined";
-            },
-
-            "array": function (b, a) {
-                var i;
-                var len;
-
-                // b could be an object literal here
-                if ( ! (hoozit(b) === "array")) {
-                    return false;
-                }
-
-                len = a.length;
-                if (len !== b.length) { // safe and faster
-                    return false;
-                }
-                for (i = 0; i < len; i++) {
-                    if ( ! innerEquiv(a[i], b[i])) {
-                        return false;
-                    }
-                }
-                return true;
-            },
-
-            "object": function (b, a) {
-                var i;
-                var eq = true; // unless we can proove it
-                var aProperties = [], bProperties = []; // collection of strings
-
-                // comparing constructors is more strict than using instanceof
-                if ( a.constructor !== b.constructor) {
-                    return false;
-                }
-
-                // stack constructor before traversing properties
-                callers.push(a.constructor);
-
-                for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
-
-                    aProperties.push(i); // collect a's properties
-
-                    if ( ! innerEquiv(a[i], b[i])) {
-                        eq = false;
-                    }
-                }
-
-                callers.pop(); // unstack, we are done
-
-                for (i in b) {
-                    bProperties.push(i); // collect b's properties
-                }
-
-                // Ensures identical properties name
-                return eq && innerEquiv(aProperties.sort(), bProperties.sort());
-            }
-        };
-    }();
-
-    innerEquiv = function () { // can take multiple arguments
-        var args = Array.prototype.slice.apply(arguments);
-        if (args.length < 2) {
-            return true; // end transition
-        }
-
-        return (function (a, b) {
-            if (a === b) {
-                return true; // catch the most you can
-            } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || hoozit(a) !== hoozit(b)) {
-                return false; // don't lose time with error prone cases
-            } else {
-                return bindCallbacks(a, callbacks, [b, a]);
-            }
-
-        // apply transition with (1..n) arguments
-        })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
-    };
-
-    return innerEquiv;
-
-}();
-
-/**
- * jsDump
- * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
- * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
- * Date: 5/15/2008
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
-	function quote( str ) {
-		return '"' + str.toString().replace(/"/g, '\\"') + '"';
-	};
-	function literal( o ) {
-		return o + '';	
-	};
-	function join( pre, arr, post ) {
-		var s = jsDump.separator(),
-			base = jsDump.indent(),
-			inner = jsDump.indent(1);
-		if ( arr.join )
-			arr = arr.join( ',' + s + inner );
-		if ( !arr )
-			return pre + post;
-		return [ pre, inner + arr, base + post ].join(s);
-	};
-	function array( arr ) {
-		var i = arr.length,	ret = Array(i);					
-		this.up();
-		while ( i-- )
-			ret[i] = this.parse( arr[i] );				
-		this.down();
-		return join( '[', ret, ']' );
-	};
-	
-	var reName = /^function (\w+)/;
-	
-	var jsDump = {
-		parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
-			var	parser = this.parsers[ type || this.typeOf(obj) ];
-			type = typeof parser;			
-			
-			return type == 'function' ? parser.call( this, obj ) :
-				   type == 'string' ? parser :
-				   this.parsers.error;
-		},
-		typeOf:function( obj ) {
-			var type = typeof obj,
-				f = 'function';//we'll use it 3 times, save it
-			return type != 'object' && type != f ? type :
-				!obj ? 'null' :
-				obj.exec ? 'regexp' :// some browsers (FF) consider regexps functions
-				obj.getHours ? 'date' :
-				obj.scrollBy ?  'window' :
-				obj.nodeName == '#document' ? 'document' :
-				obj.nodeName ? 'node' :
-				obj.item ? 'nodelist' : // Safari reports nodelists as functions
-				obj.callee ? 'arguments' :
-				obj.call || obj.constructor != Array && //an array would also fall on this hack
-					(obj+'').indexOf(f) != -1 ? f : //IE reports functions like alert, as objects
-				'length' in obj ? 'array' :
-				type;
-		},
-		separator:function() {
-			return this.multiline ?	this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
-		},
-		indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-			if ( !this.multiline )
-				return '';
-			var chr = this.indentChar;
-			if ( this.HTML )
-				chr = chr.replace(/\t/g,'   ').replace(/ /g,'&nbsp;');
-			return Array( this._depth_ + (extra||0) ).join(chr);
-		},
-		up:function( a ) {
-			this._depth_ += a || 1;
-		},
-		down:function( a ) {
-			this._depth_ -= a || 1;
-		},
-		setParser:function( name, parser ) {
-			this.parsers[name] = parser;
-		},
-		// The next 3 are exposed so you can use them
-		quote:quote, 
-		literal:literal,
-		join:join,
-		//
-		_depth_: 1,
-		// This is the list of parsers, to modify them, use jsDump.setParser
-		parsers:{
-			window: '[Window]',
-			document: '[Document]',
-			error:'[ERROR]', //when no parser is found, shouldn't happen
-			unknown: '[Unknown]',
-			'null':'null',
-			undefined:'undefined',
-			'function':function( fn ) {
-				var ret = 'function',
-					name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
-				if ( name )
-					ret += ' ' + name;
-				ret += '(';
-				
-				ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join('');
-				return join( ret, this.parse(fn,'functionCode'), '}' );
-			},
-			array: array,
-			nodelist: array,
-			arguments: array,
-			object:function( map ) {
-				var ret = [ ];
-				this.up();
-				for ( var key in map )
-					ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) );
-				this.down();
-				return join( '{', ret, '}' );
-			},
-			node:function( node ) {
-				var open = this.HTML ? '&lt;' : '<',
-					close = this.HTML ? '&gt;' : '>';
-					
-				var tag = node.nodeName.toLowerCase(),
-					ret = open + tag;
-					
-				for ( var a in this.DOMAttrs ) {
-					var val = node[this.DOMAttrs[a]];
-					if ( val )
-						ret += ' ' + a + '=' + this.parse( val, 'attribute' );
-				}
-				return ret + close + open + '/' + tag + close;
-			},
-			functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
-				var l = fn.length;
-				if ( !l ) return '';				
-				
-				var args = Array(l);
-				while ( l-- )
-					args[l] = String.fromCharCode(97+l);//97 is 'a'
-				return ' ' + args.join(', ') + ' ';
-			},
-			key:quote, //object calls it internally, the key part of an item in a map
-			functionCode:'[code]', //function calls it internally, it's the content of the function
-			attribute:quote, //node calls it internally, it's an html attribute value
-			string:quote,
-			date:quote,
-			regexp:literal, //regex
-			number:literal,
-			'boolean':literal
-		},
-		DOMAttrs:{//attributes to dump from nodes, name=>realName
-			id:'id',
-			name:'name',
-			'class':'className'
-		},
-		HTML:true,//if true, entities are escaped ( <, >, \t, space and \n )
-		indentChar:'   ',//indentation unit
-		multiline:true //if true, items in a collection, are separated by a \n, else just a space.
-	};
-
-	return jsDump;
-})();
-
-})(this);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/README.md b/blackberry10/node_modules/localize/README.md
deleted file mode 100644
index 54f52ba..0000000
--- a/blackberry10/node_modules/localize/README.md
+++ /dev/null
@@ -1,267 +0,0 @@
-# The *node-localize* library
-provides a [GNU gettext](http://www.gnu.org/s/gettext/)-inspired (but not conformant) translation utility for [Node.js](http://nodejs.org) that tries to avoid some of the limitations of the ``sprintf``-bound ``gettext`` (such as translation string parameters being in a fixed order in all translation results) and "fit in" better than a straight port.
-
-## Installation
-
-If you have [npm](http://npmjs.org), just type:
-
-```sh
-npm install localize
-```
-
-## Usage
-
-``node-localize`` returns an object constructor so multiple simultaneous localization objects may be in use at once (though most cases will probably be a singleton instantiation). The only required parameter on initialization is a ``translations`` object, using the following structure:
-
-```js
-var Localize = require('localize');
-
-var myLocalize = new Localize({
-    "Testing...": {
-        "es": "Pruebas...",
-        "sr": "тестирање..."
-    },
-    "Substitution: $[1]": {
-        "es": "Sustitución: $[1]",
-        "sr": "замена: $[1]"
-    }
-});
-
-console.log(myLocalize.translate("Testing...")); // Testing...
-console.log(myLocalize.translate("Substitution: $[1]", 5)); // Substitution: 5
-
-myLocalize.setLocale("es");
-console.log(myLocalize.translate("Testing...")); // Pruebas...
-
-myLocalize.setLocale("sr");
-console.log(myLocalize.translate("Substitution: $[1]", 5)); // замена: 5
-```
-
-``node-localize`` objects can also be passed a string indicating the directory a ``translations.json`` file can be found. This directory is searched recursively for all ``translations.json`` files in all subdirectories, and their contents combined together, so you can organize your translations as you wish.
-
-The directory is also searched recursively for directories named ``translations``. These directories are checked for special text files of the form ``varname.txt``, ``varname.es.txt``, ``varname.sr.txt``, etc. The text in ``varname.txt`` is treated as the default language of the application and the ``varname.xx.txt`` are treated as translations of the text. A special ``strings`` object is created where the ``varname`` becomes a property of that object and the default language text is the value of the property. So you can also do the following:
-
-```js
-var Localize = require('localize');
-
-var myLocalize = new Localize('./path/to/text/files/');
-
-console.log(myLocalize.translate(myLocalize.strings.reallyLongText); // The contents of ./path/to/text/files/translations/reallyLongText.txt, if it exists
-
-myLocalize.setLocale("es");
-console.log(myLocalize.translate(myLocalize.strings.reallyLongText); // The contents of ./path/to/text/files/translations/reallyLongText.es.txt, if it exists
-```
-
-## Dates
-
-Because date formats differ so wildly in different languages and these differences cannot be solved via simple substitution, there is also a ``localDate`` method for translating these values.
-
-```js
-var theDate = new Date("4-Jul-1776");
-var dateLocalize = new Localize("./translations");
-dateLocalize.loadDateFormats({
-	"es": {
-		dayNames: [
-			'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb',
-			'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'
-		],
-		monthNames: [
-			'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic',
-			'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'
-		],
-		masks: {
-			"default": "dddd, d 'de' mmmm yyyy"
-		}
-	}
-});
-
-console.log(dateLocalize.localDate(theDate)); // Thu Jul 04 1776 00:00:00
-console.log(dateLocalize.localDate(theDate, "fullDate")); // Thursday, July 4, 1776
-console.log(dateLocalize.localDate(theDate, "mm/dd/yyyy")); // 07/04/1776
-
-dateLocalize.setLocale("es");
-console.log(dateLocalize.localDate(theDate)); // Jueves, 4 de Julio 1776
-```
-
-The date formatting rules and configuration have been taken from [node-dateformat](https://github.com/felixge/node-dateformat), which has been extended to support multiple simultaneous locales and subsumed into ``node-localize``.
-
-## Complete API
-
-```js
-var myLocalize = new Localize(translationsObjOrStr, dateFormatObj, defaultLocaleStr);
-// translationsObjOrStr: a conformant translations object or a string indicating
-//     the directory where one or more conformant translations.json files are stored
-// dateFormatObj: a conformant date format object, containing one or more locales
-//     if not specified, will auto-generate an 'en' locale; if initially specified,
-//     will *overwrite* this auto-generated locale object
-// defaultLocale: the locale of all keys in the translations object. Defaults to 'en'
-```
-
-```js
-myLocalize.setLocale(localeStr);
-// localeStr: a locale string to switch to
-```
-
-```js
-myLocalize.loadTranslations(translationsObjOrStr);
-// translationsObjOrStr: a conformant translations object or a string indicating
-//     the directory where one or more conformant translations.json files are stored
-//     Multiple calls to loadTranslations *appends* the keys to the translations
-//     object in memory (overwriting duplicate keys).
-```
-
-```js
-myLocalize.clearTranslations();
-// Wipes out the translations object entirely (if a clean reload is desired)
-```
-
-```js
-myLocalize.throwOnMissingTranslation(throwBool);
-// throwBool: Boolean indicating whether or not missing translations should
-//     throw an error or be silently ignored and the text stay in the default
-//     locale. Useful for development to turn off.
-```
-
-```js
-myLocalize.translate(translateStr, arg1, arg2, ...);
-// translateStr: The string to be translated and optionally perform a
-//     substitution of specified args into. Arguments are specified in a RegExp
-//     style by number starting with 1 (it is the first argument that can be
-//     used and also is the arguments[1] value...), while using a jQuery-style
-//     demarcation of $[x], where x is the argument number.
-```
-
-```js
-myLocalize.loadDateFormats(dateFormatObj);
-// dateFormatObj: a conformant date format object, containing one or more locales
-//     Specified locales are appended to the internal object just like
-//     loadTranslations.
-```
-
-```js
-myLocalize.clearDateFormats();
-// Resets the date formats object to just the 'en' locale.
-```
-
-```js
-myLocalize.localDate(dateObjOrStr, maskStr, utcBool)
-// dateObjOrStr: the date object or string to format as desired in the current
-//     locale.
-// maskStr: the predefined mask to use, or a custom mask.
-// utcBool: a boolean indicating whether the timezone should be local or UTC
-```
-
-```js
-myLocalize.strings
-// Object of key-value pairs defined by files in ``translations`` directories
-// Key is the filename (sans extension) and value is the default language
-// text. Useful for translating very large blocks of text that shouldn't really
-// exist in code.
-```
-
-## _xlocalize_ CLI Utility
-
-Starting at version 0.2.0, ``node-localize``, when installed via NPM, adds an ``xlocalize`` utility command to the _PATH_, which allows for automatic construction of ``translations.json`` files (and can be re-run in the future to update existing files without clobbering any current translations present). It's command switches are as follows:
-
-```
-xlocalize USAGE:
-
--l	Set the default language for the translations.json file(s) (default: en)
--r	Set xlocalize to generate translations.json files recursively (default)
--R	Set xlocalize to only generate a translations.json file for the current directory
--e	Set the file extensions to include for translation (default: html,js)
--t	Set the languages to translate to (comma separated)
--h	Show this help message.
-```
-
-For example, to create a ``translations.json`` file in the current directory only that will translate from English to Spanish, Portuguese, Italian, and French for HTML and JS files:
-
-```sh
-xlocalize -R -t es,pt,it,fr
-```
-
-And if a new language, such as Serbian, is to be translated at a later time, you can use the command:
-```sh
-xlocalize -R -t es,pt,it,fr,sr
-```
-
-## [Express](http://expressjs.com) Integration Tips
-
-If your website supports multiple languages (probably why you're using this library!), you'll want to translate the page content for each supported language. The following snippets of code should make it easy to use within Express.
-
-### Middleware to switch locale on request
-
-```js
-app.configure(function() {
-    ...
-    app.use(function(request, response, next) {
-        var lang = request.session.lang || "en";
-        localize.setLocale(lang);
-        next();
-    });
-    ...
-});
-```
-
-I'm assuming you're storing their language preference inside of a session, but the logic can be easily tweaked for however you detect which language to show.
-
-### Export *translate*, *localDate*, and *strings* as static helpers
-
-```js
-app.helpers({
-    ...
-    translate: localize.translate,
-    localDate: localize.localDate,
-    strings: localize.strings
-});
-```
-
-Your controllers shouldn't really even be aware of any localization issues; the views should be doing that, so this ought to be enough configuration within your ``app.js`` file.
-
-### Using *translate*, *localDate*, and *strings* in your views
-
-```html
-<h1>${translate("My Awesome Webpage")}</h1>
-
-<h2>${translate("By: $[1]", webpageAuthor)}</h2>
-
-<h3>${translate("Published: $[1]", localDate(publicationDate))}</h3>
-
-{{if translate(strings.reallyLongPost) == strings.reallyLongPost}}
-<strong>${translate("Warning: The following content is in English.")}</strong>
-{{/if}}
-
-{{html translate(strings.reallyLongPost)}}
-```
-
-I'm using [jQuery Templates for Express](https://github.com/kof/node-jqtpl) here, but it should be easy to translate to whatever templating language you prefer.
-
-## Planned Features
-
-* Browser compatibility (use same functions for client-side jQuery Templates, for instance)
-* Optional Country Code support (that falls back to baseline language translation if a specific country code is missing) for regional language differences
-* Numeric localization (1,234,567.89 versus 1.234.567,89 versus 1 234 567,89 versus [Japanese Numerals](http://en.wikipedia.org/wiki/Japanese_numerals) [no idea how to handle that one at the moment])
-* Currency localization; not just representing $100.00 versus 100,00$, but perhaps hooking into currency conversion, as well.
-* Pluralization; one area gettext still beats node-localize is the ability to pluralize words correctly when given the number to pluralize against.
-
-## License (MIT)
-
-Copyright (C) 2011 by Agrosica, Inc, David Ellis, Felix Geisendörfer, Steven Levithan, Scott Trenda, Kris Kowal, Jerry Jalava, Clint Andrew Hall.
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/bin/translations.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/bin/translations.json b/blackberry10/node_modules/localize/bin/translations.json
deleted file mode 100644
index a4d2575..0000000
--- a/blackberry10/node_modules/localize/bin/translations.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-	"MISSING TRANSLATION": {
-	},
-	"FOUND VARIABLE INPUT $[1]": {
-	}
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/bin/xlocalize.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/bin/xlocalize.js b/blackberry10/node_modules/localize/bin/xlocalize.js
deleted file mode 100755
index d34df65..0000000
--- a/blackberry10/node_modules/localize/bin/xlocalize.js
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/bin/node
-
-// Load required modules
-var fs = require('fs');
-var path = require('path');
-
-// Use localize for internal localizations
-var localize = new require('localize')(__dirname);
-localize.throwOnMissingTranslation(false);
-var translate = localize.translate;
-
-// Defaults for ``xlocalize``
-var defaultLang = "en";
-var recurse = true;
-var extensions = ['html', 'js'];
-var outLangs = [];
-
-// Load arguments
-for(var i = 0; i < process.argv.length; i++) {
-	switch(process.argv[i]) {
-		case "-l":
-			defaultLang = process.argv[i+1];
-			break;
-		case "-r":
-			recurse = true;
-			break;
-		case "-R":
-			recurse = false;
-			break;
-		case "-e":
-			extensions = process.argv[i+1].split(",");
-			break;
-		case "-t":
-			outLangs = process.argv[i+1].split(",");
-			break;
-		case "-h":
-		case "--help":
-			console.log("xlocalize USAGE:\n");
-			console.log("-l\tSet the default language for the translations.json file(s) (default: en)");
-			console.log("-r\tSet xlocalize to generate translations.json files recursively (default)");
-			console.log("-R\tSet xlocalize to only generate a translations.json file for the current directory");
-			console.log("-e\tSet the file extensions to include for translation (default: html,js)");
-			console.log("-t\tSet the languages to translate to (comma separated)");
-			console.log("-h\tShow this help message.");
-			process.exit();
-		default:
-			break;
-	}
-}
-
-// Set internal localize object to use the user's default language
-localize.setLocale(defaultLang);
-
-// ## The *mergeObjs* function
-// is a helper function that clones the value of various object into a new one.
-// This simplistic one is fast, but assumes no recursive objects to merge.
-function mergeObjs() {
-	var outObj = {};
-	for(var i in arguments) {
-		if(arguments[i] instanceof Object) {
-			for(var j in arguments[i]) {
-				// Does not check for collisions, newer object
-				// definitions clobber old definitions
-				outObj[j] = arguments[i][j];
-			}
-		}
-	}
-	return outObj;
-}
-
-// ## The *processDir* function
-// generates a ``translations.json`` file for the current directory, but does
-// not override the previous file -- only augments it
-function processDir(dir) {
-	// JSON object for the current directory
-	var dirJSON = {};
-	// Path where translations will go
-	var translations = path.join(dir, "translations.json");
-	// Check for pre-existing ``translations.json`` file
-	if(path.existsSync(translations)) {
-		var currJSON = JSON.parse(fs.readFileSync(translations, "utf8"));
-		dirJSON = mergeObjs(dirJSON, currJSON);
-	}
-	
-	// Build pattern matching for searchable files
-	var extRegExpStr = "(";
-	for(var i = 0; i < extensions.length; i++) {
-		extRegExpStr += extensions[i];
-		if(i < extensions.length-1) { extRegExpStr += "|"; }
-		else { extRegExpStr += ")$"; }
-	}
-	var extRegExp = new RegExp(extRegExpStr);
-
-	// Process files in the current directory
-	var files = fs.readdirSync(dir);
-	files.forEach(function(file) {
-		if(extRegExp.test(file)) {
-			processFile(path.join(dir, file), dirJSON);
-		}
-		if(recurse && fs.statSync(path.join(dir, file)).isDirectory()) {
-			processDir(path.join(dir, file));
-		}
-	});
-
-	// Output dirJSON to file
-	fs.writeFileSync(translations, JSON.stringify(dirJSON, null, "	"), "utf8");
-}
-
-// ## The *processFile* function
-// extracts all translatable pieces of a source file into the dirJSON object,
-// unless already there.
-function processFile(filename, dirJSON) {
-	// Hacky, hacky RegExp parsing right now; replace with something better
-	var fileContents = fs.readFileSync(filename, "utf8");
-	var translatables = fileContents.match(/translate\s*\([^\),]*/);
-	if(translatables) {
-		for(var i = 0; i < translatables.length; i++) {
-			if(/^translate\s*\(\s*['"](.*)['"]$/.test(translatables[i])) { // A string-looking thing
-				if(!dirJSON[RegExp.$1]) { // Does not yet exist
-					dirJSON[RegExp.$1] = {};
-				}
-				outLangs.forEach(function(lang) {
-					if(!dirJSON[RegExp.$1][lang]) { // No translation, yet
-						dirJSON[RegExp.$1][lang] = translate("MISSING TRANSLATION");
-					}
-				});
-			} else {
-				var translateMessage = translate("FOUND VARIABLE INPUT: $[1]", translatables[i]);
-				dirJSON[translateMessage] = {};
-				outLangs.forEach(function(lang) {
-					dirJSON[translateMessage][lang] = translate("MISSING TRANSLATION");
-				});
-			}
-		}
-	}
-}
-
-// Get the ball rollin'
-processDir(process.cwd());

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/lib/localize.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/lib/localize.js b/blackberry10/node_modules/localize/lib/localize.js
deleted file mode 100644
index 648325e..0000000
--- a/blackberry10/node_modules/localize/lib/localize.js
+++ /dev/null
@@ -1,405 +0,0 @@
-// # Localize
-// is a GNU gettext-inspired (but not conformant) localization library for
-// Node.js
-
-// Libraries, if in a CommonJS environment
-if(typeof(require) != 'undefined') {
-	var path = require('path');
-	var fs = require('fs');
-}
-
-function Localize(translations, dateFormats, defaultLocale) {
-
-	// Make sure the defaultLocale is something sane, and set the locale to
-	// its value. Also configure ``Localize`` to throw an error if missing
-	// a translation.
-	defaultLocale = typeof(defaultLocale) == "string" ? defaultLocale : "en";
-	var locale = defaultLocale;
-	var missingTranslationThrow = true;
-	
-	// ## The *mergeObjs* function
-	// is a simple helper function to create a new object based on input objects.
-	function mergeObjs() {
-		var outObj = {};
-		for(var i in arguments) {
-			if(arguments[i] instanceof Object) {
-				for(var j in arguments[i]) {
-					// Does not check for collisions, newer object
-					// definitions clobber old definitions
-					outObj[j] = arguments[i][j];
-				}
-			}
-		}
-		return outObj;
-	}
-	
-	// ## The *setLocale* function
-	// simply sets the locale to whatever is specified at the moment, as long as it
-	// is a string.
-	this.setLocale = function(newLocale) {
-		if(typeof(newLocale) == "string") {
-			locale = newLocale;
-		} else {
-			throw new Error("Locale must be a string");
-		}
-	};
-
-	// ## The *strings* object
-	// contains a series of key-val pairs to be used for translating very large strings
-	// that aren't desirable to have duplicated in several locations
-	this.strings = {};
-	
-	// ## The *getTranslations* function
-	// is a recursive function that checks the specified directory, and all child
-	// directories, for ``translations.json`` files, combines them into one JSON
-	// object, and returns them.
-	function getTranslations(currDir, translations, strings) {
-		if(path.existsSync(currDir)) {
-			// Load translations.json file in current directory, if any
-			if(path.existsSync(path.join(currDir, "translations.json"))) {
-				translations = mergeObjs(translations,
-					JSON.parse(fs.readFileSync(path.join(path.resolve(currDir), "translations.json")))
-				);
-			}
-			// Load large text translations in translations subdirectory, if it exists
-			var translationPath = path.join(currDir, "translations");
-			if(path.existsSync(translationPath) && fs.statSync(translationPath).isDirectory()) {
-				// Get all children in the translations directory
-				var pathChildren = fs.readdirSync(translationPath);
-				// Filter out all non-default translations (the ones without a lang type)
-				pathChildren.filter(function(child) {
-					return !/^.*\..*\..*/.test(child);
-				// And map these default translations into an object containing the variable name to use,
-				// the default text, and an array of translations for this text
-				}).map(function(child) {
-					return {
-						name: child.replace(/\..*$/, ""),
-						defaultText: fs.readFileSync(path.join(translationPath, child), 'utf8'),
-						// To make the array of translations for this default translation, filter out
-						// all files that do not start with the primary translation filename (minus extension), with a special
-						// case to filter out the primary translation, as well
-						translations: pathChildren.filter(function(secondChild) {
-							return (new RegExp("^" + child.replace(/\..*$/, ""))).test(secondChild) && child != secondChild;
-						// Then map this array of files into an object containing the language specified
-						// and the translation text for this language
-						}).map(function(secondChild) {
-							return {
-								lang: secondChild.replace(/\.[^\.]*$/, "").replace(/^[^\.]*\./, ""),
-								text: fs.readFileSync(path.join(translationPath, secondChild), 'utf8')
-							}
-						})
-					}
-				// For each of these long-form translation objects, add the default text to the strings object using the
-				// desired variable name, and create a translation object for all defined languages for this text.
-				}).forEach(function(translation) {
-					strings[translation.name] = translation.defaultText;
-					translations[translation.defaultText] = {};
-					translation.translations.forEach(function(lang) {
-						translations[translation.defaultText][lang.lang] = lang.text;
-					});
-				});
-			}
-			// Recurse down each directory and get the translations for that directory
-			var pathChildren = fs.readdirSync(currDir);
-			for(var child in pathChildren) {
-				var childPath = path.resolve(path.join(currDir, pathChildren[child]));
-				if(fs.statSync(childPath).isDirectory()) {
-					var tempArray = getTranslations(childPath, translations, strings);
-					translations = tempArray[0], strings = tempArray[1];
-				}
-			}
-		} else {
-			throw new Error("Translation Path Invalid");
-		}
-		return [translations, strings];
-	}
-	
-	// ## The *validateTranslations* function
-	// determines whether or not the provided JSON object is in a valid
-	// format for ``localize``.
-	function validateTranslations(newTranslations) {
-		if(typeof(newTranslations) != "object") { return false; }
-		for(var translation in newTranslations) {
-			if(typeof(translation) != "string") { return false; }
-			if(typeof(newTranslations[translation]) != "object" ) { return false; }
-			for(var lang in newTranslations[translation]) {
-				if(typeof(lang) != "string") { return false; }
-				if(typeof(newTranslations[translation][lang]) != "string") { return false; }
-			}
-		}
-		return true;
-	}
-	
-	// ## The *loadTranslations* function
-	// takes a string or object, and attempts to append the specified translation
-	// to its store of translations, either by loading all translations from the
-	// specified directory (string), or appending the object directly.
-	this.loadTranslations = function(newTranslations) {
-		if(typeof(newTranslations) == "string") {
-			var tempArray = getTranslations(newTranslations, {}, this.strings);
-			newTranslations = tempArray[0];
-			this.strings = tempArray[1];
-		}
-		if(validateTranslations(newTranslations)) {
-			translations = mergeObjs(translations, newTranslations);
-		} else {
-			throw new Error("Must provide a valid set of translations.");
-		}
-	};
-	
-	// Now that we have the infrastructure in place, let's verify that the
-	// provided translations are valid.
-	this.loadTranslations(translations);
-	
-	// ## The *clearTranslations* function
-	// simply resets the translations variable to a clean slate.
-	this.clearTranslations = function() {
-		translations = {};
-	};
-
-	// ## The *getTranslations* function
-	// simply returns the entire translations object, or returns that portion
-	// of translations matched by the elements of a provided array of text to
-	// translate
-	this.getTranslations = function(textArr) {
-		if(textArr instanceof Array) {
-			var outObj = {};
-			textArr.forEach(function(text) {
-				outObj[text] = translations[text];
-			});
-			return outObj;
-		} else {
-			return translations;
-		}
-	};
-
-	// ## The *throwOnMissingTranslation* function
-	// lets the user decide if a missing translation should cause an Error
-	// to be thrown. Turning it off for development and on for testing is
-	// recommended. The function coerces whatever it receives into a bool.
-	this.throwOnMissingTranslation = function(shouldThrow) {
-		missingTranslationThrow = !!shouldThrow;
-	};
-	
-	// ## The *buildString* function
-	// is a string-building function inspired by both ``sprintf`` and
-	// [jQuery Templates](http://api.jquery.com/category/plugins/templates/)
-	// and a small helping of RegExp. The first argument to buildString is
-	// the source string, which has special ``$[x]`` blocks, where ``x`` is
-	// a number from 1 to Infinity, matching the nth argument provided.
-	// Because of ``.toString()``, string formatting _a la_ ``sprintf`` is
-	// avoided, and the numeric identification allows the same parameter to
-	// be used multiple times, and the parameter order need not match the
-	// string referencing order (important for translations)
-	function buildString() {
-		var outString = arguments[0];
-		for(var i = 1; i < arguments.length; i++) {
-			outString = outString.replace(new RegExp("\\$\\[" + i + "\\]", "g"), arguments[i]);
-		}
-		return outString;
-	}
-	
-	// ## The *translate* function
-	// is a thin automatic substitution wrapper around ``buildString``. In
-	// fact, it short-circuits to ``buildString`` when ``locale`` equals
-	// ``defaultLocale``. Otherwise, it looks up the required translated
-	// string and executes ``buildString`` on that, instead
-	this.translate = function() {
-		if(locale == defaultLocale) {
-			return buildString.apply(this, arguments);
-		}
-		var newText = translations[arguments[0]] && translations[arguments[0]][locale] ?
-			translations[arguments[0]][locale] : null;
-		if(missingTranslationThrow && typeof(newText) != "string") {
-			throw new Error("Could not find translation for '" +
-				arguments[0] + "' in the " + locale + " locale");
-		} else if(typeof(newText) != "string") {
-			newText = arguments[0];
-		}
-		var newArr = Array.prototype.splice.call(arguments, 1, arguments.length - 1);
-		newArr.unshift(newText);
-		return buildString.apply(this, newArr);
-	};
-
-	// ## The *validateDateFormats* function
-	// determines whether or not the provided dateFormat object conforms to
-	// the necessary structure
-	function validateDateFormats(dateFormats) {
-		if(typeof(dateFormats) != "object") { return false; }
-		for(var lang in dateFormats) {
-			if(typeof(lang) != "string") { return false; }
-			if(typeof(dateFormats[lang]) != "object") { return false; }
-			if(!(dateFormats[lang].dayNames instanceof Array)) { return false; }
-			if(!(dateFormats[lang].monthNames instanceof Array)) { return false; }
-			if(typeof(dateFormats[lang].masks) != "object") { return false; }
-			if(typeof(dateFormats[lang].masks["default"]) != "string") { return false; }
-			if(dateFormats[lang].dayNames.length != 14) { return false; }
-			if(dateFormats[lang].monthNames.length != 24) { return false; }
-			for(var i = 0; i < 24; i++) {
-				if(i < 14 && typeof(dateFormats[lang].dayNames[i]) != "string") { return false; }
-				if(typeof(dateFormats[lang].monthNames[i]) != "string") { return false; }
-			}
-		}
-		return true;
-	}
-	
-	// ## The *loadDateFormats* function
-	// appends the provided ``dateFormats`` object, if valid, to the current
-	// ``dateFormats`` object. Otherwise, it throws an error.
-	this.loadDateFormats = function(newDateFormats) {
-		if(validateDateFormats(newDateFormats)) {
-			dateFormats = mergeObjs(dateFormats, newDateFormats);
-		} else {
-			throw new Error("Invalid Date Format provided");
-		}
-	};
-
-	// ## The *clearDateFormats* function
-	// resets the ``dateFormats`` object to English dates.
-	this.clearDateFormats = function() {
-		dateFormats = {
-			"en": {
-				dayNames: [
-					"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
-					"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
-				],
-				monthNames: [
-					"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
-					"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
-				],
-				masks: {
-					"default":      "ddd mmm dd yyyy HH:MM:ss",
-					shortDate:      "m/d/yy",
-					mediumDate:     "mmm d, yyyy",
-					longDate:       "mmmm d, yyyy",
-					fullDate:       "dddd, mmmm d, yyyy",
-					shortTime:      "h:MM TT",
-					mediumTime:     "h:MM:ss TT",
-					longTime:       "h:MM:ss TT Z",
-					isoDate:        "yyyy-mm-dd",
-					isoTime:        "HH:MM:ss",
-					isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
-					isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
-				}
-			}
-		};
-	};
-
-	// ## The *getDateFormats* function
-	// returns the currently-defined ``dateFormats`` object
-	this.getDateFormats = function() {
-		return dateFormats;
-	};
-	
-	// Now that we have the infrastructure in place, let's validate the
-	// optional ``dateFormats`` object if provided, or initialize it.
-	if(validateDateFormats(dateFormats)) {
-		this.loadDateFormats(dateFormats);
-	} else {
-		this.clearDateFormats();
-	}
-	
-	// The *localDate* function
-	// provides easy-to-use date localization support. Based heavily on
-	// [node-dateFormat](https://github.com/felixge/node-dateformat) by
-	// Steven Levithan <stevenlevithan.com>
-	// Scott Trenda <scott.trenda.net>
-	// Kris Kowal <cixar.com/~kris.kowal/>
-	// Felix Geisendörfer <debuggable.com>
-	// MIT Licensed, as with this library. The resultant API is one where
-	// a date string or object is the first argument, a mask string (being
-	// either a key in the ``masks`` object or an arbitrary mask is the
-	// second argument, and a third is a bool flag on whether local or UTC
-	// time should be used.
-	this.localDate = function() {
-		var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
-			timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
-			timezoneClip = /[^-+\dA-Z]/g,
-			pad = function (val, len) {
-				val = String(val);
-				len = len || 2;
-				while (val.length < len) val = "0" + val;
-				return val;
-			};
-		
-		// Regexes and supporting functions are cached through closure
-		return function (date, mask, utc) {
-			// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
-			if (arguments.length == 1 &&
-				Object.prototype.toString.call(date) == "[object String]" &&
-				!/\d/.test(date)) {
-				mask = date;
-				date = undefined;
-			}
-			
-			date = date || new Date;
-			
-			if(!(date instanceof Date)) {
-				date = new Date(date);
-			}
-			
-			if(isNaN(date)) {
-				throw TypeError("Invalid date");
-			}
-			
-			mask = String(dateFormats[locale].masks[mask] || mask || dateFormats[locale].masks["default"]);
-			
-			// Allow setting the utc argument via the mask
-			if (mask.slice(0, 4) == "UTC:") {
-				mask = mask.slice(4);
-				utc = true;
-			}
-			
-			var	_ = utc ? "getUTC" : "get",
-				d = date[_ + "Date"](),
-				D = date[_ + "Day"](),
-				m = date[_ + "Month"](),
-				y = date[_ + "FullYear"](),
-				H = date[_ + "Hours"](),
-				M = date[_ + "Minutes"](),
-				s = date[_ + "Seconds"](),
-				L = date[_ + "Milliseconds"](),
-				o = utc ? 0 : date.getTimezoneOffset(),
-				flags = {
-					d:    d,
-					dd:   pad(d),
-					ddd:  dateFormats[locale].dayNames[D],
-					dddd: dateFormats[locale].dayNames[D + 7],
-					m:    m + 1,
-					mm:   pad(m + 1),
-					mmm:  dateFormats[locale].monthNames[m],
-					mmmm: dateFormats[locale].monthNames[m + 12],
-					yy:   String(y).slice(2),
-					yyyy: y,
-					h:    H % 12 || 12,
-					hh:   pad(H % 12 || 12),
-					H:    H,
-					HH:   pad(H),
-					M:    M,
-					MM:   pad(M),
-					s:    s,
-					ss:   pad(s),
-					l:    pad(L, 3),
-					L:    pad(L > 99 ? Math.round(L / 10) : L),
-					t:    H < 12 ? "a"  : "p",
-					tt:   H < 12 ? "am" : "pm",
-					T:    H < 12 ? "A"  : "P",
-					TT:   H < 12 ? "AM" : "PM",
-					Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
-					o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
-					S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
-				};
-			
-			return mask.replace(token, function ($0) {
-				return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
-			});
-		};
-	}();
-	
-	return this;
-}
-
-// Publish as a module, if in a CommonJS environment
-if(typeof(module) != 'undefined') {
-	module.exports = Localize;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/package.json b/blackberry10/node_modules/localize/package.json
deleted file mode 100644
index d709584..0000000
--- a/blackberry10/node_modules/localize/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "name": "localize",
-  "description": "A GNU gettext-inspired (but not conformant) localization library for Node.js",
-  "homepage": "https://github.com/AGROSICA/node-localize",
-  "author": {
-    "name": "David Ellis"
-  },
-  "contributors": [
-    {
-      "name": "Steven Levithan"
-    },
-    {
-      "name": "Felix Geisendörfer"
-    },
-    {
-      "name": "Clint Andrew Hall"
-    },
-    {
-      "name": "Jerry Jalava"
-    }
-  ],
-  "version": "0.4.2",
-  "main": "./lib/localize",
-  "dependencies": {},
-  "devDependencies": {
-    "expresso": ">=0.8.1"
-  },
-  "engines": {
-    "node": "*"
-  },
-  "bin": {
-    "xlocalize": "./bin/xlocalize.js"
-  },
-  "readme": "# The *node-localize* library\nprovides a [GNU gettext](http://www.gnu.org/s/gettext/)-inspired (but not conformant) translation utility for [Node.js](http://nodejs.org) that tries to avoid some of the limitations of the ``sprintf``-bound ``gettext`` (such as translation string parameters being in a fixed order in all translation results) and \"fit in\" better than a straight port.\n\n## Installation\n\nIf you have [npm](http://npmjs.org), just type:\n\n```sh\nnpm install localize\n```\n\n## Usage\n\n``node-localize`` returns an object constructor so multiple simultaneous localization objects may be in use at once (though most cases will probably be a singleton instantiation). The only required parameter on initialization is a ``translations`` object, using the following structure:\n\n```js\nvar Localize = require('localize');\n\nvar myLocalize = new Localize({\n    \"Testing...\": {\n        \"es\": \"Pruebas...\",\n        \"sr\": \"тестирање...\"\n    },\n  
   \"Substitution: $[1]\": {\n        \"es\": \"Sustitución: $[1]\",\n        \"sr\": \"замена: $[1]\"\n    }\n});\n\nconsole.log(myLocalize.translate(\"Testing...\")); // Testing...\nconsole.log(myLocalize.translate(\"Substitution: $[1]\", 5)); // Substitution: 5\n\nmyLocalize.setLocale(\"es\");\nconsole.log(myLocalize.translate(\"Testing...\")); // Pruebas...\n\nmyLocalize.setLocale(\"sr\");\nconsole.log(myLocalize.translate(\"Substitution: $[1]\", 5)); // замена: 5\n```\n\n``node-localize`` objects can also be passed a string indicating the directory a ``translations.json`` file can be found. This directory is searched recursively for all ``translations.json`` files in all subdirectories, and their contents combined together, so you can organize your translations as you wish.\n\nThe directory is also searched recursively for directories named ``translations``. These directories are checked for special text files of the form ``varname.txt``, ``varname.es.txt``, ``varna
 me.sr.txt``, etc. The text in ``varname.txt`` is treated as the default language of the application and the ``varname.xx.txt`` are treated as translations of the text. A special ``strings`` object is created where the ``varname`` becomes a property of that object and the default language text is the value of the property. So you can also do the following:\n\n```js\nvar Localize = require('localize');\n\nvar myLocalize = new Localize('./path/to/text/files/');\n\nconsole.log(myLocalize.translate(myLocalize.strings.reallyLongText); // The contents of ./path/to/text/files/translations/reallyLongText.txt, if it exists\n\nmyLocalize.setLocale(\"es\");\nconsole.log(myLocalize.translate(myLocalize.strings.reallyLongText); // The contents of ./path/to/text/files/translations/reallyLongText.es.txt, if it exists\n```\n\n## Dates\n\nBecause date formats differ so wildly in different languages and these differences cannot be solved via simple substitution, there is also a ``localDate`` method fo
 r translating these values.\n\n```js\nvar theDate = new Date(\"4-Jul-1776\");\nvar dateLocalize = new Localize(\"./translations\");\ndateLocalize.loadDateFormats({\n\t\"es\": {\n\t\tdayNames: [\n\t\t\t'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb',\n\t\t\t'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'\n\t\t],\n\t\tmonthNames: [\n\t\t\t'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic',\n\t\t\t'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'\n\t\t],\n\t\tmasks: {\n\t\t\t\"default\": \"dddd, d 'de' mmmm yyyy\"\n\t\t}\n\t}\n});\n\nconsole.log(dateLocalize.localDate(theDate)); // Thu Jul 04 1776 00:00:00\nconsole.log(dateLocalize.localDate(theDate, \"fullDate\")); // Thursday, July 4, 1776\nconsole.log(dateLocalize.localDate(theDate, \"mm/dd/yyyy\")); // 07/04/1776\n\ndateLocalize.setLocale(\"es\");\nconsole.log(dateLocalize.localDate(theDate)); // Ju
 eves, 4 de Julio 1776\n```\n\nThe date formatting rules and configuration have been taken from [node-dateformat](https://github.com/felixge/node-dateformat), which has been extended to support multiple simultaneous locales and subsumed into ``node-localize``.\n\n## Complete API\n\n```js\nvar myLocalize = new Localize(translationsObjOrStr, dateFormatObj, defaultLocaleStr);\n// translationsObjOrStr: a conformant translations object or a string indicating\n//     the directory where one or more conformant translations.json files are stored\n// dateFormatObj: a conformant date format object, containing one or more locales\n//     if not specified, will auto-generate an 'en' locale; if initially specified,\n//     will *overwrite* this auto-generated locale object\n// defaultLocale: the locale of all keys in the translations object. Defaults to 'en'\n```\n\n```js\nmyLocalize.setLocale(localeStr);\n// localeStr: a locale string to switch to\n```\n\n```js\nmyLocalize.loadTranslations(trans
 lationsObjOrStr);\n// translationsObjOrStr: a conformant translations object or a string indicating\n//     the directory where one or more conformant translations.json files are stored\n//     Multiple calls to loadTranslations *appends* the keys to the translations\n//     object in memory (overwriting duplicate keys).\n```\n\n```js\nmyLocalize.clearTranslations();\n// Wipes out the translations object entirely (if a clean reload is desired)\n```\n\n```js\nmyLocalize.throwOnMissingTranslation(throwBool);\n// throwBool: Boolean indicating whether or not missing translations should\n//     throw an error or be silently ignored and the text stay in the default\n//     locale. Useful for development to turn off.\n```\n\n```js\nmyLocalize.translate(translateStr, arg1, arg2, ...);\n// translateStr: The string to be translated and optionally perform a\n//     substitution of specified args into. Arguments are specified in a RegExp\n//     style by number starting with 1 (it is the first 
 argument that can be\n//     used and also is the arguments[1] value...), while using a jQuery-style\n//     demarcation of $[x], where x is the argument number.\n```\n\n```js\nmyLocalize.loadDateFormats(dateFormatObj);\n// dateFormatObj: a conformant date format object, containing one or more locales\n//     Specified locales are appended to the internal object just like\n//     loadTranslations.\n```\n\n```js\nmyLocalize.clearDateFormats();\n// Resets the date formats object to just the 'en' locale.\n```\n\n```js\nmyLocalize.localDate(dateObjOrStr, maskStr, utcBool)\n// dateObjOrStr: the date object or string to format as desired in the current\n//     locale.\n// maskStr: the predefined mask to use, or a custom mask.\n// utcBool: a boolean indicating whether the timezone should be local or UTC\n```\n\n```js\nmyLocalize.strings\n// Object of key-value pairs defined by files in ``translations`` directories\n// Key is the filename (sans extension) and value is the default language\n
 // text. Useful for translating very large blocks of text that shouldn't really\n// exist in code.\n```\n\n## _xlocalize_ CLI Utility\n\nStarting at version 0.2.0, ``node-localize``, when installed via NPM, adds an ``xlocalize`` utility command to the _PATH_, which allows for automatic construction of ``translations.json`` files (and can be re-run in the future to update existing files without clobbering any current translations present). It's command switches are as follows:\n\n```\nxlocalize USAGE:\n\n-l\tSet the default language for the translations.json file(s) (default: en)\n-r\tSet xlocalize to generate translations.json files recursively (default)\n-R\tSet xlocalize to only generate a translations.json file for the current directory\n-e\tSet the file extensions to include for translation (default: html,js)\n-t\tSet the languages to translate to (comma separated)\n-h\tShow this help message.\n```\n\nFor example, to create a ``translations.json`` file in the current directory o
 nly that will translate from English to Spanish, Portuguese, Italian, and French for HTML and JS files:\n\n```sh\nxlocalize -R -t es,pt,it,fr\n```\n\nAnd if a new language, such as Serbian, is to be translated at a later time, you can use the command:\n```sh\nxlocalize -R -t es,pt,it,fr,sr\n```\n\n## [Express](http://expressjs.com) Integration Tips\n\nIf your website supports multiple languages (probably why you're using this library!), you'll want to translate the page content for each supported language. The following snippets of code should make it easy to use within Express.\n\n### Middleware to switch locale on request\n\n```js\napp.configure(function() {\n    ...\n    app.use(function(request, response, next) {\n        var lang = request.session.lang || \"en\";\n        localize.setLocale(lang);\n        next();\n    });\n    ...\n});\n```\n\nI'm assuming you're storing their language preference inside of a session, but the logic can be easily tweaked for however you detect w
 hich language to show.\n\n### Export *translate*, *localDate*, and *strings* as static helpers\n\n```js\napp.helpers({\n    ...\n    translate: localize.translate,\n    localDate: localize.localDate,\n    strings: localize.strings\n});\n```\n\nYour controllers shouldn't really even be aware of any localization issues; the views should be doing that, so this ought to be enough configuration within your ``app.js`` file.\n\n### Using *translate*, *localDate*, and *strings* in your views\n\n```html\n<h1>${translate(\"My Awesome Webpage\")}</h1>\n\n<h2>${translate(\"By: $[1]\", webpageAuthor)}</h2>\n\n<h3>${translate(\"Published: $[1]\", localDate(publicationDate))}</h3>\n\n{{if translate(strings.reallyLongPost) == strings.reallyLongPost}}\n<strong>${translate(\"Warning: The following content is in English.\")}</strong>\n{{/if}}\n\n{{html translate(strings.reallyLongPost)}}\n```\n\nI'm using [jQuery Templates for Express](https://github.com/kof/node-jqtpl) here, but it should be easy to 
 translate to whatever templating language you prefer.\n\n## Planned Features\n\n* Browser compatibility (use same functions for client-side jQuery Templates, for instance)\n* Optional Country Code support (that falls back to baseline language translation if a specific country code is missing) for regional language differences\n* Numeric localization (1,234,567.89 versus 1.234.567,89 versus 1 234 567,89 versus [Japanese Numerals](http://en.wikipedia.org/wiki/Japanese_numerals) [no idea how to handle that one at the moment])\n* Currency localization; not just representing $100.00 versus 100,00$, but perhaps hooking into currency conversion, as well.\n* Pluralization; one area gettext still beats node-localize is the ability to pluralize words correctly when given the number to pluralize against.\n\n## License (MIT)\n\nCopyright (C) 2011 by Agrosica, Inc, David Ellis, Felix Geisendörfer, Steven Levithan, Scott Trenda, Kris Kowal, Jerry Jalava, Clint Andrew Hall.\n\nPermission is hereb
 y 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 Software, 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",
-  "_id": "localize@0.4.2",
-  "_from": "localize@*0.4.2"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/localize.test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/localize.test.js b/blackberry10/node_modules/localize/test/localize.test.js
deleted file mode 100644
index 49dd92b..0000000
--- a/blackberry10/node_modules/localize/test/localize.test.js
+++ /dev/null
@@ -1,179 +0,0 @@
-var assert = require('assert');
-var Localize = require('../lib/localize');
-
-module.exports = {
-	'test empty initialization error': function() {
-		assert.throws(function() {
-			var badLocalize = new Localize();
-		}, function(err) {
-			if(err instanceof Error &&
-				err.message == "Must provide a valid set of translations.") {
-				return true;
-			}
-			return false;
-		});
-	},
-	'test bad translations var error': function() {
-		assert.throws(function() {
-			var badLocalize = new Localize([1,2,3]);
-		}, function(err) {
-			if(err instanceof Error &&
-				err.message == "Must provide a valid set of translations.") {
-				return true;
-			}
-			return false;
-		});
-	},
-	'test bad translations path error': function() {
-		assert.throws(function() {
-			var badLocalize = new Localize("/nowheresville");
-		}, function(err) {
-			if(err instanceof Error &&
-				err.message == "Translation Path Invalid") {
-				return true;
-			}
-			return false;
-		});
-	},
-	'test good translations var': function() {
-		assert.doesNotThrow(function() {
-			var goodLocalize = new Localize({
-				"Testing...": {
-					"es": "Pruebas..."
-				}
-			});
-		});
-	},
-	'test good translations path': function() {
-		assert.doesNotThrow(function() {
-			var goodLocalize = new Localize("./translations");
-		});
-	},
-	'test bad setLocale var': function() {
-		assert.throws(function() {
-			var goodLocalize = new Localize("./translations");
-			goodLocalize.setLocale(23);
-		}, function(err) {
-			if(err instanceof Error &&
-				err.message == "Locale must be a string") {
-				return true;
-			}
-			return false;
-		});
-	},
-	'test good setLocale var': function() {
-		assert.doesNotThrow(function() {
-			var goodLocalize = new Localize("./translations");
-			goodLocalize.setLocale("es");
-		});
-	},
-	'test bad translate string': function() {
-		assert.throws(function() {
-			var goodLocalize = new Localize("./translations");
-			goodLocalize.setLocale("es");
-			goodLocalize.translate("Test2");
-		}, function(err) {
-			if(err instanceof Error &&
-				err.message == "Could not find translation for 'Test2' in the es locale") {
-				return true;
-			}
-			return false;
-		});
-	},
-	'test good translate string': function() {
-		assert.doesNotThrow(function() {
-			var goodLocalize = new Localize("./translations");
-			goodLocalize.setLocale("es");
-			assert.strictEqual(goodLocalize.translate("Testing..."), "Pruebas...");
-		});
-	},
-	'test good translate nop': function() {
-		var goodLocalize = new Localize("./translations");
-		assert.strictEqual(goodLocalize.translate("Testing..."), "Testing...");
-	},
-	'test good translate substitution': function() {
-		var goodLocalize = new Localize("./translations");
-		assert.strictEqual(goodLocalize.translate("Substitution: $[1]", 5), "Substitution: 5");
-		goodLocalize.setLocale("es");
-		assert.strictEqual(goodLocalize.translate("Substitution: $[1]", 5), "Sustitución: 5");
-	},
-	'test good translate multiple substitution': function() {
-		var goodLocalize = new Localize("./translations");
-		assert.strictEqual(goodLocalize.translate("Multiple substitution: $[1], $[2]", 5, 25), "Multiple substitution: 5, 25");
-		goodLocalize.setLocale("es");
-		assert.strictEqual(goodLocalize.translate("Multiple substitution: $[1], $[2]", 5, 25), "Sustitución múltiple: 5, 25");
-	},
-	'test bad dateFormat var initialization': function() {
-		assert.doesNotThrow(function() {
-			var goodLocalize = new Localize("./translations", 25);
-		});
-	},
-	'test bad dateFormat var post-initialization': function() {
-		assert.throws(function() {
-			var badLocalize = new Localize("./translations", 25);
-			badLocalize.loadDateFormats(25);
-		}, function(err) {
-			if(err instanceof Error &&
-				err.message == "Invalid Date Format provided") {
-				return true;
-			}
-			return false;
-		});
-	},
-	'test good dateFormat var post-initialization': function() {
-		assert.doesNotThrow(function() {
-			var goodLocalize = new Localize("./translations");
-			goodLocalize.loadDateFormats({
-				"es": {
-					dayNames: [
-						'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb',
-						'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'
-					],
-					monthNames: [
-						'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic',
-						'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'
-					],
-					masks: {
-						"default": "dddd, d 'de' mmmm yyyy"
-					}
-				}
-			});
-		});
-	},
-	'test good localDate': function() {
-		var theDate = new Date("4-Jul-1776");
-		var goodLocalize = new Localize("./translations");
-		goodLocalize.loadDateFormats({
-			"es": {
-				dayNames: [
-					'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb',
-					'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'
-				],
-				monthNames: [
-					'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic',
-					'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'
-				],
-				masks: {
-					"default": "dddd, d 'de' mmmm yyyy"
-				}
-			}
-		});
-		assert.strictEqual(goodLocalize.localDate(theDate), "Thu Jul 04 1776 00:00:00");
-		assert.strictEqual(goodLocalize.localDate(theDate, "fullDate"), "Thursday, July 4, 1776");
-		assert.strictEqual(goodLocalize.localDate(theDate, "mm/dd/yyyy"), "07/04/1776");
-		goodLocalize.setLocale("es");
-		assert.strictEqual(goodLocalize.localDate(theDate), "Jueves, 4 de Julio 1776");
-	},
-	'test good missing translation ignore': function() {
-		var goodLocalize = new Localize("./translations");
-		goodLocalize.throwOnMissingTranslation(false);
-		goodLocalize.setLocale("es");
-		assert.strictEqual(goodLocalize.translate("Not found"), "Not found");
-	},
-	'test translations dir': function() {
-		var goodLocalize = new Localize('./translations');
-		assert.strictEqual(goodLocalize.translate(goodLocalize.strings.helloWorld), "Hello, World!\n");
-		goodLocalize.setLocale("es");
-		assert.strictEqual(goodLocalize.translate(goodLocalize.strings.helloWorld), "¡Hola, mundo!\n");
-	}
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/translations/subsitution/translations.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/translations/subsitution/translations.json b/blackberry10/node_modules/localize/test/translations/subsitution/translations.json
deleted file mode 100644
index 1a68bb3..0000000
--- a/blackberry10/node_modules/localize/test/translations/subsitution/translations.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-	"Substitution: $[1]": {
-		"es": "Sustitución: $[1]"
-	},
-	"Multiple substitution: $[1], $[2]": {
-		"es": "Sustitución múltiple: $[1], $[2]"
-	}
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/translations/translations.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/translations/translations.json b/blackberry10/node_modules/localize/test/translations/translations.json
deleted file mode 100644
index e83ace0..0000000
--- a/blackberry10/node_modules/localize/test/translations/translations.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-	"Testing...": {
-		"es": "Pruebas..."
-	}
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/translations/translations/helloWorld.es.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/translations/translations/helloWorld.es.txt b/blackberry10/node_modules/localize/test/translations/translations/helloWorld.es.txt
deleted file mode 100644
index 59b3e13..0000000
--- a/blackberry10/node_modules/localize/test/translations/translations/helloWorld.es.txt
+++ /dev/null
@@ -1 +0,0 @@
-¡Hola, mundo!

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/translations/translations/helloWorld.txt
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/translations/translations/helloWorld.txt b/blackberry10/node_modules/localize/test/translations/translations/helloWorld.txt
deleted file mode 100644
index 8ab686e..0000000
--- a/blackberry10/node_modules/localize/test/translations/translations/helloWorld.txt
+++ /dev/null
@@ -1 +0,0 @@
-Hello, World!

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/xlocalize.test.sh
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/xlocalize.test.sh b/blackberry10/node_modules/localize/test/xlocalize.test.sh
deleted file mode 100755
index 700cb5b..0000000
--- a/blackberry10/node_modules/localize/test/xlocalize.test.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-
-testdir=`pwd`
-cd xlocalize
-../../bin/xlocalize.js -t es,pt,it,fr
-test1=`diff translations.json ../xlocalize.testfile1.json`
-if [ "$test1" = "" ]
-then
-	cd subdir
-	test2=`diff translations.json ../../xlocalize.testfile2.json`
-	if [ "$test2" = "" ]
-	then
-		cd ..
-		../../bin/xlocalize.js -t es,pt,it,fr,sr
-		test3=`diff translations.json ../xlocalize.testfile3.json`
-		if [ "$test3" = "" ]
-		then
-			cd subdir
-			test4=`diff translations.json ../../xlocalize.testfile4.json`
-			if [ "$test4" = "" ]
-			then
-				echo "Success"
-			else
-				echo "testfile4 Failed";
-			fi
-		else
-			echo "testfile3 Failed";
-		fi
-	else
-		echo "testfile2 Failed";
-	fi
-else
-	echo "testfile1 Failed";
-fi
-cd $testdir
-rm xlocalize/translations.json
-rm xlocalize/subdir/translations.json

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/xlocalize.testfile1.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/xlocalize.testfile1.json b/blackberry10/node_modules/localize/test/xlocalize.testfile1.json
deleted file mode 100644
index 3ff0677..0000000
--- a/blackberry10/node_modules/localize/test/xlocalize.testfile1.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-	"This page is in English.": {
-		"es": "MISSING TRANSLATION",
-		"pt": "MISSING TRANSLATION",
-		"it": "MISSING TRANSLATION",
-		"fr": "MISSING TRANSLATION"
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/xlocalize.testfile2.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/xlocalize.testfile2.json b/blackberry10/node_modules/localize/test/xlocalize.testfile2.json
deleted file mode 100644
index 8e9ccdf..0000000
--- a/blackberry10/node_modules/localize/test/xlocalize.testfile2.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-	"You called foo!": {
-		"es": "MISSING TRANSLATION",
-		"pt": "MISSING TRANSLATION",
-		"it": "MISSING TRANSLATION",
-		"fr": "MISSING TRANSLATION"
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/xlocalize.testfile3.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/xlocalize.testfile3.json b/blackberry10/node_modules/localize/test/xlocalize.testfile3.json
deleted file mode 100644
index 18d86f7..0000000
--- a/blackberry10/node_modules/localize/test/xlocalize.testfile3.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-	"This page is in English.": {
-		"es": "MISSING TRANSLATION",
-		"pt": "MISSING TRANSLATION",
-		"it": "MISSING TRANSLATION",
-		"fr": "MISSING TRANSLATION",
-		"sr": "MISSING TRANSLATION"
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/xlocalize.testfile4.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/xlocalize.testfile4.json b/blackberry10/node_modules/localize/test/xlocalize.testfile4.json
deleted file mode 100644
index 7ee91e9..0000000
--- a/blackberry10/node_modules/localize/test/xlocalize.testfile4.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-	"You called foo!": {
-		"es": "MISSING TRANSLATION",
-		"pt": "MISSING TRANSLATION",
-		"it": "MISSING TRANSLATION",
-		"fr": "MISSING TRANSLATION",
-		"sr": "MISSING TRANSLATION"
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/localize/test/xlocalize/subdir/test2.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/localize/test/xlocalize/subdir/test2.js b/blackberry10/node_modules/localize/test/xlocalize/subdir/test2.js
deleted file mode 100644
index f05ca6a..0000000
--- a/blackberry10/node_modules/localize/test/xlocalize/subdir/test2.js
+++ /dev/null
@@ -1,3 +0,0 @@
-function foo() {
-	alert(translate("You called foo!"));
-}


[28/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/example.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/example.js b/blackberry10/node_modules/elementtree/node_modules/sax/examples/example.js
deleted file mode 100644
index e7f81e6..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/example.js
+++ /dev/null
@@ -1,41 +0,0 @@
-
-var fs = require("fs"),
-  sys = require("sys"),
-  path = require("path"),
-  xml = fs.cat(path.join(__dirname, "test.xml")),
-  sax = require("../lib/sax"),
-  strict = sax.parser(true),
-  loose = sax.parser(false, {trim:true}),
-  inspector = function (ev) { return function (data) {
-    // sys.error("");
-    // sys.error(ev+": "+sys.inspect(data));
-    // for (var i in data) sys.error(i+ " "+sys.inspect(data[i]));
-    // sys.error(this.line+":"+this.column);
-  }};
-
-xml.addCallback(function (xml) {
-  // strict.write(xml);
-  
-  sax.EVENTS.forEach(function (ev) {
-    loose["on"+ev] = inspector(ev);
-  });
-  loose.onend = function () {
-    // sys.error("end");
-    // sys.error(sys.inspect(loose));
-  };
-  
-  // do this one char at a time to verify that it works.
-  // (function () {
-  //   if (xml) {
-  //     loose.write(xml.substr(0,1000));
-  //     xml = xml.substr(1000);
-  //     process.nextTick(arguments.callee);
-  //   } else loose.close();
-  // })();
-  
-  for (var i = 0; i < 1000; i ++) {
-    loose.write(xml);
-    loose.close();
-  }
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/get-products.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/get-products.js b/blackberry10/node_modules/elementtree/node_modules/sax/examples/get-products.js
deleted file mode 100644
index 9e8d74a..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/get-products.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// pull out /GeneralSearchResponse/categories/category/items/product tags
-// the rest we don't care about.
-
-var sax = require("../lib/sax.js")
-var fs = require("fs")
-var path = require("path")
-var xmlFile = path.resolve(__dirname, "shopping.xml")
-var util = require("util")
-var http = require("http")
-
-fs.readFile(xmlFile, function (er, d) {
-  http.createServer(function (req, res) {
-    if (er) throw er
-    var xmlstr = d.toString("utf8")
-
-    var parser = sax.parser(true)
-    var products = []
-    var product = null
-    var currentTag = null
-
-    parser.onclosetag = function (tagName) {
-      if (tagName === "product") {
-        products.push(product)
-        currentTag = product = null
-        return
-      }
-      if (currentTag && currentTag.parent) {
-        var p = currentTag.parent
-        delete currentTag.parent
-        currentTag = p
-      }
-    }
-
-    parser.onopentag = function (tag) {
-      if (tag.name !== "product" && !product) return
-      if (tag.name === "product") {
-        product = tag
-      }
-      tag.parent = currentTag
-      tag.children = []
-      tag.parent && tag.parent.children.push(tag)
-      currentTag = tag
-    }
-
-    parser.ontext = function (text) {
-      if (currentTag) currentTag.children.push(text)
-    }
-
-    parser.onend = function () {
-      var out = util.inspect(products, false, 3, true)
-      res.writeHead(200, {"content-type":"application/json"})
-      res.end("{\"ok\":true}")
-      // res.end(JSON.stringify(products))
-    }
-
-    parser.write(xmlstr).end()
-  }).listen(1337)
-})

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/hello-world.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/hello-world.js b/blackberry10/node_modules/elementtree/node_modules/sax/examples/hello-world.js
deleted file mode 100644
index cbfa518..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/hello-world.js
+++ /dev/null
@@ -1,4 +0,0 @@
-require("http").createServer(function (req, res) {
-  res.writeHead(200, {"content-type":"application/json"})
-  res.end(JSON.stringify({ok: true}))
-}).listen(1337)

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/not-pretty.xml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/not-pretty.xml b/blackberry10/node_modules/elementtree/node_modules/sax/examples/not-pretty.xml
deleted file mode 100644
index 9592852..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/not-pretty.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/pretty-print.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/pretty-print.js b/blackberry10/node_modules/elementtree/node_modules/sax/examples/pretty-print.js
deleted file mode 100644
index cd6aca9..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/pretty-print.js
+++ /dev/null
@@ -1,74 +0,0 @@
-var sax = require("../lib/sax")
-  , printer = sax.createStream(false, {lowercasetags:true, trim:true})
-  , fs = require("fs")
-
-function entity (str) {
-  return str.replace('"', '&quot;')
-}
-
-printer.tabstop = 2
-printer.level = 0
-printer.indent = function () {
-  print("\n")
-  for (var i = this.level; i > 0; i --) {
-    for (var j = this.tabstop; j > 0; j --) {
-      print(" ")
-    }
-  }
-}
-printer.on("opentag", function (tag) {
-  this.indent()
-  this.level ++
-  print("<"+tag.name)
-  for (var i in tag.attributes) {
-    print(" "+i+"=\""+entity(tag.attributes[i])+"\"")
-  }
-  print(">")
-})
-
-printer.on("text", ontext)
-printer.on("doctype", ontext)
-function ontext (text) {
-  this.indent()
-  print(text)
-}
-
-printer.on("closetag", function (tag) {
-  this.level --
-  this.indent()
-  print("</"+tag+">")
-})
-
-printer.on("cdata", function (data) {
-  this.indent()
-  print("<![CDATA["+data+"]]>")
-})
-
-printer.on("comment", function (comment) {
-  this.indent()
-  print("<!--"+comment+"-->")
-})
-
-printer.on("error", function (error) {
-  console.error(error)
-  throw error
-})
-
-if (!process.argv[2]) {
-  throw new Error("Please provide an xml file to prettify\n"+
-    "TODO: read from stdin or take a file")
-}
-var xmlfile = require("path").join(process.cwd(), process.argv[2])
-var fstr = fs.createReadStream(xmlfile, { encoding: "utf8" })
-
-function print (c) {
-  if (!process.stdout.write(c)) {
-    fstr.pause()
-  }
-}
-
-process.stdout.on("drain", function () {
-  fstr.resume()
-})
-
-fstr.pipe(printer)


[35/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/utils.js b/blackberry10/framework/lib/utils.js
deleted file mode 100644
index 6b320c0..0000000
--- a/blackberry10/framework/lib/utils.js
+++ /dev/null
@@ -1,549 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var self,
-    exception = require('./exception');
-
-function S4() {
-    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
-}
-
-self = module.exports = {
-    validateNumberOfArguments: function (lowerBound, upperBound, numberOfArguments, customExceptionType, customExceptionMessage, customExceptionObject) {
-
-        customExceptionMessage = customExceptionMessage || "";
-
-        if (arguments.length < 3 || arguments.length > 6) {
-            exception.raise(exception.types.Argument, "Wrong number of arguments when calling: validateNumberOfArguments()");
-        }
-
-        if (isNaN(lowerBound) && isNaN(upperBound) && isNaN(numberOfArguments)) {
-            exception.raise(exception.types.ArgumentType, "(validateNumberOfArguments) Arguments are not numbers");
-        }
-
-        lowerBound = parseInt(lowerBound, 10);
-        upperBound = parseInt(upperBound, 10);
-        numberOfArguments = parseInt(numberOfArguments, 10);
-
-        if (numberOfArguments < lowerBound || numberOfArguments > upperBound) {
-            exception.raise((customExceptionType || exception.types.ArgumentLength), (customExceptionMessage + "\n\nWrong number of arguments"), customExceptionObject);
-        }
-
-    },
-
-    validateArgumentType: function (arg, argType, customExceptionType, customExceptionMessage, customExceptionObject) {
-        var invalidArg = false,
-            msg;
-
-        switch (argType) {
-        case "array":
-            if (!arg instanceof Array) {
-                invalidArg = true;
-            }
-            break;
-        case "date":
-            if (!arg instanceof Date) {
-                invalidArg = true;
-            }
-            break;
-        case "integer":
-            if (typeof arg === "number") {
-                if (arg !== Math.floor(arg)) {
-                    invalidArg = true;
-                }
-            }
-            else {
-                invalidArg = true;
-            }
-            break;
-        default:
-            if (typeof arg !== argType) {
-                invalidArg = true;
-            }
-            break;
-        }
-
-        if (invalidArg) {
-            msg = customExceptionMessage +  ("\n\nInvalid Argument type. argument: " + arg + " ==> was expected to be of type: " + argType);
-            exception.raise((customExceptionType || exception.types.ArgumentType), msg, customExceptionObject);
-        }
-    },
-
-    validateMultipleArgumentTypes: function (argArray, argTypeArray, customExceptionType, customExceptionMessage, customExceptionObject) {
-        for (var i = 0; i < argArray.length; i++) {
-            this.validateArgumentType(argArray[i], argTypeArray[i], customExceptionType, customExceptionMessage, customExceptionObject);
-        }
-    },
-
-    arrayContains: function (array, obj) {
-        var i = array.length;
-        while (i--) {
-            if (array[i] === obj) {
-                return true;
-            }
-        }
-        return false;
-    },
-
-    some: function (obj, predicate, scope) {
-        if (obj instanceof Array) {
-            return obj.some(predicate, scope);
-        }
-        else {
-            var values = self.map(obj, predicate, scope);
-
-            return self.reduce(values, function (some, value) {
-                return value ? value : some;
-            }, false);
-        }
-    },
-
-    count: function (obj) {
-        return self.sum(obj, function (total) {
-            return 1;
-        });
-    },
-
-    sum: function (obj, selector, scope) {
-        var values = self.map(obj, selector, scope);
-        return self.reduce(values, function (total, value) {
-            return total + value;
-        });
-    },
-
-    max: function (obj, selector, scope) {
-        var values = self.map(obj, selector, scope);
-        return self.reduce(values, function (max, value) {
-            return max < value ? value : max;
-        }, Number.MIN_VALUE);
-    },
-
-    min: function (obj, selector, scope) {
-        var values = self.map(obj, selector, scope);
-        return self.reduce(values, function (min, value) {
-            return min > value ? value : min;
-        }, Number.MAX_VALUE);
-    },
-
-    forEach: function (obj, action, scope) {
-        if (obj instanceof Array) {
-            return obj.forEach(action, scope);
-        }
-        else {
-            self.map(obj, action, scope);
-        }
-    },
-
-    filter: function (obj, predicate, scope) {
-        if (obj instanceof Array) {
-            return obj.filter(predicate, scope);
-        }
-        else {
-            var result = [];
-            self.forEach(obj, function (value, index) {
-                if (predicate.apply(scope, [value, index])) {
-                    result.push(value);
-                }
-
-            }, scope);
-
-            return result;
-        }
-    },
-
-    reduce: function (obj, func, init, scope) {
-        var i,
-            initial = init === undefined ? 0 : init,
-            result = initial;
-
-
-        if (obj instanceof Array) {
-            return obj.reduce(func, initial);
-        }
-        else if (obj instanceof NamedNodeMap) {
-            for (i = 0; i < obj.length; i++) {
-                result = func.apply(scope, [result, obj[i], i]);
-            }
-        }
-        else {
-            for (i in obj) {
-                if (obj.hasOwnProperty(i)) {
-                    result = func.apply(scope, [result, obj[i], i]);
-                }
-            }
-        }
-
-        return result;
-
-    },
-
-    map: function (obj, func, scope) {
-        var i,
-            returnVal = null,
-            result = [];
-
-        if (obj instanceof Array) {
-            return obj.map(func, scope);
-        }
-        else if (obj instanceof NamedNodeMap) {
-            for (i = 0; i < obj.length; i++) {
-                returnVal = func.apply(scope, [obj[i], i]);
-                result.push(returnVal);
-            }
-        }
-        else {
-            for (i in obj) {
-                if (obj.hasOwnProperty(i)) {
-                    returnVal = func.apply(scope, [obj[i], i]);
-                    result.push(returnVal);
-                }
-            }
-        }
-
-        return result;
-    },
-
-    series: function (tasks, callback) {
-
-        var execute = function () {
-            var args = [],
-                task;
-
-            if (tasks.length) {
-                task = tasks.shift();
-                args = args.concat(task.args).concat(execute);
-                task.func.apply(this, args);
-            }
-            else {
-                callback.func.apply(this, callback.args);
-            }
-        };
-
-        execute();
-    },
-
-    regexSanitize: function (regexString) {
-        return regexString.replace("^", "\\^")
-                    .replace("$", "\\$")
-                    .replace("(", "\\(")
-                    .replace(")", "\\)")
-                    .replace("<", "\\<")
-                    .replace("[", "\\[")
-                    .replace("{", "\\{")
-                    .replace(/\\/, "\\\\")
-                    .replace("|", "\\|")
-                    .replace(">", "\\>")
-                    .replace(".", "\\.")
-                    .replace("*", "\\*")
-                    .replace("+", "\\+")
-                    .replace("?", "\\?");
-    },
-
-    find: function (comparison, collection, startInx, endInx, callback) {
-        var results = [],
-            compare = function (s, pattern) {
-
-                if (typeof(s) !== "string" || pattern === null) {
-                    return s === pattern;
-                }
-
-                var regex = pattern.replace(/\./g, "\\.")
-                                   .replace(/\^/g, "\\^")
-                                   .replace(/\*/g, ".*")
-                                   .replace(/\\\.\*/g, "\\*");
-
-                regex = "^".concat(regex, "$");
-
-                return !!s.match(new RegExp(regex, "i"));
-            };
-
-        self.forEach(collection, function (c) {
-            var match,
-                fail = false;
-
-            self.forEach(comparison, function (value, key) {
-                if (!fail && value !== undefined) {
-
-                    if (compare(c[key], value)) {
-                        match = c;
-                    }
-                    else {
-                        fail = true;
-                        match = null;
-                    }
-                }
-            });
-
-            if (match) {
-                results.push(match);
-            }
-        });
-
-        if (callback) {
-            if (startInx === undefined) {
-                startInx = 0;
-            }
-            if (endInx === undefined) {
-                endInx = results.length;
-            }
-            if (startInx === endInx) {
-                endInx = startInx + 1;
-            }
-
-            callback.apply(null, [results.slice(startInx, endInx)]);
-        }
-    },
-
-    mixin: function (mixin, to) {
-        Object.getOwnPropertyNames(mixin).forEach(function (prop) {
-            if (Object.hasOwnProperty.call(mixin, prop)) {
-                Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(mixin, prop));
-            }
-        });
-        return to;
-    },
-
-    copy: function (obj) {
-        var i,
-            newObj = (obj === null ? false : global.toString.call(obj) === "[object Array]") ? [] : {};
-
-        if (typeof obj === 'number' ||
-            typeof obj === 'string' ||
-            typeof obj === 'boolean' ||
-            obj === null ||
-            obj === undefined) {
-            return obj;
-        }
-
-        if (obj instanceof Date) {
-            return new Date(obj);
-        }
-
-        if (obj instanceof RegExp) {
-            return new RegExp(obj);
-        }
-
-        for (i in obj) {
-            if (obj.hasOwnProperty(i)) {
-                if (obj[i] && typeof obj[i] === "object") {
-                    if (obj[i] instanceof Date) {
-                        newObj[i] = obj[i];
-                    }
-                    else {
-                        newObj[i] = self.copy(obj[i]);
-                    }
-                }
-                else {
-                    newObj[i] = obj[i];
-                }
-            }
-        }
-
-        return newObj;
-    },
-
-    startsWith : function (str, substr) {
-        return str.indexOf(substr) === 0;
-    },
-
-    endsWith : function (str, substr) {
-        return str.indexOf(substr, str.length - substr.length) !== -1;
-    },
-
-    parseUri : function (str) {
-        var i, uri = {},
-            key = [ "source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ],
-            matcher = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@\/]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(str);
-
-        for (i = key.length - 1; i >= 0; i--) {
-            uri[key[i]] = matcher[i] || "";
-        }
-
-        return uri;
-    },
-
-    // uri - output from parseUri
-    isAbsoluteURI : function (uri) {
-        if (uri && uri.source) {
-            return uri.relative !== uri.source;
-        }
-
-        return false;
-    },
-
-    fileNameToImageMIME : function (fileName) {
-
-        var extensionsToMIME = {},
-            ext;
-
-        extensionsToMIME.png = 'image/png';
-        extensionsToMIME.jpg = 'image/jpeg';
-        extensionsToMIME.jpe = 'image/jpeg';
-        extensionsToMIME.jpeg = 'image/jpeg';
-        extensionsToMIME.gif = 'image/gif';
-        extensionsToMIME.bmp = 'image/bmp';
-        extensionsToMIME.bm = 'image/bmp';
-        extensionsToMIME.svg = 'image/svg+xml';
-        extensionsToMIME.tif = 'image/tiff';
-        extensionsToMIME.tiff = 'image/tiff';
-
-        ext = fileName.split('.').pop();
-        return extensionsToMIME[ext];
-    },
-
-    isLocalURI : function (uri) {
-        return uri && uri.scheme && "local:///".indexOf(uri.scheme.toLowerCase()) !== -1;
-    },
-
-    isFileURI : function (uri) {
-        return uri && uri.scheme && "file://".indexOf(uri.scheme.toLowerCase()) !== -1;
-    },
-
-    isHttpURI : function (uri) {
-        return uri && uri.scheme && "http://".indexOf(uri.scheme.toLowerCase()) !== -1;
-    },
-
-    isHttpsURI : function (uri) {
-        return uri && uri.scheme && "https://".indexOf(uri.scheme.toLowerCase()) !== -1;
-    },
-
-    // Checks if the specified uri starts with 'data:'
-    isDataURI : function (uri) {
-        return uri && uri.scheme && "data:".indexOf(uri.scheme.toLowerCase()) !== -1;
-    },
-
-    performExec : function (featureId, property, args) {
-        var result;
-
-        window.webworks.exec(function (data, response) {
-            result = data;
-        }, function (data, response) {
-            throw data;
-        }, featureId, property, args, true);
-
-        return result;
-    },
-
-    inNode : function () {
-        return !!require.resolve;
-    },
-
-    requireWebview : function () {
-        return require("./webview");
-    },
-    convertDataToBinary : function (data, dataEncoding) {
-        var rawData,
-            uint8Array,
-            i;
-
-        if (data) {
-            if (dataEncoding.toLowerCase() === "base64") {
-                rawData = window.atob(data);
-            }
-            else {
-                rawData = data;
-            }
-
-            uint8Array = new Uint8Array(new ArrayBuffer(rawData.length));
-
-            for (i = 0; i < uint8Array.length; i++) {
-                uint8Array[i] = rawData.charCodeAt(i);
-            }
-
-            return uint8Array.buffer;
-        }
-    },
-    getBlobWithArrayBufferAsData : function (data, dataEncoding) {
-        var rawData,
-            blobBuilderObj = new window.WebKitBlobBuilder();
-        rawData = this.convertDataToBinary(data, dataEncoding);
-        blobBuilderObj.append(rawData);
-
-        return blobBuilderObj.getBlob("arraybuffer");
-    },
-    loadModule: function (module) {
-        return require(module);
-    },
-    loadExtensionModule: function (plugin, path) {
-        if (plugin && path) {
-            return require("../plugin/" + plugin + "/" + path);
-        } else {
-            return null;
-        }
-    },
-    hasPermission: function (config, permission) {
-        if (config && config.permissions && config.permissions.length) {
-            return config.permissions.indexOf(permission) >= 0;
-        }
-
-        return false;
-    },
-    guid: function () {
-        return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
-    },
-    getURIPrefix: function () {
-        return "http://localhost:8472/";
-    },
-    translatePath: function (path) {
-        if (path.indexOf("local:///") === 0) {
-            var sourceDir = window.qnx.webplatform.getApplication().getEnv("HOME"); //leading slashes need to be removed
-            path = "file:///" + sourceDir.replace(/^\/*/, '') + "/../app/native/" + path.replace(/local:\/\/\//, '');
-        }
-        return path;
-    },
-    invokeInBrowser: function (url) {
-        var request = {
-            uri: url,
-            target: "sys.browser"
-        };
-        window.qnx.webplatform.getApplication().invocation.invoke(request);
-    },
-    isPersonal: function () {
-        return window.qnx.webplatform.getApplication().getEnv("PERIMETER") === "personal";
-    },
-    deepclone: function (obj) {
-        var newObj = obj instanceof Array ? [] : {},
-            key;
-
-        if (typeof obj === 'number' ||
-                typeof obj === 'string' ||
-                typeof obj === 'boolean' ||
-                obj === null ||
-                obj === undefined) {
-            return obj;
-        }
-
-        if (obj instanceof Date) {
-            return new Date(obj);
-        }
-
-        if (obj instanceof RegExp) {
-            return new RegExp(obj);
-        }
-
-        for (key in obj) {
-            if (obj.hasOwnProperty(key)) {
-                if (obj[key] && typeof obj[key] === "object") {
-                    newObj[key] = self.deepclone(obj[key]);
-                } else {
-                    newObj[key] = obj[key];
-                }
-            }
-        }
-
-        return newObj;
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/webkitEvent.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/webkitEvent.js b/blackberry10/framework/lib/webkitEvent.js
deleted file mode 100644
index 0f4bef7..0000000
--- a/blackberry10/framework/lib/webkitEvent.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var utils = require('./utils'),
-    exception = require('./exception'),
-    _listeners = {};
-
-function _on(eventType, listener, scope, once) {
-    if (!eventType) {
-        throw "eventType must be truthy";
-    }
-    _listeners[eventType] = _listeners[eventType] || [];
-    _listeners[eventType].push({
-        func: listener,
-        scope: scope,
-        once: !!once
-    });
-}
-
-function _trigger(listener, args, sync) {
-    try {
-        if (sync) {
-            listener.func.apply(listener.scope, args);
-        }
-        else {
-            setTimeout(function () {
-                listener.func.apply(listener.scope, args);
-            }, 1);
-        }
-    }
-    catch (e) {
-        exception.handle(e);
-    }
-}
-
-module.exports = {
-    on: function (eventType, listener, scope) {
-        _on(eventType, listener, scope, false);
-    },
-
-    once: function (eventType, listener, scope) {
-        _on(eventType, listener, scope, true);
-    },
-
-    trigger: function (eventType, args, sync) {
-        args = args || [];
-        sync = sync || false;
-
-        var listeners = _listeners[eventType];
-
-        if (listeners) {
-            listeners.forEach(function (listener) {
-                _trigger(listener, args, sync);
-            });
-
-            _listeners[eventType] = listeners.filter(function (listener) {
-                return !listener.once;
-            });
-        }
-    },
-
-    eventHasSubscriber: function (eventType) {
-        return !!_listeners[eventType];
-    },
-
-    getEventSubscribers: function (eventType) {
-        return utils.copy(_listeners[eventType]) || [];
-    },
-
-    clear: function (eventType) {
-        if (eventType) {
-            delete _listeners[eventType];
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/webkitHandlers/networkResourceRequested.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/webkitHandlers/networkResourceRequested.js b/blackberry10/framework/lib/webkitHandlers/networkResourceRequested.js
deleted file mode 100644
index 759c8bd..0000000
--- a/blackberry10/framework/lib/webkitHandlers/networkResourceRequested.js
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var Whitelist = require('../policy/whitelist').Whitelist,
-    ACCEPT_RESPONSE = {setAction: "ACCEPT"},
-    DENY_RESPONSE = {setAction: "DENY"},
-    SUBSTITUTE_RESPONSE = {setAction: "SUBSTITUTE"},
-    utils = require('../utils');
-
-function _formMessage(url, origin, sid, body, securityOrigin, webview) {
-    var tokens = url.split(utils.getURIPrefix())[1].split("/"),
-        //Handle the case where the method is multi-level
-        finalToken = (tokens[3] && tokens.length > 4) ? tokens.slice(3).join('/') : tokens[3];
-
-    return {
-        request : {
-            params : {
-                service : tokens[0],
-                action : tokens[1],
-                ext : tokens[2],
-                method : (finalToken && finalToken.indexOf("?") >= 0) ? finalToken.split("?")[0] : finalToken,
-                args : (finalToken && finalToken.indexOf("?") >= 0) ? finalToken.split("?")[1] : null
-            },
-            body : body,
-            origin : origin,
-            securityOrigin: securityOrigin
-
-        },
-        response : {
-            send : function (code, data) {
-                var responseText;
-                if (typeof(data) === 'string') {
-                    responseText = data;
-                } else {
-                    responseText =  JSON.stringify(data);
-                }
-
-                webview.notifyOpen(sid, code, "OK");
-                webview.notifyHeaderReceived(sid, "Access-Control-Allow-Origin", "*");
-                webview.notifyHeaderReceived(sid, "Access-Control-Allow-Origin", securityOrigin);
-                webview.notifyHeaderReceived(sid, "Access-Control-Allow-Headers", "Content-Type");
-                webview.notifyDataReceived(sid, responseText, responseText.length);
-                webview.notifyDone(sid);
-            }
-        }
-    };
-}
-
-function networkResourceRequestedHandler(value) {
-    var config = require("./../config"),
-        obj = JSON.parse(value),
-        response,
-        url = obj.url,
-        body = obj.body,
-        whitelist = new Whitelist(),
-        server,
-        message,
-        sid = obj.streamId,
-        origin = obj.referrer,
-        securityOrigin = obj.securityOrigin,
-        isXHR = obj.targetType === "TargetIsXMLHTTPRequest",
-        //Assumes its a navigation request if the target is the main frame
-        isNav = obj.targetType === "TargetIsMainFrame",
-        hasAccess = whitelist.isAccessAllowed(url, isXHR),
-        deniedMsg;
-
-    //If the URL starts with the prefix then its a request from an API
-    //In this case we will hijack and give our own response
-    //Otherwise follow whitelisting rules
-    if (url.match("^" + utils.getURIPrefix())) {
-        server = require("../server");
-        message = _formMessage(url, origin, sid, body, securityOrigin, this.webview, config);
-        response = SUBSTITUTE_RESPONSE;
-        server.handle(message.request, message.response, this.webview);
-    } else {
-        //Whitelisting will not prevent navigation, ONLY we will
-        //Except when they've disabled web security
-        if (hasAccess || !config.enableWebSecurity) {
-            response = ACCEPT_RESPONSE;
-        } else {
-            response = DENY_RESPONSE;
-            url = utils.parseUri(url);
-            deniedMsg = "Access to \"" + url.source + "\" not allowed";
-
-            console.warn(deniedMsg);
-
-            //Denied navigation requests are sent to the inApp browser rather than an alert
-            if (isNav) {
-                if (config.enableChildWebView) {
-                    this.webview.uiWebView.childwebviewcontrols.open(url.source);
-                } else {
-                    utils.invokeInBrowser(url.source);
-                }
-            } else {
-                this.webview.executeJavaScript("alert('" + deniedMsg + "')");
-            }
-        }
-    }
-
-    if (response) {
-        return JSON.stringify(response);
-    }
-}
-
-function NetworkResourceRequestHandler(webview) {
-    this.webview = webview;
-    this.networkResourceRequestedHandler = networkResourceRequestedHandler.bind(this);
-}
-
-module.exports = {
-    createHandler: function (webview) {
-        return new NetworkResourceRequestHandler(webview);
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/lib/webview.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/lib/webview.js b/blackberry10/framework/lib/webview.js
deleted file mode 100644
index 495dfbe..0000000
--- a/blackberry10/framework/lib/webview.js
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var networkResourceRequested = require('./webkitHandlers/networkResourceRequested'),
-    utils = require('./utils'),
-    config = require('./config'),
-    webkitOriginAccess = require("./policy/webkitOriginAccess"),
-    CHROME_HEIGHT = 0,
-    OUT_OF_PROCESS = 1,
-    webview,
-    _webviewObj;
-
-webview =
-    {
-    create: function (ready) {
-        _webviewObj = window.qnx.webplatform.createWebView({processId: OUT_OF_PROCESS, defaultSendEventHandlers: ['onChooseFile', 'onOpenWindow'], defaultWebEventHandlers: ['InvokeRequestEvent']}, function () {
-            //Create webkit event handlers
-            var requestObj =  networkResourceRequested.createHandler(_webviewObj);
-
-            //Bind networkResourceRequested event so that everything works
-            _webviewObj.onNetworkResourceRequested = requestObj.networkResourceRequestedHandler;
-
-            webkitOriginAccess.addWebView(_webviewObj);
-
-            _webviewObj.visible = true;
-            _webviewObj.active = true;
-            _webviewObj.zOrder = 0;
-            _webviewObj.setGeometry(0, CHROME_HEIGHT, screen.width, screen.height - CHROME_HEIGHT);
-
-            if (typeof config.backgroundColor !== 'undefined') {
-                _webviewObj.backgroundColor = config.backgroundColor;
-            }
-
-            if (typeof config.customHeaders !== 'undefined') {
-                _webviewObj.extraHttpHeaders = config.customHeaders;
-            }
-
-            if (typeof config.userAgent !== 'undefined') {
-                _webviewObj.userAgent = config.userAgent;
-            }
-
-            _webviewObj.autoDeferNetworkingAndJavaScript = config.autoDeferNetworkingAndJavaScript;
-
-            /* Catch and trigger our custom HTML dialog */
-            _webviewObj.allowWebEvent("DialogRequested");
-
-            _webviewObj.addEventListener("DocumentLoadFinished", function () {
-                // show app window if auto hide splash screen is true, OR splash screen is not specified
-                // if auto hide is set to false explicitly but no splash screen is specified, should still show app window
-                // otherwise the app cannot be launched
-                if (config.autoHideSplashScreen || !config["rim:splash"]) {
-                    window.qnx.webplatform.getApplication().windowVisible = true;
-                }
-            });
-
-
-            if (ready && typeof ready === 'function') {
-                ready();
-            }
-
-            window.qnx.webplatform.getController().dispatchEvent("webview.initialized", [_webviewObj]);
-
-            // If content is not loaded, too bad open the visibility up.
-            setTimeout(function () {
-                if (config.autoHideSplashScreen || !config["rim:splash"]) {
-                    window.qnx.webplatform.getApplication().windowVisible = true;
-                }
-            }, 2500);
-        });
-
-    },
-
-    destroy: function () {
-        _webviewObj.destroy();
-    },
-
-    setURL: function (url) {
-        _webviewObj.url = url;
-    },
-
-    reload: function () {
-        _webviewObj.reload();
-    },
-
-    executeJavascript: function (js) {
-        _webviewObj.executeJavaScript(js);
-    },
-
-    addEventListener: function (eventName, callback) {
-        _webviewObj.addEventListener(eventName, callback);
-    },
-
-    removeEventListener: function (eventName, callback) {
-        _webviewObj.removeEventListener(eventName, callback);
-    },
-
-    windowGroup: function () {
-        return _webviewObj.windowGroup;
-    },
-
-    getGeometry: function () {
-        return this.geometry;
-    },
-
-    setGeometry: function (x, y, width, height) {
-        this.geometry = {x: x, y: y, w: width, h: height};
-        _webviewObj.setGeometry(x, y, width, height);
-    },
-
-    setApplicationOrientation: function (angle) {
-        _webviewObj.setApplicationOrientation(angle);
-    },
-
-    setExtraPluginDirectory: function (directory) {
-        _webviewObj.setExtraPluginDirectory(directory);
-    },
-
-    setEnablePlugins: function (enablePlugins) {
-        _webviewObj.pluginsEnabled = enablePlugins;
-    },
-
-    getEnablePlugins: function () {
-        return _webviewObj.pluginsEnabled;
-    },
-
-    notifyApplicationOrientationDone: function () {
-        _webviewObj.notifyApplicationOrientationDone();
-    },
-
-    setSandbox: function (sandbox) {
-        _webviewObj.setFileSystemSandbox = sandbox;
-    },
-
-    getSandbox: function () {
-        return _webviewObj.setFileSystemSandbox;
-    },
-
-    downloadURL: function (url) {
-        _webviewObj.downloadURL(url);
-    },
-
-    handleContextMenuResponse: function (action) {
-        _webviewObj.handleContextMenuResponse(action);
-    },
-
-    allowGeolocation : function (url) {
-        _webviewObj.allowGeolocation(url);
-    },
-
-    disallowGeolocation : function (url) {
-        _webviewObj.disallowGeolocation(url);
-
-    },
-
-    addKnownSSLCertificate: function (url, certificateInfo) {
-        _webviewObj.addKnownSSLCertificate(url, certificateInfo);
-    },
-
-    continueSSLHandshaking: function (streamId, SSLAction) {
-        _webviewObj.continueSSLHandshaking(streamId, SSLAction);
-    },
-
-    getSensitivity: function () {
-        return _webviewObj.getSensitivity();
-    },
-
-    setSensitivity: function (sensitivity) {
-        return _webviewObj.setSensitivity(sensitivity);
-    },
-
-    getBackgroundColor: function () {
-        return _webviewObj.getBackgroundColor();
-    },
-
-    setBackgroundColor: function (backgroundColor) {
-        return _webviewObj.setBackgroundColor(backgroundColor);
-    },
-
-    getWebViewObj: function (webview) {
-        return _webviewObj;
-    },
-
-    setUIWebViewObj: function (webviewObj) {
-        _webviewObj.uiWebView = webviewObj;
-    },
-
-    allowUserMedia: function (evtId, cameraName) {
-        _webviewObj.allowUserMedia(evtId, cameraName);
-    },
-
-    disallowUserMedia: function (evtId) {
-        _webviewObj.disallowUserMedia(evtId);
-    }
-};
-
-webview.__defineGetter__('id', function () {
-    if (_webviewObj) {
-        return _webviewObj.id;
-    }
-});
-
-webview.__defineGetter__('enableCrossSiteXHR', function () {
-    return _webviewObj.enableCrossSiteXHR;
-});
-
-webview.__defineSetter__('enableCrossSiteXHR', function (shouldEnable) {
-    _webviewObj.enableCrossSiteXHR = !!shouldEnable;
-});
-
-webview.__defineGetter__('processId', function () {
-    return _webviewObj.processId;
-});
-
-webview.__defineSetter__('onOpenWindow', function (input) {
-    _webviewObj.onOpenWindow = input;
-});
-
-webview.__defineSetter__('onCloseWindow', function (input) {
-    _webviewObj.onCloseWindow = input;
-});
-
-webview.__defineSetter__('onDestroyWindow', function (input) {
-    _webviewObj.onDestroyWindow = input;
-});
-
-webview.__defineSetter__('onDialogRequested', function (input) {
-    _webviewObj.onDialogRequested = input;
-});
-
-webview.__defineSetter__('onGeolocationPermissionRequest', function (input) {
-    _webviewObj.onGeolocationPermissionRequest = input;
-});
-
-webview.__defineSetter__('onSSLHandshakingFailed', function (input) {
-    _webviewObj.onSSLHandshakingFailed = input;
-});
-
-webview.__defineSetter__('onPropertyCurrentContextEvent', function (input) {
-    _webviewObj.onPropertyCurrentContextEvent = input;
-});
-
-webview.__defineSetter__('onContextMenuRequestEvent', function (input) {
-    _webviewObj.onContextMenuRequestEvent = input;
-});
-
-webview.__defineSetter__('onContextMenuCancelEvent', function (input) {
-    _webviewObj.onContextMenuCancelEvent = input;
-});
-
-webview.__defineSetter__('onUserMediaRequest', function (input) {
-    _webviewObj.onUserMediaRequest = input;
-});
-
-webview.__defineSetter__('onChildWindowOpen', function (input) {
-    _webviewObj.onChildWindowOpen = input;
-});
-
-module.exports = webview;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/config.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/config.js b/blackberry10/framework/test/unit/lib/config.js
deleted file mode 100644
index 64e8f7e..0000000
--- a/blackberry10/framework/test/unit/lib/config.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var srcPath = __dirname + '/../../../lib/';
-
-describe("Config", function () {
-    var config = require(srcPath + 'config.js');
-
-    it("verify user value is correctly mixed", function () {
-        expect(config.copyright).toEqual("@Rebecca");
-    });
-
-    it("verify default value is correctly mixed", function () {
-        expect(config.widgetExtensions).toEqual(null);
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/controllerWebView.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/controllerWebView.js b/blackberry10/framework/test/unit/lib/controllerWebView.js
deleted file mode 100644
index 9c3ab11..0000000
--- a/blackberry10/framework/test/unit/lib/controllerWebView.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2010-2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-describe("controllerWebView", function () {
-    var controllerWebView = require('./../../../lib/controllerWebView'),
-        mockedController,
-        mockedInvocation,
-        mockedApplication;
-
-    beforeEach(function () {
-        mockedController = {
-            id: 42,
-            enableWebInspector: null,
-            enableCrossSiteXHR: null,
-            visible: null,
-            active: null,
-            setGeometry: jasmine.createSpy(),
-            setApplicationOrientation: jasmine.createSpy(),
-            notifyApplicationOrientationDone: jasmine.createSpy(),
-            publishRemoteFunction: jasmine.createSpy(),
-            dispatchEvent : jasmine.createSpy()
-        };
-        mockedInvocation = {
-            queryTargets: function (request, callback) {
-                callback("error", "results");
-            }
-        };
-        mockedApplication = {
-            invocation: mockedInvocation
-        };
-        GLOBAL.window = {
-            qnx: {
-                webplatform: {
-                    getController: function () {
-                        return mockedController;
-                    },
-                    getApplication: function () {
-                        return mockedApplication;
-                    }
-                }
-            }
-        };
-        GLOBAL.screen = {
-            width : 1024,
-            height: 768
-        };
-    });
-
-    describe("init", function () {
-        it("sets up the controllerWebview", function () {
-            controllerWebView.init({debugEnabled: true});
-            expect(mockedController.enableWebInspector).toEqual(true);
-            expect(mockedController.enableCrossSiteXHR).toEqual(true);
-            expect(mockedController.visible).toEqual(false);
-            expect(mockedController.active).toEqual(false);
-            expect(mockedController.setGeometry).toHaveBeenCalledWith(0, 0, screen.width, screen.height);
-        });
-
-        it("tests that the dispatch function is called properly", function () {
-            controllerWebView.init({debugEnabled: true});
-            controllerWebView.dispatchEvent('Awesome Event', ['these are arguments', 'another argument']);
-            expect(mockedController.dispatchEvent).toHaveBeenCalledWith('Awesome Event', ['these are arguments', 'another argument']);
-        });
-    });
-
-    describe("id", function () {
-        it("can get the id for the webview", function () {
-            controllerWebView.init({debugEnabled: true});
-            expect(controllerWebView.id).toEqual(mockedController.id);
-        });
-    });
-
-    describe("geometry", function () {
-        it("can set geometry", function () {
-            controllerWebView.init({debugEnabled: true});
-            controllerWebView.setGeometry(0, 0, 100, 200);
-            expect(mockedController.setGeometry).toHaveBeenCalledWith(0, 0, 100, 200);
-        });
-    });
-
-    describe("application orientation", function () {
-        it("can set application orientation", function () {
-            controllerWebView.init({debugEnabled: true});
-            controllerWebView.setApplicationOrientation(90);
-            expect(mockedController.setApplicationOrientation).toHaveBeenCalledWith(90);
-        });
-
-        it("can notifyApplicationOrientationDone", function () {
-            controllerWebView.init({debugEnabled: true});
-            controllerWebView.notifyApplicationOrientationDone();
-            expect(mockedController.notifyApplicationOrientationDone).toHaveBeenCalled();
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/event.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/event.js b/blackberry10/framework/test/unit/lib/event.js
deleted file mode 100644
index 81b1dba..0000000
--- a/blackberry10/framework/test/unit/lib/event.js
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var libRoot = __dirname + "/../../../lib/";
-
-describe("lib/event", function () {
-    var event = require(libRoot + "event"),
-        webview = require(libRoot + "webview"),
-        mockedWebview;
-
-    beforeEach(function () {
-        spyOn(webview, "executeJavascript");
-        mockedWebview = {
-            executeJavaScript: jasmine.createSpy(),
-            id: (new Date()).getTime()
-        };
-    });
-
-    describe("trigger", function () {
-
-
-        it("will trigger on the content webview when no webview is registered (for backwards compatibility)", function () {
-            event.trigger("foo", {"id": 123});
-            expect(mockedWebview.executeJavaScript).not.toHaveBeenCalled();
-            expect(webview.executeJavascript).toHaveBeenCalled();
-        });
-
-        it("can invoke the webview execute javascript", function () {
-            var data = {"id": 123};
-            event.add({event: "foo", context: {addEventListener: jasmine.createSpy()}}, mockedWebview);
-            event.trigger("foo", data);
-            expect(mockedWebview.executeJavaScript).toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([data]))) + "')");
-            expect(webview.executeJavascript).not.toHaveBeenCalled();
-            this.after(function () {
-                event.remove({event: "foo", context: {removeEventListener: jasmine.createSpy()}}, mockedWebview);
-            });
-        });
-
-        it("sends multiple arguments passed in across as a JSONified array", function () {
-            var args = [{"id": 123, "foo": "hello world", list: [1, 2, 3]}, "Grrrrrrr", "Arrrrg"];
-            event.add({event: "foo", context: {addEventListener: jasmine.createSpy()}}, mockedWebview);
-            event.trigger.apply(null, ["foo"].concat(args));
-            expect(mockedWebview.executeJavaScript).toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify(args))) + "')");
-            expect(webview.executeJavascript).not.toHaveBeenCalled();
-            this.after(function () {
-                event.remove({event: "foo", context: {removeEventListener: jasmine.createSpy()}}, mockedWebview);
-            });
-        });
-
-        it("invokes on all webviews that have registered, but not those removed", function () {
-            var mockedWebview2 = {
-                    executeJavaScript: jasmine.createSpy(),
-                    id: mockedWebview.id - 42
-                },
-                mockedWebview3 = {
-                    executeJavaScript: jasmine.createSpy(),
-                    id: mockedWebview.id + 42
-                },
-                mockedWebview4 = {
-                    executeJavaScript: jasmine.createSpy(),
-                    id: mockedWebview.id * 42
-                };
-            event.add({event: "foo", context: {addEventListener: jasmine.createSpy()}}, mockedWebview);
-            event.add({event: "foo", context: {addEventListener: jasmine.createSpy()}}, mockedWebview2);
-            event.add({event: "foo", context: {addEventListener: jasmine.createSpy()}}, mockedWebview3);
-            event.trigger("foo", {"id": 123});
-            expect(mockedWebview.executeJavaScript).toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(mockedWebview2.executeJavaScript).toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(mockedWebview3.executeJavaScript).toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(mockedWebview4.executeJavaScript).not.toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(webview.executeJavascript).not.toHaveBeenCalled();
-
-
-            event.remove({event: "foo", context: {removeEventListener: jasmine.createSpy()}}, mockedWebview3);
-            mockedWebview.executeJavaScript.reset();
-            mockedWebview2.executeJavaScript.reset();
-            mockedWebview3.executeJavaScript.reset();
-            mockedWebview4.executeJavaScript.reset();
-            event.trigger("foo", {"id": 123});
-            expect(mockedWebview.executeJavaScript).toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(mockedWebview2.executeJavaScript).toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(mockedWebview3.executeJavaScript).not.toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(mockedWebview4.executeJavaScript).not.toHaveBeenCalledWith("webworks.event.trigger('foo', '" + escape(encodeURIComponent(JSON.stringify([{"id": 123}]))) + "')");
-            expect(webview.executeJavascript).not.toHaveBeenCalled();
-            this.after(function () {
-                event.remove({event: "foo", context: {removeEventListener: jasmine.createSpy()}}, mockedWebview);
-                event.remove({event: "foo", context: {removeEventListener: jasmine.createSpy()}}, mockedWebview2);
-            });
-        });
-
-    });
-
-    describe("add/remove would invoke action context", function () {
-        var action = {
-                context: {
-                    addEventListener: jasmine.createSpy(),
-                    removeEventListener: jasmine.createSpy()
-                },
-                event: "HELLO",
-                trigger: function () {}
-            };
-
-        beforeEach(function () {
-            action.context.addEventListener.reset();
-            action.context.removeEventListener.reset();
-        });
-
-        it("can invoke action context add listener", function () {
-            event.add(action, mockedWebview);
-            expect(action.context.addEventListener).toHaveBeenCalledWith(action.event, action.trigger);
-        });
-
-        it("will not invoke action context add listener when the action has a once field", function () {
-            action.once = true;
-            event.add(action, mockedWebview);
-            expect(action.context.addEventListener).not.toHaveBeenCalledWith(action.event, action.trigger);
-            this.after(function () {
-                delete action.once;
-            });
-        });
-
-        it("can invoke action context remove listener", function () {
-            event.remove(action, mockedWebview);
-            expect(action.context.removeEventListener).toHaveBeenCalledWith(action.event, action.trigger);
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/events/applicationEvents.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/events/applicationEvents.js b/blackberry10/framework/test/unit/lib/events/applicationEvents.js
deleted file mode 100644
index 8f7f1a4..0000000
--- a/blackberry10/framework/test/unit/lib/events/applicationEvents.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var _libDir = __dirname + "./../../../../lib/",
-    appEventPrefix = "application.",
-    appEvents,
-    mockedApplication;
-
-describe("lib/events/applicationEvents", function () {
-    beforeEach(function () {
-        mockedApplication = {
-            addEventListener: jasmine.createSpy("application addEventListener"),
-            removeEventListener: jasmine.createSpy("application removeEventListener")
-        };
-        GLOBAL.window = {
-            qnx: {
-                webplatform: {
-                    getApplication: function () {
-                        return mockedApplication;
-                    }
-                }
-            }
-        };
-        appEvents = require(_libDir + "events/applicationEvents");
-    });
-
-    afterEach(function () {
-        mockedApplication = null;
-        delete GLOBAL.window;
-        appEvents = null;
-        delete require.cache[require.resolve(_libDir + "events/applicationEvents")];
-    });
-
-    describe("addEventListener", function () {
-        it("adds event name with application prepended", function () {
-            var eventName = "MostAwesomeEventEver",
-                trigger = function () {};
-            appEvents.addEventListener(eventName, trigger);
-            expect(mockedApplication.addEventListener).toHaveBeenCalledWith(appEventPrefix + eventName, trigger);
-        });
-
-        it("warns in the console if the eventName is falsey", function () {
-            var eventName = false,
-                trigger = function () {};
-            spyOn(console, "warn");
-            appEvents.addEventListener(eventName, trigger);
-            expect(mockedApplication.addEventListener).not.toHaveBeenCalledWith(appEventPrefix + eventName, trigger);
-            expect(console.warn).toHaveBeenCalledWith(jasmine.any(String));
-        });
-    });
-
-    describe("removeEventListener", function () {
-        it("adds event name with application prepended", function () {
-            var eventName = "MostAwesomeEventEver",
-                trigger = function () {};
-            appEvents.removeEventListener(eventName, trigger);
-            expect(mockedApplication.removeEventListener).toHaveBeenCalledWith(appEventPrefix + eventName, trigger);
-        });
-
-        it("warns in the console if the eventName is falsey", function () {
-            var eventName = false,
-                trigger = function () {};
-            spyOn(console, "warn");
-            appEvents.removeEventListener(eventName, trigger);
-            expect(mockedApplication.removeEventListener).not.toHaveBeenCalledWith(appEventPrefix + eventName, trigger);
-            expect(console.warn).toHaveBeenCalledWith(jasmine.any(String));
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/events/deviceEvents.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/events/deviceEvents.js b/blackberry10/framework/test/unit/lib/events/deviceEvents.js
deleted file mode 100644
index 79161de..0000000
--- a/blackberry10/framework/test/unit/lib/events/deviceEvents.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var _libDir = __dirname + "./../../../../lib/",
-    deviceEventPrefix = "device.",
-    deviceEvents;
-
-describe("lib/events/deviceEvents", function () {
-    beforeEach(function () {
-        GLOBAL.window = {
-            qnx: {
-                webplatform: {
-                    device: {
-                        addEventListener: jasmine.createSpy(),
-                        removeEventListener: jasmine.createSpy()
-                    }
-                }
-            }
-        };
-        deviceEvents = require(_libDir + "events/deviceEvents");
-    });
-
-    afterEach(function () {
-        delete GLOBAL.window;
-        deviceEvents = null;
-        delete require.cache[require.resolve(_libDir + "events/deviceEvents")];
-    });
-
-    describe("addEventListener", function () {
-        it("adds event name with application prepended", function () {
-            var eventName = "MostAwesomeEventEver",
-                trigger = function () {};
-            deviceEvents.addEventListener(eventName, trigger);
-            expect(window.qnx.webplatform.device.addEventListener).toHaveBeenCalledWith(deviceEventPrefix + eventName, trigger);
-        });
-
-        it("warns in the console if the eventName is falsey", function () {
-            var eventName = false,
-                trigger = function () {};
-            spyOn(console, "warn");
-            deviceEvents.addEventListener(eventName, trigger);
-            expect(window.qnx.webplatform.device.addEventListener).not.toHaveBeenCalledWith(deviceEventPrefix + eventName, trigger);
-            expect(console.warn).toHaveBeenCalledWith(jasmine.any(String));
-        });
-    });
-
-    describe("removeEventListener", function () {
-        it("adds event name with application prepended", function () {
-            var eventName = "MostAwesomeEventEver",
-                trigger = function () {};
-            deviceEvents.removeEventListener(eventName, trigger);
-            expect(window.qnx.webplatform.device.removeEventListener).toHaveBeenCalledWith(deviceEventPrefix + eventName, trigger);
-        });
-
-        it("warns in the console if the eventName is falsey", function () {
-            var eventName = false,
-                trigger = function () {};
-            spyOn(console, "warn");
-            deviceEvents.removeEventListener(eventName, trigger);
-            expect(window.qnx.webplatform.device.removeEventListener).not.toHaveBeenCalledWith(deviceEventPrefix + eventName, trigger);
-            expect(console.warn).toHaveBeenCalledWith(jasmine.any(String));
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/framework.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/framework.js b/blackberry10/framework/test/unit/lib/framework.js
deleted file mode 100644
index c37c2d6..0000000
--- a/blackberry10/framework/test/unit/lib/framework.js
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var srcPath = __dirname + '/../../../lib/',
-    config = require(srcPath + "config"),
-    framework,
-    webview,
-    overlayWebView,
-    overlayWebViewObj,
-    controllerWebView,
-    Whitelist = require(srcPath + 'policy/whitelist').Whitelist,
-    mockedController,
-    mockedApplicationWindow,
-    mockedApplication,
-    mockedDevice,
-    mockedQnx,
-    mock_request = {
-        url: "http://www.dummy.com",
-        allow: jasmine.createSpy(),
-        deny: jasmine.createSpy()
-    };
-
-describe("framework", function () {
-    beforeEach(function () {
-        mockedController = {
-            id: 42,
-            enableCrossSiteXHR: undefined,
-            visible: undefined,
-            active: undefined,
-            zOrder: undefined,
-            url: undefined,
-            setGeometry: jasmine.createSpy(),
-            onNetworkResourceRequested: undefined,
-            destroy: jasmine.createSpy(),
-            executeJavaScript: jasmine.createSpy(),
-            windowGroup: undefined,
-            addEventListener: jasmine.createSpy(),
-            uiWebView: undefined,
-            onChildWindowOpen: undefined
-        };
-        mockedApplicationWindow = {
-            visible: undefined
-        };
-        mockedApplication = {
-            addEventListener: jasmine.createSpy(),
-            removeEventListener: jasmine.createSpy(),
-            webInspectorPort : "1337",
-            invocation: {
-                invoke: jasmine.createSpy()
-            }
-        };
-        mockedDevice = {
-            getNetworkInterfaces : jasmine.createSpy()
-        };
-        mockedQnx = {
-            callExtensionMethod : function () {
-                return 42;
-            },
-            webplatform : {
-                getController : function () {
-                    return mockedController;
-                },
-                getApplication : function () {
-                    return mockedApplication;
-                },
-                getApplicationWindow : function () {
-                    return mockedApplicationWindow;
-                },
-                device : mockedDevice,
-                nativeCall: jasmine.createSpy("qnx.webplatform.nativeCall")
-            }
-        };
-        GLOBAL.window = {
-            qnx: mockedQnx
-        };
-        GLOBAL.qnx = mockedQnx;
-        GLOBAL.NamedNodeMap = function () {};
-
-        delete require.cache[require.resolve(srcPath + "webview")];
-        webview = require(srcPath + "webview");
-        delete require.cache[require.resolve(srcPath + "overlayWebView")];
-        overlayWebView = require(srcPath + "overlayWebView");
-        delete require.cache[require.resolve(srcPath + "controllerWebView")];
-        controllerWebView = require(srcPath + "controllerWebView");
-
-        spyOn(webview, "create").andCallFake(function (done) {
-            done();
-        });
-
-        spyOn(overlayWebView, "getWebViewObj").andCallFake(function () {
-            overlayWebViewObj = {
-                formcontrol: {
-                    subscribeTo: jasmine.createSpy()
-                }
-            };
-            return overlayWebViewObj;
-        });
-
-        spyOn(overlayWebView, "create").andCallFake(function (done) {
-            done();
-        });
-
-        spyOn(controllerWebView, "init");
-        spyOn(controllerWebView, "dispatchEvent");
-        spyOn(webview, "destroy");
-        spyOn(webview, "executeJavascript");
-        spyOn(webview, "setURL");
-        spyOn(webview, "setUIWebViewObj");
-        spyOn(webview, "addEventListener").andCallFake(function (eventName, callback) {
-            callback();
-        });
-        spyOn(webview, "removeEventListener");
-
-        spyOn(overlayWebView, "setURL");
-        spyOn(overlayWebView, "renderContextMenuFor");
-        spyOn(overlayWebView, "handleDialogFor");
-        spyOn(overlayWebView, "addEventListener").andCallFake(function (eventName, callback) {
-            callback();
-        });
-        spyOn(overlayWebView, "removeEventListener");
-        spyOn(overlayWebView, "bindAppWebViewToChildWebViewControls");
-
-        delete require.cache[require.resolve(srcPath + "framework")];
-        framework = require(srcPath + 'framework');
-    });
-
-    afterEach(function () {
-        delete GLOBAL.blackberry;
-        delete GLOBAL.window;
-        delete GLOBAL.qnx;
-        delete GLOBAL.NamedNodeMap;
-        delete require.cache[require.resolve(srcPath + "webview")];
-        delete require.cache[require.resolve(srcPath + "overlayWebView")];
-        delete require.cache[require.resolve(srcPath + "controllerWebView")];
-        delete require.cache[require.resolve(srcPath + "framework")];
-    });
-
-    it("can start a webview instance", function () {
-        framework.start();
-        expect(controllerWebView.init).toHaveBeenCalled();
-        expect(webview.create).toHaveBeenCalled();
-    });
-
-    it("on start passing callback and setting object parameters to create method of webview", function () {
-        framework.start();
-        expect(webview.create).toHaveBeenCalledWith(jasmine.any(Function), jasmine.any(Object));
-    });
-
-    it("setting object should have debugEnabled to be defined", function () {
-        framework.start();
-        expect((webview.create.mostRecentCall.args)[1].debugEnabled).toBeDefined();
-    });
-
-    it("can start a webview instance with a url", function () {
-        var url = "http://www.google.com";
-        framework.start(url);
-        expect(webview.setURL).toHaveBeenCalledWith(url);
-    });
-
-    it("can stop a webview instance", function () {
-        framework.start();
-        framework.stop();
-        expect(webview.destroy).toHaveBeenCalled();
-    });
-
-    describe('creating the overlay webview', function () {
-        beforeEach(function () {
-            framework.start();
-        });
-        it('calls overlayWebView.create', function () {
-            expect(overlayWebView.create).toHaveBeenCalled();
-        });
-
-        it('sets the overlayWebView URL', function () {
-            expect(overlayWebView.setURL).toHaveBeenCalledWith("local:///chrome/ui.html");
-        });
-
-        it('calls renderContextMenuFor passing the webview', function () {
-            expect(overlayWebView.renderContextMenuFor).toHaveBeenCalledWith(webview);
-        });
-
-        it('calls handleDialogFor passing the webview', function () {
-            expect(overlayWebView.handleDialogFor).toHaveBeenCalledWith(webview);
-        });
-
-        it('dispatches the ui.init event on the controllerWebView', function () {
-            expect(controllerWebView.dispatchEvent).toHaveBeenCalledWith('ui.init', null);
-        });
-    });
-
-    describe('configuring webSecurity', function () {
-        var enableCrossSiteXHRSetter;
-
-        beforeEach(function () {
-            enableCrossSiteXHRSetter = jasmine.createSpy();
-            Object.defineProperty(webview, "enableCrossSiteXHR", {set: enableCrossSiteXHRSetter, configurable: true});
-        });
-
-        afterEach(function () {
-            delete webview.enableCrossSiteXHR;
-            delete require.cache[require.resolve(srcPath + "webview")];
-            webview = require(srcPath + "webview");
-        });
-
-        it('does not call enableCrossSiteXHR by default', function () {
-            expect(config.enableWebSecurity).toBe(true);
-            framework.start();
-
-            expect(enableCrossSiteXHRSetter).not.toHaveBeenCalledWith(true);
-        });
-
-        it('does enable crossSiteXHR when the config says too', function () {
-            delete require.cache[require.resolve(srcPath + "config")];
-            config = require(srcPath + 'config');
-            config.enableWebSecurity = false;
-
-            //reload config in framework
-            delete require.cache[require.resolve(srcPath + "framework")];
-            framework = require(srcPath + 'framework');
-
-            this.after(function () {
-                delete require.cache[require.resolve(srcPath + "config")];
-                config = require(srcPath + 'config');
-
-                delete require.cache[require.resolve(srcPath + "framework")];
-                framework = require(srcPath + 'framework');
-            });
-
-            expect(config.enableWebSecurity).toBe(false);
-            framework.start();
-
-            expect(enableCrossSiteXHRSetter).toHaveBeenCalledWith(true);
-        });
-    });
-
-    describe('configuring OpenChildWindow events', function () {
-        var onChildWindowOpenHandler;
-
-        beforeEach(function () {
-            Object.defineProperty(webview, "onChildWindowOpen", {set: function (input) {
-                onChildWindowOpenHandler = input;
-            }, configurable: true});
-        });
-
-        afterEach(function () {
-            delete webview.onChildWindowOpen;
-            delete require.cache[require.resolve(srcPath + "webview")];
-            webview = require(srcPath + "webview");
-        });
-
-        it('delegates to childWebViewControls on the overlay webview', function () {
-            config.enableChildWebView = true;
-
-            //reload config in framework
-            delete require.cache[require.resolve(srcPath + "framework")];
-            framework = require(srcPath + 'framework');
-
-            this.after(function () {
-                delete require.cache[require.resolve(srcPath + "config")];
-                config = require(srcPath + 'config');
-            });
-
-            framework.start();
-            expect(overlayWebView.bindAppWebViewToChildWebViewControls).toHaveBeenCalledWith(webview);
-            expect(webview.onChildWindowOpen).not.toBeDefined();
-        });
-
-        it('binds to OpenChildWindow and invokes the browser', function () {
-            config.enableChildWebView = false;
-
-            //reload config in framework
-            delete require.cache[require.resolve(srcPath + "framework")];
-            framework = require(srcPath + 'framework');
-
-            this.after(function () {
-                delete require.cache[require.resolve(srcPath + "config")];
-                config = require(srcPath + 'config');
-            });
-
-            framework.start();
-            expect(overlayWebView.bindAppWebViewToChildWebViewControls).not.toHaveBeenCalledWith(webview);
-            expect(onChildWindowOpenHandler).toEqual(jasmine.any(Function));
-            onChildWindowOpenHandler(JSON.stringify({url: 'http://www.google.com'}));
-            expect(mockedApplication.invocation.invoke).toHaveBeenCalledWith(
-                {uri: 'http://www.google.com', target: "sys.browser" }
-            );
-        });
-    });
-
-    describe('shows the webinspector dialog', function () {
-        it('show the webinspector dialog', function () {
-            var flag = false;
-            spyOn(overlayWebView, "showDialog");
-
-            window.qnx.webplatform.device.getNetworkInterfaces = function (callback) {
-                callback();
-                flag = true;
-            };
-            config.debugEnabled = true;
-            framework.start();
-            waitsFor(function () {
-                return flag;
-            });
-            runs(function () {
-                expect(overlayWebView.showDialog).toHaveBeenCalled();
-            });
-        });
-
-        it('show the webinspector dialog with the correct IP address', function () {
-            var flag = false,
-            messageObj;
-            spyOn(overlayWebView, "showDialog");
-
-            window.qnx.webplatform.device.getNetworkInterfaces = function (callback) {
-                var dummyData = {
-                    asix0i : null,
-                    bb0 : null,
-                    bptp0 : null,
-                    cellular0 : null,
-                    cellular1 : null,
-                    cellular2 : null,
-                    cellular3 : null,
-                    cellular4 : null,
-                    ecm0 : {
-                        connected : true,
-                        ipv4Address : "169.254.0.1",
-                        ipv6Address : "fe80::70aa:b2ff:fef9:b374",
-                        type : "usb"
-                    },
-                    ipsec0 : null,
-                    ipsec1 : null,
-                    lo0 : null,
-                    lo2 : null,
-                    nap0 : null,
-                    pan0 : null,
-                    pflog0 : null,
-                    ppp0 : null,
-                    rndis0 : null,
-                    smsc0 : null,
-                    tiw_drv0 : null,
-                    tiw_ibss0 : null,
-                    tiw_p2pdev0 : null,
-                    tiw_p2pgrp0 : null,
-                    tiw_sta0 : {
-                        connected : true,
-                        ipv4Address : "192.168.2.2",
-                        ipv6Address : "fe80::72aa:b2ff:fef9:b374",
-                        type : "wifi"
-                    },
-                    vlan0 : null,
-                    vpn0 : null
-                };
-                callback(dummyData);
-                flag = true;
-            };
-            config.debugEnabled = true;
-            framework.start();
-            waitsFor(function () {
-                return flag;
-            });
-            runs(function () {
-                messageObj = {
-                    title : "Web Inspector Enabled",
-                    htmlmessage : "\n ip4:    169.254.0.1:1337<br/> ip6:    fe80::70aa:b2ff:fef9:b374:1337",
-                    dialogType : "JavaScriptAlert"
-                };
-                expect(overlayWebView.showDialog).toHaveBeenCalledWith(messageObj);
-            });
-        });
-
-    });
-
-    describe('enabling form control', function () {
-        var originalConfigVal;
-
-        beforeEach(function () {
-            originalConfigVal = config.enableFormControl;
-        });
-
-        afterEach(function () {
-            config.enableFormControl = originalConfigVal;
-        });
-
-        it('subscribes webview to formcontrol', function () {
-            config.enableFormControl = true;
-            framework.start();
-            expect(overlayWebViewObj.formcontrol.subscribeTo).toHaveBeenCalledWith(webview);
-        });
-
-        it('does not subscribe webview to formcontrol is enableFormControl is false', function () {
-            config.enableFormControl = false;
-            framework.start();
-            expect(overlayWebViewObj.formcontrol.subscribeTo).not.toHaveBeenCalled();
-        });
-    });
-
-    describe('enabling popup blocker', function () {
-        var originalConfigVal;
-
-        beforeEach(function () {
-            originalConfigVal = config.enablePopupBlocker;
-        });
-
-        afterEach(function () {
-            config.enablePopupBlocker = originalConfigVal;
-        });
-
-        it('does nothing when enablePopupBlocker is true', function () {
-            config.enablePopupBlocker = true;
-            framework.start();
-            expect(mockedQnx.webplatform.nativeCall).not.toHaveBeenCalledWith('webview.setBlockPopups', webview.id, false);
-        });
-
-        it('Disables popupblocker when enablePopupBlocker is false', function () {
-            config.enablePopupBlocker = false;
-            framework.start();
-            expect(mockedQnx.webplatform.nativeCall).toHaveBeenCalledWith('webview.setBlockPopups', webview.id, false);
-        });
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/overlayWebView.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/overlayWebView.js b/blackberry10/framework/test/unit/lib/overlayWebView.js
deleted file mode 100644
index 37b5c53..0000000
--- a/blackberry10/framework/test/unit/lib/overlayWebView.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-describe("Overlay Webview", function () {
-    var webview,
-        libPath = "./../../../",
-        mockedController,
-        mockedWebview,
-        mockedApplication;
-
-    beforeEach(function () {
-        webview = require(libPath + "lib/overlayWebView");
-        mockedWebview = {
-            id: 42,
-            enableCrossSiteXHR: undefined,
-            visible: undefined,
-            active: undefined,
-            zOrder: undefined,
-            url: undefined,
-            setGeometry: jasmine.createSpy(),
-            setApplicationOrientation: jasmine.createSpy(),
-            notifyApplicationOrientationDone: jasmine.createSpy(),
-            onContextMenuRequestEvent: undefined,
-            onNetworkResourceRequested: undefined,
-            destroy: jasmine.createSpy(),
-            executeJavaScript: jasmine.createSpy(),
-            windowGroup: undefined,
-            addEventListener: jasmine.createSpy(),
-            enableWebEventRedirect: jasmine.createSpy(),
-            notifyContextMenuCancelled: jasmine.createSpy(),
-            allowQnxObject: undefined,
-            allowRpc: undefined,
-            contextMenu: {
-                subscribeTo: jasmine.createSpy()
-            },
-            invocationlist: {
-                show: jasmine.createSpy()
-            }
-        };
-        mockedController = {
-            dispatchEvent : jasmine.createSpy(),
-            addEventListener : jasmine.createSpy()
-        };
-
-        mockedApplication = {
-            windowVisible: undefined
-        };
-        GLOBAL.qnx = {
-            callExtensionMethod: jasmine.createSpy(),
-            webplatform: {
-                getController: function () {
-                    return mockedController;
-                },
-                createUIWebView: function (createFunction) {
-                    runs(createFunction);
-                    return mockedWebview;
-                },
-                getApplication: function () {
-                    return mockedApplication;
-                }
-            }
-        };
-        GLOBAL.window = {
-            qnx: qnx
-        };
-        GLOBAL.screen = {
-            width : 1024,
-            height: 768
-        };
-    });
-
-    describe("create", function () {
-        it("sets up the visible webview", function () {
-            webview.create();
-            waits(1);
-            runs(function () {
-                expect(mockedWebview.visible).toEqual(true);
-                expect(mockedWebview.active).toEqual(true);
-                expect(mockedWebview.zOrder).toEqual(2);
-                expect(mockedWebview.setGeometry).toHaveBeenCalledWith(0, 0, screen.width, screen.height);
-                expect(mockedWebview.backgroundColor).toEqual(0x00FFFFFF);
-                expect(mockedWebview.sensitivity).toEqual("SensitivityTest");
-                expect(mockedWebview.allowQnxObject).toEqual(true);
-                expect(mockedWebview.allowRpc).toEqual(true);
-                expect(mockedController.dispatchEvent).toHaveBeenCalledWith("overlayWebView.initialized", jasmine.any(Array));
-            });
-        });
-
-        it("calls the ready function", function () {
-            var chuck = jasmine.createSpy();
-            webview.create(chuck);
-            waits(1);
-            runs(function () {
-                expect(chuck).toHaveBeenCalled();
-            });
-        });
-
-    });
-
-    describe("methods other than create", function () {
-
-        it("calls the underlying destroy", function () {
-            webview.create(mockedWebview);
-            webview.destroy();
-            expect(mockedWebview.destroy).toHaveBeenCalled();
-        });
-
-        it("sets the url property", function () {
-            var url = "http://AWESOMESAUCE.com";
-            webview.create(mockedWebview);
-            webview.setURL(url);
-            expect(mockedWebview.url).toEqual(url);
-        });
-
-        it("calls the underlying executeJavascript", function () {
-            var js = "var awesome='Jasmine BDD'";
-            webview.create(mockedWebview);
-            webview.executeJavascript(js);
-            expect(mockedWebview.executeJavaScript).toHaveBeenCalledWith(js);
-        });
-        it("calls the underlying windowGroup property", function () {
-            webview.create(mockedWebview);
-            expect(webview.windowGroup()).toEqual(mockedWebview.windowGroup);
-        });
-
-        it("can get the id for the webview", function () {
-            webview.create();
-            expect(webview.id).toEqual(mockedWebview.id);
-        });
-
-        it("can set geometry", function () {
-            webview.create();
-            webview.setGeometry(0, 0, 100, 200);
-            expect(mockedWebview.setGeometry).toHaveBeenCalledWith(0, 0, 100, 200);
-        });
-
-        it("can set application orientation", function () {
-            webview.create();
-            webview.setApplicationOrientation(90);
-            expect(mockedWebview.setApplicationOrientation).toHaveBeenCalledWith(90);
-        });
-
-        it("can notifyApplicationOrientationDone", function () {
-            webview.create();
-            webview.notifyApplicationOrientationDone();
-            expect(mockedWebview.notifyApplicationOrientationDone).toHaveBeenCalled();
-        });
-
-        it("can notifyContextMenuCancelled", function () {
-            webview.create();
-            webview.notifyContextMenuCancelled();
-            expect(mockedWebview.notifyContextMenuCancelled).toHaveBeenCalled();
-        });
-
-        it("can render the ccm for another webview ", function () {
-            webview.create();
-            webview.renderContextMenuFor(webview);
-            expect(mockedWebview.contextMenu.subscribeTo).toHaveBeenCalledWith(webview);
-        });
-
-        it("It has a zOrder property ", function () {
-            expect(webview.zOrder).toBeDefined();
-        });
-
-        it('proxies calls to invocationlist.show()', function () {
-            var request = {},
-                title = {},
-                success = function () {},
-                error = function () {};
-            webview.create();
-            webview.showInvocationList(request, title, success, error);
-            expect(mockedWebview.invocationlist.show).toHaveBeenCalledWith(request, title, success, error);
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/plugins/default.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/plugins/default.js b/blackberry10/framework/test/unit/lib/plugins/default.js
deleted file mode 100644
index 349bfea..0000000
--- a/blackberry10/framework/test/unit/lib/plugins/default.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var ROOT = "../../../../";
-
-describe("default plugin", function () {
-
-    var defaultPlugin = require(ROOT + 'lib/plugins/default'),
-        testExtension,
-        utils,
-        mockController,
-        mockApplication;
-
-    describe("when handling requests", function () {
-        var req, res, succ, fail, args;
-
-        beforeEach(function () {
-            req = {
-                origin: "http://www.origin.com",
-                params: {}
-            };
-            res = {
-                send: jasmine.createSpy()
-            };
-            succ = jasmine.createSpy("lib/plugin/default success");
-            fail = jasmine.createSpy("lib/plugin/default fail");
-            args = {};
-
-            GLOBAL.frameworkModules = ["plugin/blackberry.app/index.js"];
-
-            //All of this mocking is required for modules to load, DO NOT REMOVE
-            mockController = {
-                dispatchEvent: jasmine.createSpy()
-            };
-            mockApplication = {
-            };
-            GLOBAL.window = {
-                qnx: {
-                    webplatform: {
-                        getController: jasmine.createSpy().andReturn(mockController),
-                        getApplication: jasmine.createSpy().andReturn(mockApplication)
-                    }
-                }
-            };
-
-            testExtension = {
-                getReadOnlyFields: function () {}
-            };
-
-            delete require.cache[require.resolve(ROOT + "lib/utils")];
-            utils = require(ROOT + "lib/utils");
-            spyOn(utils, "loadModule").andCallFake(function (module) {
-                // on device, "plugin/blackberry.app/index.js" would exist since packager would
-                // name the extension folder with feature id in compilation time
-                if (module.indexOf("/plugin") !== -1) {
-                    return testExtension;
-                } else {
-                    return undefined;
-                }
-            });
-        });
-
-        afterEach(function () {
-            delete GLOBAL.frameworkModules;
-            delete GLOBAL.window;
-        });
-
-        it("returns 404 if the extension is not found", function () {
-            var ext = "NotAnExt",
-                errMsg = "Extension " + ext + " not found";
-
-            req.params.ext = ext;
-            spyOn(console, "warn");
-
-            defaultPlugin.exec(req, succ, fail, args);
-
-            expect(fail).toHaveBeenCalledWith(-1, errMsg, 404);
-            expect(console.warn).toHaveBeenCalledWith(errMsg);
-        });
-
-        it("returns 404 if the method is not found", function () {
-            req.params.ext = "blackberry.app";
-            req.params.method = "NotAMethod";
-            spyOn(console, "warn");
-
-            defaultPlugin.exec(req, succ, fail, args);
-
-            expect(fail).toHaveBeenCalledWith(-1, jasmine.any(String), 404);
-            expect(console.warn).toHaveBeenCalledWith("Method " + req.params.method + " for " + req.params.ext + " not found");
-        });
-
-        it("calls the method of the extension", function () {
-            var env = {"request": req, "response": res};
-
-            spyOn(testExtension, "getReadOnlyFields");
-
-            req.params.ext = "blackberry.app";
-            req.params.method = "getReadOnlyFields";
-
-            defaultPlugin.exec(req, succ, fail, args, env);
-
-            expect(testExtension.getReadOnlyFields).toHaveBeenCalledWith(succ, fail, args, env);
-        });
-
-        it("calls a multi-level method of the extension", function () {
-            var env = {"request": req, "response": res};
-
-            spyOn(testExtension, "getReadOnlyFields");
-            testExtension.getReadOnlyFields.a = {
-                b : {
-                    c : jasmine.createSpy()
-                }
-            };
-
-            req.params.ext = "blackberry.app";
-            req.params.method = "getReadOnlyFields/a/b/c";
-
-            defaultPlugin.exec(req, succ, fail, args, env);
-
-            expect(fail).wasNotCalled();
-            expect(testExtension.getReadOnlyFields.a.b.c).toHaveBeenCalledWith(succ, fail, args, env);
-        });
-
-        it("throws a 404 is a multi-level method is not found", function () {
-            var env = {"request": req, "response": res};
-
-            spyOn(console, "warn");
-            spyOn(testExtension, "getReadOnlyFields");
-            testExtension.getReadOnlyFields.a = {
-            };
-
-            req.params.ext = "blackberry.app";
-            req.params.method = "getReadOnlyFields/a/b/c";
-
-            defaultPlugin.exec(req, succ, fail, args, env);
-
-            expect(fail).toHaveBeenCalledWith(-1, jasmine.any(String), 404);
-            expect(console.warn).toHaveBeenCalledWith("Method " + req.params.method + " for " + req.params.ext + " not found");
-        });
-    });
-
-});


[07/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/transports/webhook-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/webhook-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/transports/webhook-test.js
deleted file mode 100644
index 8d40c00..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/transports/webhook-test.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * webhook-test.js: Tests for instances of the Webhook transport
- *
- * (C) 2011 Marak Squires
- * MIT LICENSE
- *
- */
-
-var path = require('path'),
-    vows = require('vows'),
-    fs = require('fs'),
-    http = require('http'),
-    https = require('https'),
-    assert = require('assert'),
-    winston = require('../../lib/winston'),
-    helpers = require('../helpers');
-
-var webhookTransport = new (winston.transports.Webhook)({
-  "host": "localhost",
-  "port": 8080,
-  "path": "/winston-test"
-});
-
-var httpsWebhookTransport = new (winston.transports.Webhook)({
-  "host": "localhost",
-  "port": 8081,
-  "path": "/winston-test",
-  "ssl": true
-});
-
-var authWebhookTransport = new (winston.transports.Webhook)({
-  "host": "localhost",
-  "port": 8080,
-  "path": "/winston-auth-test",
-  "auth": {
-    "username": "winston",
-    "password": "churchill"
-  }
-});
-
-var requestsAuthenticated = true;
-
-var server = http.createServer(function (req, res) {
-  if (req.url == '/winston-auth-test') {
-    //
-    // Test if request has been correctly authenticated
-    //
-    // Strip 'Basic' from Authorization header
-    var signature = req.headers['authorization'].substr(6);
-    requestsAuthenticated = requestsAuthenticated &&
-      new Buffer(signature, 'base64').toString('utf8') == 'winston:churchill';
-  }
-  res.end();
-});
-
-server.listen(8080);
-
-
-var httpsServer = https.createServer({
-  cert: fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'keys', 'agent2-cert.pem')),
-  key: fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'keys', 'agent2-key.pem'))
-}, function (req, res) {
-  res.end();
-});
-
-httpsServer.listen(8081);
-
-vows.describe('winston/transports/webhook').addBatch({
-  "An instance of the Webhook Transport": {
-    "when passed valid options": {
-      "should have the proper methods defined": function () {
-        helpers.assertWebhook(webhookTransport);
-      },
-      "the log() method": helpers.testNpmLevels(webhookTransport, "should respond with true", function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isTrue(logged);
-      })
-    }
-  },
-  "An https instance of the Webhook Transport": {
-    "when passed valid options": {
-      "should have the proper methods defined": function () {
-        helpers.assertWebhook(httpsWebhookTransport);
-      },
-      "the log() method": helpers.testNpmLevels(httpsWebhookTransport, "should respond with true", function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isTrue(logged);
-      })
-    }
-  },
-  "An http Basic Auth instance of the Webhook Transport": {
-    "when passed valid options": {
-      "should have the proper methods defined": function () {
-        helpers.assertWebhook(authWebhookTransport);
-      },
-      "the log() method": helpers.testNpmLevels(authWebhookTransport, "should respond with true", function (ign, err, logged) {
-        assert.isNull(err);
-        assert.isTrue(logged);
-      })
-    }
-  }
-}).addBatch({
-  "When the tests are over": {
-    topic: function () {
-      //
-      // Delay destruction of the server since the
-      // WebHook transport responds before the request
-      // has actually be completed.
-      //
-      setTimeout(this.callback, 1000);
-    },
-    "the server should cleanup": function () {
-      server.close();
-    },
-    "requests have been correctly authenticated": function () {
-      assert.ok(requestsAuthenticated);
-    }
-  }
-}).addBatch({
-  // "An instance of the Webhook Transport": transport(winston.transports.Webhook, {
-  //   "host": "localhost",
-  //   "port": 8080,
-  //   "path": "/winston-test"
-  // })
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/test/winston-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/test/winston-test.js b/blackberry10/node_modules/prompt/node_modules/winston/test/winston-test.js
deleted file mode 100644
index 7105329..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/test/winston-test.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * logger-test.js: Tests for instances of the winston Logger
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENSE
- *
- */
-
-var fs = require('fs'),
-    path = require('path'),
-    vows = require('vows'),
-    http = require('http'),
-    assert = require('assert'),
-    winston = require('../lib/winston'),
-    helpers = require('./helpers');
-  
-vows.describe('winston').addBatch({
-  "The winston module": {
-    topic: function () {
-      winston.default.transports.console.level = 'silly';
-      return null;
-    },
-    "should have the correct methods defined": function () {
-      assert.isObject(winston.transports);
-      assert.isFunction(winston.Transport);
-      assert.isTrue(!winston.transports.Transport);
-      assert.isFunction(winston.transports.Console);
-      assert.isFunction(winston.transports.File);
-      assert.isFunction(winston.transports.Webhook);
-      assert.isObject(winston.default.transports.console);
-      assert.isFalse(winston.emitErrs);
-      assert.isObject(winston.config);
-      ['Logger', 'add', 'remove', 'extend']
-        .concat(Object.keys(winston.config.npm.levels))
-        .forEach(function (key) {
-          assert.isFunction(winston[key]);
-        });
-    },
-    "it should": {
-      topic: function () {
-        fs.readFile(path.join(__dirname, '..', 'package.json'), this.callback);
-      },
-      "have the correct version set": function (err, data) {
-        assert.isNull(err);
-        data = JSON.parse(data.toString());
-        assert.equal(winston.version, data.version);
-      }
-    },
-    "the log() method": helpers.testNpmLevels(winston, "should respond without an error", function (err) {
-      assert.isNull(err);
-    }),
-    "the extend() method called on an empty object": {
-      topic: function (logger) {
-        var empty = {};
-        winston.extend(empty);
-        return empty;
-      },
-      "should define the appropriate methods": function (extended) {
-        ['log', 'profile', 'startTimer'].concat(Object.keys(winston.config.npm.levels)).forEach(function (method) {
-          assert.isFunction(extended[method]);
-        });
-      }
-    }
-  }
-}).addBatch({
-  "The winston module": {
-    "the setLevels() method": {
-      topic: function () {
-        winston.setLevels(winston.config.syslog.levels);
-        return null;
-      },
-      "should have the proper methods defined": function () {
-        assert.isObject(winston.transports);
-        assert.isFunction(winston.transports.Console);
-        assert.isFunction(winston.transports.Webhook);
-        assert.isObject(winston.default.transports.console);
-        assert.isFalse(winston.emitErrs);
-        assert.isObject(winston.config);
-        
-        var newLevels = Object.keys(winston.config.syslog.levels);
-        ['Logger', 'add', 'remove', 'extend']
-          .concat(newLevels)
-          .forEach(function (key) {
-            assert.isFunction(winston[key]);
-          });
-        
-        
-        Object.keys(winston.config.npm.levels)
-          .filter(function (key) {
-            return newLevels.indexOf(key) === -1;
-          })
-          .forEach(function (key) {
-            assert.isTrue(typeof winston[key] === 'undefined');
-          });
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/package.json b/blackberry10/node_modules/prompt/package.json
deleted file mode 100644
index 347c86a..0000000
--- a/blackberry10/node_modules/prompt/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "name": "prompt",
-  "description": "A beautiful command-line prompt for node.js",
-  "version": "0.2.11",
-  "author": {
-    "name": "Nodejitsu Inc.",
-    "email": "info@nodejitsu.com"
-  },
-  "maintainers": [
-    {
-      "name": "indexzero",
-      "email": "charlie@nodejitsu.com"
-    },
-    {
-      "name": "jesusabdullah",
-      "email": "josh@nodejitsu.com"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/flatiron/prompt.git"
-  },
-  "dependencies": {
-    "pkginfo": "0.x.x",
-    "read": "1.0.x",
-    "revalidator": "0.1.x",
-    "utile": "0.2.x",
-    "winston": "0.6.x"
-  },
-  "devDependencies": {
-    "vows": "0.7.0"
-  },
-  "main": "./lib/prompt",
-  "scripts": {
-    "test": "vows test/prompt-test.js --spec",
-    "test-all": "vows --spec"
-  },
-  "engines": {
-    "node": ">= 0.6.6"
-  },
-  "readme": "# prompt [![Build Status](https://secure.travis-ci.org/flatiron/prompt.png)](http://travis-ci.org/flatiron/prompt)\n\nA beautiful command-line prompt for node.js\n\n## Features\n\n* prompts the user for input\n* supports validation and defaults\n* hides passwords\n\n## Usage\nUsing prompt is relatively straight forward. There are two core methods you should be aware of: `prompt.get()` and `prompt.addProperties()`. There methods take strings representing property names in addition to objects for complex property validation (and more). There are a number of [examples][0] that you should examine for detailed usage.\n\n### Getting Basic Prompt Information\nGetting started with `prompt` is easy. Lets take a look at `examples/simple-prompt.js`:\n\n``` js\n  var prompt = require('prompt');\n\n  //\n  // Start the prompt\n  //\n  prompt.start();\n\n  //\n  // Get two properties from the user: username and email\n  //\n  prompt.get(['username', 'email'], function (err, result) {
 \n    //\n    // Log the results.\n    //\n    console.log('Command-line input received:');\n    console.log('  username: ' + result.username);\n    console.log('  email: ' + result.email);\n  });\n```\n\nThis will result in the following command-line output:\n\n```\n  $ node examples/simple-prompt.js \n  prompt: username: some-user\n  prompt: email: some-user@some-place.org\n  Command-line input received:\n    username: some-user\n    email: some-user@some-place.org\n```\n\n### Prompting with Validation, Default Values, and More (Complex Properties)\nIn addition to prompting the user with simple string prompts, there is a robust API for getting and validating complex information from a command-line prompt. Here's a quick sample:\n\n``` js\n  var schema = {\n    properties: {\n      name: {\n        pattern: /^[a-zA-Z\\s\\-]+$/,\n        message: 'Name must be only letters, spaces, or dashes',\n        required: true\n      },\n      password: {\n        hidden: true\n      }\n    }
 \n  };\n\n  //\n  // Start the prompt\n  //\n  prompt.start();\n\n  //\n  // Get two properties from the user: email, password\n  //\n  prompt.get(schema, function (err, result) {\n    //\n    // Log the results.\n    //\n    console.log('Command-line input received:');\n    console.log('  name: ' + result.name);\n    console.log('  password: ' + result.password);\n  });\n```\n\nPretty easy right? The output from the above script is: \n\n```\n  $ node examples/property-prompt.js\n  prompt: name: nodejitsu000\n  error:  Invalid input for name\n  error:  Name must be only letters, spaces, or dashes\n  prompt: name: Nodejitsu Inc\n  prompt: password: \n  Command-line input received:\n    name: Nodejitsu Inc\n    password: some-password  \n```\n\n## Valid Property Settings\n`prompt` understands JSON-schema with a few extra parameters and uses [revalidator](https://github.com/flatiron/revalidator) for validation.\n\nHere's an overview of the properties that may be used for validation and
  prompting controls:\n\n``` js\n  {\n    description: 'Enter your password',     // Prompt displayed to the user. If not supplied name will be used.\n    type: 'string',                 // Specify the type of input to expect.\n    pattern: /^\\w+$/,                  // Regular expression that input must be valid against.\n    message: 'Password must be letters', // Warning message to display if validation fails.\n    hidden: true,                        // If true, characters entered will not be output to console.\n    default: 'lamepassword',             // Default value to use if no value is entered.\n    required: true                        // If true, value entered must be non-empty.\n    before: function(value) { return 'v' + value; } // Runs before node-prompt callbacks. It modifies user's input\n  }\n```\n\nAlternatives to `pattern` include `format` and `conform`, as documented in [revalidator](https://github.com/flatiron/revalidator).\n\nUsing `type: 'array'` has some speci
 al cases.\n\n- `description` will not work in the schema if `type: 'array'` is defined.\n- `maxItems` takes precedence over `minItems`.\n- Arrays that do not have `maxItems` defined will require users to `SIGINT` (`^C`) before the array is ended.\n- If `SIGINT` (`^C`) is triggered before `minItems` is met, a validation error will appear. This will require users to `SIGEOF` (`^D`) to end the input.\n\nFor more information on things such as `maxItems` and `minItems`, refer to the [revalidator](https://github.com/flatiron/revalidator) repository.\n\n### Alternate Validation API:\n\nPrompt, in addition to iterating over JSON-Schema properties, will also happily iterate over an array of validation objects given an extra 'name' property:\n\n```js\n  var prompt = require('../lib/prompt');\n\n  //\n  // Start the prompt\n  //\n  prompt.start();\n\n  //\n  // Get two properties from the user: username and password\n  //\n  prompt.get([{\n      name: 'username',\n      required: true\n    }, 
 {\n      name: 'password',\n      hidden: true,\n      conform: function (value) {\n        return true;\n      }\n    }], function (err, result) {\n    //\n    // Log the results.\n    //\n    console.log('Command-line input received:');\n    console.log('  username: ' + result.username);\n    console.log('  password: ' + result.password);\n  });\n```\n\n### Backward Compatibility\n\nNote that, while this structure is similar to that used by prompt 0.1.x, that the object properties use the same names as in JSON-Schema. prompt 0.2.x is backward compatible with prompt 0.1.x except for asynchronous validation.\n\n### Skipping Prompts\n\nSometimes power users may wish to skip promts and specify all data as command line options. \nif a value is set as a property of `prompt.override` prompt will use that instead of \nprompting the user.\n\n``` js\n  //prompt-override.js\n\n  var prompt = require('prompt'),\n      optimist = require('optimist')\n\n  //\n  // set the overrides\n  //\n  pro
 mpt.override = optimist.argv\n\n  //\n  // Start the prompt\n  //\n  prompt.start();\n\n  //\n  // Get two properties from the user: username and email\n  //\n  prompt.get(['username', 'email'], function (err, result) {\n    //\n    // Log the results.\n    //\n    console.log('Command-line input received:');\n    console.log('  username: ' + result.username);\n    console.log('  email: ' + result.email);\n  })\n\n  //: node prompt-override.js --username USER --email EMAIL\n```\n\n\n### Adding Properties to an Object \nA common use-case for prompting users for data from the command-line is to extend or create a configuration object that is passed onto the entry-point method for your CLI tool. `prompt` exposes a convenience method for doing just this: \n\n``` js\n  var obj = {\n    password: 'lamepassword',\n    mindset: 'NY'\n  }\n\n  //\n  // Log the initial object.\n  //\n  console.log('Initial object to be extended:');\n  console.dir(obj);\n\n  //\n  // Add two properties to the 
 empty object: username and email\n  //\n  prompt.addProperties(obj, ['username', 'email'], function (err) {\n    //\n    // Log the results.\n    //\n    console.log('Updated object received:');\n    console.dir(obj);\n  });\n```\n\n## Customizing your prompt\nAside from changing `property.message`, you can also change `prompt.message`\nand `prompt.delimiter` to change the appearance of your prompt.\n\nThe basic structure of a prompt is this:\n\n``` js\nprompt.message + prompt.delimiter + property.message + prompt.delimiter;\n```\n\nThe default `prompt.message` is \"prompt,\" the default `prompt.delimiter` is\n\": \", and the default `property.message` is `property.name`.\nChanging these allows you to customize the appearance of your prompts! In\naddition, prompt supports ANSI color codes via the\n[colors module](https://github.com/Marak/colors.js) for custom colors. For a\nvery colorful example:\n\n``` js\n  var prompt = require(\"prompt\");\n\n  //\n  // Setting these properties c
 ustomizes the prompt.\n  //\n  prompt.message = \"Question!\".rainbow;\n  prompt.delimiter = \"><\".green;\n\n  prompt.start();\n\n  prompt.get({\n    properties: {\n      name: {\n        description: \"What is your name?\".magenta\n      }\n    }\n  }, function (err, result) {\n    console.log(\"You said your name is: \".cyan + result.name.cyan);\n  });\n```\n\nIf you don't want colors, you can set\n\n```js\nvar prompt = require('prompt');\n\nprompt.colors = false;\n```\n\n## Installation\n\n``` bash\n  $ [sudo] npm install prompt\n```\n\n## Running tests\n\n``` bash \n  $ npm test\n```\n\n#### License: MIT\n#### Author: [Charlie Robbins](http://github.com/indexzero)\n#### Contributors: [Josh Holbrook](http://github.com/jesusabdullah), [Pavan Kumar Sunkara](http://github.com/pksunkara)\n\n[0]: https://github.com/flatiron/prompt/tree/master/examples\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/flatiron/prompt/issues"
-  },
-  "_id": "prompt@0.2.11",
-  "_from": "prompt@0.2.11"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/test/helpers.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/test/helpers.js b/blackberry10/node_modules/prompt/test/helpers.js
deleted file mode 100644
index 715aee6..0000000
--- a/blackberry10/node_modules/prompt/test/helpers.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * helpers.js: test helpers for the prompt tests.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var stream = require('stream'),
-    stream = require('stream'),
-    util = require('util'),
-    prompt = require('../lib/prompt');
-
-var helpers = exports;
-
-var MockReadWriteStream = helpers.MockReadWriteStream = function () {
-  //
-  // No need to do anything here, it's just a mock.
-  //
-  var self = this;
-  this.on('pipe', function (src) {
-    var _emit = src.emit;
-    src.emit = function () {
-      //console.dir(arguments);
-      _emit.apply(src, arguments);
-    };
-    
-    src.on('data', function (d) {
-      self.emit('data', d + '');
-    })
-  })
-};
-
-util.inherits(MockReadWriteStream, stream.Stream);
-
-['resume', 'pause', 'setEncoding', 'flush', 'end'].forEach(function (method) {
-  MockReadWriteStream.prototype[method] = function () { /* Mock */ };
-});
-
-MockReadWriteStream.prototype.write = function (msg) {
-  this.emit('data', msg);
-  return true;
-};
-
-MockReadWriteStream.prototype.writeNextTick = function (msg) {
-  var self = this
-  process.nextTick(function () {
-    self.write(msg);
-  });
-};
-
-//
-// Create some mock streams for asserting against
-// in our prompt teSts.
-//
-helpers.stdin = new MockReadWriteStream();
-helpers.stdout = new MockReadWriteStream();
-helpers.stderr = new MockReadWriteStream();
-
-//
-// Because `read` uses a `process.nextTick` for reading from
-// stdin, it is necessary to write sequences of input with extra
-// `process.nextTick` calls
-//
-helpers.stdin.writeSequence = function (lines) {
-  if (!lines || !lines.length) {
-    return;
-  }
-
-  helpers.stdin.writeNextTick(lines.shift());
-  prompt.once('prompt', function () {
-    process.nextTick(function () {
-      helpers.stdin.writeSequence(lines);
-    });
-  });
-}
-
-//
-// Monkey punch `util.error` to silence console output
-// and redirect to helpers.stderr for testing.
-//
-console.error = function () {
-  helpers.stderr.write.apply(helpers.stderr, arguments);
-}
-
-// 1) .properties
-// 2) warning --> message
-// 3) Name --> description || key
-// 4) validator --> conform (fxns), pattern (regexp), format (built-in)
-// 5) empty --> required
-helpers.schema = {
-  properties: {
-    oldschema: {
-      message: 'Enter your username',
-      validator: /^[\w|\-]+$/,
-      warning: 'username can only be letters, numbers, and dashes',
-      empty: false
-    },
-    riffwabbles: {
-      pattern: /^[\w|\-]+$/,
-      message: 'riffwabbles can only be letters, numbers, and dashes',
-      default: 'foobizzles'
-    },
-    number: {
-      type: 'number',
-      message: 'pick a number, any number',
-      default: 10
-    },
-    username: {
-      pattern: /^[\w|\-]+$/,
-      message: 'Username can only be letters, numbers, and dashes'
-    },
-    notblank: {
-      required: true
-    },
-    password: {
-      hidden: true,
-      required: true
-    },
-    badValidator: {
-      pattern: ['cant', 'use', 'array']
-    },
-    animal: {
-      description: 'Enter an animal',
-      default: 'dog',
-      pattern: /dog|cat/
-    },
-    sound: {
-      description: 'What sound does this animal make?',
-      conform: function (value) {
-        var animal = prompt.history(0).value;
-
-        return animal === 'dog' && value === 'woof'
-          || animal === 'cat' && value === 'meow';
-      }
-    },
-    fnvalidator: {
-      name: 'fnvalidator',
-      validator: function (line) {
-        return line.slice(0,2) == 'fn';
-      },
-      message: 'fnvalidator must start with "fn"'
-    },
-    fnconform: {
-      conform: function (line) {
-        return line.slice(0,2) == 'fn';
-      },
-      message: 'fnconform must start with "fn"'
-    }/*,
-    cbvalidator: {
-      conform: function (line, next) {
-        next(line.slice(0,2) == 'cb');
-      },
-      message: 'cbvalidator must start with "cb"'
-    }*/
-  }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/test/interactive-prompt-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/test/interactive-prompt-test.js b/blackberry10/node_modules/prompt/test/interactive-prompt-test.js
deleted file mode 100644
index a3032e3..0000000
--- a/blackberry10/node_modules/prompt/test/interactive-prompt-test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * prompt-test.js: Tests for prompt.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var assert = require('assert'),
-    vows = require('vows'),
-    prompt = require('../lib/prompt'),
-    winston = require('winston').cli(),
-    helpers = require('./helpers');
-
-vows.describe('prompt/interactive').addBatch({
-  "When using prompt": {
-    topic: function () {
-      //
-      // Reset the prompt for interactive testing
-      //
-      prompt.started = false;
-      prompt.start();
-      winston.info('These prompt tests are interactive');
-      winston.info('Not following instructions will result in test failure');
-      return null;
-    },
-    "the getInput() method": {
-      "when passed a complex property with `hidden: true`": {
-        topic: function () {
-          winston.info('When prompted, enter: 12345 [backspace] [backspace] [enter]');
-          prompt.getInput({ path: ['password'], schema: helpers.schema.properties.password }, this.callback);
-        },
-        "should respond with `123`": function (err, result) {
-          assert.isNull(err);
-          assert.equal(result, '123');
-        },
-        "and then when passed a complex property expecting a number": {
-          topic: function () {
-            winston.info('When prompted, enter: 123 [enter]');
-            prompt.getInput({ path: ['number'], schema: helpers.schema.properties.number }, this.callback);
-          },
-          "should respond with `123` (as a number)": function (err, result) {
-            assert.isNull(err);
-            assert.equal(result, 123);
-          }
-        }
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/test/macros.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/test/macros.js b/blackberry10/node_modules/prompt/test/macros.js
deleted file mode 100644
index 9f58f08..0000000
--- a/blackberry10/node_modules/prompt/test/macros.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * macros.js: Test macros for prompt.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
- 
-var assert = require('assert'),
-    helpers = require('./helpers'),
-    prompt = require('../lib/prompt');
-
-exports.shouldConfirm = function (options, mixin) {
-  var message = options.response.toString().replace(/\n/g, ''),
-      messages = ["When using prompt", "the confirm() method"],
-      context = {},
-      last = context;
-      
-  messages = messages.concat(options.messages || []);
-  
-  while (messages.length) {
-    var text = messages.shift();
-    last[text] = {};
-    last = last[text]; 
-  }
-  
-  last['responding with ' + message] = {
-    topic: function () {
-      if(!mixin)
-        prompt.confirm(options.prop, this.callback);
-      else
-        prompt.confirm(options.prop, mixin, this.callback);
-
-      if (!Array.isArray(options.response)) {
-        helpers.stdin.writeNextTick(options.response + '\n');
-      }
-      else {
-        helpers.stdin.writeSequence(options.response);
-      }
-    },
-    "should respond with true" : function(err, result) {
-      assert.isNull(err);
-      assert.isTrue(result);
-    }
-  }
-  
-  return context;
-};
-
-exports.shouldNotConfirm = function (options) {
-  var message = options.response.toString().replace(/\n/g, ''),
-      messages = ["When using prompt", "the confirm() method"],
-      context = {},
-      last = context;
-      
-  messages = messages.concat(options.messages || []);
-  
-  while (messages.length) {
-    var text = messages.shift();
-    last[text] = {};
-    last = last[text]; 
-  }
-  
-  last['responding with ' + message] = {
-    topic: function () {
-      prompt.confirm(options.prop, this.callback);
-      
-      if (!Array.isArray(options.response)) {
-        helpers.stdin.writeNextTick(options.response + '\n');
-      }
-      else {
-        helpers.stdin.writeSequence(options.response);
-      }
-    },
-    "should respond with false" : function(err, result) {
-      assert.isNull(err);
-      assert.isFalse(result);
-    }
-  };
-  
-  return context;
-};
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/test/prompt-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/test/prompt-test.js b/blackberry10/node_modules/prompt/test/prompt-test.js
deleted file mode 100644
index 22e26bc..0000000
--- a/blackberry10/node_modules/prompt/test/prompt-test.js
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * prompt-test.js: Tests for prompt.
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var assert = require('assert'),
-    vows = require('vows'),
-    prompt = require('../lib/prompt'),
-    helpers = require('./helpers'),
-    macros = require('./macros'),
-    schema = helpers.schema;
-
-// A helper to pass fragments of our schema into prompt as full schemas.
-function grab () {
-  var names = [].slice.call(arguments),
-      complete = { schema: {} };
-
-  names.forEach(function (name) {
-    complete.path = [name],
-    complete.schema = schema.properties[name];
-  });
-  return complete;
-};
-
-//
-// Reset the prompt for mock testing
-//
-prompt.started = false;
-prompt.start({
-  stdin: helpers.stdin,
-  stdout: helpers.stdout
-});
-
-vows.describe('prompt').addBatch({
-  "When using prompt": {
-    "the getInput() method": {
-      "with a simple string prompt": {
-        topic: function () {
-          var that = this;
-          helpers.stdout.once('data', function (msg) {
-            that.msg = msg;
-          })
-
-          prompt.getInput('test input', this.callback);
-          helpers.stdin.writeNextTick('test value\n');
-        },
-        "should prompt to stdout and respond with data": function (err, input) {
-          assert.isNull(err);
-          assert.equal(input, 'test value');
-          assert.isTrue(this.msg.indexOf('test input') !== -1);
-        }
-      },
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the getInput() method": {
-      "with any field that is not supposed to be empty": {
-        "and we don't provide any input": {
-          topic: function () {
-            var that = this;
-            helpers.stdout.once('data', function (msg) {
-              that.msg = msg;
-            });
-
-            helpers.stderr.once('data', function (msg) {
-              that.errmsg = msg;
-            });
-
-            prompt.getInput(grab('notblank'), function () {});
-            prompt.once('invalid', this.callback.bind(null, null))
-            helpers.stdin.writeNextTick('\n');
-          },
-          "should prompt with an error": function (_, prop, input) {
-            assert.isObject(prop);
-            assert.equal(input, '');
-            assert.isTrue(this.errmsg.indexOf('Invalid input') !== -1);
-            assert.isTrue(this.msg.indexOf('notblank') !== -1);
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the getInput() method": {
-      "with a hidden field that is not supposed to be empty": {
-        "and we provide valid input": {
-          topic: function () {
-            var that = this;
-            helpers.stdout.once('data', function (msg) {
-              that.msg = msg;
-            });
-
-            prompt.getInput('password', this.callback);
-            helpers.stdin.writeNextTick('trustno1\n');
-          },
-
-          "should prompt to stdout and respond with data": function (err, input) {
-            assert.isNull(err);
-            assert.equal(input, 'trustno1');
-            assert.isTrue(this.msg.indexOf('password') !== -1);
-          }
-        },
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the getInput() method": {
-      "with a hidden field that is not supposed to be empty": {
-        "and we don't provide an input": {
-          topic: function () {
-            var that = this;
-            helpers.stdout.once('data', function (msg) {
-              that.msg = msg;
-            });
-
-            helpers.stderr.once('data', function (msg) {
-              that.errmsg = msg;
-            });
-
-            prompt.getInput(grab('password'), function () {} );
-            prompt.once('invalid', this.callback.bind(null, null))
-            helpers.stdin.writeNextTick('\n');
-          },
-          "should prompt with an error": function (ign, prop, input) {
-            assert.isObject(prop);
-            assert.equal(input, '');
-            assert.isTrue(this.errmsg.indexOf('Invalid input') !== -1);
-            assert.isTrue(this.msg.indexOf('password') !== -1);
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the getInput() method": {
-      "with a complex property prompt": {
-        "and a valid input": {
-          topic: function () {
-            var that = this;
-            helpers.stdout.once('data', function (msg) {
-              that.msg = msg;
-            });
-
-            prompt.getInput(grab('username'), this.callback);
-            helpers.stdin.writeNextTick('some-user\n');
-          },
-          "should prompt to stdout and respond with data": function (err, input) {
-            assert.isNull(err);
-            assert.equal(input, 'some-user');
-            assert.isTrue(this.msg.indexOf('username') !== -1);
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the getInput() method": {
-      "with a complex property prompt": {
-        "and an invalid input": {
-          topic: function () {
-            var that = this;
-            helpers.stdout.once('data', function (msg) {
-              that.msg = msg;
-            });
-
-            helpers.stderr.once('data', function (msg) {
-              that.errmsg = msg;
-            })
-
-            prompt.getInput(grab('username'), this.callback);
-
-            prompt.once('invalid', function () {
-              prompt.once('prompt', function () {
-                process.nextTick(function () {
-                  helpers.stdin.writeNextTick('some-user\n');
-                })
-              })
-            });
-
-            helpers.stdin.writeNextTick('some -user\n');
-          },
-          "should prompt with an error before completing the operation": function (err, input) {
-            assert.isNull(err);
-            assert.equal(input, 'some-user');
-            assert.isTrue(this.errmsg.indexOf('Invalid input') !== -1);
-            assert.isTrue(this.msg.indexOf('username') !== -1);
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the getInput() method": {
-      "with a complex property prompt": {
-        "with an invalid validator (array)": {
-          topic: function () {
-            var that = this,
-                called;
-
-            prompt.getInput(grab('badValidator'), function (err) {
-              if (!called) {
-                called = true;
-                that.callback(err);
-              }
-            });
-            helpers.stdin.writeNextTick('some-user\n');
-          },
-          "should respond with an error": function (err, ign) {
-            assert.isTrue(!!err);
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "with a simple string prompt": {
-        "that is not a property in prompt.properties": {
-          topic: function () {
-            var that = this;
-            helpers.stdout.once('data', function (msg) {
-              that.msg = msg;
-            })
-
-            prompt.get('test input', this.callback);
-            helpers.stdin.writeNextTick('test value\n');
-          },
-          "should prompt to stdout and respond with the value": function (err, result) {
-            assert.isNull(err);
-            assert.include(result, 'test input');
-            assert.equal(result['test input'], 'test value');
-            assert.isTrue(this.msg.indexOf('test input') !== -1);
-          }
-        },
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "with a simple string prompt": {
-        "that is a property name in prompt.properties": {
-          "with a default value": {
-            topic: function () {
-              var that = this;
-
-              helpers.stdout.once('data', function (msg) {
-                that.msg = msg;
-              });
-
-              prompt.properties.riffwabbles = schema.properties.riffwabbles;
-              prompt.get('riffwabbles', this.callback);
-              helpers.stdin.writeNextTick('\n');
-            },
-            "should prompt to stdout and respond with the default value": function (err, result) {
-              assert.isNull(err);
-              assert.isTrue(this.msg.indexOf('riffwabbles') !== -1);
-              assert.isTrue(this.msg.indexOf('(foobizzles)') !== -1);
-              assert.include(result, 'riffwabbles');
-              assert.equal(result['riffwabbles'], schema.properties['riffwabbles'].default);
-            }
-          },
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "with a simple string prompt": {
-        "that is a property name in prompt.properties": {
-          "that expects a numeric value": {
-            "and gets valid input": {
-              topic: function () {
-                var that = this;
-
-                helpers.stdout.once('data', function (msg) {
-                  that.msg = msg;
-                });
-
-                prompt.properties.number = schema.properties.number;
-                prompt.get('number', this.callback);
-                helpers.stdin.writeNextTick('15\n');
-              },
-              "should prompt to stdout and respond with a numeric value": function (err, result) {
-                assert.isNull(err);
-                assert.include(result, 'number');
-                assert.equal(result['number'], 15);
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "with a simple string prompt": {
-        "that is a property name in prompt.properties": {
-          "with a sync function validator (.validator)": {
-            topic: function () {
-              var that = this;
-
-              helpers.stdout.once('data', function (msg) {
-                that.msg = msg;
-              });
-
-              prompt.get(helpers.schema.properties.fnvalidator, this.callback);
-              helpers.stdin.writeNextTick('fn123\n');
-            },
-            "should accept a value that is checked": function (err, result) {
-              assert.isNull(err);
-              assert.equal(result['fnvalidator'],'fn123');
-            }
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "with a simple string prompt": {
-        "that is a property name in prompt.properties": {
-          "with a sync function validator (.conform)": {
-            topic: function () {
-              var that = this;
-
-              helpers.stdout.once('data', function (msg) {
-                that.msg = msg;
-              });
-
-              prompt.get(grab('fnconform'), this.callback);
-              helpers.stdin.writeNextTick('fn123\n');
-            },
-            "should accept a value that is checked": function (err, result) {
-              assert.isNull(err);
-              assert.equal(result['fnconform'],'fn123');
-            }
-          }
-          //
-          // Remark Does not work with revalidator
-          //
-          // "with a callback validator": {
-          //   topic: function () {
-          //     var that = this;
-          //
-          //     helpers.stdout.once('data', function (msg) {
-          //       that.msg = msg;
-          //     });
-          //
-          //     prompt.get(grab('cbvalidator'), this.callback);
-          //     helpers.stdin.writeNextTick('cb123\n');
-          //   },
-          //   "should not accept a value that is correct": function (err, result) {
-          //     assert.isNull(err);
-          //     assert.equal(result['cbvalidator'],'cb123');
-          //   }
-          // }
-        }
-      },
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "with a simple string prompt": {
-        "that is a property name in prompt.properties": {
-          "with a sync function before (.before)": {
-            topic: function() {
-              var that = this;
-
-              helpers.stdout.once('data', function(msg) {
-                that.msg = msg;
-              });
-
-              prompt.get({
-                properties: {
-                  fnbefore: {
-                    before: function(v) {
-                      return 'v' + v;
-                    }
-                  }
-                } 
-              }, this.callback);
-              helpers.stdin.writeNextTick('fn456\n');
-            },
-            "should modify user's input": function(e, result) {
-              assert.equal(result.fnbefore, 'vfn456');
-            }
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "skip prompt with prompt.overide": {
-        topic: function () {
-          prompt.override = { coconihet: 'whatever' }
-          prompt.get('coconihet', this.callback);
-        },
-        "skips prompt and uses overide": function (err, results) {
-          assert.equal(results.coconihet, 'whatever')
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the addProperties() method": {
-      topic: function () {
-        prompt.addProperties({}, ['foo', 'bar'], this.callback);
-        helpers.stdin.writeSequence(['foo\n', 'bar\n']);
-      },
-      "should add the properties to the object": function (err, obj) {
-        assert.isNull(err);
-        assert.isObject(obj);
-        assert.equal(obj.foo, 'foo');
-        assert.equal(obj.bar, 'bar');
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the get() method": {
-      "with old schema": {
-        topic: function () {
-          var that = this;
-
-          helpers.stdout.once('data', function (msg) {
-            that.msg = msg;
-          });
-
-          prompt.properties.username = schema.properties.oldschema;
-          prompt.get('username', this.callback);
-
-          helpers.stdin.writeSequence(['\n', 'hell$\n', 'hello\n']);
-        },
-        "should prompt to stdout and respond with the default value": function (err, result) {
-          assert.isNull(err);
-          assert.isTrue(this.msg.indexOf('username') !== -1);
-          assert.include(result, 'username');
-          assert.equal(result.username, 'hello');
-        }
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the history() method": {
-      "when used inside of a complex property": {
-        "with correct value(s)": {
-          topic: function () {
-            prompt.get([grab('animal'), grab('sound')], this.callback);
-            helpers.stdin.writeSequence(['dog\n', 'woof\n']);
-          },
-          "should respond with the values entered": function (err, result) {
-            assert.isTrue(!err);
-            assert.equal(result.animal, 'dog');
-            assert.equal(result.sound, 'woof');
-          }
-        },
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "the history() method": {
-      "when used inside of a complex property": {
-        "with an incorrect value": {
-          topic: function () {
-            prompt.get([grab('animal'), grab('sound')], function () {});
-            prompt.once('invalid', this.callback.bind(null, null));
-            helpers.stdin.writeSequence(['dog\n', 'meow\n']);
-          },
-          "should prompt for the error": function (ign, property, line) {
-            assert.equal(property.path.join(''), 'sound');
-            assert.equal(line, 'meow');
-          }
-        }
-      }
-    }
-  }
-}).addBatch({
-  "when using prompt": {
-    "the get() method": {
-      topic: function () {
-        prompt.override = { xyz: 468, abc: 123 }
-        prompt.get(['xyz', 'abc'], this.callback);
-      },
-      "should respond with overrides": function (err, results) {
-        assert.isNull(err);
-        assert.deepEqual(results, { xyz: 468, abc: 123 });
-      }
-    }
-  }
-}).addBatch({
-  "When using prompt": {
-    "with fancy properties": {
-      "the get() method": {
-        topic: function () {
-          prompt.override = { UVW: 5423, DEF: 64235 }
-          prompt.get({
-            properties: {
-              'UVW': {
-                description: 'a custom message',
-                default: 6
-              },
-              'DEF': {
-                description: 'a custom message',
-                default: 6
-              }
-            }
-          }, this.callback);
-        },
-        "should respond with overrides": function (err, results) {
-          assert.isNull(err);
-          assert.deepEqual(results, { UVW: 5423, DEF: 64235 });
-        }
-      }
-    }
-  }
-}).addBatch(
-  macros.shouldConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'Y'
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with an empty string and default yes'],
-    prop: 'test',
-    response: ''
-  }, {
-    default: 'yes'                   
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'N'
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'YES'
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'NO'
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'T'
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'F'
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'TRUE'
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with a string message'],
-    prop: 'test',
-    response: 'FALSE'
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with an object', 'and description set'],
-    prop: { description: 'a custom message' },
-    response: 'Y'
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with an object', 'and they forgot the description'],
-    prop: { description: 'a custom message' },
-    response: 'Y'
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with an object', 'and custom validators'],
-    prop: {
-      description: 'node or jitsu?',
-      pattern: /^(node|jitsu)/i,
-      yes: /^node/i
-    },
-    response: 'node'
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with an object', 'and custom validators'],
-    prop: {
-      description: 'node or jitsu?',
-      pattern: /^(node|jitsu)/i,
-      yes: /^node/i
-    },
-    response: 'jitsu'
-  })  
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with multiple strings'],
-    prop: ["test", "test2", "test3"],
-    response: ['Y\n', 'y\n', 'YES\n']    
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with multiple strings'],
-    prop: ["test", "test2", "test3"],
-    response: ['Y\n', 'N\n', 'YES\n']    
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with multiple strings'],
-    prop: ["test", "test2", "test3"],
-    response: ['n\n', 'NO\n', 'N\n']    
-  })
-).addBatch(
-  macros.shouldConfirm({
-    messages: ['with multiple objects'],
-    prop: [
-      { message: "test" },
-      { message: "test2" }
-    ],
-    response: ['y\n', 'y\n']    
-  })  
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with multiple objects'],
-    prop: [
-      { message: "test" },
-      { message: "test2" }
-    ],
-    response: ['n\n', 'n\n']    
-  })
-).addBatch(
-  macros.shouldNotConfirm({
-    messages: ['with multiple objects'],
-    prop: [
-      { message: "test" },
-      { message: "test2" }
-    ],
-    response: ['n\n', 'y\n']    
-  })  
-).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/.documentup.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/.documentup.json b/blackberry10/node_modules/shelljs/.documentup.json
deleted file mode 100644
index 57fe301..0000000
--- a/blackberry10/node_modules/shelljs/.documentup.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "name": "ShellJS",
-  "twitter": [
-    "r2r"
-  ]
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/.jshintrc
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/.jshintrc b/blackberry10/node_modules/shelljs/.jshintrc
deleted file mode 100644
index a80c559..0000000
--- a/blackberry10/node_modules/shelljs/.jshintrc
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "loopfunc": true,
-  "sub": true,
-  "undef": true,
-  "unused": true,
-  "node": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/.npmignore b/blackberry10/node_modules/shelljs/.npmignore
deleted file mode 100644
index 6b20c38..0000000
--- a/blackberry10/node_modules/shelljs/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-test/
-tmp/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/.travis.yml b/blackberry10/node_modules/shelljs/.travis.yml
deleted file mode 100644
index 99cdc74..0000000
--- a/blackberry10/node_modules/shelljs/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - "0.8"
-  - "0.10"
-  - "0.11"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/LICENSE b/blackberry10/node_modules/shelljs/LICENSE
deleted file mode 100644
index 1b35ee9..0000000
--- a/blackberry10/node_modules/shelljs/LICENSE
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2012, Artur Adib <aa...@mozilla.com>
-All rights reserved.
-
-You may use this project under the terms of the New BSD license as follows:
-
-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 Artur Adib nor the
-      names of the 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 ARTUR ADIB 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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/README.md b/blackberry10/node_modules/shelljs/README.md
deleted file mode 100644
index 9120623..0000000
--- a/blackberry10/node_modules/shelljs/README.md
+++ /dev/null
@@ -1,552 +0,0 @@
-# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)
-
-ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!
-
-The project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:
-
-+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader
-+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger
-+ [JSHint](http://jshint.com) - Most popular JavaScript linter
-+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers
-+ [Yeoman](http://yeoman.io/) - Web application stack and development tool
-+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation
-
-and [many more](https://npmjs.org/browse/depended/shelljs).
-
-## Installing
-
-Via npm:
-
-```bash
-$ npm install [-g] shelljs
-```
-
-If the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to
-run ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:
-
-```bash
-$ shjs my_script
-```
-
-You can also just copy `shell.js` into your project's directory, and `require()` accordingly.
-
-
-## Examples
-
-### JavaScript
-
-```javascript
-require('shelljs/global');
-
-if (!which('git')) {
-  echo('Sorry, this script requires git');
-  exit(1);
-}
-
-// Copy files to release dir
-mkdir('-p', 'out/Release');
-cp('-R', 'stuff/*', 'out/Release');
-
-// Replace macros in each .js file
-cd('lib');
-ls('*.js').forEach(function(file) {
-  sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
-  sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file);
-  sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file);
-});
-cd('..');
-
-// Run external tool synchronously
-if (exec('git commit -am "Auto-commit"').code !== 0) {
-  echo('Error: Git commit failed');
-  exit(1);
-}
-```
-
-### CoffeeScript
-
-```coffeescript
-require 'shelljs/global'
-
-if not which 'git'
-  echo 'Sorry, this script requires git'
-  exit 1
-
-# Copy files to release dir
-mkdir '-p', 'out/Release'
-cp '-R', 'stuff/*', 'out/Release'
-
-# Replace macros in each .js file
-cd 'lib'
-for file in ls '*.js'
-  sed '-i', 'BUILD_VERSION', 'v0.1.2', file
-  sed '-i', /.*REMOVE_THIS_LINE.*\n/, '', file
-  sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat 'macro.js', file
-cd '..'
-
-# Run external tool synchronously
-if (exec 'git commit -am "Auto-commit"').code != 0
-  echo 'Error: Git commit failed'
-  exit 1
-```
-
-## Global vs. Local
-
-The example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.
-
-Example:
-
-```javascript
-var shell = require('shelljs');
-shell.echo('hello world');
-```
-
-## Make tool
-
-A convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.
-
-Example (CoffeeScript):
-
-```coffeescript
-require 'shelljs/make'
-
-target.all = ->
-  target.bundle()
-  target.docs()
-
-target.bundle = ->
-  cd __dirname
-  mkdir 'build'
-  cd 'lib'
-  (cat '*.js').to '../build/output.js'
-
-target.docs = ->
-  cd __dirname
-  mkdir 'docs'
-  cd 'lib'
-  for file in ls '*.js'
-    text = grep '//@', file     # extract special comments
-    text.replace '//@', ''      # remove comment tags
-    text.to 'docs/my_docs.md'
-```
-
-To run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.
-
-
-
-<!-- 
-
-  DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED
-
--->
-
-
-## Command reference
-
-
-All commands run synchronously, unless otherwise stated.
-
-
-### cd('dir')
-Changes to directory `dir` for the duration of the script
-
-
-### pwd()
-Returns the current directory.
-
-
-### ls([options ,] path [,path ...])
-### ls([options ,] path_array)
-Available options:
-
-+ `-R`: recursive
-+ `-A`: all files (include files beginning with `.`, except for `.` and `..`)
-
-Examples:
-
-```javascript
-ls('projs/*.js');
-ls('-R', '/users/me', '/tmp');
-ls('-R', ['/users/me', '/tmp']); // same as above
-```
-
-Returns array of files in the given path, or in current directory if no path provided.
-
-
-### find(path [,path ...])
-### find(path_array)
-Examples:
-
-```javascript
-find('src', 'lib');
-find(['src', 'lib']); // same as above
-find('.').filter(function(file) { return file.match(/\.js$/); });
-```
-
-Returns array of all files (however deep) in the given paths.
-
-The main difference from `ls('-R', path)` is that the resulting file names
-include the base directories, e.g. `lib/resources/file1` instead of just `file1`.
-
-
-### cp([options ,] source [,source ...], dest)
-### cp([options ,] source_array, dest)
-Available options:
-
-+ `-f`: force
-+ `-r, -R`: recursive
-
-Examples:
-
-```javascript
-cp('file1', 'dir1');
-cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');
-cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above
-```
-
-Copies files. The wildcard `*` is accepted.
-
-
-### rm([options ,] file [, file ...])
-### rm([options ,] file_array)
-Available options:
-
-+ `-f`: force
-+ `-r, -R`: recursive
-
-Examples:
-
-```javascript
-rm('-rf', '/tmp/*');
-rm('some_file.txt', 'another_file.txt');
-rm(['some_file.txt', 'another_file.txt']); // same as above
-```
-
-Removes files. The wildcard `*` is accepted.
-
-
-### mv(source [, source ...], dest')
-### mv(source_array, dest')
-Available options:
-
-+ `f`: force
-
-Examples:
-
-```javascript
-mv('-f', 'file', 'dir/');
-mv('file1', 'file2', 'dir/');
-mv(['file1', 'file2'], 'dir/'); // same as above
-```
-
-Moves files. The wildcard `*` is accepted.
-
-
-### mkdir([options ,] dir [, dir ...])
-### mkdir([options ,] dir_array)
-Available options:
-
-+ `p`: full path (will create intermediate dirs if necessary)
-
-Examples:
-
-```javascript
-mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
-mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
-```
-
-Creates directories.
-
-
-### test(expression)
-Available expression primaries:
-
-+ `'-b', 'path'`: true if path is a block device
-+ `'-c', 'path'`: true if path is a character device
-+ `'-d', 'path'`: true if path is a directory
-+ `'-e', 'path'`: true if path exists
-+ `'-f', 'path'`: true if path is a regular file
-+ `'-L', 'path'`: true if path is a symboilc link
-+ `'-p', 'path'`: true if path is a pipe (FIFO)
-+ `'-S', 'path'`: true if path is a socket
-
-Examples:
-
-```javascript
-if (test('-d', path)) { /* do something with dir */ };
-if (!test('-f', path)) continue; // skip if it's a regular file
-```
-
-Evaluates expression using the available primaries and returns corresponding value.
-
-
-### cat(file [, file ...])
-### cat(file_array)
-
-Examples:
-
-```javascript
-var str = cat('file*.txt');
-var str = cat('file1', 'file2');
-var str = cat(['file1', 'file2']); // same as above
-```
-
-Returns a string containing the given file, or a concatenated string
-containing the files if more than one file is given (a new line character is
-introduced between each file). Wildcard `*` accepted.
-
-
-### 'string'.to(file)
-
-Examples:
-
-```javascript
-cat('input.txt').to('output.txt');
-```
-
-Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as
-those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_
-
-
-### 'string'.toEnd(file)
-
-Examples:
-
-```javascript
-cat('input.txt').toEnd('output.txt');
-```
-
-Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as
-those returned by `cat`, `grep`, etc).
-
-
-### sed([options ,] search_regex, replace_str, file)
-Available options:
-
-+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_
-
-Examples:
-
-```javascript
-sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');
-sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js');
-```
-
-Reads an input string from `file` and performs a JavaScript `replace()` on the input
-using the given search regex and replacement string. Returns the new string after replacement.
-
-
-### grep([options ,] regex_filter, file [, file ...])
-### grep([options ,] regex_filter, file_array)
-Available options:
-
-+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria.
-
-Examples:
-
-```javascript
-grep('-v', 'GLOBAL_VARIABLE', '*.js');
-grep('GLOBAL_VARIABLE', '*.js');
-```
-
-Reads input string from given files and returns a string containing all lines of the
-file that match the given `regex_filter`. Wildcard `*` accepted.
-
-
-### which(command)
-
-Examples:
-
-```javascript
-var nodeExec = which('node');
-```
-
-Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.
-Returns string containing the absolute path to the command.
-
-
-### echo(string [,string ...])
-
-Examples:
-
-```javascript
-echo('hello world');
-var str = echo('hello world');
-```
-
-Prints string to stdout, and returns string with additional utility methods
-like `.to()`.
-
-
-### pushd([options,] [dir | '-N' | '+N'])
-
-Available options:
-
-+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.
-
-Arguments:
-
-+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.
-+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
-+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
-
-Examples:
-
-```javascript
-// process.cwd() === '/usr'
-pushd('/etc'); // Returns /etc /usr
-pushd('+1');   // Returns /usr /etc
-```
-
-Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.
-
-### popd([options,] ['-N' | '+N'])
-
-Available options:
-
-+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.
-
-Arguments:
-
-+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.
-+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.
-
-Examples:
-
-```javascript
-echo(process.cwd()); // '/usr'
-pushd('/etc');       // '/etc /usr'
-echo(process.cwd()); // '/etc'
-popd();              // '/usr'
-echo(process.cwd()); // '/usr'
-```
-
-When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.
-
-### dirs([options | '+N' | '-N'])
-
-Available options:
-
-+ `-c`: Clears the directory stack by deleting all of the elements.
-
-Arguments:
-
-+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.
-+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.
-
-Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.
-
-See also: pushd, popd
-
-
-### exit(code)
-Exits the current process with the given exit code.
-
-### env['VAR_NAME']
-Object containing environment variables (both getter and setter). Shortcut to process.env.
-
-### exec(command [, options] [, callback])
-Available options (all `false` by default):
-
-+ `async`: Asynchronous execution. Defaults to true if a callback is provided.
-+ `silent`: Do not echo program output to console.
-
-Examples:
-
-```javascript
-var version = exec('node --version', {silent:true}).output;
-
-var child = exec('some_long_running_process', {async:true});
-child.stdout.on('data', function(data) {
-  /* ... do something with data ... */
-});
-
-exec('some_long_running_process', function(code, output) {
-  console.log('Exit code:', code);
-  console.log('Program output:', output);
-});
-```
-
-Executes the given `command` _synchronously_, unless otherwise specified.
-When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's
-`output` (stdout + stderr)  and its exit `code`. Otherwise returns the child process object, and
-the `callback` gets the arguments `(code, output)`.
-
-**Note:** For long-lived processes, it's best to run `exec()` asynchronously as
-the current synchronous implementation uses a lot of CPU. This should be getting
-fixed soon.
-
-
-### chmod(octal_mode || octal_string, file)
-### chmod(symbolic_mode, file)
-
-Available options:
-
-+ `-v`: output a diagnostic for every file processed
-+ `-c`: like verbose but report only when a change is made
-+ `-R`: change files and directories recursively
-
-Examples:
-
-```javascript
-chmod(755, '/Users/brandon');
-chmod('755', '/Users/brandon'); // same as above
-chmod('u+x', '/Users/brandon');
-```
-
-Alters the permissions of a file or directory by either specifying the
-absolute permissions in octal form or expressing the changes in symbols.
-This command tries to mimic the POSIX behavior as much as possible.
-Notable exceptions:
-
-+ In symbolic modes, 'a-r' and '-r' are identical.  No consideration is
-  given to the umask.
-+ There is no "quiet" option since default behavior is to run silent.
-
-
-## Non-Unix commands
-
-
-### tempdir()
-
-Examples:
-
-```javascript
-var tmp = tempdir(); // "/tmp" for most *nix platforms
-```
-
-Searches and returns string containing a writeable, platform-dependent temporary directory.
-Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).
-
-
-### error()
-Tests if error occurred in the last command. Returns `null` if no error occurred,
-otherwise returns string explaining the error
-
-
-## Configuration
-
-
-### config.silent
-Example:
-
-```javascript
-var silentState = config.silent; // save old silent state
-config.silent = true;
-/* ... */
-config.silent = silentState; // restore old silent state
-```
-
-Suppresses all command output if `true`, except for `echo()` calls.
-Default is `false`.
-
-### config.fatal
-Example:
-
-```javascript
-config.fatal = true;
-cp('this_file_does_not_exist', '/dev/null'); // dies here
-/* more commands... */
-```
-
-If `true` the script will die on errors. Default is `false`.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/bin/shjs
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/bin/shjs b/blackberry10/node_modules/shelljs/bin/shjs
deleted file mode 100755
index d239a7a..0000000
--- a/blackberry10/node_modules/shelljs/bin/shjs
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env node
-require('../global');
-
-if (process.argv.length < 3) {
-  console.log('ShellJS: missing argument (script name)');
-  console.log();
-  process.exit(1);
-}
-
-var args,
-  scriptName = process.argv[2];
-env['NODE_PATH'] = __dirname + '/../..';
-
-if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) {
-  if (test('-f', scriptName + '.js'))
-    scriptName += '.js';
-  if (test('-f', scriptName + '.coffee'))
-    scriptName += '.coffee';
-}
-
-if (!test('-f', scriptName)) {
-  console.log('ShellJS: script not found ('+scriptName+')');
-  console.log();
-  process.exit(1);
-}
-
-args = process.argv.slice(3);
-
-for (var i = 0, l = args.length; i < l; i++) {
-  if (args[i][0] !== "-"){
-    args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words
-  }
-}
-
-if (scriptName.match(/\.coffee$/)) {
-  //
-  // CoffeeScript
-  //
-  if (which('coffee')) {
-    exec('coffee ' + scriptName + ' ' + args.join(' '), { async: true });
-  } else {
-    console.log('ShellJS: CoffeeScript interpreter not found');
-    console.log();
-    process.exit(1);
-  }
-} else {
-  //
-  // JavaScript
-  //
-  exec('node ' + scriptName + ' ' + args.join(' '), { async: true });
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/global.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/global.js b/blackberry10/node_modules/shelljs/global.js
deleted file mode 100644
index 97f0033..0000000
--- a/blackberry10/node_modules/shelljs/global.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var shell = require('./shell.js');
-for (var cmd in shell)
-  global[cmd] = shell[cmd];

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/make.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/make.js b/blackberry10/node_modules/shelljs/make.js
deleted file mode 100644
index 53e5e81..0000000
--- a/blackberry10/node_modules/shelljs/make.js
+++ /dev/null
@@ -1,47 +0,0 @@
-require('./global');
-
-global.config.fatal = true;
-global.target = {};
-
-// This ensures we only execute the script targets after the entire script has
-// been evaluated
-var args = process.argv.slice(2);
-setTimeout(function() {
-  var t;
-
-  if (args.length === 1 && args[0] === '--help') {
-    console.log('Available targets:');
-    for (t in global.target)
-      console.log('  ' + t);
-    return;
-  }
-
-  // Wrap targets to prevent duplicate execution
-  for (t in global.target) {
-    (function(t, oldTarget){
-
-      // Wrap it
-      global.target[t] = function(force) {
-        if (oldTarget.done && !force)
-          return;
-        oldTarget.done = true;
-        return oldTarget.apply(oldTarget, arguments);
-      };
-
-    })(t, global.target[t]);
-  }
-
-  // Execute desired targets
-  if (args.length > 0) {
-    args.forEach(function(arg) {
-      if (arg in global.target)
-        global.target[arg]();
-      else {
-        console.log('no such target: ' + arg);
-      }
-    });
-  } else if ('all' in global.target) {
-    global.target.all();
-  }
-
-}, 0);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/package.json b/blackberry10/node_modules/shelljs/package.json
deleted file mode 100644
index ec62ac5..0000000
--- a/blackberry10/node_modules/shelljs/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "name": "shelljs",
-  "version": "0.2.6",
-  "author": {
-    "name": "Artur Adib",
-    "email": "aadib@mozilla.com"
-  },
-  "description": "Portable Unix shell commands for Node.js",
-  "keywords": [
-    "unix",
-    "shell",
-    "makefile",
-    "make",
-    "jake",
-    "synchronous"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/arturadib/shelljs.git"
-  },
-  "homepage": "http://github.com/arturadib/shelljs",
-  "main": "./shell.js",
-  "scripts": {
-    "test": "node scripts/run-tests"
-  },
-  "bin": {
-    "shjs": "./bin/shjs"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "jshint": "~2.1.11"
-  },
-  "optionalDependencies": {},
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "readme": "# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)\n\nShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!\n\nThe project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:\n\n+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader\n+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger\n+ [JSHint](http://jshint.com) - Most popular JavaScript linter\n+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers\n+ [Yeoman](http://yeoman.io/) - Web application stack and d
 evelopment tool\n+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation\n\nand [many more](https://npmjs.org/browse/depended/shelljs).\n\n## Installing\n\nVia npm:\n\n```bash\n$ npm install [-g] shelljs\n```\n\nIf the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to\nrun ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:\n\n```bash\n$ shjs my_script\n```\n\nYou can also just copy `shell.js` into your project's directory, and `require()` accordingly.\n\n\n## Examples\n\n### JavaScript\n\n```javascript\nrequire('shelljs/global');\n\nif (!which('git')) {\n  echo('Sorry, this script requires git');\n  exit(1);\n}\n\n// Copy files to release dir\nmkdir('-p', 'out/Release');\ncp('-R', 'stuff/*', 'out/Release');\n\n// Replace macros in each .js file\ncd('lib');\nls('*.js').forEach(function(file) {\n  sed('-i', 'BUILD_VERSION', 'v0.1.2', file);\n  se
 d('-i', /.*REMOVE_THIS_LINE.*\\n/, '', file);\n  sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat('macro.js'), file);\n});\ncd('..');\n\n// Run external tool synchronously\nif (exec('git commit -am \"Auto-commit\"').code !== 0) {\n  echo('Error: Git commit failed');\n  exit(1);\n}\n```\n\n### CoffeeScript\n\n```coffeescript\nrequire 'shelljs/global'\n\nif not which 'git'\n  echo 'Sorry, this script requires git'\n  exit 1\n\n# Copy files to release dir\nmkdir '-p', 'out/Release'\ncp '-R', 'stuff/*', 'out/Release'\n\n# Replace macros in each .js file\ncd 'lib'\nfor file in ls '*.js'\n  sed '-i', 'BUILD_VERSION', 'v0.1.2', file\n  sed '-i', /.*REMOVE_THIS_LINE.*\\n/, '', file\n  sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat 'macro.js', file\ncd '..'\n\n# Run external tool synchronously\nif (exec 'git commit -am \"Auto-commit\"').code != 0\n  echo 'Error: Git commit failed'\n  exit 1\n```\n\n## Global vs. Local\n\nThe example above uses the convenience script `shelljs/global` to reduc
 e verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.\n\nExample:\n\n```javascript\nvar shell = require('shelljs');\nshell.echo('hello world');\n```\n\n## Make tool\n\nA convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.\n\nExample (CoffeeScript):\n\n```coffeescript\nrequire 'shelljs/make'\n\ntarget.all = ->\n  target.bundle()\n  target.docs()\n\ntarget.bundle = ->\n  cd __dirname\n  mkdir 'build'\n  cd 'lib'\n  (cat '*.js').to '../build/output.js'\n\ntarget.docs = ->\n  cd __dirname\n  mkdir 'docs'\n  cd 'lib'\n  for file in ls '*.js'\n    text = grep '//@', file     # extract special comments\n    text.replace '//@', ''      # remove comment tags\n    text.to 'do
 cs/my_docs.md'\n```\n\nTo run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.\n\n\n\n<!-- \n\n  DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED\n\n-->\n\n\n## Command reference\n\n\nAll commands run synchronously, unless otherwise stated.\n\n\n### cd('dir')\nChanges to directory `dir` for the duration of the script\n\n\n### pwd()\nReturns the current directory.\n\n\n### ls([options ,] path [,path ...])\n### ls([options ,] path_array)\nAvailable options:\n\n+ `-R`: recursive\n+ `-A`: all files (include files beginning with `.`, except for `.` and `..`)\n\nExamples:\n\n```javascript\nls('projs/*.js');\nls('-R', '/users/me', '/tmp');\nls('-R', ['/users/me', '/tmp']); // same as above\n```\n\nReturns array of files in the given path, or in current directory if no path provided.\n\n\n### find(path [,path ...])\n### find(path_array)\nExamples:\n\n```javascript\nfind('src', 'lib');\nfind(['src
 ', 'lib']); // same as above\nfind('.').filter(function(file) { return file.match(/\\.js$/); });\n```\n\nReturns array of all files (however deep) in the given paths.\n\nThe main difference from `ls('-R', path)` is that the resulting file names\ninclude the base directories, e.g. `lib/resources/file1` instead of just `file1`.\n\n\n### cp([options ,] source [,source ...], dest)\n### cp([options ,] source_array, dest)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\ncp('file1', 'dir1');\ncp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');\ncp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above\n```\n\nCopies files. The wildcard `*` is accepted.\n\n\n### rm([options ,] file [, file ...])\n### rm([options ,] file_array)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\nrm('-rf', '/tmp/*');\nrm('some_file.txt', 'another_file.txt');\nrm(['some_file.txt', 'another_file.txt']); // same as above\n`
 ``\n\nRemoves files. The wildcard `*` is accepted.\n\n\n### mv(source [, source ...], dest')\n### mv(source_array, dest')\nAvailable options:\n\n+ `f`: force\n\nExamples:\n\n```javascript\nmv('-f', 'file', 'dir/');\nmv('file1', 'file2', 'dir/');\nmv(['file1', 'file2'], 'dir/'); // same as above\n```\n\nMoves files. The wildcard `*` is accepted.\n\n\n### mkdir([options ,] dir [, dir ...])\n### mkdir([options ,] dir_array)\nAvailable options:\n\n+ `p`: full path (will create intermediate dirs if necessary)\n\nExamples:\n\n```javascript\nmkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');\nmkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above\n```\n\nCreates directories.\n\n\n### test(expression)\nAvailable expression primaries:\n\n+ `'-b', 'path'`: true if path is a block device\n+ `'-c', 'path'`: true if path is a character device\n+ `'-d', 'path'`: true if path is a directory\n+ `'-e', 'path'`: true if path exists\n+ `'-f', 'path'`: true if path is a regular file\n+ `'-L', 'path'`: t
 rue if path is a symboilc link\n+ `'-p', 'path'`: true if path is a pipe (FIFO)\n+ `'-S', 'path'`: true if path is a socket\n\nExamples:\n\n```javascript\nif (test('-d', path)) { /* do something with dir */ };\nif (!test('-f', path)) continue; // skip if it's a regular file\n```\n\nEvaluates expression using the available primaries and returns corresponding value.\n\n\n### cat(file [, file ...])\n### cat(file_array)\n\nExamples:\n\n```javascript\nvar str = cat('file*.txt');\nvar str = cat('file1', 'file2');\nvar str = cat(['file1', 'file2']); // same as above\n```\n\nReturns a string containing the given file, or a concatenated string\ncontaining the files if more than one file is given (a new line character is\nintroduced between each file). Wildcard `*` accepted.\n\n\n### 'string'.to(file)\n\nExamples:\n\n```javascript\ncat('input.txt').to('output.txt');\n```\n\nAnalogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, 
 `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_\n\n\n### 'string'.toEnd(file)\n\nExamples:\n\n```javascript\ncat('input.txt').toEnd('output.txt');\n```\n\nAnalogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc).\n\n\n### sed([options ,] search_regex, replace_str, file)\nAvailable options:\n\n+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_\n\nExamples:\n\n```javascript\nsed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');\nsed(/.*DELETE_THIS_LINE.*\\n/, '', 'source.js');\n```\n\nReads an input string from `file` and performs a JavaScript `replace()` on the input\nusing the given search regex and replacement string. Returns the new string after replacement.\n\n\n### grep([options ,] regex_filter, file [, file ...])\n### grep([options ,] regex_filter, file_array)\nAvailable options:\n\n+ `-v`: Inverse the sense of the regex and prin
 t the lines not matching the criteria.\n\nExamples:\n\n```javascript\ngrep('-v', 'GLOBAL_VARIABLE', '*.js');\ngrep('GLOBAL_VARIABLE', '*.js');\n```\n\nReads input string from given files and returns a string containing all lines of the\nfile that match the given `regex_filter`. Wildcard `*` accepted.\n\n\n### which(command)\n\nExamples:\n\n```javascript\nvar nodeExec = which('node');\n```\n\nSearches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.\nReturns string containing the absolute path to the command.\n\n\n### echo(string [,string ...])\n\nExamples:\n\n```javascript\necho('hello world');\nvar str = echo('hello world');\n```\n\nPrints string to stdout, and returns string with additional utility methods\nlike `.to()`.\n\n\n### pushd([options,] [dir | '-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.\n\nArguments:\n\n+
  `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.\n+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n\nExamples:\n\n```javascript\n// process.cwd() === '/usr'\npushd('/etc'); // Returns /etc /usr\npushd('+1');   // Returns /usr /etc\n```\n\nSave the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.\n\n### popd([options,] ['-N' | '+N'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `+N`: Removes the Nth directory (count
 ing from the left of the list printed by dirs), starting with zero.\n+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.\n\nExamples:\n\n```javascript\necho(process.cwd()); // '/usr'\npushd('/etc');       // '/etc /usr'\necho(process.cwd()); // '/etc'\npopd();              // '/usr'\necho(process.cwd()); // '/usr'\n```\n\nWhen no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.\n\n### dirs([options | '+N' | '-N'])\n\nAvailable options:\n\n+ `-c`: Clears the directory stack by deleting all of the elements.\n\nArguments:\n\n+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.\n+ `-N`: Displays the Nth directory (counting from t
 he right of the list printed by dirs when invoked without options), starting with zero.\n\nDisplay the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.\n\nSee also: pushd, popd\n\n\n### exit(code)\nExits the current process with the given exit code.\n\n### env['VAR_NAME']\nObject containing environment variables (both getter and setter). Shortcut to process.env.\n\n### exec(command [, options] [, callback])\nAvailable options (all `false` by default):\n\n+ `async`: Asynchronous execution. Defaults to true if a callback is provided.\n+ `silent`: Do not echo program output to console.\n\nExamples:\n\n```javascript\nvar version = exec('node --version', {silent:true}).output;\n\nvar child = exec('some_long_running_process', {async:true});\nchild.stdout.on('data', function(data) {\n  /* ... do something with data ... */\n});\n\nexec('some_long_running_process', function(code, output) {\n  console.log('Exit code:
 ', code);\n  console.log('Program output:', output);\n});\n```\n\nExecutes the given `command` _synchronously_, unless otherwise specified.\nWhen in synchronous mode returns the object `{ code:..., output:... }`, containing the program's\n`output` (stdout + stderr)  and its exit `code`. Otherwise returns the child process object, and\nthe `callback` gets the arguments `(code, output)`.\n\n**Note:** For long-lived processes, it's best to run `exec()` asynchronously as\nthe current synchronous implementation uses a lot of CPU. This should be getting\nfixed soon.\n\n\n### chmod(octal_mode || octal_string, file)\n### chmod(symbolic_mode, file)\n\nAvailable options:\n\n+ `-v`: output a diagnostic for every file processed\n+ `-c`: like verbose but report only when a change is made\n+ `-R`: change files and directories recursively\n\nExamples:\n\n```javascript\nchmod(755, '/Users/brandon');\nchmod('755', '/Users/brandon'); // same as above\nchmod('u+x', '/Users/brandon');\n```\n\nAlters th
 e permissions of a file or directory by either specifying the\nabsolute permissions in octal form or expressing the changes in symbols.\nThis command tries to mimic the POSIX behavior as much as possible.\nNotable exceptions:\n\n+ In symbolic modes, 'a-r' and '-r' are identical.  No consideration is\n  given to the umask.\n+ There is no \"quiet\" option since default behavior is to run silent.\n\n\n## Non-Unix commands\n\n\n### tempdir()\n\nExamples:\n\n```javascript\nvar tmp = tempdir(); // \"/tmp\" for most *nix platforms\n```\n\nSearches and returns string containing a writeable, platform-dependent temporary directory.\nFollows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).\n\n\n### error()\nTests if error occurred in the last command. Returns `null` if no error occurred,\notherwise returns string explaining the error\n\n\n## Configuration\n\n\n### config.silent\nExample:\n\n```javascript\nvar silentState = config.silent; // save old
  silent state\nconfig.silent = true;\n/* ... */\nconfig.silent = silentState; // restore old silent state\n```\n\nSuppresses all command output if `true`, except for `echo()` calls.\nDefault is `false`.\n\n### config.fatal\nExample:\n\n```javascript\nconfig.fatal = true;\ncp('this_file_does_not_exist', '/dev/null'); // dies here\n/* more commands... */\n```\n\nIf `true` the script will die on errors. Default is `false`.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/arturadib/shelljs/issues"
-  },
-  "_id": "shelljs@0.2.6",
-  "_from": "shelljs@0.2.6"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/shelljs/scripts/generate-docs.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/shelljs/scripts/generate-docs.js b/blackberry10/node_modules/shelljs/scripts/generate-docs.js
deleted file mode 100755
index 532fed9..0000000
--- a/blackberry10/node_modules/shelljs/scripts/generate-docs.js
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env node
-require('../global');
-
-echo('Appending docs to README.md');
-
-cd(__dirname + '/..');
-
-// Extract docs from shell.js
-var docs = grep('//@', 'shell.js');
-
-docs = docs.replace(/\/\/\@include (.+)/g, function(match, path) {
-  var file = path.match('.js$') ? path : path+'.js';
-  return grep('//@', file);
-});
-
-// Remove '//@'
-docs = docs.replace(/\/\/\@ ?/g, '');
-// Append docs to README
-sed('-i', /## Command reference(.|\n)*/, '## Command reference\n\n' + docs, 'README.md');
-
-echo('All done.');


[46/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js b/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js
new file mode 100644
index 0000000..0d1c857
--- /dev/null
+++ b/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.js
@@ -0,0 +1,2529 @@
+var isCommonJS = typeof window == "undefined";
+
+/**
+ * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework.
+ *
+ * @namespace
+ */
+var jasmine = {};
+if (isCommonJS) exports.jasmine = jasmine;
+/**
+ * @private
+ */
+jasmine.unimplementedMethod_ = function() {
+  throw new Error("unimplemented method");
+};
+
+/**
+ * Use <code>jasmine.undefined</code> instead of <code>undefined</code>, since <code>undefined</code> is just
+ * a plain old variable and may be redefined by somebody else.
+ *
+ * @private
+ */
+jasmine.undefined = jasmine.___undefined___;
+
+/**
+ * Show diagnostic messages in the console if set to true
+ *
+ */
+jasmine.VERBOSE = false;
+
+/**
+ * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed.
+ *
+ */
+jasmine.DEFAULT_UPDATE_INTERVAL = 250;
+
+/**
+ * Default timeout interval in milliseconds for waitsFor() blocks.
+ */
+jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000;
+
+jasmine.getGlobal = function() {
+  function getGlobal() {
+    return this;
+  }
+
+  return getGlobal();
+};
+
+/**
+ * Allows for bound functions to be compared.  Internal use only.
+ *
+ * @ignore
+ * @private
+ * @param base {Object} bound 'this' for the function
+ * @param name {Function} function to find
+ */
+jasmine.bindOriginal_ = function(base, name) {
+  var original = base[name];
+  if (original.apply) {
+    return function() {
+      return original.apply(base, arguments);
+    };
+  } else {
+    // IE support
+    return jasmine.getGlobal()[name];
+  }
+};
+
+jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout');
+jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout');
+jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval');
+jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval');
+
+jasmine.MessageResult = function(values) {
+  this.type = 'log';
+  this.values = values;
+  this.trace = new Error(); // todo: test better
+};
+
+jasmine.MessageResult.prototype.toString = function() {
+  var text = "";
+  for (var i = 0; i < this.values.length; i++) {
+    if (i > 0) text += " ";
+    if (jasmine.isString_(this.values[i])) {
+      text += this.values[i];
+    } else {
+      text += jasmine.pp(this.values[i]);
+    }
+  }
+  return text;
+};
+
+jasmine.ExpectationResult = function(params) {
+  this.type = 'expect';
+  this.matcherName = params.matcherName;
+  this.passed_ = params.passed;
+  this.expected = params.expected;
+  this.actual = params.actual;
+  this.message = this.passed_ ? 'Passed.' : params.message;
+
+  var trace = (params.trace || new Error(this.message));
+  this.trace = this.passed_ ? '' : trace;
+};
+
+jasmine.ExpectationResult.prototype.toString = function () {
+  return this.message;
+};
+
+jasmine.ExpectationResult.prototype.passed = function () {
+  return this.passed_;
+};
+
+/**
+ * Getter for the Jasmine environment. Ensures one gets created
+ */
+jasmine.getEnv = function() {
+  var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env();
+  return env;
+};
+
+/**
+ * @ignore
+ * @private
+ * @param value
+ * @returns {Boolean}
+ */
+jasmine.isArray_ = function(value) {
+  return jasmine.isA_("Array", value);
+};
+
+/**
+ * @ignore
+ * @private
+ * @param value
+ * @returns {Boolean}
+ */
+jasmine.isString_ = function(value) {
+  return jasmine.isA_("String", value);
+};
+
+/**
+ * @ignore
+ * @private
+ * @param value
+ * @returns {Boolean}
+ */
+jasmine.isNumber_ = function(value) {
+  return jasmine.isA_("Number", value);
+};
+
+/**
+ * @ignore
+ * @private
+ * @param {String} typeName
+ * @param value
+ * @returns {Boolean}
+ */
+jasmine.isA_ = function(typeName, value) {
+  return Object.prototype.toString.apply(value) === '[object ' + typeName + ']';
+};
+
+/**
+ * Pretty printer for expectations.  Takes any object and turns it into a human-readable string.
+ *
+ * @param value {Object} an object to be outputted
+ * @returns {String}
+ */
+jasmine.pp = function(value) {
+  var stringPrettyPrinter = new jasmine.StringPrettyPrinter();
+  stringPrettyPrinter.format(value);
+  return stringPrettyPrinter.string;
+};
+
+/**
+ * Returns true if the object is a DOM Node.
+ *
+ * @param {Object} obj object to check
+ * @returns {Boolean}
+ */
+jasmine.isDomNode = function(obj) {
+  return obj.nodeType > 0;
+};
+
+/**
+ * Returns a matchable 'generic' object of the class type.  For use in expectations of type when values don't matter.
+ *
+ * @example
+ * // don't care about which function is passed in, as long as it's a function
+ * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function));
+ *
+ * @param {Class} clazz
+ * @returns matchable object of the type clazz
+ */
+jasmine.any = function(clazz) {
+  return new jasmine.Matchers.Any(clazz);
+};
+
+/**
+ * Returns a matchable subset of a JSON object. For use in expectations when you don't care about all of the
+ * attributes on the object.
+ *
+ * @example
+ * // don't care about any other attributes than foo.
+ * expect(mySpy).toHaveBeenCalledWith(jasmine.objectContaining({foo: "bar"});
+ *
+ * @param sample {Object} sample
+ * @returns matchable object for the sample
+ */
+jasmine.objectContaining = function (sample) {
+    return new jasmine.Matchers.ObjectContaining(sample);
+};
+
+/**
+ * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expectation, mocks.
+ *
+ * Spies should be created in test setup, before expectations.  They can then be checked, using the standard Jasmine
+ * expectation syntax. Spies can be checked if they were called or not and what the calling params were.
+ *
+ * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs).
+ *
+ * Spies are torn down at the end of every spec.
+ *
+ * Note: Do <b>not</b> call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj.
+ *
+ * @example
+ * // a stub
+ * var myStub = jasmine.createSpy('myStub');  // can be used anywhere
+ *
+ * // spy example
+ * var foo = {
+ *   not: function(bool) { return !bool; }
+ * }
+ *
+ * // actual foo.not will not be called, execution stops
+ * spyOn(foo, 'not');
+
+ // foo.not spied upon, execution will continue to implementation
+ * spyOn(foo, 'not').andCallThrough();
+ *
+ * // fake example
+ * var foo = {
+ *   not: function(bool) { return !bool; }
+ * }
+ *
+ * // foo.not(val) will return val
+ * spyOn(foo, 'not').andCallFake(function(value) {return value;});
+ *
+ * // mock example
+ * foo.not(7 == 7);
+ * expect(foo.not).toHaveBeenCalled();
+ * expect(foo.not).toHaveBeenCalledWith(true);
+ *
+ * @constructor
+ * @see spyOn, jasmine.createSpy, jasmine.createSpyObj
+ * @param {String} name
+ */
+jasmine.Spy = function(name) {
+  /**
+   * The name of the spy, if provided.
+   */
+  this.identity = name || 'unknown';
+  /**
+   *  Is this Object a spy?
+   */
+  this.isSpy = true;
+  /**
+   * The actual function this spy stubs.
+   */
+  this.plan = function() {
+  };
+  /**
+   * Tracking of the most recent call to the spy.
+   * @example
+   * var mySpy = jasmine.createSpy('foo');
+   * mySpy(1, 2);
+   * mySpy.mostRecentCall.args = [1, 2];
+   */
+  this.mostRecentCall = {};
+
+  /**
+   * Holds arguments for each call to the spy, indexed by call count
+   * @example
+   * var mySpy = jasmine.createSpy('foo');
+   * mySpy(1, 2);
+   * mySpy(7, 8);
+   * mySpy.mostRecentCall.args = [7, 8];
+   * mySpy.argsForCall[0] = [1, 2];
+   * mySpy.argsForCall[1] = [7, 8];
+   */
+  this.argsForCall = [];
+  this.calls = [];
+};
+
+/**
+ * Tells a spy to call through to the actual implementation.
+ *
+ * @example
+ * var foo = {
+ *   bar: function() { // do some stuff }
+ * }
+ *
+ * // defining a spy on an existing property: foo.bar
+ * spyOn(foo, 'bar').andCallThrough();
+ */
+jasmine.Spy.prototype.andCallThrough = function() {
+  this.plan = this.originalValue;
+  return this;
+};
+
+/**
+ * For setting the return value of a spy.
+ *
+ * @example
+ * // defining a spy from scratch: foo() returns 'baz'
+ * var foo = jasmine.createSpy('spy on foo').andReturn('baz');
+ *
+ * // defining a spy on an existing property: foo.bar() returns 'baz'
+ * spyOn(foo, 'bar').andReturn('baz');
+ *
+ * @param {Object} value
+ */
+jasmine.Spy.prototype.andReturn = function(value) {
+  this.plan = function() {
+    return value;
+  };
+  return this;
+};
+
+/**
+ * For throwing an exception when a spy is called.
+ *
+ * @example
+ * // defining a spy from scratch: foo() throws an exception w/ message 'ouch'
+ * var foo = jasmine.createSpy('spy on foo').andThrow('baz');
+ *
+ * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch'
+ * spyOn(foo, 'bar').andThrow('baz');
+ *
+ * @param {String} exceptionMsg
+ */
+jasmine.Spy.prototype.andThrow = function(exceptionMsg) {
+  this.plan = function() {
+    throw exceptionMsg;
+  };
+  return this;
+};
+
+/**
+ * Calls an alternate implementation when a spy is called.
+ *
+ * @example
+ * var baz = function() {
+ *   // do some stuff, return something
+ * }
+ * // defining a spy from scratch: foo() calls the function baz
+ * var foo = jasmine.createSpy('spy on foo').andCall(baz);
+ *
+ * // defining a spy on an existing property: foo.bar() calls an anonymous function
+ * spyOn(foo, 'bar').andCall(function() { return 'baz';} );
+ *
+ * @param {Function} fakeFunc
+ */
+jasmine.Spy.prototype.andCallFake = function(fakeFunc) {
+  this.plan = fakeFunc;
+  return this;
+};
+
+/**
+ * Resets all of a spy's the tracking variables so that it can be used again.
+ *
+ * @example
+ * spyOn(foo, 'bar');
+ *
+ * foo.bar();
+ *
+ * expect(foo.bar.callCount).toEqual(1);
+ *
+ * foo.bar.reset();
+ *
+ * expect(foo.bar.callCount).toEqual(0);
+ */
+jasmine.Spy.prototype.reset = function() {
+  this.wasCalled = false;
+  this.callCount = 0;
+  this.argsForCall = [];
+  this.calls = [];
+  this.mostRecentCall = {};
+};
+
+jasmine.createSpy = function(name) {
+
+  var spyObj = function() {
+    spyObj.wasCalled = true;
+    spyObj.callCount++;
+    var args = jasmine.util.argsToArray(arguments);
+    spyObj.mostRecentCall.object = this;
+    spyObj.mostRecentCall.args = args;
+    spyObj.argsForCall.push(args);
+    spyObj.calls.push({object: this, args: args});
+    return spyObj.plan.apply(this, arguments);
+  };
+
+  var spy = new jasmine.Spy(name);
+
+  for (var prop in spy) {
+    spyObj[prop] = spy[prop];
+  }
+
+  spyObj.reset();
+
+  return spyObj;
+};
+
+/**
+ * Determines whether an object is a spy.
+ *
+ * @param {jasmine.Spy|Object} putativeSpy
+ * @returns {Boolean}
+ */
+jasmine.isSpy = function(putativeSpy) {
+  return putativeSpy && putativeSpy.isSpy;
+};
+
+/**
+ * Creates a more complicated spy: an Object that has every property a function that is a spy.  Used for stubbing something
+ * large in one call.
+ *
+ * @param {String} baseName name of spy class
+ * @param {Array} methodNames array of names of methods to make spies
+ */
+jasmine.createSpyObj = function(baseName, methodNames) {
+  if (!jasmine.isArray_(methodNames) || methodNames.length === 0) {
+    throw new Error('createSpyObj requires a non-empty array of method names to create spies for');
+  }
+  var obj = {};
+  for (var i = 0; i < methodNames.length; i++) {
+    obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]);
+  }
+  return obj;
+};
+
+/**
+ * All parameters are pretty-printed and concatenated together, then written to the current spec's output.
+ *
+ * Be careful not to leave calls to <code>jasmine.log</code> in production code.
+ */
+jasmine.log = function() {
+  var spec = jasmine.getEnv().currentSpec;
+  spec.log.apply(spec, arguments);
+};
+
+/**
+ * Function that installs a spy on an existing object's method name.  Used within a Spec to create a spy.
+ *
+ * @example
+ * // spy example
+ * var foo = {
+ *   not: function(bool) { return !bool; }
+ * }
+ * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops
+ *
+ * @see jasmine.createSpy
+ * @param obj
+ * @param methodName
+ * @returns a Jasmine spy that can be chained with all spy methods
+ */
+var spyOn = function(obj, methodName) {
+  return jasmine.getEnv().currentSpec.spyOn(obj, methodName);
+};
+if (isCommonJS) exports.spyOn = spyOn;
+
+/**
+ * Creates a Jasmine spec that will be added to the current suite.
+ *
+ * // TODO: pending tests
+ *
+ * @example
+ * it('should be true', function() {
+ *   expect(true).toEqual(true);
+ * });
+ *
+ * @param {String} desc description of this specification
+ * @param {Function} func defines the preconditions and expectations of the spec
+ */
+var it = function(desc, func) {
+  return jasmine.getEnv().it(desc, func);
+};
+if (isCommonJS) exports.it = it;
+
+/**
+ * Creates a <em>disabled</em> Jasmine spec.
+ *
+ * A convenience method that allows existing specs to be disabled temporarily during development.
+ *
+ * @param {String} desc description of this specification
+ * @param {Function} func defines the preconditions and expectations of the spec
+ */
+var xit = function(desc, func) {
+  return jasmine.getEnv().xit(desc, func);
+};
+if (isCommonJS) exports.xit = xit;
+
+/**
+ * Starts a chain for a Jasmine expectation.
+ *
+ * It is passed an Object that is the actual value and should chain to one of the many
+ * jasmine.Matchers functions.
+ *
+ * @param {Object} actual Actual value to test against and expected value
+ */
+var expect = function(actual) {
+  return jasmine.getEnv().currentSpec.expect(actual);
+};
+if (isCommonJS) exports.expect = expect;
+
+/**
+ * Defines part of a jasmine spec.  Used in combination with waits or waitsFor in asynchronous specs.
+ *
+ * @param {Function} func Function that defines part of a jasmine spec.
+ */
+var runs = function(func) {
+  jasmine.getEnv().currentSpec.runs(func);
+};
+if (isCommonJS) exports.runs = runs;
+
+/**
+ * Waits a fixed time period before moving to the next block.
+ *
+ * @deprecated Use waitsFor() instead
+ * @param {Number} timeout milliseconds to wait
+ */
+var waits = function(timeout) {
+  jasmine.getEnv().currentSpec.waits(timeout);
+};
+if (isCommonJS) exports.waits = waits;
+
+/**
+ * Waits for the latchFunction to return true before proceeding to the next block.
+ *
+ * @param {Function} latchFunction
+ * @param {String} optional_timeoutMessage
+ * @param {Number} optional_timeout
+ */
+var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) {
+  jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments);
+};
+if (isCommonJS) exports.waitsFor = waitsFor;
+
+/**
+ * A function that is called before each spec in a suite.
+ *
+ * Used for spec setup, including validating assumptions.
+ *
+ * @param {Function} beforeEachFunction
+ */
+var beforeEach = function(beforeEachFunction) {
+  jasmine.getEnv().beforeEach(beforeEachFunction);
+};
+if (isCommonJS) exports.beforeEach = beforeEach;
+
+/**
+ * A function that is called after each spec in a suite.
+ *
+ * Used for restoring any state that is hijacked during spec execution.
+ *
+ * @param {Function} afterEachFunction
+ */
+var afterEach = function(afterEachFunction) {
+  jasmine.getEnv().afterEach(afterEachFunction);
+};
+if (isCommonJS) exports.afterEach = afterEach;
+
+/**
+ * Defines a suite of specifications.
+ *
+ * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared
+ * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization
+ * of setup in some tests.
+ *
+ * @example
+ * // TODO: a simple suite
+ *
+ * // TODO: a simple suite with a nested describe block
+ *
+ * @param {String} description A string, usually the class under test.
+ * @param {Function} specDefinitions function that defines several specs.
+ */
+var describe = function(description, specDefinitions) {
+  return jasmine.getEnv().describe(description, specDefinitions);
+};
+if (isCommonJS) exports.describe = describe;
+
+/**
+ * Disables a suite of specifications.  Used to disable some suites in a file, or files, temporarily during development.
+ *
+ * @param {String} description A string, usually the class under test.
+ * @param {Function} specDefinitions function that defines several specs.
+ */
+var xdescribe = function(description, specDefinitions) {
+  return jasmine.getEnv().xdescribe(description, specDefinitions);
+};
+if (isCommonJS) exports.xdescribe = xdescribe;
+
+
+// Provide the XMLHttpRequest class for IE 5.x-6.x:
+jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() {
+  function tryIt(f) {
+    try {
+      return f();
+    } catch(e) {
+    }
+    return null;
+  }
+
+  var xhr = tryIt(function() {
+    return new ActiveXObject("Msxml2.XMLHTTP.6.0");
+  }) ||
+    tryIt(function() {
+      return new ActiveXObject("Msxml2.XMLHTTP.3.0");
+    }) ||
+    tryIt(function() {
+      return new ActiveXObject("Msxml2.XMLHTTP");
+    }) ||
+    tryIt(function() {
+      return new ActiveXObject("Microsoft.XMLHTTP");
+    });
+
+  if (!xhr) throw new Error("This browser does not support XMLHttpRequest.");
+
+  return xhr;
+} : XMLHttpRequest;
+/**
+ * @namespace
+ */
+jasmine.util = {};
+
+/**
+ * Declare that a child class inherit it's prototype from the parent class.
+ *
+ * @private
+ * @param {Function} childClass
+ * @param {Function} parentClass
+ */
+jasmine.util.inherit = function(childClass, parentClass) {
+  /**
+   * @private
+   */
+  var subclass = function() {
+  };
+  subclass.prototype = parentClass.prototype;
+  childClass.prototype = new subclass();
+};
+
+jasmine.util.formatException = function(e) {
+  var lineNumber;
+  if (e.line) {
+    lineNumber = e.line;
+  }
+  else if (e.lineNumber) {
+    lineNumber = e.lineNumber;
+  }
+
+  var file;
+
+  if (e.sourceURL) {
+    file = e.sourceURL;
+  }
+  else if (e.fileName) {
+    file = e.fileName;
+  }
+
+  var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString();
+
+  if (file && lineNumber) {
+    message += ' in ' + file + ' (line ' + lineNumber + ')';
+  }
+
+  return message;
+};
+
+jasmine.util.htmlEscape = function(str) {
+  if (!str) return str;
+  return str.replace(/&/g, '&amp;')
+    .replace(/</g, '&lt;')
+    .replace(/>/g, '&gt;');
+};
+
+jasmine.util.argsToArray = function(args) {
+  var arrayOfArgs = [];
+  for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
+  return arrayOfArgs;
+};
+
+jasmine.util.extend = function(destination, source) {
+  for (var property in source) destination[property] = source[property];
+  return destination;
+};
+
+/**
+ * Environment for Jasmine
+ *
+ * @constructor
+ */
+jasmine.Env = function() {
+  this.currentSpec = null;
+  this.currentSuite = null;
+  this.currentRunner_ = new jasmine.Runner(this);
+
+  this.reporter = new jasmine.MultiReporter();
+
+  this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL;
+  this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL;
+  this.lastUpdate = 0;
+  this.specFilter = function() {
+    return true;
+  };
+
+  this.nextSpecId_ = 0;
+  this.nextSuiteId_ = 0;
+  this.equalityTesters_ = [];
+
+  // wrap matchers
+  this.matchersClass = function() {
+    jasmine.Matchers.apply(this, arguments);
+  };
+  jasmine.util.inherit(this.matchersClass, jasmine.Matchers);
+
+  jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass);
+};
+
+
+jasmine.Env.prototype.setTimeout = jasmine.setTimeout;
+jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout;
+jasmine.Env.prototype.setInterval = jasmine.setInterval;
+jasmine.Env.prototype.clearInterval = jasmine.clearInterval;
+
+/**
+ * @returns an object containing jasmine version build info, if set.
+ */
+jasmine.Env.prototype.version = function () {
+  if (jasmine.version_) {
+    return jasmine.version_;
+  } else {
+    throw new Error('Version not set');
+  }
+};
+
+/**
+ * @returns string containing jasmine version build info, if set.
+ */
+jasmine.Env.prototype.versionString = function() {
+  if (!jasmine.version_) {
+    return "version unknown";
+  }
+
+  var version = this.version();
+  var versionString = version.major + "." + version.minor + "." + version.build;
+  if (version.release_candidate) {
+    versionString += ".rc" + version.release_candidate;
+  }
+  versionString += " revision " + version.revision;
+  return versionString;
+};
+
+/**
+ * @returns a sequential integer starting at 0
+ */
+jasmine.Env.prototype.nextSpecId = function () {
+  return this.nextSpecId_++;
+};
+
+/**
+ * @returns a sequential integer starting at 0
+ */
+jasmine.Env.prototype.nextSuiteId = function () {
+  return this.nextSuiteId_++;
+};
+
+/**
+ * Register a reporter to receive status updates from Jasmine.
+ * @param {jasmine.Reporter} reporter An object which will receive status updates.
+ */
+jasmine.Env.prototype.addReporter = function(reporter) {
+  this.reporter.addReporter(reporter);
+};
+
+jasmine.Env.prototype.execute = function() {
+  this.currentRunner_.execute();
+};
+
+jasmine.Env.prototype.describe = function(description, specDefinitions) {
+  var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite);
+
+  var parentSuite = this.currentSuite;
+  if (parentSuite) {
+    parentSuite.add(suite);
+  } else {
+    this.currentRunner_.add(suite);
+  }
+
+  this.currentSuite = suite;
+
+  var declarationError = null;
+  try {
+    specDefinitions.call(suite);
+  } catch(e) {
+    declarationError = e;
+  }
+
+  if (declarationError) {
+    this.it("encountered a declaration exception", function() {
+      throw declarationError;
+    });
+  }
+
+  this.currentSuite = parentSuite;
+
+  return suite;
+};
+
+jasmine.Env.prototype.beforeEach = function(beforeEachFunction) {
+  if (this.currentSuite) {
+    this.currentSuite.beforeEach(beforeEachFunction);
+  } else {
+    this.currentRunner_.beforeEach(beforeEachFunction);
+  }
+};
+
+jasmine.Env.prototype.currentRunner = function () {
+  return this.currentRunner_;
+};
+
+jasmine.Env.prototype.afterEach = function(afterEachFunction) {
+  if (this.currentSuite) {
+    this.currentSuite.afterEach(afterEachFunction);
+  } else {
+    this.currentRunner_.afterEach(afterEachFunction);
+  }
+
+};
+
+jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) {
+  return {
+    execute: function() {
+    }
+  };
+};
+
+jasmine.Env.prototype.it = function(description, func) {
+  var spec = new jasmine.Spec(this, this.currentSuite, description);
+  this.currentSuite.add(spec);
+  this.currentSpec = spec;
+
+  if (func) {
+    spec.runs(func);
+  }
+
+  return spec;
+};
+
+jasmine.Env.prototype.xit = function(desc, func) {
+  return {
+    id: this.nextSpecId(),
+    runs: function() {
+    }
+  };
+};
+
+jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) {
+  if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) {
+    return true;
+  }
+
+  a.__Jasmine_been_here_before__ = b;
+  b.__Jasmine_been_here_before__ = a;
+
+  var hasKey = function(obj, keyName) {
+    return obj !== null && obj[keyName] !== jasmine.undefined;
+  };
+
+  for (var property in b) {
+    if (!hasKey(a, property) && hasKey(b, property)) {
+      mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
+    }
+  }
+  for (property in a) {
+    if (!hasKey(b, property) && hasKey(a, property)) {
+      mismatchKeys.push("expected missing key '" + property + "', but present in actual.");
+    }
+  }
+  for (property in b) {
+    if (property == '__Jasmine_been_here_before__') continue;
+    if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) {
+      mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual.");
+    }
+  }
+
+  if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) {
+    mismatchValues.push("arrays were not the same length");
+  }
+
+  delete a.__Jasmine_been_here_before__;
+  delete b.__Jasmine_been_here_before__;
+  return (mismatchKeys.length === 0 && mismatchValues.length === 0);
+};
+
+jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) {
+  mismatchKeys = mismatchKeys || [];
+  mismatchValues = mismatchValues || [];
+
+  for (var i = 0; i < this.equalityTesters_.length; i++) {
+    var equalityTester = this.equalityTesters_[i];
+    var result = equalityTester(a, b, this, mismatchKeys, mismatchValues);
+    if (result !== jasmine.undefined) return result;
+  }
+
+  if (a === b) return true;
+
+  if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) {
+    return (a == jasmine.undefined && b == jasmine.undefined);
+  }
+
+  if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) {
+    return a === b;
+  }
+
+  if (a instanceof Date && b instanceof Date) {
+    return a.getTime() == b.getTime();
+  }
+
+  if (a.jasmineMatches) {
+    return a.jasmineMatches(b);
+  }
+
+  if (b.jasmineMatches) {
+    return b.jasmineMatches(a);
+  }
+
+  if (a instanceof jasmine.Matchers.ObjectContaining) {
+    return a.matches(b);
+  }
+
+  if (b instanceof jasmine.Matchers.ObjectContaining) {
+    return b.matches(a);
+  }
+
+  if (jasmine.isString_(a) && jasmine.isString_(b)) {
+    return (a == b);
+  }
+
+  if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) {
+    return (a == b);
+  }
+
+  if (typeof a === "object" && typeof b === "object") {
+    return this.compareObjects_(a, b, mismatchKeys, mismatchValues);
+  }
+
+  //Straight check
+  return (a === b);
+};
+
+jasmine.Env.prototype.contains_ = function(haystack, needle) {
+  if (jasmine.isArray_(haystack)) {
+    for (var i = 0; i < haystack.length; i++) {
+      if (this.equals_(haystack[i], needle)) return true;
+    }
+    return false;
+  }
+  return haystack.indexOf(needle) >= 0;
+};
+
+jasmine.Env.prototype.addEqualityTester = function(equalityTester) {
+  this.equalityTesters_.push(equalityTester);
+};
+/** No-op base class for Jasmine reporters.
+ *
+ * @constructor
+ */
+jasmine.Reporter = function() {
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.Reporter.prototype.reportRunnerStarting = function(runner) {
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.Reporter.prototype.reportRunnerResults = function(runner) {
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.Reporter.prototype.reportSuiteResults = function(suite) {
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.Reporter.prototype.reportSpecStarting = function(spec) {
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.Reporter.prototype.reportSpecResults = function(spec) {
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.Reporter.prototype.log = function(str) {
+};
+
+/**
+ * Blocks are functions with executable code that make up a spec.
+ *
+ * @constructor
+ * @param {jasmine.Env} env
+ * @param {Function} func
+ * @param {jasmine.Spec} spec
+ */
+jasmine.Block = function(env, func, spec) {
+  this.env = env;
+  this.func = func;
+  this.spec = spec;
+};
+
+jasmine.Block.prototype.execute = function(onComplete) {  
+  try {
+    this.func.apply(this.spec);
+  } catch (e) {
+    this.spec.fail(e);
+  }
+  onComplete();
+};
+/** JavaScript API reporter.
+ *
+ * @constructor
+ */
+jasmine.JsApiReporter = function() {
+  this.started = false;
+  this.finished = false;
+  this.suites_ = [];
+  this.results_ = {};
+};
+
+jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) {
+  this.started = true;
+  var suites = runner.topLevelSuites();
+  for (var i = 0; i < suites.length; i++) {
+    var suite = suites[i];
+    this.suites_.push(this.summarize_(suite));
+  }
+};
+
+jasmine.JsApiReporter.prototype.suites = function() {
+  return this.suites_;
+};
+
+jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) {
+  var isSuite = suiteOrSpec instanceof jasmine.Suite;
+  var summary = {
+    id: suiteOrSpec.id,
+    name: suiteOrSpec.description,
+    type: isSuite ? 'suite' : 'spec',
+    children: []
+  };
+  
+  if (isSuite) {
+    var children = suiteOrSpec.children();
+    for (var i = 0; i < children.length; i++) {
+      summary.children.push(this.summarize_(children[i]));
+    }
+  }
+  return summary;
+};
+
+jasmine.JsApiReporter.prototype.results = function() {
+  return this.results_;
+};
+
+jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) {
+  return this.results_[specId];
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) {
+  this.finished = true;
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) {
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) {
+  this.results_[spec.id] = {
+    messages: spec.results().getItems(),
+    result: spec.results().failedCount > 0 ? "failed" : "passed"
+  };
+};
+
+//noinspection JSUnusedLocalSymbols
+jasmine.JsApiReporter.prototype.log = function(str) {
+};
+
+jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){
+  var results = {};
+  for (var i = 0; i < specIds.length; i++) {
+    var specId = specIds[i];
+    results[specId] = this.summarizeResult_(this.results_[specId]);
+  }
+  return results;
+};
+
+jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){
+  var summaryMessages = [];
+  var messagesLength = result.messages.length;
+  for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) {
+    var resultMessage = result.messages[messageIndex];
+    summaryMessages.push({
+      text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined,
+      passed: resultMessage.passed ? resultMessage.passed() : true,
+      type: resultMessage.type,
+      message: resultMessage.message,
+      trace: {
+        stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined
+      }
+    });
+  }
+
+  return {
+    result : result.result,
+    messages : summaryMessages
+  };
+};
+
+/**
+ * @constructor
+ * @param {jasmine.Env} env
+ * @param actual
+ * @param {jasmine.Spec} spec
+ */
+jasmine.Matchers = function(env, actual, spec, opt_isNot) {
+  this.env = env;
+  this.actual = actual;
+  this.spec = spec;
+  this.isNot = opt_isNot || false;
+  this.reportWasCalled_ = false;
+};
+
+// todo: @deprecated as of Jasmine 0.11, remove soon [xw]
+jasmine.Matchers.pp = function(str) {
+  throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!");
+};
+
+// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw]
+jasmine.Matchers.prototype.report = function(result, failing_message, details) {
+  throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs");
+};
+
+jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) {
+  for (var methodName in prototype) {
+    if (methodName == 'report') continue;
+    var orig = prototype[methodName];
+    matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig);
+  }
+};
+
+jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) {
+  return function() {
+    var matcherArgs = jasmine.util.argsToArray(arguments);
+    var result = matcherFunction.apply(this, arguments);
+
+    if (this.isNot) {
+      result = !result;
+    }
+
+    if (this.reportWasCalled_) return result;
+
+    var message;
+    if (!result) {
+      if (this.message) {
+        message = this.message.apply(this, arguments);
+        if (jasmine.isArray_(message)) {
+          message = message[this.isNot ? 1 : 0];
+        }
+      } else {
+        var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); });
+        message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate;
+        if (matcherArgs.length > 0) {
+          for (var i = 0; i < matcherArgs.length; i++) {
+            if (i > 0) message += ",";
+            message += " " + jasmine.pp(matcherArgs[i]);
+          }
+        }
+        message += ".";
+      }
+    }
+    var expectationResult = new jasmine.ExpectationResult({
+      matcherName: matcherName,
+      passed: result,
+      expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0],
+      actual: this.actual,
+      message: message
+    });
+    this.spec.addMatcherResult(expectationResult);
+    return jasmine.undefined;
+  };
+};
+
+
+
+
+/**
+ * toBe: compares the actual to the expected using ===
+ * @param expected
+ */
+jasmine.Matchers.prototype.toBe = function(expected) {
+  return this.actual === expected;
+};
+
+/**
+ * toNotBe: compares the actual to the expected using !==
+ * @param expected
+ * @deprecated as of 1.0. Use not.toBe() instead.
+ */
+jasmine.Matchers.prototype.toNotBe = function(expected) {
+  return this.actual !== expected;
+};
+
+/**
+ * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc.
+ *
+ * @param expected
+ */
+jasmine.Matchers.prototype.toEqual = function(expected) {
+  return this.env.equals_(this.actual, expected);
+};
+
+/**
+ * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual
+ * @param expected
+ * @deprecated as of 1.0. Use not.toEqual() instead.
+ */
+jasmine.Matchers.prototype.toNotEqual = function(expected) {
+  return !this.env.equals_(this.actual, expected);
+};
+
+/**
+ * Matcher that compares the actual to the expected using a regular expression.  Constructs a RegExp, so takes
+ * a pattern or a String.
+ *
+ * @param expected
+ */
+jasmine.Matchers.prototype.toMatch = function(expected) {
+  return new RegExp(expected).test(this.actual);
+};
+
+/**
+ * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch
+ * @param expected
+ * @deprecated as of 1.0. Use not.toMatch() instead.
+ */
+jasmine.Matchers.prototype.toNotMatch = function(expected) {
+  return !(new RegExp(expected).test(this.actual));
+};
+
+/**
+ * Matcher that compares the actual to jasmine.undefined.
+ */
+jasmine.Matchers.prototype.toBeDefined = function() {
+  return (this.actual !== jasmine.undefined);
+};
+
+/**
+ * Matcher that compares the actual to jasmine.undefined.
+ */
+jasmine.Matchers.prototype.toBeUndefined = function() {
+  return (this.actual === jasmine.undefined);
+};
+
+/**
+ * Matcher that compares the actual to null.
+ */
+jasmine.Matchers.prototype.toBeNull = function() {
+  return (this.actual === null);
+};
+
+/**
+ * Matcher that boolean not-nots the actual.
+ */
+jasmine.Matchers.prototype.toBeTruthy = function() {
+  return !!this.actual;
+};
+
+
+/**
+ * Matcher that boolean nots the actual.
+ */
+jasmine.Matchers.prototype.toBeFalsy = function() {
+  return !this.actual;
+};
+
+
+/**
+ * Matcher that checks to see if the actual, a Jasmine spy, was called.
+ */
+jasmine.Matchers.prototype.toHaveBeenCalled = function() {
+  if (arguments.length > 0) {
+    throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith');
+  }
+
+  if (!jasmine.isSpy(this.actual)) {
+    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
+  }
+
+  this.message = function() {
+    return [
+      "Expected spy " + this.actual.identity + " to have been called.",
+      "Expected spy " + this.actual.identity + " not to have been called."
+    ];
+  };
+
+  return this.actual.wasCalled;
+};
+
+/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */
+jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled;
+
+/**
+ * Matcher that checks to see if the actual, a Jasmine spy, was not called.
+ *
+ * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead
+ */
+jasmine.Matchers.prototype.wasNotCalled = function() {
+  if (arguments.length > 0) {
+    throw new Error('wasNotCalled does not take arguments');
+  }
+
+  if (!jasmine.isSpy(this.actual)) {
+    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
+  }
+
+  this.message = function() {
+    return [
+      "Expected spy " + this.actual.identity + " to not have been called.",
+      "Expected spy " + this.actual.identity + " to have been called."
+    ];
+  };
+
+  return !this.actual.wasCalled;
+};
+
+/**
+ * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters.
+ *
+ * @example
+ *
+ */
+jasmine.Matchers.prototype.toHaveBeenCalledWith = function() {
+  var expectedArgs = jasmine.util.argsToArray(arguments);
+  if (!jasmine.isSpy(this.actual)) {
+    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
+  }
+  this.message = function() {
+    if (this.actual.callCount === 0) {
+      // todo: what should the failure message for .not.toHaveBeenCalledWith() be? is this right? test better. [xw]
+      return [
+        "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called.",
+        "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was."
+      ];
+    } else {
+      return [
+        "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall),
+        "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall)
+      ];
+    }
+  };
+
+  return this.env.contains_(this.actual.argsForCall, expectedArgs);
+};
+
+/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */
+jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith;
+
+/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */
+jasmine.Matchers.prototype.wasNotCalledWith = function() {
+  var expectedArgs = jasmine.util.argsToArray(arguments);
+  if (!jasmine.isSpy(this.actual)) {
+    throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.');
+  }
+
+  this.message = function() {
+    return [
+      "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was",
+      "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was"
+    ];
+  };
+
+  return !this.env.contains_(this.actual.argsForCall, expectedArgs);
+};
+
+/**
+ * Matcher that checks that the expected item is an element in the actual Array.
+ *
+ * @param {Object} expected
+ */
+jasmine.Matchers.prototype.toContain = function(expected) {
+  return this.env.contains_(this.actual, expected);
+};
+
+/**
+ * Matcher that checks that the expected item is NOT an element in the actual Array.
+ *
+ * @param {Object} expected
+ * @deprecated as of 1.0. Use not.toContain() instead.
+ */
+jasmine.Matchers.prototype.toNotContain = function(expected) {
+  return !this.env.contains_(this.actual, expected);
+};
+
+jasmine.Matchers.prototype.toBeLessThan = function(expected) {
+  return this.actual < expected;
+};
+
+jasmine.Matchers.prototype.toBeGreaterThan = function(expected) {
+  return this.actual > expected;
+};
+
+/**
+ * Matcher that checks that the expected item is equal to the actual item
+ * up to a given level of decimal precision (default 2).
+ *
+ * @param {Number} expected
+ * @param {Number} precision
+ */
+jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) {
+  if (!(precision === 0)) {
+    precision = precision || 2;
+  }
+  var multiplier = Math.pow(10, precision);
+  var actual = Math.round(this.actual * multiplier);
+  expected = Math.round(expected * multiplier);
+  return expected == actual;
+};
+
+/**
+ * Matcher that checks that the expected exception was thrown by the actual.
+ *
+ * @param {String} expected
+ */
+jasmine.Matchers.prototype.toThrow = function(expected) {
+  var result = false;
+  var exception;
+  if (typeof this.actual != 'function') {
+    throw new Error('Actual is not a function');
+  }
+  try {
+    this.actual();
+  } catch (e) {
+    exception = e;
+  }
+  if (exception) {
+    result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected));
+  }
+
+  var not = this.isNot ? "not " : "";
+
+  this.message = function() {
+    if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) {
+      return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' ');
+    } else {
+      return "Expected function to throw an exception.";
+    }
+  };
+
+  return result;
+};
+
+jasmine.Matchers.Any = function(expectedClass) {
+  this.expectedClass = expectedClass;
+};
+
+jasmine.Matchers.Any.prototype.jasmineMatches = function(other) {
+  if (this.expectedClass == String) {
+    return typeof other == 'string' || other instanceof String;
+  }
+
+  if (this.expectedClass == Number) {
+    return typeof other == 'number' || other instanceof Number;
+  }
+
+  if (this.expectedClass == Function) {
+    return typeof other == 'function' || other instanceof Function;
+  }
+
+  if (this.expectedClass == Object) {
+    return typeof other == 'object';
+  }
+
+  return other instanceof this.expectedClass;
+};
+
+jasmine.Matchers.Any.prototype.jasmineToString = function() {
+  return '<jasmine.any(' + this.expectedClass + ')>';
+};
+
+jasmine.Matchers.ObjectContaining = function (sample) {
+  this.sample = sample;
+};
+
+jasmine.Matchers.ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) {
+  mismatchKeys = mismatchKeys || [];
+  mismatchValues = mismatchValues || [];
+
+  var env = jasmine.getEnv();
+
+  var hasKey = function(obj, keyName) {
+    return obj != null && obj[keyName] !== jasmine.undefined;
+  };
+
+  for (var property in this.sample) {
+    if (!hasKey(other, property) && hasKey(this.sample, property)) {
+      mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
+    }
+    else if (!env.equals_(this.sample[property], other[property], mismatchKeys, mismatchValues)) {
+      mismatchValues.push("'" + property + "' was '" + (other[property] ? jasmine.util.htmlEscape(other[property].toString()) : other[property]) + "' in expected, but was '" + (this.sample[property] ? jasmine.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + "' in actual.");
+    }
+  }
+
+  return (mismatchKeys.length === 0 && mismatchValues.length === 0);
+};
+
+jasmine.Matchers.ObjectContaining.prototype.jasmineToString = function () {
+  return "<jasmine.objectContaining(" + jasmine.pp(this.sample) + ")>";
+};
+// Mock setTimeout, clearTimeout
+// Contributed by Pivotal Computer Systems, www.pivotalsf.com
+
+jasmine.FakeTimer = function() {
+  this.reset();
+
+  var self = this;
+  self.setTimeout = function(funcToCall, millis) {
+    self.timeoutsMade++;
+    self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false);
+    return self.timeoutsMade;
+  };
+
+  self.setInterval = function(funcToCall, millis) {
+    self.timeoutsMade++;
+    self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true);
+    return self.timeoutsMade;
+  };
+
+  self.clearTimeout = function(timeoutKey) {
+    self.scheduledFunctions[timeoutKey] = jasmine.undefined;
+  };
+
+  self.clearInterval = function(timeoutKey) {
+    self.scheduledFunctions[timeoutKey] = jasmine.undefined;
+  };
+
+};
+
+jasmine.FakeTimer.prototype.reset = function() {
+  this.timeoutsMade = 0;
+  this.scheduledFunctions = {};
+  this.nowMillis = 0;
+};
+
+jasmine.FakeTimer.prototype.tick = function(millis) {
+  var oldMillis = this.nowMillis;
+  var newMillis = oldMillis + millis;
+  this.runFunctionsWithinRange(oldMillis, newMillis);
+  this.nowMillis = newMillis;
+};
+
+jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) {
+  var scheduledFunc;
+  var funcsToRun = [];
+  for (var timeoutKey in this.scheduledFunctions) {
+    scheduledFunc = this.scheduledFunctions[timeoutKey];
+    if (scheduledFunc != jasmine.undefined &&
+        scheduledFunc.runAtMillis >= oldMillis &&
+        scheduledFunc.runAtMillis <= nowMillis) {
+      funcsToRun.push(scheduledFunc);
+      this.scheduledFunctions[timeoutKey] = jasmine.undefined;
+    }
+  }
+
+  if (funcsToRun.length > 0) {
+    funcsToRun.sort(function(a, b) {
+      return a.runAtMillis - b.runAtMillis;
+    });
+    for (var i = 0; i < funcsToRun.length; ++i) {
+      try {
+        var funcToRun = funcsToRun[i];
+        this.nowMillis = funcToRun.runAtMillis;
+        funcToRun.funcToCall();
+        if (funcToRun.recurring) {
+          this.scheduleFunction(funcToRun.timeoutKey,
+              funcToRun.funcToCall,
+              funcToRun.millis,
+              true);
+        }
+      } catch(e) {
+      }
+    }
+    this.runFunctionsWithinRange(oldMillis, nowMillis);
+  }
+};
+
+jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) {
+  this.scheduledFunctions[timeoutKey] = {
+    runAtMillis: this.nowMillis + millis,
+    funcToCall: funcToCall,
+    recurring: recurring,
+    timeoutKey: timeoutKey,
+    millis: millis
+  };
+};
+
+/**
+ * @namespace
+ */
+jasmine.Clock = {
+  defaultFakeTimer: new jasmine.FakeTimer(),
+
+  reset: function() {
+    jasmine.Clock.assertInstalled();
+    jasmine.Clock.defaultFakeTimer.reset();
+  },
+
+  tick: function(millis) {
+    jasmine.Clock.assertInstalled();
+    jasmine.Clock.defaultFakeTimer.tick(millis);
+  },
+
+  runFunctionsWithinRange: function(oldMillis, nowMillis) {
+    jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis);
+  },
+
+  scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) {
+    jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring);
+  },
+
+  useMock: function() {
+    if (!jasmine.Clock.isInstalled()) {
+      var spec = jasmine.getEnv().currentSpec;
+      spec.after(jasmine.Clock.uninstallMock);
+
+      jasmine.Clock.installMock();
+    }
+  },
+
+  installMock: function() {
+    jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer;
+  },
+
+  uninstallMock: function() {
+    jasmine.Clock.assertInstalled();
+    jasmine.Clock.installed = jasmine.Clock.real;
+  },
+
+  real: {
+    setTimeout: jasmine.getGlobal().setTimeout,
+    clearTimeout: jasmine.getGlobal().clearTimeout,
+    setInterval: jasmine.getGlobal().setInterval,
+    clearInterval: jasmine.getGlobal().clearInterval
+  },
+
+  assertInstalled: function() {
+    if (!jasmine.Clock.isInstalled()) {
+      throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()");
+    }
+  },
+
+  isInstalled: function() {
+    return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
+  },
+
+  installed: null
+};
+jasmine.Clock.installed = jasmine.Clock.real;
+
+//else for IE support
+jasmine.getGlobal().setTimeout = function(funcToCall, millis) {
+  if (jasmine.Clock.installed.setTimeout.apply) {
+    return jasmine.Clock.installed.setTimeout.apply(this, arguments);
+  } else {
+    return jasmine.Clock.installed.setTimeout(funcToCall, millis);
+  }
+};
+
+jasmine.getGlobal().setInterval = function(funcToCall, millis) {
+  if (jasmine.Clock.installed.setInterval.apply) {
+    return jasmine.Clock.installed.setInterval.apply(this, arguments);
+  } else {
+    return jasmine.Clock.installed.setInterval(funcToCall, millis);
+  }
+};
+
+jasmine.getGlobal().clearTimeout = function(timeoutKey) {
+  if (jasmine.Clock.installed.clearTimeout.apply) {
+    return jasmine.Clock.installed.clearTimeout.apply(this, arguments);
+  } else {
+    return jasmine.Clock.installed.clearTimeout(timeoutKey);
+  }
+};
+
+jasmine.getGlobal().clearInterval = function(timeoutKey) {
+  if (jasmine.Clock.installed.clearTimeout.apply) {
+    return jasmine.Clock.installed.clearInterval.apply(this, arguments);
+  } else {
+    return jasmine.Clock.installed.clearInterval(timeoutKey);
+  }
+};
+
+/**
+ * @constructor
+ */
+jasmine.MultiReporter = function() {
+  this.subReporters_ = [];
+};
+jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter);
+
+jasmine.MultiReporter.prototype.addReporter = function(reporter) {
+  this.subReporters_.push(reporter);
+};
+
+(function() {
+  var functionNames = [
+    "reportRunnerStarting",
+    "reportRunnerResults",
+    "reportSuiteResults",
+    "reportSpecStarting",
+    "reportSpecResults",
+    "log"
+  ];
+  for (var i = 0; i < functionNames.length; i++) {
+    var functionName = functionNames[i];
+    jasmine.MultiReporter.prototype[functionName] = (function(functionName) {
+      return function() {
+        for (var j = 0; j < this.subReporters_.length; j++) {
+          var subReporter = this.subReporters_[j];
+          if (subReporter[functionName]) {
+            subReporter[functionName].apply(subReporter, arguments);
+          }
+        }
+      };
+    })(functionName);
+  }
+})();
+/**
+ * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults
+ *
+ * @constructor
+ */
+jasmine.NestedResults = function() {
+  /**
+   * The total count of results
+   */
+  this.totalCount = 0;
+  /**
+   * Number of passed results
+   */
+  this.passedCount = 0;
+  /**
+   * Number of failed results
+   */
+  this.failedCount = 0;
+  /**
+   * Was this suite/spec skipped?
+   */
+  this.skipped = false;
+  /**
+   * @ignore
+   */
+  this.items_ = [];
+};
+
+/**
+ * Roll up the result counts.
+ *
+ * @param result
+ */
+jasmine.NestedResults.prototype.rollupCounts = function(result) {
+  this.totalCount += result.totalCount;
+  this.passedCount += result.passedCount;
+  this.failedCount += result.failedCount;
+};
+
+/**
+ * Adds a log message.
+ * @param values Array of message parts which will be concatenated later.
+ */
+jasmine.NestedResults.prototype.log = function(values) {
+  this.items_.push(new jasmine.MessageResult(values));
+};
+
+/**
+ * Getter for the results: message & results.
+ */
+jasmine.NestedResults.prototype.getItems = function() {
+  return this.items_;
+};
+
+/**
+ * Adds a result, tracking counts (total, passed, & failed)
+ * @param {jasmine.ExpectationResult|jasmine.NestedResults} result
+ */
+jasmine.NestedResults.prototype.addResult = function(result) {
+  if (result.type != 'log') {
+    if (result.items_) {
+      this.rollupCounts(result);
+    } else {
+      this.totalCount++;
+      if (result.passed()) {
+        this.passedCount++;
+      } else {
+        this.failedCount++;
+      }
+    }
+  }
+  this.items_.push(result);
+};
+
+/**
+ * @returns {Boolean} True if <b>everything</b> below passed
+ */
+jasmine.NestedResults.prototype.passed = function() {
+  return this.passedCount === this.totalCount;
+};
+/**
+ * Base class for pretty printing for expectation results.
+ */
+jasmine.PrettyPrinter = function() {
+  this.ppNestLevel_ = 0;
+};
+
+/**
+ * Formats a value in a nice, human-readable string.
+ *
+ * @param value
+ */
+jasmine.PrettyPrinter.prototype.format = function(value) {
+  if (this.ppNestLevel_ > 40) {
+    throw new Error('jasmine.PrettyPrinter: format() nested too deeply!');
+  }
+
+  this.ppNestLevel_++;
+  try {
+    if (value === jasmine.undefined) {
+      this.emitScalar('undefined');
+    } else if (value === null) {
+      this.emitScalar('null');
+    } else if (value === jasmine.getGlobal()) {
+      this.emitScalar('<global>');
+    } else if (value.jasmineToString) {
+      this.emitScalar(value.jasmineToString());
+    } else if (typeof value === 'string') {
+      this.emitString(value);
+    } else if (jasmine.isSpy(value)) {
+      this.emitScalar("spy on " + value.identity);
+    } else if (value instanceof RegExp) {
+      this.emitScalar(value.toString());
+    } else if (typeof value === 'function') {
+      this.emitScalar('Function');
+    } else if (typeof value.nodeType === 'number') {
+      this.emitScalar('HTMLNode');
+    } else if (value instanceof Date) {
+      this.emitScalar('Date(' + value + ')');
+    } else if (value.__Jasmine_been_here_before__) {
+      this.emitScalar('<circular reference: ' + (jasmine.isArray_(value) ? 'Array' : 'Object') + '>');
+    } else if (jasmine.isArray_(value) || typeof value == 'object') {
+      value.__Jasmine_been_here_before__ = true;
+      if (jasmine.isArray_(value)) {
+        this.emitArray(value);
+      } else {
+        this.emitObject(value);
+      }
+      delete value.__Jasmine_been_here_before__;
+    } else {
+      this.emitScalar(value.toString());
+    }
+  } finally {
+    this.ppNestLevel_--;
+  }
+};
+
+jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) {
+  for (var property in obj) {
+    if (property == '__Jasmine_been_here_before__') continue;
+    fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && 
+                                         obj.__lookupGetter__(property) !== null) : false);
+  }
+};
+
+jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_;
+jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_;
+jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_;
+jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_;
+
+jasmine.StringPrettyPrinter = function() {
+  jasmine.PrettyPrinter.call(this);
+
+  this.string = '';
+};
+jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter);
+
+jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) {
+  this.append(value);
+};
+
+jasmine.StringPrettyPrinter.prototype.emitString = function(value) {
+  this.append("'" + value + "'");
+};
+
+jasmine.StringPrettyPrinter.prototype.emitArray = function(array) {
+  this.append('[ ');
+  for (var i = 0; i < array.length; i++) {
+    if (i > 0) {
+      this.append(', ');
+    }
+    this.format(array[i]);
+  }
+  this.append(' ]');
+};
+
+jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) {
+  var self = this;
+  this.append('{ ');
+  var first = true;
+
+  this.iterateObject(obj, function(property, isGetter) {
+    if (first) {
+      first = false;
+    } else {
+      self.append(', ');
+    }
+
+    self.append(property);
+    self.append(' : ');
+    if (isGetter) {
+      self.append('<getter>');
+    } else {
+      self.format(obj[property]);
+    }
+  });
+
+  this.append(' }');
+};
+
+jasmine.StringPrettyPrinter.prototype.append = function(value) {
+  this.string += value;
+};
+jasmine.Queue = function(env) {
+  this.env = env;
+  this.blocks = [];
+  this.running = false;
+  this.index = 0;
+  this.offset = 0;
+  this.abort = false;
+};
+
+jasmine.Queue.prototype.addBefore = function(block) {
+  this.blocks.unshift(block);
+};
+
+jasmine.Queue.prototype.add = function(block) {
+  this.blocks.push(block);
+};
+
+jasmine.Queue.prototype.insertNext = function(block) {
+  this.blocks.splice((this.index + this.offset + 1), 0, block);
+  this.offset++;
+};
+
+jasmine.Queue.prototype.start = function(onComplete) {
+  this.running = true;
+  this.onComplete = onComplete;
+  this.next_();
+};
+
+jasmine.Queue.prototype.isRunning = function() {
+  return this.running;
+};
+
+jasmine.Queue.LOOP_DONT_RECURSE = true;
+
+jasmine.Queue.prototype.next_ = function() {
+  var self = this;
+  var goAgain = true;
+
+  while (goAgain) {
+    goAgain = false;
+    
+    if (self.index < self.blocks.length && !this.abort) {
+      var calledSynchronously = true;
+      var completedSynchronously = false;
+
+      var onComplete = function () {
+        if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) {
+          completedSynchronously = true;
+          return;
+        }
+
+        if (self.blocks[self.index].abort) {
+          self.abort = true;
+        }
+
+        self.offset = 0;
+        self.index++;
+
+        var now = new Date().getTime();
+        if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) {
+          self.env.lastUpdate = now;
+          self.env.setTimeout(function() {
+            self.next_();
+          }, 0);
+        } else {
+          if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) {
+            goAgain = true;
+          } else {
+            self.next_();
+          }
+        }
+      };
+      self.blocks[self.index].execute(onComplete);
+
+      calledSynchronously = false;
+      if (completedSynchronously) {
+        onComplete();
+      }
+      
+    } else {
+      self.running = false;
+      if (self.onComplete) {
+        self.onComplete();
+      }
+    }
+  }
+};
+
+jasmine.Queue.prototype.results = function() {
+  var results = new jasmine.NestedResults();
+  for (var i = 0; i < this.blocks.length; i++) {
+    if (this.blocks[i].results) {
+      results.addResult(this.blocks[i].results());
+    }
+  }
+  return results;
+};
+
+
+/**
+ * Runner
+ *
+ * @constructor
+ * @param {jasmine.Env} env
+ */
+jasmine.Runner = function(env) {
+  var self = this;
+  self.env = env;
+  self.queue = new jasmine.Queue(env);
+  self.before_ = [];
+  self.after_ = [];
+  self.suites_ = [];
+};
+
+jasmine.Runner.prototype.execute = function() {
+  var self = this;
+  if (self.env.reporter.reportRunnerStarting) {
+    self.env.reporter.reportRunnerStarting(this);
+  }
+  self.queue.start(function () {
+    self.finishCallback();
+  });
+};
+
+jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) {
+  beforeEachFunction.typeName = 'beforeEach';
+  this.before_.splice(0,0,beforeEachFunction);
+};
+
+jasmine.Runner.prototype.afterEach = function(afterEachFunction) {
+  afterEachFunction.typeName = 'afterEach';
+  this.after_.splice(0,0,afterEachFunction);
+};
+
+
+jasmine.Runner.prototype.finishCallback = function() {
+  this.env.reporter.reportRunnerResults(this);
+};
+
+jasmine.Runner.prototype.addSuite = function(suite) {
+  this.suites_.push(suite);
+};
+
+jasmine.Runner.prototype.add = function(block) {
+  if (block instanceof jasmine.Suite) {
+    this.addSuite(block);
+  }
+  this.queue.add(block);
+};
+
+jasmine.Runner.prototype.specs = function () {
+  var suites = this.suites();
+  var specs = [];
+  for (var i = 0; i < suites.length; i++) {
+    specs = specs.concat(suites[i].specs());
+  }
+  return specs;
+};
+
+jasmine.Runner.prototype.suites = function() {
+  return this.suites_;
+};
+
+jasmine.Runner.prototype.topLevelSuites = function() {
+  var topLevelSuites = [];
+  for (var i = 0; i < this.suites_.length; i++) {
+    if (!this.suites_[i].parentSuite) {
+      topLevelSuites.push(this.suites_[i]);
+    }
+  }
+  return topLevelSuites;
+};
+
+jasmine.Runner.prototype.results = function() {
+  return this.queue.results();
+};
+/**
+ * Internal representation of a Jasmine specification, or test.
+ *
+ * @constructor
+ * @param {jasmine.Env} env
+ * @param {jasmine.Suite} suite
+ * @param {String} description
+ */
+jasmine.Spec = function(env, suite, description) {
+  if (!env) {
+    throw new Error('jasmine.Env() required');
+  }
+  if (!suite) {
+    throw new Error('jasmine.Suite() required');
+  }
+  var spec = this;
+  spec.id = env.nextSpecId ? env.nextSpecId() : null;
+  spec.env = env;
+  spec.suite = suite;
+  spec.description = description;
+  spec.queue = new jasmine.Queue(env);
+
+  spec.afterCallbacks = [];
+  spec.spies_ = [];
+
+  spec.results_ = new jasmine.NestedResults();
+  spec.results_.description = description;
+  spec.matchersClass = null;
+};
+
+jasmine.Spec.prototype.getFullName = function() {
+  return this.suite.getFullName() + ' ' + this.description + '.';
+};
+
+
+jasmine.Spec.prototype.results = function() {
+  return this.results_;
+};
+
+/**
+ * All parameters are pretty-printed and concatenated together, then written to the spec's output.
+ *
+ * Be careful not to leave calls to <code>jasmine.log</code> in production code.
+ */
+jasmine.Spec.prototype.log = function() {
+  return this.results_.log(arguments);
+};
+
+jasmine.Spec.prototype.runs = function (func) {
+  var block = new jasmine.Block(this.env, func, this);
+  this.addToQueue(block);
+  return this;
+};
+
+jasmine.Spec.prototype.addToQueue = function (block) {
+  if (this.queue.isRunning()) {
+    this.queue.insertNext(block);
+  } else {
+    this.queue.add(block);
+  }
+};
+
+/**
+ * @param {jasmine.ExpectationResult} result
+ */
+jasmine.Spec.prototype.addMatcherResult = function(result) {
+  this.results_.addResult(result);
+};
+
+jasmine.Spec.prototype.expect = function(actual) {
+  var positive = new (this.getMatchersClass_())(this.env, actual, this);
+  positive.not = new (this.getMatchersClass_())(this.env, actual, this, true);
+  return positive;
+};
+
+/**
+ * Waits a fixed time period before moving to the next block.
+ *
+ * @deprecated Use waitsFor() instead
+ * @param {Number} timeout milliseconds to wait
+ */
+jasmine.Spec.prototype.waits = function(timeout) {
+  var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this);
+  this.addToQueue(waitsFunc);
+  return this;
+};
+
+/**
+ * Waits for the latchFunction to return true before proceeding to the next block.
+ *
+ * @param {Function} latchFunction
+ * @param {String} optional_timeoutMessage
+ * @param {Number} optional_timeout
+ */
+jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) {
+  var latchFunction_ = null;
+  var optional_timeoutMessage_ = null;
+  var optional_timeout_ = null;
+
+  for (var i = 0; i < arguments.length; i++) {
+    var arg = arguments[i];
+    switch (typeof arg) {
+      case 'function':
+        latchFunction_ = arg;
+        break;
+      case 'string':
+        optional_timeoutMessage_ = arg;
+        break;
+      case 'number':
+        optional_timeout_ = arg;
+        break;
+    }
+  }
+
+  var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this);
+  this.addToQueue(waitsForFunc);
+  return this;
+};
+
+jasmine.Spec.prototype.fail = function (e) {
+  var expectationResult = new jasmine.ExpectationResult({
+    passed: false,
+    message: e ? jasmine.util.formatException(e) : 'Exception',
+    trace: { stack: e.stack }
+  });
+  this.results_.addResult(expectationResult);
+};
+
+jasmine.Spec.prototype.getMatchersClass_ = function() {
+  return this.matchersClass || this.env.matchersClass;
+};
+
+jasmine.Spec.prototype.addMatchers = function(matchersPrototype) {
+  var parent = this.getMatchersClass_();
+  var newMatchersClass = function() {
+    parent.apply(this, arguments);
+  };
+  jasmine.util.inherit(newMatchersClass, parent);
+  jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass);
+  this.matchersClass = newMatchersClass;
+};
+
+jasmine.Spec.prototype.finishCallback = function() {
+  this.env.reporter.reportSpecResults(this);
+};
+
+jasmine.Spec.prototype.finish = function(onComplete) {
+  this.removeAllSpies();
+  this.finishCallback();
+  if (onComplete) {
+    onComplete();
+  }
+};
+
+jasmine.Spec.prototype.after = function(doAfter) {
+  if (this.queue.isRunning()) {
+    this.queue.add(new jasmine.Block(this.env, doAfter, this));
+  } else {
+    this.afterCallbacks.unshift(doAfter);
+  }
+};
+
+jasmine.Spec.prototype.execute = function(onComplete) {
+  var spec = this;
+  if (!spec.env.specFilter(spec)) {
+    spec.results_.skipped = true;
+    spec.finish(onComplete);
+    return;
+  }
+
+  this.env.reporter.reportSpecStarting(this);
+
+  spec.env.currentSpec = spec;
+
+  spec.addBeforesAndAftersToQueue();
+
+  spec.queue.start(function () {
+    spec.finish(onComplete);
+  });
+};
+
+jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() {
+  var runner = this.env.currentRunner();
+  var i;
+
+  for (var suite = this.suite; suite; suite = suite.parentSuite) {
+    for (i = 0; i < suite.before_.length; i++) {
+      this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this));
+    }
+  }
+  for (i = 0; i < runner.before_.length; i++) {
+    this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this));
+  }
+  for (i = 0; i < this.afterCallbacks.length; i++) {
+    this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this));
+  }
+  for (suite = this.suite; suite; suite = suite.parentSuite) {
+    for (i = 0; i < suite.after_.length; i++) {
+      this.queue.add(new jasmine.Block(this.env, suite.after_[i], this));
+    }
+  }
+  for (i = 0; i < runner.after_.length; i++) {
+    this.queue.add(new jasmine.Block(this.env, runner.after_[i], this));
+  }
+};
+
+jasmine.Spec.prototype.explodes = function() {
+  throw 'explodes function should not have been called';
+};
+
+jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) {
+  if (obj == jasmine.undefined) {
+    throw "spyOn could not find an object to spy upon for " + methodName + "()";
+  }
+
+  if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) {
+    throw methodName + '() method does not exist';
+  }
+
+  if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) {
+    throw new Error(methodName + ' has already been spied upon');
+  }
+
+  var spyObj = jasmine.createSpy(methodName);
+
+  this.spies_.push(spyObj);
+  spyObj.baseObj = obj;
+  spyObj.methodName = methodName;
+  spyObj.originalValue = obj[methodName];
+
+  obj[methodName] = spyObj;
+
+  return spyObj;
+};
+
+jasmine.Spec.prototype.removeAllSpies = function() {
+  for (var i = 0; i < this.spies_.length; i++) {
+    var spy = this.spies_[i];
+    spy.baseObj[spy.methodName] = spy.originalValue;
+  }
+  this.spies_ = [];
+};
+
+/**
+ * Internal representation of a Jasmine suite.
+ *
+ * @constructor
+ * @param {jasmine.Env} env
+ * @param {String} description
+ * @param {Function} specDefinitions
+ * @param {jasmine.Suite} parentSuite
+ */
+jasmine.Suite = function(env, description, specDefinitions, parentSuite) {
+  var self = this;
+  self.id = env.nextSuiteId ? env.nextSuiteId() : null;
+  self.description = description;
+  self.queue = new jasmine.Queue(env);
+  self.parentSuite = parentSuite;
+  self.env = env;
+  self.before_ = [];
+  self.after_ = [];
+  self.children_ = [];
+  self.suites_ = [];
+  self.specs_ = [];
+};
+
+jasmine.Suite.prototype.getFullName = function() {
+  var fullName = this.description;
+  for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) {
+    fullName = parentSuite.description + ' ' + fullName;
+  }
+  return fullName;
+};
+
+jasmine.Suite.prototype.finish = function(onComplete) {
+  this.env.reporter.reportSuiteResults(this);
+  this.finished = true;
+  if (typeof(onComplete) == 'function') {
+    onComplete();
+  }
+};
+
+jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) {
+  beforeEachFunction.typeName = 'beforeEach';
+  this.before_.unshift(beforeEachFunction);
+};
+
+jasmine.Suite.prototype.afterEach = function(afterEachFunction) {
+  afterEachFunction.typeName = 'afterEach';
+  this.after_.unshift(afterEachFunction);
+};
+
+jasmine.Suite.prototype.results = function() {
+  return this.queue.results();
+};
+
+jasmine.Suite.prototype.add = function(suiteOrSpec) {
+  this.children_.push(suiteOrSpec);
+  if (suiteOrSpec instanceof jasmine.Suite) {
+    this.suites_.push(suiteOrSpec);
+    this.env.currentRunner().addSuite(suiteOrSpec);
+  } else {
+    this.specs_.push(suiteOrSpec);
+  }
+  this.queue.add(suiteOrSpec);
+};
+
+jasmine.Suite.prototype.specs = function() {
+  return this.specs_;
+};
+
+jasmine.Suite.prototype.suites = function() {
+  return this.suites_;
+};
+
+jasmine.Suite.prototype.children = function() {
+  return this.children_;
+};
+
+jasmine.Suite.prototype.execute = function(onComplete) {
+  var self = this;
+  this.queue.start(function () {
+    self.finish(onComplete);
+  });
+};
+jasmine.WaitsBlock = function(env, timeout, spec) {
+  this.timeout = timeout;
+  jasmine.Block.call(this, env, null, spec);
+};
+
+jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block);
+
+jasmine.WaitsBlock.prototype.execute = function (onComplete) {
+  if (jasmine.VERBOSE) {
+    this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...');
+  }
+  this.env.setTimeout(function () {
+    onComplete();
+  }, this.timeout);
+};
+/**
+ * A block which waits for some condition to become true, with timeout.
+ *
+ * @constructor
+ * @extends jasmine.Block
+ * @param {jasmine.Env} env The Jasmine environment.
+ * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true.
+ * @param {Function} latchFunction A function which returns true when the desired condition has been met.
+ * @param {String} message The message to display if the desired condition hasn't been met within the given time period.
+ * @param {jasmine.Spec} spec The Jasmine spec.
+ */
+jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) {
+  this.timeout = timeout || env.defaultTimeoutInterval;
+  this.latchFunction = latchFunction;
+  this.message = message;
+  this.totalTimeSpentWaitingForLatch = 0;
+  jasmine.Block.call(this, env, null, spec);
+};
+jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block);
+
+jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10;
+
+jasmine.WaitsForBlock.prototype.execute = function(onComplete) {
+  if (jasmine.VERBOSE) {
+    this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen'));
+  }
+  var latchFunctionResult;
+  try {
+    latchFunctionResult = this.latchFunction.apply(this.spec);
+  } catch (e) {
+    this.spec.fail(e);
+    onComplete();
+    return;
+  }
+
+  if (latchFunctionResult) {
+    onComplete();
+  } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) {
+    var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen');
+    this.spec.fail({
+      name: 'timeout',
+      message: message
+    });
+
+    this.abort = true;
+    onComplete();
+  } else {
+    this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT;
+    var self = this;
+    this.env.setTimeout(function() {
+      self.execute(onComplete);
+    }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT);
+  }
+};
+
+jasmine.version_= {
+  "major": 1,
+  "minor": 2,
+  "build": 0,
+  "revision": 1337005947
+};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/integration/create.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/integration/create.js b/bin/test/cordova/integration/create.js
new file mode 100644
index 0000000..b308f0e
--- /dev/null
+++ b/bin/test/cordova/integration/create.js
@@ -0,0 +1,102 @@
+/**
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+*/
+
+var childProcess = require('child_process'),
+    tempFolder = '.tmp/',
+    appFolder = tempFolder + 'tempCordovaApp/',
+    wrench = require('wrench'),
+    utils = require('../../../templates/project/cordova/lib/utils'),
+    path = require('path'),
+    fs = require('fs'),
+    shell = require("shelljs"),
+    _output = "",
+    CREATE_COMMAND = path.normalize(__dirname + "/../../../create") + (utils.isWindows() ? ".bat" : "");
+
+function executeScript(shellCommand, args, shouldError) {
+    var strCommand = "\"" + shellCommand + "\" " + args.join(" "),
+        result;
+
+    //console.log("CREATE About to execute ", strCommand, (new Date()), "\n\n\n");
+    result = shell.exec(strCommand, {silent: true, async: false});
+    //console.log(result.output, "\n\n\n");
+    //console.log("Finished executing  with code ", result.code, " at ", (new Date()), "\n\n\n");
+    _output = result.output;
+}
+
+describe("create tests", function () {
+    it("creates project", function () {
+        var appIdRegExp = /id="default\.app\.id"/g;
+        if (fs.existsSync(tempFolder)) {
+            wrench.rmdirSyncRecursive(tempFolder);
+        }
+        executeScript(CREATE_COMMAND, [appFolder]);
+        expect(appIdRegExp.test(fs.readFileSync(appFolder + "www/config.xml", "utf-8"))).toEqual(true);
+        expect(fs.existsSync(appFolder)).toEqual(true);
+        expect(fs.existsSync(appFolder + "/cordova")).toEqual(true);
+        expect(fs.existsSync(appFolder + "/cordova/node_modules")).toEqual(true);
+        expect(fs.existsSync(appFolder + "/cordova/lib")).toEqual(true);
+        expect(fs.existsSync(appFolder + "/cordova/third_party")).toEqual(true);
+        expect(fs.existsSync(appFolder + "/www")).toEqual(true);
+        expect(fs.existsSync("./build")).toEqual(false);
+        this.after(function () {
+            wrench.rmdirSyncRecursive(tempFolder);
+        });
+    });
+
+    it("sets appId", function () {
+        var configEt,
+            appIdRegExp = /id="com\.example\.bb10app"/g;
+
+        executeScript(CREATE_COMMAND, [appFolder, "com.example.bb10app"]);
+        expect(appIdRegExp.test(fs.readFileSync(appFolder + "www/config.xml", "utf-8"))).toEqual(true);
+        this.after(function () {
+            wrench.rmdirSyncRecursive(tempFolder);
+        });
+    });
+
+    it("sets appId and barName", function () {
+        var appIdRegExp = /id="com\.example\.bb10app"/g;
+        executeScript(CREATE_COMMAND, [appFolder, "com.example.bb10app", "bb10appV1"]);
+        expect(appIdRegExp.test(fs.readFileSync(appFolder + "www/config.xml", "utf-8"))).toEqual(true);
+        this.after(function () {
+            wrench.rmdirSyncRecursive(tempFolder);
+        });
+    });
+
+    it("No args", function () {
+        executeScript(CREATE_COMMAND, [], true);
+        expect(_output).toContain("You must give a project PATH");
+    });
+
+    it("Empty dir error", function () {
+        wrench.mkdirSyncRecursive(tempFolder);
+        executeScript(CREATE_COMMAND, [tempFolder], true);
+        expect(_output).toContain("The project path must be an empty directory");
+        this.after(function () {
+            wrench.rmdirSyncRecursive(tempFolder);
+        });
+
+    });
+
+    it("Invalid appId error", function () {
+        executeScript(CREATE_COMMAND, [appFolder, "23.21#$"], true);
+        expect(_output).toContain("App ID must be sequence of alpha-numeric (optionally separated by '.') characters, no longer than 50 characters");
+    });
+
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/integration/target.js
----------------------------------------------------------------------
diff --git a/bin/test/cordova/integration/target.js b/bin/test/cordova/integration/target.js
new file mode 100644
index 0000000..5da16a3
--- /dev/null
+++ b/bin/test/cordova/integration/target.js
@@ -0,0 +1,123 @@
+/**
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+*/
+
+var childProcess = require('child_process'),
+    tempFolder = '.tmp/',
+    appFolder = tempFolder + 'tempCordovaApp/',
+    wrench = require('wrench'),
+    utils = require('../../../templates/project/cordova/lib/utils'),
+    fs = require('fs'),
+    path = require('path'),
+    shell = require("shelljs"),
+    configPath = utils.getPropertiesFilePath(),
+    testAppCreated = false,
+    _output = "",
+    _code,
+    CREATE_COMMAND = path.normalize(__dirname + "/../../../create") + (utils.isWindows() ? ".bat" : ""),
+    TARGET_COMMAND = path.normalize(appFolder + "cordova/target") + (utils.isWindows() ? ".bat" : "");
+
+function executeScript(shellCommand, args, shouldFail) {
+    var strCommand = "\"" + shellCommand + "\" " + args.join(" "),
+        result;
+
+    //console.log("CREATE About to execute ", strCommand, (new Date()), "\n\n\n");
+    result = shell.exec(strCommand, {silent: true, async: false});
+    //console.log(result.output, "\n\n\n");
+    //console.log("Finished executing  with code ", result.code, " at ", (new Date()), "\n\n\n");
+    _output = result.output;
+    _code = result.code;
+}
+
+describe("cordova/target tests", function () {
+    beforeEach(function () {
+        utils.copyFile(configPath, path.join(utils.getCordovaDir(), "bb10bak"));
+        fs.unlinkSync(configPath);
+        if (!testAppCreated) {
+            executeScript(CREATE_COMMAND, [appFolder]);
+            testAppCreated = true;
+        }
+    });
+
+    afterEach(function () {
+        utils.copyFile(path.join(utils.getCordovaDir(), "bb10bak", utils.getPropertiesFileName()), path.join(utils.getCordovaDir()));
+        wrench.rmdirSyncRecursive(path.join(utils.getCordovaDir(), "bb10bak"));
+    });
+
+    it("should add a target", function () {
+        var project,
+            target;
+
+        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "-p", "pass", "--pin", "DEADBEEF"]);
+        project = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
+        expect(Object.keys(project.targets).length).toEqual(1);
+        target = project.targets.z10;
+        expect(target.ip).toEqual("169.254.0.1");
+        expect(target.type).toEqual("device");
+        expect(target.password).toEqual("pass");
+        expect(target.pin).toEqual("DEADBEEF");
+        expect(_code).toEqual(0);
+    });
+
+    it("should remove a target", function () {
+        var project;
+
+        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "-p", "pass", "--pin", "DEADBEEF"]);
+        executeScript(TARGET_COMMAND, ["remove", "z10"]);
+        project = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
+        expect(Object.keys(project.targets).length).toEqual(0);
+    });
+
+    it("should list targets", function () {
+        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "-p", "pass", "--pin", "DEADBEEF"]);
+        executeScript(TARGET_COMMAND, ["add", "q10", "169.254.0.2", "-t", "device", "-p", "p455w02D", "--pin", "FACEFACE"]);
+        executeScript(TARGET_COMMAND, []);
+        expect(_output).toContain("z10\nq10");
+    });
+
+    it("should require name for add/remove", function () {
+        executeScript(TARGET_COMMAND, ["add"], true);
+        expect(_output).toContain("Target details not specified");
+    });
+
+    it("should require host for add", function () {
+        executeScript(TARGET_COMMAND, ["add", "z10"], true);
+        expect(_output).toContain("host is required");
+    });
+
+    it("should warn unrecognized command", function () {
+        executeScript(TARGET_COMMAND, ["bleh"], true);
+        expect(_output).toContain("Unrecognized command");
+    });
+
+    it("should warn invalid type", function () {
+        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "bleh"], true);
+        expect(_output).toContain("Invalid target type: bleh");
+    });
+
+    it("should warn invalid pin", function () {
+
+        //keep this in last test to remove test app
+        this.after(function () {
+            wrench.rmdirSyncRecursive(tempFolder);
+        });
+
+        executeScript(TARGET_COMMAND, ["add", "z10", "169.254.0.1", "-t", "device", "--pin", "NOTAPIN!"], true);
+        expect(_output).toContain("Invalid PIN: NOTAPIN!");
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/config-bare-minimum.xml
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/config-bare-minimum.xml b/bin/test/cordova/unit/config-bare-minimum.xml
new file mode 100644
index 0000000..90572f4
--- /dev/null
+++ b/bin/test/cordova/unit/config-bare-minimum.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widget xmlns=" http://www.w3.org/ns/widgets"
+        xmlns:rim="http://www.blackberry.com/ns/widgets"
+        version="1.0.0"
+        id="myID">
+    <name>Demo</name>
+    <content src="local:///startPage.html"/>
+    <author>Research In Motion Ltd.</author>
+    <license href="http://www.apache.org/licenses/LICENSE-2.0">
+        Licensed under the Apache License, Version 2.0 (the "License");
+        #you may not use this file except in compliance with the License.
+        #You may obtain a copy of the License at
+        #
+        #http://www.apache.org/licenses/LICENSE-2.0
+        #
+        #Unless required by applicable law or agreed to in writing, software
+        #distributed under the License is distributed on an "AS IS" BASIS,
+        #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+        #See the License for the specific language governing permissions and limitations under the License.
+    </license>
+</widget>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/config-license.xml
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/config-license.xml b/bin/test/cordova/unit/config-license.xml
new file mode 100644
index 0000000..ac4ffe9
--- /dev/null
+++ b/bin/test/cordova/unit/config-license.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widget xmlns=" http://www.w3.org/ns/widgets"
+        xmlns:rim="http://www.blackberry.com/ns/widgets"
+        version="1.0.0"
+        id="myID">
+    <name>Demo</name>
+    <content src="local:///startPage.html"/>
+    <author>Research In Motion Ltd.</author>
+    <license href="http://www.apache.org/licenses/LICENSE-2.0"></license>
+</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/config.xml
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/config.xml b/bin/test/cordova/unit/config.xml
new file mode 100644
index 0000000..33e3586
--- /dev/null
+++ b/bin/test/cordova/unit/config.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widget xmlns=" http://www.w3.org/ns/widgets"
+        xmlns:rim="http://www.blackberry.com/ns/widgets"
+        version="1.0.0"
+        id="My WidgetId"
+        rim:header="RIM-Widget:rim/widget"
+        rim:userAgent="A Test-User-Agent/(Blackberry-Agent)">
+    <name>Demo</name>
+    <content src="local:///startPage.html"/>
+    <author rim:copyright="No Copyright"
+            href="http://www.rim.com/"
+            email = "author@rim.com">Research In Motion Ltd.</author>
+    <description>This app does everything.</description>
+    <license href="http://www.apache.org/licenses/LICENSE-2.0">My License</license>
+    <icon src="test.png" />
+    <rim:permissions>
+        <rim:permit>access_shared</rim:permit>
+        <rim:permit>read_geolocation</rim:permit>
+        <rim:permit>use_camera</rim:permit>
+    </rim:permissions>
+    <feature id="blackberry.app.orientation">
+        <param name="mode" value="portrait" />
+        <param name="other" value="portrait" />
+      </feature>
+    <feature id="blackberry.app" required="true" version="1.0.0.0" />
+    <feature id="blackberry.system" required="true" version="1.0.0.3"/>
+    <access origin="http://www.somedomain1.com" subdomains="true">
+        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
+        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
+    </access>
+    <rim:invoke-target id="com.domain.subdomain.appname.app1">
+	<type>APPLICATION</type>
+        <require-source-permissions>invoke_across_perimeters,access_shared</require-source-permissions>
+        <filter>
+            <action>bb.action.OPEN</action>
+            <action>bb.action.SET</action>
+            <action>bb.action.VIEW</action>
+            <mime-type>image/*</mime-type>
+            <mime-type>text/*</mime-type>
+            <property var="uris" value="ftp://" />
+            <property var="uris" value="http://" />
+            <property var="uris" value="https://" />
+            <property var="exts" value="jpg" />
+            <property var="exts" value="png" />
+            <property var="exts" value="txt" />
+            <property var="exts" value="doc" />
+        </filter>
+    </rim:invoke-target>
+
+    <preference name="backgroundColor" value="0xffffff" />
+    <preference name="childBrowser" value="disable" />
+    <preference name="HideKeyboardFormAccessoryBar" value="disable" />
+</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/bin/test/cordova/unit/configUri.xml
----------------------------------------------------------------------
diff --git a/bin/test/cordova/unit/configUri.xml b/bin/test/cordova/unit/configUri.xml
new file mode 100644
index 0000000..f259ca3
--- /dev/null
+++ b/bin/test/cordova/unit/configUri.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widget xmlns=" http://www.w3.org/ns/widgets"
+        xmlns:rim="http://www.blackberry.com/ns/widgets"
+        version="1.0.0"
+        id="My WidgetId"
+        rim:header="RIM-Widget:rim/widget"
+        rim:userAgent="A Test-User-Agent/(Blackberry-Agent)">
+    <name>Demo</name>
+    <content src="local:///startPage.html"/>
+    <author rim:copyright="No Copyright"
+            href="http://www.rim.com/"
+            email = "author@rim.com">Research In Motion Ltd.</author>
+    <description>This app does everything.</description>
+    <license href="http://www.apache.org/licenses/LICENSE-2.0">My License</license>
+    <icon src="test.png" />
+    <rim:permissions>
+        <rim:permit>access_shared</rim:permit>
+        <rim:permit>read_geolocation</rim:permit>
+        <rim:permit>use_camera</rim:permit>
+    </rim:permissions>
+    <feature id="blackberry.app.orientation">
+        <param name="mode" value="portrait" />
+        <param name="other" value="portrait" />
+      </feature>
+    <feature id="blackberry.app" required="true" version="1.0.0.0">
+        <param name="childBrowser" value="disable" />
+        <param name="websecurity" value="disable" />
+        <param name="popupBlocker" value="enable" />
+    </feature>
+    <feature id="blackberry.system" required="true" version="1.0.0.3"/>
+    <access uri="http://www.somedomain1.com" subdomains="true">
+        <feature id="blackberry.app" required="true" version="1.0.0.0"/>
+        <feature id="blackberry.app.event" required="false" version="2.0.0.0"/>
+    </access>
+    <rim:invoke-target id="com.domain.subdomain.appname.app1">
+	<type>APPLICATION</type>
+        <require-source-permissions>invoke_across_perimeters,access_shared</require-source-permissions>
+        <filter>
+            <action>bb.action.OPEN</action>
+            <action>bb.action.SET</action>
+            <action>bb.action.VIEW</action>
+            <mime-type>image/*</mime-type>
+            <mime-type>text/*</mime-type>
+            <property var="uris" value="ftp://" />
+            <property var="uris" value="http://" />
+            <property var="uris" value="https://" />
+            <property var="exts" value="jpg" />
+            <property var="exts" value="png" />
+            <property var="exts" value="txt" />
+            <property var="exts" value="doc" />
+        </filter>
+    </rim:invoke-target>
+</widget>


[33/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/framework/test/unit/lib/webview.js
----------------------------------------------------------------------
diff --git a/blackberry10/framework/test/unit/lib/webview.js b/blackberry10/framework/test/unit/lib/webview.js
deleted file mode 100644
index f866437..0000000
--- a/blackberry10/framework/test/unit/lib/webview.js
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var path = require('path');
-
-describe("webview", function () {
-    var libPath = path.join(__dirname, "../../../lib/"),
-        networkResourceRequested = require(path.join(libPath, "webkitHandlers/networkResourceRequested")),
-        webkitOriginAccess,
-        webview,
-        mockedController,
-        mockedWebview,
-        mockedQnx,
-        globalCreate;
-
-    beforeEach(function () {
-        require.cache = {};
-        mockedController = {
-            enableWebInspector: undefined,
-            enableCrossSiteXHR: undefined,
-            visible: undefined,
-            active: undefined,
-            setGeometry: jasmine.createSpy(),
-            dispatchEvent : jasmine.createSpy(),
-            addEventListener : jasmine.createSpy()
-        };
-        mockedWebview = {
-            id: 42,
-            enableCrossSiteXHR: undefined,
-            visible: undefined,
-            active: undefined,
-            zOrder: undefined,
-            url: undefined,
-            reload: jasmine.createSpy(),
-            extraHttpHeaders: undefined,
-            setFileSystemSandbox: undefined,
-            addOriginAccessWhitelistEntry: jasmine.createSpy(),
-            setGeometry: jasmine.createSpy(),
-            setApplicationOrientation: jasmine.createSpy(),
-            setExtraPluginDirectory: jasmine.createSpy(),
-            setEnablePlugins: jasmine.createSpy(),
-            getEnablePlugins: jasmine.createSpy(),
-            notifyApplicationOrientationDone: jasmine.createSpy(),
-            onContextMenuRequestEvent: undefined,
-            onContextMenuCancelEvent: undefined,
-            onNetworkResourceRequested: undefined,
-            destroy: jasmine.createSpy(),
-            executeJavaScript: jasmine.createSpy(),
-            windowGroup: undefined,
-            addEventListener: jasmine.createSpy(),
-            enableWebEventRedirect: jasmine.createSpy(),
-            addKnownSSLCertificate: jasmine.createSpy(),
-            continueSSLHandshaking: jasmine.createSpy(),
-            setSensitivity: jasmine.createSpy(),
-            getSensitivity: jasmine.createSpy(),
-            setBackgroundColor: jasmine.createSpy(),
-            getBackgroundColor: jasmine.createSpy(),
-            allowWebEvent: jasmine.createSpy(),
-            allowUserMedia: jasmine.createSpy(),
-            disallowUserMedia: jasmine.createSpy()
-        };
-        mockedQnx = {
-            callExtensionMethod: jasmine.createSpy(),
-            webplatform: {
-                getController: function () {
-                    return mockedController;
-                },
-                createWebView: function (options, createFunction) {
-                    //process.nextTick(createFunction);
-                    //setTimeout(createFunction,0);
-                    if (typeof options === 'function') {
-                        runs(options);
-                        globalCreate = options;
-                    }
-                    else {
-                        runs(createFunction);
-                        globalCreate = createFunction;
-                    }
-                    return mockedWebview;
-                },
-                getApplication: jasmine.createSpy().andReturn({windowVisible: false})
-            }
-        };
-        GLOBAL.qnx = mockedQnx;
-        GLOBAL.window = {
-            qnx: mockedQnx
-        };
-        GLOBAL.screen = {
-            width : 1024,
-            height: 768
-        };
-        webview = require(path.join(libPath, "webview"));
-        webkitOriginAccess = require(path.join(libPath, "policy/webkitOriginAccess"));
-    });
-
-    afterEach(function () {
-        require.cache = {};
-    });
-
-    describe("create", function () {
-        it("sets up the visible webview", function () {
-            var mockNetworkHandler = { networkResourceRequestedHandler: function onNetworkResourceRequested() {} };
-
-            spyOn(networkResourceRequested, "createHandler").andReturn(mockNetworkHandler);
-            spyOn(webkitOriginAccess, "addWebView");
-            webview.create();
-            waits(1);
-            runs(function () {
-                expect(mockedWebview.visible).toEqual(true);
-                expect(mockedWebview.active).toEqual(true);
-                expect(mockedWebview.zOrder).toEqual(0);
-                expect(mockedWebview.setGeometry).toHaveBeenCalledWith(0, 0, screen.width, screen.height);
-                expect(Object.getOwnPropertyDescriptor(webview, 'onContextMenuRequestEvent')).toEqual(jasmine.any(Object));
-                expect(Object.getOwnPropertyDescriptor(webview, 'onContextMenuCancelEvent')).toEqual(jasmine.any(Object));
-                expect(Object.getOwnPropertyDescriptor(webview, 'onGeolocationPermissionRequest')).toEqual(jasmine.any(Object));
-
-
-                expect(networkResourceRequested.createHandler).toHaveBeenCalledWith(mockedWebview);
-                expect(mockedWebview.onNetworkResourceRequested).toEqual(mockNetworkHandler.networkResourceRequestedHandler);
-
-                expect(mockedWebview.allowWebEvent).toHaveBeenCalledWith("DialogRequested");
-                expect(mockedController.dispatchEvent).toHaveBeenCalledWith("webview.initialized", jasmine.any(Array));
-                //The default config.xml only has access to WIDGET_LOCAL
-                //and has permission for two apis
-                expect(webkitOriginAccess.addWebView).toHaveBeenCalledWith(mockedWebview);
-            });
-        });
-
-        it("calls the ready function", function () {
-            var chuck = jasmine.createSpy();
-            webview.create(chuck);
-            waits(1);
-            runs(function () {
-                expect(chuck).toHaveBeenCalled();
-            });
-        });
-
-    });
-
-    describe("file system sandbox", function () {
-        it("setSandbox", function () {
-            webview.create();
-            webview.setSandbox(false);
-            expect(mockedWebview.setFileSystemSandbox).toBeFalsy();
-        });
-
-        it("getSandbox", function () {
-            webview.create();
-            webview.setSandbox(false);
-            expect(webview.getSandbox()).toBeFalsy();
-        });
-    });
-
-    describe("id", function () {
-        it("can get the id for the webview", function () {
-            webview.create();
-            expect(webview.id).toEqual(mockedWebview.id);
-        });
-    });
-
-    describe("enableCrossSiteXHR", function () {
-        it("can set enableCrossSiteXHR", function () {
-            webview.create();
-            webview.enableCrossSiteXHR = true;
-            expect(mockedWebview.enableCrossSiteXHR).toBe(true);
-            webview.enableCrossSiteXHR = false;
-            expect(mockedWebview.enableCrossSiteXHR).toBe(false);
-        });
-    });
-
-    describe("geometry", function () {
-        it("can set geometry", function () {
-            webview.create();
-            webview.setGeometry(0, 0, 100, 200);
-            expect(mockedWebview.setGeometry).toHaveBeenCalledWith(0, 0, 100, 200);
-        });
-
-        it("can get geometry", function () {
-            webview.create();
-            webview.setGeometry(0, 0, 100, 100);
-            expect(webview.getGeometry()).toEqual({x: 0, y: 0, w: 100, h: 100});
-        });
-    });
-
-    describe("application orientation", function () {
-        it("can set application orientation", function () {
-            webview.create();
-            webview.setApplicationOrientation(90);
-            expect(mockedWebview.setApplicationOrientation).toHaveBeenCalledWith(90);
-        });
-
-        it("can notifyApplicationOrientationDone", function () {
-            webview.create();
-            webview.notifyApplicationOrientationDone();
-            expect(mockedWebview.notifyApplicationOrientationDone).toHaveBeenCalled();
-        });
-    });
-
-    describe("plugins", function () {
-        it("can set an extra plugin directory", function () {
-            webview.create();
-            webview.setExtraPluginDirectory('/usr/lib/browser/plugins');
-            expect(mockedWebview.setExtraPluginDirectory).toHaveBeenCalledWith('/usr/lib/browser/plugins');
-        });
-
-        it("can enable plugins for the webview", function () {
-            webview.create();
-            webview.setEnablePlugins(true);
-            expect(mockedWebview.pluginsEnabled).toBeTruthy();
-        });
-
-        it("can retrieve whether plugins are enabled", function () {
-            webview.create();
-            webview.setEnablePlugins(true);
-            expect(webview.getEnablePlugins()).toBeTruthy();
-        });
-    });
-
-    describe("SSL Exception Methods", function () {
-        it("addKnownSSLException", function () {
-            var url = 'https://bojaps.com',
-                certificateInfo = {
-                    test : 'test'
-                };
-            webview.create();
-            webview.addKnownSSLCertificate(url, certificateInfo);
-            expect(mockedWebview.addKnownSSLCertificate).toHaveBeenCalledWith(url, certificateInfo);
-        });
-
-        it("continue SSL Handshaking", function () {
-            var streamId = 8,
-                SSLAction = 'SSLActionReject';
-            webview.create();
-            webview.continueSSLHandshaking(streamId, SSLAction);
-            expect(mockedWebview.continueSSLHandshaking).toHaveBeenCalledWith(streamId, SSLAction);
-        });
-    });
-
-    describe("User Media", function () {
-        it("has allowUserMedia defined", function () {
-            webview.create();
-            expect(webview.allowUserMedia).toBeDefined();
-        });
-
-        it("has disallowUserMedia defined", function () {
-            webview.create();
-            expect(webview.disallowUserMedia).toBeDefined();
-        });
-
-        it("calls allowUserMedia on WebView", function () {
-            var evtId = 10,
-                cameraName = "CAMERA_UNIT_FRONT";
-
-            webview.create();
-            webview.allowUserMedia(evtId, cameraName);
-            expect(mockedWebview.allowUserMedia).toHaveBeenCalledWith(evtId, cameraName);
-        });
-
-        it("calls disallowUserMedia on WebView", function () {
-            var evtId = 10;
-
-            webview.create();
-            webview.disallowUserMedia(evtId);
-            expect(mockedWebview.disallowUserMedia).toHaveBeenCalledWith(evtId);
-        });
-    });
-
-    describe("methods other than create", function () {
-
-        it("calls the underlying destroy", function () {
-            webview.create(mockedWebview);
-            webview.destroy();
-            expect(mockedWebview.destroy).toHaveBeenCalled();
-        });
-
-        it("sets the url property", function () {
-            var url = "http://AWESOMESAUCE.com";
-            webview.create(mockedWebview);
-            webview.setURL(url);
-            expect(mockedWebview.url).toEqual(url);
-        });
-
-        it("calls the underlying executeJavaScript", function () {
-            var js = "var awesome='Jasmine BDD'";
-            webview.create(mockedWebview);
-            webview.executeJavascript(js);
-            expect(mockedWebview.executeJavaScript).toHaveBeenCalledWith(js);
-        });
-        it("calls the underlying windowGroup property", function () {
-            webview.create(mockedWebview);
-            expect(webview.windowGroup()).toEqual(mockedWebview.windowGroup);
-        });
-
-        it("expect the config to set the extraHttpHeader", function () {
-            webview.create();
-            waits(1);
-            runs(function () {
-                expect(mockedWebview.extraHttpHeaders).toEqual({"rim-header": "RIM-Widget:rim/widget"});
-            });
-        });
-
-        it("expect the config to set the user agent", function () {
-            webview.create();
-            waits(1);
-            runs(function () {
-                expect(mockedWebview.userAgent).toEqual("Some extremely long user agent (with) spe/cial, characters");
-            });
-        });
-
-        it("expect reload to be defined", function () {
-            webview.create();
-            waits(1);
-            expect(webview.reload).toBeDefined();
-            webview.reload();
-            expect(mockedWebview.reload).toHaveBeenCalled();
-        });
-    });
-
-    describe("methods for sensitivity", function () {
-
-        it("setter getter for sensitivity", function () {
-            webview.create(mockedWebview);
-            webview.setSensitivity("Something");
-            expect(mockedWebview.setSensitivity).toHaveBeenCalled();
-            webview.getSensitivity();
-            expect(mockedWebview.getSensitivity).toHaveBeenCalled();
-        });
-
-        it("setter getter for background", function () {
-            webview.create(mockedWebview);
-            webview.setBackgroundColor("Something");
-            expect(mockedWebview.setBackgroundColor).toHaveBeenCalled();
-            webview.getBackgroundColor();
-            expect(mockedWebview.getBackgroundColor).toHaveBeenCalled();
-        });
-
-    });
-
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/javascript/cordova.blackberry10.js
----------------------------------------------------------------------
diff --git a/blackberry10/javascript/cordova.blackberry10.js b/blackberry10/javascript/cordova.blackberry10.js
deleted file mode 100644
index 1f40cd1..0000000
--- a/blackberry10/javascript/cordova.blackberry10.js
+++ /dev/null
@@ -1,1636 +0,0 @@
-// Platform: blackberry10
-// 3.6.0-dev-7e845f3
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
- 
-     http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-;(function() {
-var CORDOVA_JS_BUILD_LABEL = '3.6.0-dev-7e845f3';
-// file: src/scripts/require.js
-
-/*jshint -W079 */
-/*jshint -W020 */
-
-var require,
-    define;
-
-(function () {
-    var modules = {},
-    // Stack of moduleIds currently being built.
-        requireStack = [],
-    // Map of module ID -> index into requireStack of modules currently being built.
-        inProgressModules = {},
-        SEPARATOR = ".";
-
-
-
-    function build(module) {
-        var factory = module.factory,
-            localRequire = function (id) {
-                var resultantId = id;
-                //Its a relative path, so lop off the last portion and add the id (minus "./")
-                if (id.charAt(0) === ".") {
-                    resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2);
-                }
-                return require(resultantId);
-            };
-        module.exports = {};
-        delete module.factory;
-        factory(localRequire, module.exports, module);
-        return module.exports;
-    }
-
-    require = function (id) {
-        if (!modules[id]) {
-            throw "module " + id + " not found";
-        } else if (id in inProgressModules) {
-            var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;
-            throw "Cycle in require graph: " + cycle;
-        }
-        if (modules[id].factory) {
-            try {
-                inProgressModules[id] = requireStack.length;
-                requireStack.push(id);
-                return build(modules[id]);
-            } finally {
-                delete inProgressModules[id];
-                requireStack.pop();
-            }
-        }
-        return modules[id].exports;
-    };
-
-    define = function (id, factory) {
-        if (modules[id]) {
-            throw "module " + id + " already defined";
-        }
-
-        modules[id] = {
-            id: id,
-            factory: factory
-        };
-    };
-
-    define.remove = function (id) {
-        delete modules[id];
-    };
-
-    define.moduleMap = modules;
-})();
-
-//Export for use in node
-if (typeof module === "object" && typeof require === "function") {
-    module.exports.require = require;
-    module.exports.define = define;
-}
-
-// file: src/cordova.js
-define("cordova", function(require, exports, module) {
-
-
-var channel = require('cordova/channel');
-var platform = require('cordova/platform');
-
-/**
- * Intercept calls to addEventListener + removeEventListener and handle deviceready,
- * resume, and pause events.
- */
-var m_document_addEventListener = document.addEventListener;
-var m_document_removeEventListener = document.removeEventListener;
-var m_window_addEventListener = window.addEventListener;
-var m_window_removeEventListener = window.removeEventListener;
-
-/**
- * Houses custom event handlers to intercept on document + window event listeners.
- */
-var documentEventHandlers = {},
-    windowEventHandlers = {};
-
-document.addEventListener = function(evt, handler, capture) {
-    var e = evt.toLowerCase();
-    if (typeof documentEventHandlers[e] != 'undefined') {
-        documentEventHandlers[e].subscribe(handler);
-    } else {
-        m_document_addEventListener.call(document, evt, handler, capture);
-    }
-};
-
-window.addEventListener = function(evt, handler, capture) {
-    var e = evt.toLowerCase();
-    if (typeof windowEventHandlers[e] != 'undefined') {
-        windowEventHandlers[e].subscribe(handler);
-    } else {
-        m_window_addEventListener.call(window, evt, handler, capture);
-    }
-};
-
-document.removeEventListener = function(evt, handler, capture) {
-    var e = evt.toLowerCase();
-    // If unsubscribing from an event that is handled by a plugin
-    if (typeof documentEventHandlers[e] != "undefined") {
-        documentEventHandlers[e].unsubscribe(handler);
-    } else {
-        m_document_removeEventListener.call(document, evt, handler, capture);
-    }
-};
-
-window.removeEventListener = function(evt, handler, capture) {
-    var e = evt.toLowerCase();
-    // If unsubscribing from an event that is handled by a plugin
-    if (typeof windowEventHandlers[e] != "undefined") {
-        windowEventHandlers[e].unsubscribe(handler);
-    } else {
-        m_window_removeEventListener.call(window, evt, handler, capture);
-    }
-};
-
-function createEvent(type, data) {
-    var event = document.createEvent('Events');
-    event.initEvent(type, false, false);
-    if (data) {
-        for (var i in data) {
-            if (data.hasOwnProperty(i)) {
-                event[i] = data[i];
-            }
-        }
-    }
-    return event;
-}
-
-
-var cordova = {
-    define:define,
-    require:require,
-    version:CORDOVA_JS_BUILD_LABEL,
-    platformId:platform.id,
-    /**
-     * Methods to add/remove your own addEventListener hijacking on document + window.
-     */
-    addWindowEventHandler:function(event) {
-        return (windowEventHandlers[event] = channel.create(event));
-    },
-    addStickyDocumentEventHandler:function(event) {
-        return (documentEventHandlers[event] = channel.createSticky(event));
-    },
-    addDocumentEventHandler:function(event) {
-        return (documentEventHandlers[event] = channel.create(event));
-    },
-    removeWindowEventHandler:function(event) {
-        delete windowEventHandlers[event];
-    },
-    removeDocumentEventHandler:function(event) {
-        delete documentEventHandlers[event];
-    },
-    /**
-     * Retrieve original event handlers that were replaced by Cordova
-     *
-     * @return object
-     */
-    getOriginalHandlers: function() {
-        return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener},
-        'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};
-    },
-    /**
-     * Method to fire event from native code
-     * bNoDetach is required for events which cause an exception which needs to be caught in native code
-     */
-    fireDocumentEvent: function(type, data, bNoDetach) {
-        var evt = createEvent(type, data);
-        if (typeof documentEventHandlers[type] != 'undefined') {
-            if( bNoDetach ) {
-                documentEventHandlers[type].fire(evt);
-            }
-            else {
-                setTimeout(function() {
-                    // Fire deviceready on listeners that were registered before cordova.js was loaded.
-                    if (type == 'deviceready') {
-                        document.dispatchEvent(evt);
-                    }
-                    documentEventHandlers[type].fire(evt);
-                }, 0);
-            }
-        } else {
-            document.dispatchEvent(evt);
-        }
-    },
-    fireWindowEvent: function(type, data) {
-        var evt = createEvent(type,data);
-        if (typeof windowEventHandlers[type] != 'undefined') {
-            setTimeout(function() {
-                windowEventHandlers[type].fire(evt);
-            }, 0);
-        } else {
-            window.dispatchEvent(evt);
-        }
-    },
-
-    /**
-     * Plugin callback mechanism.
-     */
-    // Randomize the starting callbackId to avoid collisions after refreshing or navigating.
-    // This way, it's very unlikely that any new callback would get the same callbackId as an old callback.
-    callbackId: Math.floor(Math.random() * 2000000000),
-    callbacks:  {},
-    callbackStatus: {
-        NO_RESULT: 0,
-        OK: 1,
-        CLASS_NOT_FOUND_EXCEPTION: 2,
-        ILLEGAL_ACCESS_EXCEPTION: 3,
-        INSTANTIATION_EXCEPTION: 4,
-        MALFORMED_URL_EXCEPTION: 5,
-        IO_EXCEPTION: 6,
-        INVALID_ACTION: 7,
-        JSON_EXCEPTION: 8,
-        ERROR: 9
-    },
-
-    /**
-     * Called by native code when returning successful result from an action.
-     */
-    callbackSuccess: function(callbackId, args) {
-        try {
-            cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback);
-        } catch (e) {
-            console.log("Error in error callback: " + callbackId + " = "+e);
-        }
-    },
-
-    /**
-     * Called by native code when returning error result from an action.
-     */
-    callbackError: function(callbackId, args) {
-        // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative.
-        // Derive success from status.
-        try {
-            cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback);
-        } catch (e) {
-            console.log("Error in error callback: " + callbackId + " = "+e);
-        }
-    },
-
-    /**
-     * Called by native code when returning the result from an action.
-     */
-    callbackFromNative: function(callbackId, success, status, args, keepCallback) {
-        var callback = cordova.callbacks[callbackId];
-        if (callback) {
-            if (success && status == cordova.callbackStatus.OK) {
-                callback.success && callback.success.apply(null, args);
-            } else if (!success) {
-                callback.fail && callback.fail.apply(null, args);
-            }
-
-            // Clear callback if not expecting any more results
-            if (!keepCallback) {
-                delete cordova.callbacks[callbackId];
-            }
-        }
-    },
-    addConstructor: function(func) {
-        channel.onCordovaReady.subscribe(function() {
-            try {
-                func();
-            } catch(e) {
-                console.log("Failed to run constructor: " + e);
-            }
-        });
-    }
-};
-
-
-module.exports = cordova;
-
-});
-
-// file: src/common/argscheck.js
-define("cordova/argscheck", function(require, exports, module) {
-
-var exec = require('cordova/exec');
-var utils = require('cordova/utils');
-
-var moduleExports = module.exports;
-
-var typeMap = {
-    'A': 'Array',
-    'D': 'Date',
-    'N': 'Number',
-    'S': 'String',
-    'F': 'Function',
-    'O': 'Object'
-};
-
-function extractParamName(callee, argIndex) {
-    return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex];
-}
-
-function checkArgs(spec, functionName, args, opt_callee) {
-    if (!moduleExports.enableChecks) {
-        return;
-    }
-    var errMsg = null;
-    var typeName;
-    for (var i = 0; i < spec.length; ++i) {
-        var c = spec.charAt(i),
-            cUpper = c.toUpperCase(),
-            arg = args[i];
-        // Asterix means allow anything.
-        if (c == '*') {
-            continue;
-        }
-        typeName = utils.typeName(arg);
-        if ((arg === null || arg === undefined) && c == cUpper) {
-            continue;
-        }
-        if (typeName != typeMap[cUpper]) {
-            errMsg = 'Expected ' + typeMap[cUpper];
-            break;
-        }
-    }
-    if (errMsg) {
-        errMsg += ', but got ' + typeName + '.';
-        errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg;
-        // Don't log when running unit tests.
-        if (typeof jasmine == 'undefined') {
-            console.error(errMsg);
-        }
-        throw TypeError(errMsg);
-    }
-}
-
-function getValue(value, defaultValue) {
-    return value === undefined ? defaultValue : value;
-}
-
-moduleExports.checkArgs = checkArgs;
-moduleExports.getValue = getValue;
-moduleExports.enableChecks = true;
-
-
-});
-
-// file: src/common/base64.js
-define("cordova/base64", function(require, exports, module) {
-
-var base64 = exports;
-
-base64.fromArrayBuffer = function(arrayBuffer) {
-    var array = new Uint8Array(arrayBuffer);
-    return uint8ToBase64(array);
-};
-
-base64.toArrayBuffer = function(str) {
-    var decodedStr = typeof atob != 'undefined' ? atob(str) : new Buffer(str,'base64').toString('binary');
-    var arrayBuffer = new ArrayBuffer(decodedStr.length);
-    var array = new Uint8Array(arrayBuffer);
-    for (var i=0, len=decodedStr.length; i < len; i++) {
-        array[i] = decodedStr.charCodeAt(i);
-    }
-    return arrayBuffer;
-};
-
-//------------------------------------------------------------------------------
-
-/* This code is based on the performance tests at http://jsperf.com/b64tests
- * This 12-bit-at-a-time algorithm was the best performing version on all
- * platforms tested.
- */
-
-var b64_6bit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-var b64_12bit;
-
-var b64_12bitTable = function() {
-    b64_12bit = [];
-    for (var i=0; i<64; i++) {
-        for (var j=0; j<64; j++) {
-            b64_12bit[i*64+j] = b64_6bit[i] + b64_6bit[j];
-        }
-    }
-    b64_12bitTable = function() { return b64_12bit; };
-    return b64_12bit;
-};
-
-function uint8ToBase64(rawData) {
-    var numBytes = rawData.byteLength;
-    var output="";
-    var segment;
-    var table = b64_12bitTable();
-    for (var i=0;i<numBytes-2;i+=3) {
-        segment = (rawData[i] << 16) + (rawData[i+1] << 8) + rawData[i+2];
-        output += table[segment >> 12];
-        output += table[segment & 0xfff];
-    }
-    if (numBytes - i == 2) {
-        segment = (rawData[i] << 16) + (rawData[i+1] << 8);
-        output += table[segment >> 12];
-        output += b64_6bit[(segment & 0xfff) >> 6];
-        output += '=';
-    } else if (numBytes - i == 1) {
-        segment = (rawData[i] << 16);
-        output += table[segment >> 12];
-        output += '==';
-    }
-    return output;
-}
-
-});
-
-// file: src/common/builder.js
-define("cordova/builder", function(require, exports, module) {
-
-var utils = require('cordova/utils');
-
-function each(objects, func, context) {
-    for (var prop in objects) {
-        if (objects.hasOwnProperty(prop)) {
-            func.apply(context, [objects[prop], prop]);
-        }
-    }
-}
-
-function clobber(obj, key, value) {
-    exports.replaceHookForTesting(obj, key);
-    obj[key] = value;
-    // Getters can only be overridden by getters.
-    if (obj[key] !== value) {
-        utils.defineGetter(obj, key, function() {
-            return value;
-        });
-    }
-}
-
-function assignOrWrapInDeprecateGetter(obj, key, value, message) {
-    if (message) {
-        utils.defineGetter(obj, key, function() {
-            console.log(message);
-            delete obj[key];
-            clobber(obj, key, value);
-            return value;
-        });
-    } else {
-        clobber(obj, key, value);
-    }
-}
-
-function include(parent, objects, clobber, merge) {
-    each(objects, function (obj, key) {
-        try {
-            var result = obj.path ? require(obj.path) : {};
-
-            if (clobber) {
-                // Clobber if it doesn't exist.
-                if (typeof parent[key] === 'undefined') {
-                    assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
-                } else if (typeof obj.path !== 'undefined') {
-                    // If merging, merge properties onto parent, otherwise, clobber.
-                    if (merge) {
-                        recursiveMerge(parent[key], result);
-                    } else {
-                        assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
-                    }
-                }
-                result = parent[key];
-            } else {
-                // Overwrite if not currently defined.
-                if (typeof parent[key] == 'undefined') {
-                    assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
-                } else {
-                    // Set result to what already exists, so we can build children into it if they exist.
-                    result = parent[key];
-                }
-            }
-
-            if (obj.children) {
-                include(result, obj.children, clobber, merge);
-            }
-        } catch(e) {
-            utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"');
-        }
-    });
-}
-
-/**
- * Merge properties from one object onto another recursively.  Properties from
- * the src object will overwrite existing target property.
- *
- * @param target Object to merge properties into.
- * @param src Object to merge properties from.
- */
-function recursiveMerge(target, src) {
-    for (var prop in src) {
-        if (src.hasOwnProperty(prop)) {
-            if (target.prototype && target.prototype.constructor === target) {
-                // If the target object is a constructor override off prototype.
-                clobber(target.prototype, prop, src[prop]);
-            } else {
-                if (typeof src[prop] === 'object' && typeof target[prop] === 'object') {
-                    recursiveMerge(target[prop], src[prop]);
-                } else {
-                    clobber(target, prop, src[prop]);
-                }
-            }
-        }
-    }
-}
-
-exports.buildIntoButDoNotClobber = function(objects, target) {
-    include(target, objects, false, false);
-};
-exports.buildIntoAndClobber = function(objects, target) {
-    include(target, objects, true, false);
-};
-exports.buildIntoAndMerge = function(objects, target) {
-    include(target, objects, true, true);
-};
-exports.recursiveMerge = recursiveMerge;
-exports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter;
-exports.replaceHookForTesting = function() {};
-
-});
-
-// file: src/common/channel.js
-define("cordova/channel", function(require, exports, module) {
-
-var utils = require('cordova/utils'),
-    nextGuid = 1;
-
-/**
- * Custom pub-sub "channel" that can have functions subscribed to it
- * This object is used to define and control firing of events for
- * cordova initialization, as well as for custom events thereafter.
- *
- * The order of events during page load and Cordova startup is as follows:
- *
- * onDOMContentLoaded*         Internal event that is received when the web page is loaded and parsed.
- * onNativeReady*              Internal event that indicates the Cordova native side is ready.
- * onCordovaReady*             Internal event fired when all Cordova JavaScript objects have been created.
- * onDeviceReady*              User event fired to indicate that Cordova is ready
- * onResume                    User event fired to indicate a start/resume lifecycle event
- * onPause                     User event fired to indicate a pause lifecycle event
- * onDestroy*                  Internal event fired when app is being destroyed (User should use window.onunload event, not this one).
- *
- * The events marked with an * are sticky. Once they have fired, they will stay in the fired state.
- * All listeners that subscribe after the event is fired will be executed right away.
- *
- * The only Cordova events that user code should register for are:
- *      deviceready           Cordova native code is initialized and Cordova APIs can be called from JavaScript
- *      pause                 App has moved to background
- *      resume                App has returned to foreground
- *
- * Listeners can be registered as:
- *      document.addEventListener("deviceready", myDeviceReadyListener, false);
- *      document.addEventListener("resume", myResumeListener, false);
- *      document.addEventListener("pause", myPauseListener, false);
- *
- * The DOM lifecycle events should be used for saving and restoring state
- *      window.onload
- *      window.onunload
- *
- */
-
-/**
- * Channel
- * @constructor
- * @param type  String the channel name
- */
-var Channel = function(type, sticky) {
-    this.type = type;
-    // Map of guid -> function.
-    this.handlers = {};
-    // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired.
-    this.state = sticky ? 1 : 0;
-    // Used in sticky mode to remember args passed to fire().
-    this.fireArgs = null;
-    // Used by onHasSubscribersChange to know if there are any listeners.
-    this.numHandlers = 0;
-    // Function that is called when the first listener is subscribed, or when
-    // the last listener is unsubscribed.
-    this.onHasSubscribersChange = null;
-},
-    channel = {
-        /**
-         * Calls the provided function only after all of the channels specified
-         * have been fired. All channels must be sticky channels.
-         */
-        join: function(h, c) {
-            var len = c.length,
-                i = len,
-                f = function() {
-                    if (!(--i)) h();
-                };
-            for (var j=0; j<len; j++) {
-                if (c[j].state === 0) {
-                    throw Error('Can only use join with sticky channels.');
-                }
-                c[j].subscribe(f);
-            }
-            if (!len) h();
-        },
-        create: function(type) {
-            return channel[type] = new Channel(type, false);
-        },
-        createSticky: function(type) {
-            return channel[type] = new Channel(type, true);
-        },
-
-        /**
-         * cordova Channels that must fire before "deviceready" is fired.
-         */
-        deviceReadyChannelsArray: [],
-        deviceReadyChannelsMap: {},
-
-        /**
-         * Indicate that a feature needs to be initialized before it is ready to be used.
-         * This holds up Cordova's "deviceready" event until the feature has been initialized
-         * and Cordova.initComplete(feature) is called.
-         *
-         * @param feature {String}     The unique feature name
-         */
-        waitForInitialization: function(feature) {
-            if (feature) {
-                var c = channel[feature] || this.createSticky(feature);
-                this.deviceReadyChannelsMap[feature] = c;
-                this.deviceReadyChannelsArray.push(c);
-            }
-        },
-
-        /**
-         * Indicate that initialization code has completed and the feature is ready to be used.
-         *
-         * @param feature {String}     The unique feature name
-         */
-        initializationComplete: function(feature) {
-            var c = this.deviceReadyChannelsMap[feature];
-            if (c) {
-                c.fire();
-            }
-        }
-    };
-
-function forceFunction(f) {
-    if (typeof f != 'function') throw "Function required as first argument!";
-}
-
-/**
- * Subscribes the given function to the channel. Any time that
- * Channel.fire is called so too will the function.
- * Optionally specify an execution context for the function
- * and a guid that can be used to stop subscribing to the channel.
- * Returns the guid.
- */
-Channel.prototype.subscribe = function(f, c) {
-    // need a function to call
-    forceFunction(f);
-    if (this.state == 2) {
-        f.apply(c || this, this.fireArgs);
-        return;
-    }
-
-    var func = f,
-        guid = f.observer_guid;
-    if (typeof c == "object") { func = utils.close(c, f); }
-
-    if (!guid) {
-        // first time any channel has seen this subscriber
-        guid = '' + nextGuid++;
-    }
-    func.observer_guid = guid;
-    f.observer_guid = guid;
-
-    // Don't add the same handler more than once.
-    if (!this.handlers[guid]) {
-        this.handlers[guid] = func;
-        this.numHandlers++;
-        if (this.numHandlers == 1) {
-            this.onHasSubscribersChange && this.onHasSubscribersChange();
-        }
-    }
-};
-
-/**
- * Unsubscribes the function with the given guid from the channel.
- */
-Channel.prototype.unsubscribe = function(f) {
-    // need a function to unsubscribe
-    forceFunction(f);
-
-    var guid = f.observer_guid,
-        handler = this.handlers[guid];
-    if (handler) {
-        delete this.handlers[guid];
-        this.numHandlers--;
-        if (this.numHandlers === 0) {
-            this.onHasSubscribersChange && this.onHasSubscribersChange();
-        }
-    }
-};
-
-/**
- * Calls all functions subscribed to this channel.
- */
-Channel.prototype.fire = function(e) {
-    var fail = false,
-        fireArgs = Array.prototype.slice.call(arguments);
-    // Apply stickiness.
-    if (this.state == 1) {
-        this.state = 2;
-        this.fireArgs = fireArgs;
-    }
-    if (this.numHandlers) {
-        // Copy the values first so that it is safe to modify it from within
-        // callbacks.
-        var toCall = [];
-        for (var item in this.handlers) {
-            toCall.push(this.handlers[item]);
-        }
-        for (var i = 0; i < toCall.length; ++i) {
-            toCall[i].apply(this, fireArgs);
-        }
-        if (this.state == 2 && this.numHandlers) {
-            this.numHandlers = 0;
-            this.handlers = {};
-            this.onHasSubscribersChange && this.onHasSubscribersChange();
-        }
-    }
-};
-
-
-// defining them here so they are ready super fast!
-// DOM event that is received when the web page is loaded and parsed.
-channel.createSticky('onDOMContentLoaded');
-
-// Event to indicate the Cordova native side is ready.
-channel.createSticky('onNativeReady');
-
-// Event to indicate that all Cordova JavaScript objects have been created
-// and it's time to run plugin constructors.
-channel.createSticky('onCordovaReady');
-
-// Event to indicate that all automatically loaded JS plugins are loaded and ready.
-// FIXME remove this
-channel.createSticky('onPluginsReady');
-
-// Event to indicate that Cordova is ready
-channel.createSticky('onDeviceReady');
-
-// Event to indicate a resume lifecycle event
-channel.create('onResume');
-
-// Event to indicate a pause lifecycle event
-channel.create('onPause');
-
-// Event to indicate a destroy lifecycle event
-channel.createSticky('onDestroy');
-
-// Channels that must fire before "deviceready" is fired.
-channel.waitForInitialization('onCordovaReady');
-channel.waitForInitialization('onDOMContentLoaded');
-
-module.exports = channel;
-
-});
-
-// file: src/blackberry10/exec.js
-define("cordova/exec", function(require, exports, module) {
-
-var cordova = require('cordova'),
-    execProxy = require('cordova/exec/proxy');
-
-function RemoteFunctionCall(functionUri) {
-    var params = {};
-
-    function composeUri() {
-        return "http://localhost:8472/" + functionUri;
-    }
-
-    function createXhrRequest(uri, isAsync) {
-        var request = new XMLHttpRequest();
-        request.open("POST", uri, isAsync);
-        request.setRequestHeader("Content-Type", "application/json");
-        return request;
-    }
-
-    this.addParam = function (name, value) {
-        params[name] = encodeURIComponent(JSON.stringify(value));
-    };
-
-    this.makeAsyncCall = function () {
-        var requestUri = composeUri(),
-            request = new XMLHttpRequest(),
-            didSucceed,
-            response,
-            fail = function () {
-                var callbackId = JSON.parse(decodeURIComponent(params.callbackId));
-                response = JSON.parse(decodeURIComponent(request.responseText) || "null");
-                cordova.callbacks[callbackId].fail && cordova.callbacks[callbackId].fail(response.msg, response);
-                delete cordova.callbacks[callbackId];
-            };
-
-        request.open("POST", requestUri, true /* async */);
-        request.setRequestHeader("Content-Type", "application/json");
-        request.timeout = 1000; // Timeout in 1000ms
-        request.ontimeout = fail;
-        request.onerror = fail;
-
-        request.onload = function () {
-            response = JSON.parse(decodeURIComponent(request.responseText) || "null");
-            if (request.status === 200) {
-                didSucceed = response.code === cordova.callbackStatus.OK || response.code === cordova.callbackStatus.NO_RESULT;
-                cordova.callbackFromNative(
-                        JSON.parse(decodeURIComponent(params.callbackId)),
-                        didSucceed,
-                        response.code,
-                        [ didSucceed ? response.data : response.msg ],
-                        !!response.keepCallback
-                        );
-            } else {
-                fail();
-            }
-        };
-
-        request.send(JSON.stringify(params));
-    };
-
-    this.makeSyncCall = function () {
-        var requestUri = composeUri(),
-        request = createXhrRequest(requestUri, false),
-        response;
-        request.send(JSON.stringify(params));
-        response = JSON.parse(decodeURIComponent(request.responseText) || "null");
-        return response;
-    };
-
-}
-
-module.exports = function (success, fail, service, action, args, sync) {
-    var uri = service + "/" + action,
-    request = new RemoteFunctionCall(uri),
-    callbackId = service + cordova.callbackId++,
-    proxy,
-    response,
-    name,
-    didSucceed;
-
-    cordova.callbacks[callbackId] = {
-        success: success,
-        fail: fail
-    };
-
-    proxy = execProxy.get(service, action);
-
-    if (proxy) {
-        proxy(success, fail, args);
-    }
-
-    else {
-
-        request.addParam("callbackId", callbackId);
-
-        for (name in args) {
-            if (Object.hasOwnProperty.call(args, name)) {
-                request.addParam(name, args[name]);
-            }
-        }
-
-        if (sync !== undefined && !sync) {
-            request.makeAsyncCall();
-            return;
-        }
-
-        response = request.makeSyncCall();
-
-        if (response.code < 0) {
-            if (fail) {
-                fail(response.msg, response);
-            }
-            delete cordova.callbacks[callbackId];
-        } else {
-            didSucceed = response.code === cordova.callbackStatus.OK || response.code === cordova.callbackStatus.NO_RESULT;
-            cordova.callbackFromNative(
-                callbackId,
-                didSucceed,
-                response.code,
-                [ didSucceed ? response.data : response.msg ],
-                !!response.keepCallback
-            );
-        }
-    }
-
-};
-
-});
-
-// file: src/common/exec/proxy.js
-define("cordova/exec/proxy", function(require, exports, module) {
-
-
-// internal map of proxy function
-var CommandProxyMap = {};
-
-module.exports = {
-
-    // example: cordova.commandProxy.add("Accelerometer",{getCurrentAcceleration: function(successCallback, errorCallback, options) {...},...);
-    add:function(id,proxyObj) {
-        console.log("adding proxy for " + id);
-        CommandProxyMap[id] = proxyObj;
-        return proxyObj;
-    },
-
-    // cordova.commandProxy.remove("Accelerometer");
-    remove:function(id) {
-        var proxy = CommandProxyMap[id];
-        delete CommandProxyMap[id];
-        CommandProxyMap[id] = null;
-        return proxy;
-    },
-
-    get:function(service,action) {
-        return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );
-    }
-};
-});
-
-// file: src/common/init.js
-define("cordova/init", function(require, exports, module) {
-
-var channel = require('cordova/channel');
-var cordova = require('cordova');
-var modulemapper = require('cordova/modulemapper');
-var platform = require('cordova/platform');
-var pluginloader = require('cordova/pluginloader');
-
-var platformInitChannelsArray = [channel.onNativeReady, channel.onPluginsReady];
-
-function logUnfiredChannels(arr) {
-    for (var i = 0; i < arr.length; ++i) {
-        if (arr[i].state != 2) {
-            console.log('Channel not fired: ' + arr[i].type);
-        }
-    }
-}
-
-window.setTimeout(function() {
-    if (channel.onDeviceReady.state != 2) {
-        console.log('deviceready has not fired after 5 seconds.');
-        logUnfiredChannels(platformInitChannelsArray);
-        logUnfiredChannels(channel.deviceReadyChannelsArray);
-    }
-}, 5000);
-
-// Replace navigator before any modules are required(), to ensure it happens as soon as possible.
-// We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
-    var CordovaNavigator = function() {};
-    CordovaNavigator.prototype = origNavigator;
-    var newNavigator = new CordovaNavigator();
-    // This work-around really only applies to new APIs that are newer than Function.bind.
-    // Without it, APIs such as getGamepads() break.
-    if (CordovaNavigator.bind) {
-        for (var key in origNavigator) {
-            if (typeof origNavigator[key] == 'function') {
-                newNavigator[key] = origNavigator[key].bind(origNavigator);
-            }
-        }
-    }
-    return newNavigator;
-}
-if (window.navigator) {
-    window.navigator = replaceNavigator(window.navigator);
-}
-
-if (!window.console) {
-    window.console = {
-        log: function(){}
-    };
-}
-if (!window.console.warn) {
-    window.console.warn = function(msg) {
-        this.log("warn: " + msg);
-    };
-}
-
-// Register pause, resume and deviceready channels as events on document.
-channel.onPause = cordova.addDocumentEventHandler('pause');
-channel.onResume = cordova.addDocumentEventHandler('resume');
-channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
-
-// Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
-    channel.onDOMContentLoaded.fire();
-} else {
-    document.addEventListener('DOMContentLoaded', function() {
-        channel.onDOMContentLoaded.fire();
-    }, false);
-}
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since
-// it may be called before any cordova JS is ready.
-if (window._nativeReady) {
-    channel.onNativeReady.fire();
-}
-
-modulemapper.clobbers('cordova', 'cordova');
-modulemapper.clobbers('cordova/exec', 'cordova.exec');
-modulemapper.clobbers('cordova/exec', 'Cordova.exec');
-
-// Call the platform-specific initialization.
-platform.bootstrap && platform.bootstrap();
-
-// Wrap in a setTimeout to support the use-case of having plugin JS appended to cordova.js.
-// The delay allows the attached modules to be defined before the plugin loader looks for them.
-setTimeout(function() {
-    pluginloader.load(function() {
-        channel.onPluginsReady.fire();
-    });
-}, 0);
-
-/**
- * Create all cordova objects once native side is ready.
- */
-channel.join(function() {
-    modulemapper.mapModules(window);
-
-    platform.initialize && platform.initialize();
-
-    // Fire event to notify that all objects are created
-    channel.onCordovaReady.fire();
-
-    // Fire onDeviceReady event once page has fully loaded, all
-    // constructors have run and cordova info has been received from native
-    // side.
-    channel.join(function() {
-        require('cordova').fireDocumentEvent('deviceready');
-    }, channel.deviceReadyChannelsArray);
-
-}, platformInitChannelsArray);
-
-
-});
-
-// file: src/common/init_b.js
-define("cordova/init_b", function(require, exports, module) {
-
-var channel = require('cordova/channel');
-var cordova = require('cordova');
-var platform = require('cordova/platform');
-
-var platformInitChannelsArray = [channel.onDOMContentLoaded, channel.onNativeReady];
-
-// setting exec
-cordova.exec = require('cordova/exec');
-
-function logUnfiredChannels(arr) {
-    for (var i = 0; i < arr.length; ++i) {
-        if (arr[i].state != 2) {
-            console.log('Channel not fired: ' + arr[i].type);
-        }
-    }
-}
-
-window.setTimeout(function() {
-    if (channel.onDeviceReady.state != 2) {
-        console.log('deviceready has not fired after 5 seconds.');
-        logUnfiredChannels(platformInitChannelsArray);
-        logUnfiredChannels(channel.deviceReadyChannelsArray);
-    }
-}, 5000);
-
-// Replace navigator before any modules are required(), to ensure it happens as soon as possible.
-// We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
-    var CordovaNavigator = function() {};
-    CordovaNavigator.prototype = origNavigator;
-    var newNavigator = new CordovaNavigator();
-    // This work-around really only applies to new APIs that are newer than Function.bind.
-    // Without it, APIs such as getGamepads() break.
-    if (CordovaNavigator.bind) {
-        for (var key in origNavigator) {
-            if (typeof origNavigator[key] == 'function') {
-                newNavigator[key] = origNavigator[key].bind(origNavigator);
-            }
-        }
-    }
-    return newNavigator;
-}
-if (window.navigator) {
-    window.navigator = replaceNavigator(window.navigator);
-}
-
-if (!window.console) {
-    window.console = {
-        log: function(){}
-    };
-}
-if (!window.console.warn) {
-    window.console.warn = function(msg) {
-        this.log("warn: " + msg);
-    };
-}
-
-// Register pause, resume and deviceready channels as events on document.
-channel.onPause = cordova.addDocumentEventHandler('pause');
-channel.onResume = cordova.addDocumentEventHandler('resume');
-channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
-
-// Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
-    channel.onDOMContentLoaded.fire();
-} else {
-    document.addEventListener('DOMContentLoaded', function() {
-        channel.onDOMContentLoaded.fire();
-    }, false);
-}
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since
-// it may be called before any cordova JS is ready.
-if (window._nativeReady) {
-    channel.onNativeReady.fire();
-}
-
-// Call the platform-specific initialization.
-platform.bootstrap && platform.bootstrap();
-
-/**
- * Create all cordova objects once native side is ready.
- */
-channel.join(function() {
-    
-    platform.initialize && platform.initialize();
-
-    // Fire event to notify that all objects are created
-    channel.onCordovaReady.fire();
-
-    // Fire onDeviceReady event once page has fully loaded, all
-    // constructors have run and cordova info has been received from native
-    // side.
-    channel.join(function() {
-        require('cordova').fireDocumentEvent('deviceready');
-    }, channel.deviceReadyChannelsArray);
-
-}, platformInitChannelsArray);
-
-});
-
-// file: src/common/modulemapper.js
-define("cordova/modulemapper", function(require, exports, module) {
-
-var builder = require('cordova/builder'),
-    moduleMap = define.moduleMap,
-    symbolList,
-    deprecationMap;
-
-exports.reset = function() {
-    symbolList = [];
-    deprecationMap = {};
-};
-
-function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {
-    if (!(moduleName in moduleMap)) {
-        throw new Error('Module ' + moduleName + ' does not exist.');
-    }
-    symbolList.push(strategy, moduleName, symbolPath);
-    if (opt_deprecationMessage) {
-        deprecationMap[symbolPath] = opt_deprecationMessage;
-    }
-}
-
-// Note: Android 2.3 does have Function.bind().
-exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {
-    addEntry('c', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {
-    addEntry('m', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {
-    addEntry('d', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.runs = function(moduleName) {
-    addEntry('r', moduleName, null);
-};
-
-function prepareNamespace(symbolPath, context) {
-    if (!symbolPath) {
-        return context;
-    }
-    var parts = symbolPath.split('.');
-    var cur = context;
-    for (var i = 0, part; part = parts[i]; ++i) {
-        cur = cur[part] = cur[part] || {};
-    }
-    return cur;
-}
-
-exports.mapModules = function(context) {
-    var origSymbols = {};
-    context.CDV_origSymbols = origSymbols;
-    for (var i = 0, len = symbolList.length; i < len; i += 3) {
-        var strategy = symbolList[i];
-        var moduleName = symbolList[i + 1];
-        var module = require(moduleName);
-        // <runs/>
-        if (strategy == 'r') {
-            continue;
-        }
-        var symbolPath = symbolList[i + 2];
-        var lastDot = symbolPath.lastIndexOf('.');
-        var namespace = symbolPath.substr(0, lastDot);
-        var lastName = symbolPath.substr(lastDot + 1);
-
-        var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;
-        var parentObj = prepareNamespace(namespace, context);
-        var target = parentObj[lastName];
-
-        if (strategy == 'm' && target) {
-            builder.recursiveMerge(target, module);
-        } else if ((strategy == 'd' && !target) || (strategy != 'd')) {
-            if (!(symbolPath in origSymbols)) {
-                origSymbols[symbolPath] = target;
-            }
-            builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);
-        }
-    }
-};
-
-exports.getOriginalSymbol = function(context, symbolPath) {
-    var origSymbols = context.CDV_origSymbols;
-    if (origSymbols && (symbolPath in origSymbols)) {
-        return origSymbols[symbolPath];
-    }
-    var parts = symbolPath.split('.');
-    var obj = context;
-    for (var i = 0; i < parts.length; ++i) {
-        obj = obj && obj[parts[i]];
-    }
-    return obj;
-};
-
-exports.reset();
-
-
-});
-
-// file: src/blackberry10/platform.js
-define("cordova/platform", function(require, exports, module) {
-
-module.exports = {
-
-    id: "blackberry10",
-
-    bootstrap: function() {
-
-        var channel = require('cordova/channel'),
-            addEventListener = document.addEventListener;
-
-        //ready as soon as the plugins are
-        channel.onPluginsReady.subscribe(function () {
-            channel.onNativeReady.fire();
-        });
-
-        //pass document online/offline event listeners to window
-        document.addEventListener = function (type) {
-            if (type === "online" || type === "offline") {
-                window.addEventListener.apply(window, arguments);
-            } else {
-                addEventListener.apply(document, arguments);
-            }
-        };
-
-        //map blackberry.event to document
-        if (!window.blackberry) {
-            window.blackberry = {};
-        }
-        window.blackberry.event =
-        {
-            addEventListener: document.addEventListener,
-            removeEventListener: document.removeEventListener
-        };
-
-    }
-
-};
-
-});
-
-// file: src/common/pluginloader.js
-define("cordova/pluginloader", function(require, exports, module) {
-
-var modulemapper = require('cordova/modulemapper');
-var urlutil = require('cordova/urlutil');
-
-// Helper function to inject a <script> tag.
-// Exported for testing.
-exports.injectScript = function(url, onload, onerror) {
-    var script = document.createElement("script");
-    // onload fires even when script fails loads with an error.
-    script.onload = onload;
-    // onerror fires for malformed URLs.
-    script.onerror = onerror;
-    script.src = url;
-    document.head.appendChild(script);
-};
-
-function injectIfNecessary(id, url, onload, onerror) {
-    onerror = onerror || onload;
-    if (id in define.moduleMap) {
-        onload();
-    } else {
-        exports.injectScript(url, function() {
-            if (id in define.moduleMap) {
-                onload();
-            } else {
-                onerror();
-            }
-        }, onerror);
-    }
-}
-
-function onScriptLoadingComplete(moduleList, finishPluginLoading) {
-    // Loop through all the plugins and then through their clobbers and merges.
-    for (var i = 0, module; module = moduleList[i]; i++) {
-        if (module.clobbers && module.clobbers.length) {
-            for (var j = 0; j < module.clobbers.length; j++) {
-                modulemapper.clobbers(module.id, module.clobbers[j]);
-            }
-        }
-
-        if (module.merges && module.merges.length) {
-            for (var k = 0; k < module.merges.length; k++) {
-                modulemapper.merges(module.id, module.merges[k]);
-            }
-        }
-
-        // Finally, if runs is truthy we want to simply require() the module.
-        if (module.runs) {
-            modulemapper.runs(module.id);
-        }
-    }
-
-    finishPluginLoading();
-}
-
-// Handler for the cordova_plugins.js content.
-// See plugman's plugin_loader.js for the details of this object.
-// This function is only called if the really is a plugins array that isn't empty.
-// Otherwise the onerror response handler will just call finishPluginLoading().
-function handlePluginsObject(path, moduleList, finishPluginLoading) {
-    // Now inject the scripts.
-    var scriptCounter = moduleList.length;
-
-    if (!scriptCounter) {
-        finishPluginLoading();
-        return;
-    }
-    function scriptLoadedCallback() {
-        if (!--scriptCounter) {
-            onScriptLoadingComplete(moduleList, finishPluginLoading);
-        }
-    }
-
-    for (var i = 0; i < moduleList.length; i++) {
-        injectIfNecessary(moduleList[i].id, path + moduleList[i].file, scriptLoadedCallback);
-    }
-}
-
-function findCordovaPath() {
-    var path = null;
-    var scripts = document.getElementsByTagName('script');
-    var term = 'cordova.js';
-    for (var n = scripts.length-1; n>-1; n--) {
-        var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param (CB-6007).
-        if (src.indexOf(term) == (src.length - term.length)) {
-            path = src.substring(0, src.length - term.length);
-            break;
-        }
-    }
-    return path;
-}
-
-// Tries to load all plugins' js-modules.
-// This is an async process, but onDeviceReady is blocked on onPluginsReady.
-// onPluginsReady is fired when there are no plugins to load, or they are all done.
-exports.load = function(callback) {
-    var pathPrefix = findCordovaPath();
-    if (pathPrefix === null) {
-        console.log('Could not find cordova.js script tag. Plugin loading may fail.');
-        pathPrefix = '';
-    }
-    injectIfNecessary('cordova/plugin_list', pathPrefix + 'cordova_plugins.js', function() {
-        var moduleList = require("cordova/plugin_list");
-        handlePluginsObject(pathPrefix, moduleList, callback);
-    }, callback);
-};
-
-
-});
-
-// file: src/common/urlutil.js
-define("cordova/urlutil", function(require, exports, module) {
-
-
-/**
- * For already absolute URLs, returns what is passed in.
- * For relative URLs, converts them to absolute ones.
- */
-exports.makeAbsolute = function makeAbsolute(url) {
-    var anchorEl = document.createElement('a');
-    anchorEl.href = url;
-    return anchorEl.href;
-};
-
-
-});
-
-// file: src/common/utils.js
-define("cordova/utils", function(require, exports, module) {
-
-var utils = exports;
-
-/**
- * Defines a property getter / setter for obj[key].
- */
-utils.defineGetterSetter = function(obj, key, getFunc, opt_setFunc) {
-    if (Object.defineProperty) {
-        var desc = {
-            get: getFunc,
-            configurable: true
-        };
-        if (opt_setFunc) {
-            desc.set = opt_setFunc;
-        }
-        Object.defineProperty(obj, key, desc);
-    } else {
-        obj.__defineGetter__(key, getFunc);
-        if (opt_setFunc) {
-            obj.__defineSetter__(key, opt_setFunc);
-        }
-    }
-};
-
-/**
- * Defines a property getter for obj[key].
- */
-utils.defineGetter = utils.defineGetterSetter;
-
-utils.arrayIndexOf = function(a, item) {
-    if (a.indexOf) {
-        return a.indexOf(item);
-    }
-    var len = a.length;
-    for (var i = 0; i < len; ++i) {
-        if (a[i] == item) {
-            return i;
-        }
-    }
-    return -1;
-};
-
-/**
- * Returns whether the item was found in the array.
- */
-utils.arrayRemove = function(a, item) {
-    var index = utils.arrayIndexOf(a, item);
-    if (index != -1) {
-        a.splice(index, 1);
-    }
-    return index != -1;
-};
-
-utils.typeName = function(val) {
-    return Object.prototype.toString.call(val).slice(8, -1);
-};
-
-/**
- * Returns an indication of whether the argument is an array or not
- */
-utils.isArray = function(a) {
-    return utils.typeName(a) == 'Array';
-};
-
-/**
- * Returns an indication of whether the argument is a Date or not
- */
-utils.isDate = function(d) {
-    return utils.typeName(d) == 'Date';
-};
-
-/**
- * Does a deep clone of the object.
- */
-utils.clone = function(obj) {
-    if(!obj || typeof obj == 'function' || utils.isDate(obj) || typeof obj != 'object') {
-        return obj;
-    }
-
-    var retVal, i;
-
-    if(utils.isArray(obj)){
-        retVal = [];
-        for(i = 0; i < obj.length; ++i){
-            retVal.push(utils.clone(obj[i]));
-        }
-        return retVal;
-    }
-
-    retVal = {};
-    for(i in obj){
-        if(!(i in retVal) || retVal[i] != obj[i]) {
-            retVal[i] = utils.clone(obj[i]);
-        }
-    }
-    return retVal;
-};
-
-/**
- * Returns a wrapped version of the function
- */
-utils.close = function(context, func, params) {
-    if (typeof params == 'undefined') {
-        return function() {
-            return func.apply(context, arguments);
-        };
-    } else {
-        return function() {
-            return func.apply(context, params);
-        };
-    }
-};
-
-/**
- * Create a UUID
- */
-utils.createUUID = function() {
-    return UUIDcreatePart(4) + '-' +
-        UUIDcreatePart(2) + '-' +
-        UUIDcreatePart(2) + '-' +
-        UUIDcreatePart(2) + '-' +
-        UUIDcreatePart(6);
-};
-
-/**
- * Extends a child object from a parent object using classical inheritance
- * pattern.
- */
-utils.extend = (function() {
-    // proxy used to establish prototype chain
-    var F = function() {};
-    // extend Child from Parent
-    return function(Child, Parent) {
-        F.prototype = Parent.prototype;
-        Child.prototype = new F();
-        Child.__super__ = Parent.prototype;
-        Child.prototype.constructor = Child;
-    };
-}());
-
-/**
- * Alerts a message in any available way: alert or console.log.
- */
-utils.alert = function(msg) {
-    if (window.alert) {
-        window.alert(msg);
-    } else if (console && console.log) {
-        console.log(msg);
-    }
-};
-
-
-//------------------------------------------------------------------------------
-function UUIDcreatePart(length) {
-    var uuidpart = "";
-    for (var i=0; i<length; i++) {
-        var uuidchar = parseInt((Math.random() * 256), 10).toString(16);
-        if (uuidchar.length == 1) {
-            uuidchar = "0" + uuidchar;
-        }
-        uuidpart += uuidchar;
-    }
-    return uuidpart;
-}
-
-
-});
-
-window.cordova = require('cordova');
-// file: src/scripts/bootstrap.js
-
-require('cordova/init');
-
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/.bin/shjs
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/.bin/shjs b/blackberry10/node_modules/.bin/shjs
deleted file mode 120000
index a044997..0000000
--- a/blackberry10/node_modules/.bin/shjs
+++ /dev/null
@@ -1 +0,0 @@
-../shelljs/bin/shjs
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/.bin/xlocalize
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/.bin/xlocalize b/blackberry10/node_modules/.bin/xlocalize
deleted file mode 120000
index 34f4a5d..0000000
--- a/blackberry10/node_modules/.bin/xlocalize
+++ /dev/null
@@ -1 +0,0 @@
-../localize/bin/xlocalize.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/async/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/async/LICENSE b/blackberry10/node_modules/async/LICENSE
deleted file mode 100644
index b7f9d50..0000000
--- a/blackberry10/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Caolan McMahon
-
-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.


[29/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/elementtree/node_modules/sax/examples/big-not-pretty.xml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/elementtree/node_modules/sax/examples/big-not-pretty.xml b/blackberry10/node_modules/elementtree/node_modules/sax/examples/big-not-pretty.xml
deleted file mode 100644
index fb5265d..0000000
--- a/blackberry10/node_modules/elementtree/node_modules/sax/examples/big-not-pretty.xml
+++ /dev/null
@@ -1,8002 +0,0 @@
-<big>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"       ></else><!-- COMMENT!
-	
---><![CDATA[processing...]]>  <selfclosing tag="blr>&quot;"/> a bit down here</root>
-<root>
-		something<else>  blerm <slurm 
-		
-		
-	attrib = 
-	"blorg"   

<TRUNCATED>

[40/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/utils.js b/blackberry10/bin/templates/project/cordova/lib/utils.js
deleted file mode 100644
index df5e9b7..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/utils.js
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* globals Buffer */
-
-var fs = require('fs'),
-    exit = require('exit'),
-    async = require('async'),
-    path = require('path'),
-    childProcess = require('child_process'),
-    wrench = require('wrench'),
-    os = require('os'),
-    promptLib = require("prompt"),
-    DEFAULT_BAR_NAME = "bb10app",
-    PROPERTY_FILE_NAME = 'blackberry10.json',
-    CORDOVA_DIR = '.cordova',
-    ERROR_VALUE = 2,
-    DEFAULT_PROPERTY_FILE = {
-        targets: {
-        }
-    },
-    _self;
-
-function swapBytes(buffer) {
-    var l = buffer.length,
-        i,
-        a;
-
-    if (l % 2 === 0x01) {
-        throw new Exception("Buffer error");
-    }
-
-    for (i = 0; i < l; i += 2) {
-        a = buffer[i];
-        buffer[i] = buffer[i + 1];
-        buffer[i + 1] = a;
-    }
-
-    return buffer;
-}
-
-_self = {
-    writeFile: function (fileLocation, fileName, fileData) {
-        //If directory does not exist, create it.
-        if (!fs.existsSync(fileLocation)) {
-            wrench.mkdirSyncRecursive(fileLocation, "0755");
-        }
-
-        fs.writeFile(path.join(fileLocation, fileName), fileData, function (err) {
-            if (err) throw err;
-        });
-    },
-
-    copyFile: function (srcFile, destDir, baseDir) {
-        var filename = path.basename(srcFile),
-            fileBuffer = fs.readFileSync(srcFile),
-            fileLocation;
-
-        //if a base directory was provided, determine
-        //folder structure from the relative path of the base folder
-        if (baseDir && srcFile.indexOf(baseDir) === 0) {
-            fileLocation = srcFile.replace(baseDir, destDir);
-            wrench.mkdirSyncRecursive(path.dirname(fileLocation), "0755");
-            fs.writeFileSync(fileLocation, fileBuffer);
-        } else {
-            if (!fs.existsSync(destDir)) {
-                wrench.mkdirSyncRecursive(destDir, "0755");
-            }
-
-            fs.writeFileSync(path.join(destDir, filename), fileBuffer);
-        }
-    },
-
-    listFiles: function (directory, filter) {
-        var files = wrench.readdirSyncRecursive(directory),
-            filteredFiles = [];
-
-        files.forEach(function (file) {
-            //On mac wrench.readdirSyncRecursive does not return absolute paths, so resolve one.
-            file = path.resolve(directory, file);
-
-            if (filter(file)) {
-                filteredFiles.push(file);
-            }
-        });
-
-        return filteredFiles;
-    },
-
-    readdirSyncRecursive: function (baseDir) {
-        var files = [],
-            curFiles = [],
-            nextDirs,
-            isDir = function (f) {
-                return fs.statSync(f).isDirectory();
-            },
-            isFile = function (f) {
-                return !isDir(f);
-            },
-            prependBaseDir = function (fname) {
-                return path.join(baseDir, fname);
-            };
-
-        try {
-            curFiles = fs.readdirSync(baseDir);
-
-            if (curFiles && curFiles.length > 0) {
-                curFiles = curFiles.map(prependBaseDir);
-                nextDirs = curFiles.filter(isDir);
-                curFiles = curFiles.filter(isFile);
-
-                files = files.concat(curFiles);
-
-                while (nextDirs.length) {
-                    files = files.concat(_self.readdirSyncRecursive(nextDirs.shift()));
-                }
-            }
-        } catch (e) {
-        }
-
-        return files;
-    },
-
-    isWindows: function () {
-        return os.type().toLowerCase().indexOf("windows") >= 0;
-    },
-
-    isOSX: function () {
-        return os.type().toLowerCase().indexOf("darwin") >= 0;
-    },
-
-    isArray: function (obj) {
-        return obj.constructor.toString().indexOf("Array") !== -1;
-    },
-
-    isEmpty : function (obj) {
-        for (var prop in obj) {
-            if (obj.hasOwnProperty(prop))
-                return false;
-        }
-        return true;
-    },
-
-    toBoolean: function (myString, defaultVal) {
-        // if defaultVal is not passed, default value is undefined
-        return myString === "true" ? true : myString === "false" ? false : defaultVal;
-    },
-
-    parseUri : function (str) {
-        var i, uri = {},
-            key = [ "source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ],
-            matcher = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(str);
-
-        for (i = key.length - 1; i >= 0; i--) {
-            uri[key[i]] = matcher[i] || "";
-        }
-
-        return uri;
-    },
-
-    // uri - output from parseUri
-    isAbsoluteURI : function (uri) {
-        if (uri && uri.source) {
-            return uri.relative !== uri.source;
-        }
-
-        return false;
-    },
-
-    isLocalURI : function (uri) {
-        return uri && uri.scheme && uri.scheme.toLowerCase() === "local";
-    },
-
-    // Convert node.js Buffer data (encoded) to String
-    bufferToString : function (data) {
-        var s = "";
-        if (Buffer.isBuffer(data)) {
-            if (data.length >= 2 && data[0] === 0xFF && data[1] === 0xFE) {
-                s = data.toString("ucs2", 2);
-            } else if (data.length >= 2 && data[0] === 0xFE && data[1] === 0xFF) {
-                swapBytes(data);
-                s = data.toString("ucs2", 2);
-            } else if (data.length >= 3 && data[0] === 0xEF && data[1] === 0xBB && data[2] === 0xBF) {
-                s = data.toString("utf8", 3);
-            } else {
-                s = data.toString("ascii");
-            }
-        }
-
-        return s;
-    },
-
-    // Wrap object property in an Array if the property is defined and it is not an Array
-    wrapPropertyInArray : function (obj, property) {
-        if (obj && obj[property] && !(obj[property] instanceof Array)) {
-            obj[property] = [ obj[property] ];
-        }
-    },
-
-    inQuotes : function (property) {
-        //wrap in quotes if it's not already wrapped
-        if (property.indexOf("\"") === -1) {
-            return "\"" + property + "\"";
-        } else {
-            return property;
-        }
-    },
-
-    exec : function (command, args, options, callback) {
-        //Optional params handling [args, options]
-        if (typeof args === "object" && !Array.isArray(args)) {
-            callback = options;
-            options = args;
-            args = [];
-        } else if (typeof args === "function") {
-            callback = args;
-            options = {};
-            args = [];
-        } else if (typeof options === "function") {
-            callback = options;
-            options = {};
-        }
-
-        //insert executable portion at beginning of arg array
-        args.splice(0, 0, command);
-
-        var pkgrUtils = require("./packager-utils"),
-            customOptions = options._customOptions,
-            proc,
-            i;
-
-        for (i = 0; i < args.length; i++) {
-            if (args[i] && args[i].indexOf(" ") !== -1) {
-                if (!_self.isWindows()) {
-                    //remove any escaped spaces on non-Windows platforms and simply use quotes
-                    args[i] = args[i].replace(/\\ /g, " ");
-                }
-
-                //put any args with spaces in quotes
-                args[i] = _self.inQuotes(args[i]);
-            }
-        }
-
-        //delete _customOptions from options object before sending to exec
-        delete options._customOptions;
-        //Use the process env by default
-        options.env = options.env || process.env;
-
-        proc = childProcess.exec(args.join(" "), options, callback);
-
-        if (!customOptions || !customOptions.silent) {
-            proc.stdout.on("data", pkgrUtils.handleProcessOutput);
-            proc.stderr.on("data", pkgrUtils.handleProcessOutput);
-        }
-    },
-
-    loadModule: function (path) {
-        return require(path);
-    },
-
-    findHomePath : function () {
-        return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
-    },
-
-    getCordovaDir: function () {
-        var cordovaPath = path.join(_self.findHomePath(), CORDOVA_DIR);
-
-        if (!fs.existsSync(cordovaPath)) {
-            fs.mkdirSync(cordovaPath);
-        }
-
-        return cordovaPath;
-    },
-
-    getPropertiesFilePath: function () {
-        var propertiesFile = path.join(_self.getCordovaDir(), PROPERTY_FILE_NAME);
-
-        if (!fs.existsSync(propertiesFile)) {
-            _self.writeToPropertiesFile(DEFAULT_PROPERTY_FILE);
-        }
-
-        return propertiesFile;
-    },
-
-    getPropertiesFileName: function () {
-        return PROPERTY_FILE_NAME;
-    },
-
-    getProperties: function () {
-        var props =  require(_self.getPropertiesFilePath());
-        if (!props.targets) {
-            props.targets = {};
-        }
-        return props;
-    },
-
-    writeToPropertiesFile: function (data) {
-        var contents = JSON.stringify(data, null, 4) + "\n",
-            propertiesFile = path.join(_self.getCordovaDir(), PROPERTY_FILE_NAME);
-
-        fs.writeFileSync(propertiesFile, contents, 'utf-8');
-    },
-
-    genBarName: function () {
-        return DEFAULT_BAR_NAME;
-    },
-
-    clone: function (original) {
-        var clone = {},
-            prop;
-        if (typeof original !== "object") {
-            clone = original;
-        } else if (Array.isArray(original)) {
-            clone = original.slice();
-        } else {
-            /* jshint ignore:start */
-            for (prop in original) {
-                clone[prop] = original[prop];
-            }
-            /* jshint ignore:end */
-        }
-
-        return clone;
-    },
-    prompt: function (options, done) {
-        var promptSchema = {
-                properties: {
-                    "property": options
-                }
-            };
-        promptLib.start();
-        promptLib.colors = false;
-        promptLib.message = "";
-        promptLib.delimiter = "";
-        promptLib.get(promptSchema, function (err, results) {
-            done(err, !err && results.property);
-        });
-    },
-
-    mixin: function (mixin, to) {
-        Object.getOwnPropertyNames(mixin).forEach(function (prop) {
-            if (Object.hasOwnProperty.call(mixin, prop)) {
-                Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(mixin, prop));
-            }
-        });
-        return to;
-    },
-
-    series: function (steps) {
-        async.series(steps, this.exit_handler);
-    },
-
-    waterfall: function (steps) { 
-        async.waterfall(steps, this.exit_handler);
-    },
-
-    exit_handler: function (err) {
-        if (err) {
-            if (typeof err === "string") {
-                console.error(err);
-            } else {
-                console.error("An error has occurred");
-            }
-            exit(ERROR_VALUE);
-        } else {
-            exit(0);
-        }
-    }
-
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/version.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/version.js b/blackberry10/bin/templates/project/cordova/lib/version.js
deleted file mode 100755
index 3068597..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/version.js
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env node
-
-/*
- *  Copyright 2013 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var fs = require("fs"),
-    readline = require("readline"),
-    util = require("util"),
-    path = require('path'),
-    projectPath = path.resolve(__dirname, '../..'),
-    filename = path.join(projectPath, 'www/cordova.js');
-
-if (fs.existsSync(filename)) {
-    var rl = readline.createInterface({
-        input: fs.createReadStream(filename),
-        terminal: false
-    });
-
-    rl.on("line", function (line) {
-        var splitSpace,
-            splitDash;
-        if (/^\/\/\s\d/.test(line)) {
-            rl.close();
-            splitSpace = line.split(" ");
-            if (splitSpace.length > 1) {
-                splitDash = splitSpace[1].split("-");
-                if (splitDash.length > 0) {
-                    console.log(splitDash[0]);
-                }
-            }
-        }
-    });
-} else {
-    console.log(util.format("The file \"%s\" does not exist.", filename));
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/xml-helpers.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/xml-helpers.js b/blackberry10/bin/templates/project/cordova/lib/xml-helpers.js
deleted file mode 100644
index cfb914c..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/xml-helpers.js
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- *
- * Copyright 2013 Anis Kadri
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * contains XML utility functions, some of which are specific to elementtree
- */
-
-var fs = require('fs')
-  , path = require('path')
-  , et = require('elementtree');
-
-module.exports = {
-    moveProjFile: function(origFile, projPath, callback) {
-        var src = path.resolve(projPath, origFile)
-          , dest = src.replace('.orig', '');
-
-        fs.createReadStream(src)
-            .pipe(fs.createWriteStream(dest))
-            .on('close', callback);
-    },
-
-    // compare two et.XML nodes, see if they match
-    // compares tagName, text, attributes and children (recursively)
-    equalNodes: function(one, two) {
-        if (one.tag != two.tag) {
-            return false;
-        } else if (one.text.trim() != two.text.trim()) {
-            return false;
-        } else if (one._children.length != two._children.length) {
-            return false;
-        }
-
-        var oneAttribKeys = Object.keys(one.attrib),
-            twoAttribKeys = Object.keys(two.attrib),
-            i = 0, attribName;
-
-        if (oneAttribKeys.length != twoAttribKeys.length) {
-            return false;
-        }
-
-        for (i; i < oneAttribKeys.length; i++) {
-            attribName = oneAttribKeys[i];
-
-            if (one.attrib[attribName] != two.attrib[attribName]) {
-                return false;
-            }
-        }
-
-        for (i; i < one._children.length; i++) {
-            if (!module.exports.equalNodes(one._children[i], two._children[i])) {
-                return false;
-            }
-        }
-
-        return true;
-    },
-
-    // adds node to doc at selector, creating parent if it doesn't exist
-    graftXML: function(doc, nodes, selector) {
-        var parent = resolveParent(doc, selector);
-        if (!parent) {
-            //Try to create the parent recursively if necessary
-            try {
-                var parentToCreate = et.XML("<" + path.basename(selector) + ">"),
-                    parentSelector = path.dirname(selector);
-
-                this.graftXML(doc, [parentToCreate], parentSelector);
-            } catch (e) {
-                return false;
-            }
-            parent = resolveParent(doc, selector);
-            if (!parent) return false;
-        }
-
-        nodes.forEach(function (node) {
-            // check if child is unique first
-            if (uniqueChild(node, parent)) {
-                parent.append(node);
-            }
-        });
-
-        return true;
-    },
-
-    // removes node from doc at selector
-    pruneXML: function(doc, nodes, selector) {
-        var parent = resolveParent(doc, selector);
-        if (!parent) return false;
-
-        nodes.forEach(function (node) {
-            var matchingKid = null;
-            if ((matchingKid = findChild(node, parent)) != null) {
-                // stupid elementtree takes an index argument it doesn't use
-                // and does not conform to the python lib
-                parent.remove(0, matchingKid);
-            }
-        });
-
-        return true;
-    },
-
-    parseElementtreeSync: function (filename) {
-        var contents = fs.readFileSync(filename, 'utf-8').replace("\ufeff", "");;
-        return new et.ElementTree(et.XML(contents));
-    }
-};
-
-function findChild(node, parent) {
-    var matchingKids = parent.findall(node.tag)
-      , i, j;
-
-    for (i = 0, j = matchingKids.length ; i < j ; i++) {
-        if (module.exports.equalNodes(node, matchingKids[i])) {
-            return matchingKids[i];
-        }
-    }
-    return null;
-}
-
-function uniqueChild(node, parent) {
-    var matchingKids = parent.findall(node.tag)
-      , i = 0;
-
-    if (matchingKids.length == 0) {
-        return true;
-    } else  {
-        for (i; i < matchingKids.length; i++) {
-            if (module.exports.equalNodes(node, matchingKids[i])) {
-                return false;
-            }
-        }
-        return true;
-    }
-}
-
-var ROOT = /^\/([^\/]*)/,
-    ABSOLUTE = /^\/([^\/]*)\/(.*)/;
-function resolveParent(doc, selector) {
-    var parent, tagName, subSelector;
-
-    // handle absolute selector (which elementtree doesn't like)
-    if (ROOT.test(selector)) {
-        tagName = selector.match(ROOT)[1];
-        // test for wildcard "any-tag" root selector
-        if (tagName == '*' || tagName === doc._root.tag) {
-            parent = doc._root;
-
-            // could be an absolute path, but not selecting the root
-            if (ABSOLUTE.test(selector)) {
-                subSelector = selector.match(ABSOLUTE)[2];
-                parent = parent.find(subSelector)
-            }
-        } else {
-            return false;
-        }
-    } else {
-        parent = doc.find(selector)
-    }
-    return parent;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/run
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/run b/blackberry10/bin/templates/project/cordova/run
deleted file mode 100755
index 42eeeef..0000000
--- a/blackberry10/bin/templates/project/cordova/run
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CORDOVA_DIR=$(dirname "$0")
-source "$CORDOVA_DIR/init"
-
-"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/run" "$@"

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/run.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/run.bat b/blackberry10/bin/templates/project/cordova/run.bat
deleted file mode 100644
index 42c413a..0000000
--- a/blackberry10/bin/templates/project/cordova/run.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\run" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/third_party/data2xml/data2xml.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/third_party/data2xml/data2xml.js b/blackberry10/bin/templates/project/cordova/third_party/data2xml/data2xml.js
deleted file mode 100644
index 8223d12..0000000
--- a/blackberry10/bin/templates/project/cordova/third_party/data2xml/data2xml.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// --------------------------------------------------------------------------------------------------------------------
-//
-// data2xml.js - A data to XML converter with a nice interface (for NodeJS).
-//
-// Copyright (c) 2011 AppsAttic Ltd - http://www.appsattic.com/
-// Written by Andrew Chilton <ch...@appsattic.com>
-//
-// License: http://opensource.org/licenses/MIT
-//
-// --------------------------------------------------------------------------------------------------------------------
-
-var xmlHeader = '<?xml version="1.0" encoding="utf-8"?>\n';
-
-function entitify(str) {
-    str = '' + str;
-    str = str
-        .replace(/&/g, '&amp;')
-        .replace(/</g,'&lt;')
-        .replace(/>/g,'&gt;')
-        .replace(/'/g, '&apos;')
-        .replace(/"/g, '&quot;');
-    return str;
-}
-
-function makeStartTag(name, attr) {
-    attr = attr || {};
-    var tag = '<' + name;
-    for(var a in attr) {
-        tag += ' ' + a + '="' + entitify(attr[a]) + '"';
-    }
-    tag += '>';
-    return tag;
-}
-
-function makeEndTag(name) {
-    return '</' + name + '>';
-}
-
-function makeElement(name, data) {
-    var element = '';
-    if ( Array.isArray(data) ) {
-        data.forEach(function(v) {
-            element += makeElement(name, v);
-        });
-        return element;
-    }
-    else if ( typeof data === 'object' ) {
-        element += makeStartTag(name, data._attr);
-        if ( data._value ) {
-            element += entitify(data._value);
-        }
-/************** MODIFICATION [always execute else condition] ***************/
-        for (var el in data) {
-            /**************** MODIFICATION {if condition altered} **********************/
-            if ( el === '_attr'  || el === '_value') {
-                continue;
-            }
-            element += makeElement(el, data[el]);
-        }
-        element += makeEndTag(name);
-        return element;
-/***************************** END MODIFICATION ***************************/
-    }
-    else {
-        // a piece of data on it's own can't have attributes
-        return makeStartTag(name) + entitify(data) + makeEndTag(name);
-    }
-    throw "Unknown data " + data;
-}
-
-var data2xml = function(name, data) {
-    var xml = xmlHeader;
-    xml += makeElement(name, data);
-    return xml;
-};
-
-// --------------------------------------------------------------------------------------------------------------------
-
-data2xml.entitify = entitify;
-data2xml.makeStartTag = makeStartTag;
-data2xml.makeEndTag = makeEndTag;
-data2xml.makeElement = makeElement;
-
-module.exports = data2xml;
-
-// --------------------------------------------------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/version
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/version b/blackberry10/bin/templates/project/cordova/version
deleted file mode 100755
index 53f5a1b..0000000
--- a/blackberry10/bin/templates/project/cordova/version
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-CORDOVA_DIR=$(dirname "$0")
-source "$CORDOVA_DIR/init"
-
-# Prints cordova version number
-"$CORDOVA_NODE/node" "$CORDOVA_DIR/lib/version" "$@"
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/version.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/version.bat b/blackberry10/bin/templates/project/cordova/version.bat
deleted file mode 100644
index 22e3526..0000000
--- a/blackberry10/bin/templates/project/cordova/version.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@ECHO OFF
-goto comment
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-:comment
-call "%~dp0init"
-if ERRORLEVEL 1 exit /B 1
-
-"%CORDOVA_NODE%\node.exe" "%~dp0\lib\version" %*

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/native/device/plugins/jnext/auth.txt
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/native/device/plugins/jnext/auth.txt b/blackberry10/bin/templates/project/native/device/plugins/jnext/auth.txt
deleted file mode 100644
index 0983f4f..0000000
--- a/blackberry10/bin/templates/project/native/device/plugins/jnext/auth.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-local:/// *
-file:// *
-http:// *
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/native/device/wwe
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/native/device/wwe b/blackberry10/bin/templates/project/native/device/wwe
deleted file mode 100644
index 0e48b92..0000000
--- a/blackberry10/bin/templates/project/native/device/wwe
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec weblauncher "$@"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/native/simulator/plugins/jnext/auth.txt
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/native/simulator/plugins/jnext/auth.txt b/blackberry10/bin/templates/project/native/simulator/plugins/jnext/auth.txt
deleted file mode 100644
index 0983f4f..0000000
--- a/blackberry10/bin/templates/project/native/simulator/plugins/jnext/auth.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-local:/// *
-file:// *
-http:// *
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/native/simulator/wwe
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/native/simulator/wwe b/blackberry10/bin/templates/project/native/simulator/wwe
deleted file mode 100644
index 0e48b92..0000000
--- a/blackberry10/bin/templates/project/native/simulator/wwe
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec weblauncher "$@"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/config.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/config.xml b/blackberry10/bin/templates/project/www/config.xml
deleted file mode 100644
index f8120ce..0000000
--- a/blackberry10/bin/templates/project/www/config.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
--->
-<!--
-  Widget Configuration Reference:
-    https://developer.blackberry.com/html5/documentation/v2_1/config_doc_elements.html
--->
-
-<widget xmlns="http://www.w3.org/ns/widgets"
-        xmlns:rim="http://www.blackberry.com/ns/widgets"
-	version="1.0.0.1" id="default.app.id">
-  <rim:permissions>
-
-  </rim:permissions>
-  <name>default.app.name</name>
-
-  <author>Your Name Here</author>
-
-  <description>
-       A sample Apache Cordova application that responds to the deviceready event.
-  </description>
-
-  <!-- Expose access to all URIs, including the file and http protocols -->
-  <access subdomains="true" uri="file:///store/home" />
-  <access subdomains="true" uri="file:///SDCard" />
-  <access subdomains="true" uri="*" />
-
-  <icon src="res/icon/blackberry10/icon-80.png" />
-  <rim:splash src="res/screen/blackberry10/splash-1280x768.png" />
-  <rim:splash src="res/screen/blackberry10/splash-720x720.png" />
-  <rim:splash src="res/screen/blackberry10/splash-768x1280.png" />
-
-  <content src="index.html" />
-
-</widget>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/css/index.css
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/css/index.css b/blackberry10/bin/templates/project/www/css/index.css
deleted file mode 100644
index 51daa79..0000000
--- a/blackberry10/bin/templates/project/www/css/index.css
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-* {
-    -webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
-}
-
-body {
-    -webkit-touch-callout: none;                /* prevent callout to copy image, etc when tap to hold */
-    -webkit-text-size-adjust: none;             /* prevent webkit from resizing text to fit */
-    -webkit-user-select: none;                  /* prevent copy paste, to allow, change 'none' to 'text' */
-    background-color:#E4E4E4;
-    background-image:linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
-    background-image:-webkit-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
-    background-image:-ms-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
-    background-image:-webkit-gradient(
-        linear,
-        left top,
-        left bottom,
-        color-stop(0, #A7A7A7),
-        color-stop(0.51, #E4E4E4)
-    );
-    background-attachment:fixed;
-    font-family:'HelveticaNeue-Light', 'HelveticaNeue', Helvetica, Arial, sans-serif;
-    font-size:12px;
-    height:100%;
-    margin:0px;
-    padding:0px;
-    text-transform:uppercase;
-    width:100%;
-}
-
-/* Portrait layout (default) */
-.app {
-    background:url(../img/logo.png) no-repeat center top; /* 170px x 200px */
-    position:absolute;             /* position in the center of the screen */
-    left:50%;
-    top:50%;
-    height:50px;                   /* text area height */
-    width:225px;                   /* text area width */
-    text-align:center;
-    padding:180px 0px 0px 0px;     /* image height is 200px (bottom 20px are overlapped with text) */
-    margin:-115px 0px 0px -112px;  /* offset vertical: half of image height and text area height */
-                                   /* offset horizontal: half of text area width */
-}
-
-/* Landscape layout (with min-width) */
-@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
-    .app {
-        background-position:left center;
-        padding:75px 0px 75px 170px;  /* padding-top + padding-bottom + text area = image height */
-        margin:-90px 0px 0px -198px;  /* offset vertical: half of image height */
-                                      /* offset horizontal: half of image width and text area width */
-    }
-}
-
-h1 {
-    font-size:24px;
-    font-weight:normal;
-    margin:0px;
-    overflow:visible;
-    padding:0px;
-    text-align:center;
-}
-
-.event {
-    border-radius:4px;
-    -webkit-border-radius:4px;
-    color:#FFFFFF;
-    font-size:12px;
-    margin:0px 30px;
-    padding:2px 0px;
-}
-
-.event.listening {
-    background-color:#333333;
-    display:block;
-}
-
-.event.received {
-    background-color:#4B946A;
-    display:none;
-}
-
-@keyframes fade {
-    from { opacity: 1.0; }
-    50% { opacity: 0.4; }
-    to { opacity: 1.0; }
-}
- 
-@-webkit-keyframes fade {
-    from { opacity: 1.0; }
-    50% { opacity: 0.4; }
-    to { opacity: 1.0; }
-}
- 
-.blink {
-    animation:fade 3000ms infinite;
-    -webkit-animation:fade 3000ms infinite;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/img/logo.png
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/img/logo.png b/blackberry10/bin/templates/project/www/img/logo.png
deleted file mode 100644
index 9519e7d..0000000
Binary files a/blackberry10/bin/templates/project/www/img/logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/index.html
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/index.html b/blackberry10/bin/templates/project/www/index.html
deleted file mode 100644
index bde5741..0000000
--- a/blackberry10/bin/templates/project/www/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-     KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-<html>
-    <head>
-        <meta charset="utf-8" />
-        <meta name="format-detection" content="telephone=no" />
-        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
-        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
-        <link rel="stylesheet" type="text/css" href="css/index.css" />
-        <title>Hello World</title>
-    </head>
-    <body>
-        <div class="app">
-            <h1>Apache Cordova</h1>
-            <div id="deviceready" class="blink">
-                <p class="event listening">Connecting to Device</p>
-                <p class="event received">Device is Ready</p>
-            </div>
-        </div>
-        <script type="text/javascript" src="cordova.js"></script>
-        <script type="text/javascript" src="js/index.js"></script>
-        <script type="text/javascript">
-            app.initialize();
-        </script>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/js/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/js/index.js b/blackberry10/bin/templates/project/www/js/index.js
deleted file mode 100644
index 87b5660..0000000
--- a/blackberry10/bin/templates/project/www/js/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-var app = {
-    // Application Constructor
-    initialize: function() {
-        this.bindEvents();
-    },
-    // Bind Event Listeners
-    //
-    // Bind any events that are required on startup. Common events are:
-    // 'load', 'deviceready', 'offline', and 'online'.
-    bindEvents: function() {
-        document.addEventListener('deviceready', this.onDeviceReady, false);
-    },
-    // deviceready Event Handler
-    //
-    // The scope of 'this' is the event. In order to call the 'receivedEvent'
-    // function, we must explicitly call 'app.receivedEvent(...);'
-    onDeviceReady: function() {
-        app.receivedEvent('deviceready');
-    },
-    // Update DOM on a Received Event
-    receivedEvent: function(id) {
-        var parentElement = document.getElementById(id);
-        var listeningElement = parentElement.querySelector('.listening');
-        var receivedElement = parentElement.querySelector('.received');
-
-        listeningElement.setAttribute('style', 'display:none;');
-        receivedElement.setAttribute('style', 'display:block;');
-
-        console.log('Received Event: ' + id);
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/res/icon/blackberry10/icon-80.png
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/res/icon/blackberry10/icon-80.png b/blackberry10/bin/templates/project/www/res/icon/blackberry10/icon-80.png
deleted file mode 100644
index f86a27a..0000000
Binary files a/blackberry10/bin/templates/project/www/res/icon/blackberry10/icon-80.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png b/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png
deleted file mode 100644
index 5f4bca9..0000000
Binary files a/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-1280x768.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png b/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png
deleted file mode 100644
index fe1756f..0000000
Binary files a/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-720x720.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png b/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png
deleted file mode 100644
index 0fb9c1b..0000000
Binary files a/blackberry10/bin/templates/project/www/res/screen/blackberry10/splash-768x1280.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/spec.html
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/spec.html b/blackberry10/bin/templates/project/www/spec.html
deleted file mode 100644
index 71f00de..0000000
--- a/blackberry10/bin/templates/project/www/spec.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-     KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-<html>
-    <head>
-        <title>Jasmine Spec Runner</title>
-
-        <!-- jasmine source -->
-        <link rel="shortcut icon" type="image/png" href="spec/lib/jasmine-1.2.0/jasmine_favicon.png">
-        <link rel="stylesheet" type="text/css" href="spec/lib/jasmine-1.2.0/jasmine.css">
-        <script type="text/javascript" src="spec/lib/jasmine-1.2.0/jasmine.js"></script>
-        <script type="text/javascript" src="spec/lib/jasmine-1.2.0/jasmine-html.js"></script>
-
-        <!-- include source files here... -->
-        <script type="text/javascript" src="js/index.js"></script>
-
-        <!-- include spec files here... -->
-        <script type="text/javascript" src="spec/helper.js"></script>
-        <script type="text/javascript" src="spec/index.js"></script>
-
-        <script type="text/javascript">
-            (function() {
-                var jasmineEnv = jasmine.getEnv();
-                jasmineEnv.updateInterval = 1000;
-
-                var htmlReporter = new jasmine.HtmlReporter();
-
-                jasmineEnv.addReporter(htmlReporter);
-
-                jasmineEnv.specFilter = function(spec) {
-                    return htmlReporter.specFilter(spec);
-                };
-
-                var currentWindowOnload = window.onload;
-
-                window.onload = function() {
-                    if (currentWindowOnload) {
-                        currentWindowOnload();
-                    }
-                    execJasmine();
-                };
-
-                function execJasmine() {
-                    jasmineEnv.execute();
-                }
-            })();
-        </script>
-    </head>
-    <body>
-        <div id="stage" style="display:none;"></div>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/spec/helper.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/spec/helper.js b/blackberry10/bin/templates/project/www/spec/helper.js
deleted file mode 100644
index 929f776..0000000
--- a/blackberry10/bin/templates/project/www/spec/helper.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-afterEach(function() {
-    document.getElementById('stage').innerHTML = '';
-});
-
-var helper = {
-    trigger: function(obj, name) {
-        var e = document.createEvent('Event');
-        e.initEvent(name, true, true);
-        obj.dispatchEvent(e);
-    },
-    getComputedStyle: function(querySelector, property) {
-        var element = document.querySelector(querySelector);
-        return window.getComputedStyle(element).getPropertyValue(property);
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/spec/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/spec/index.js b/blackberry10/bin/templates/project/www/spec/index.js
deleted file mode 100644
index 20f8be5..0000000
--- a/blackberry10/bin/templates/project/www/spec/index.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-describe('app', function() {
-    describe('initialize', function() {
-        it('should bind deviceready', function() {
-            runs(function() {
-                spyOn(app, 'onDeviceReady');
-                app.initialize();
-                helper.trigger(window.document, 'deviceready');
-            });
-
-            waitsFor(function() {
-                return (app.onDeviceReady.calls.length > 0);
-            }, 'onDeviceReady should be called once', 500);
-
-            runs(function() {
-                expect(app.onDeviceReady).toHaveBeenCalled();
-            });
-        });
-    });
-
-    describe('onDeviceReady', function() {
-        it('should report that it fired', function() {
-            spyOn(app, 'receivedEvent');
-            app.onDeviceReady();
-            expect(app.receivedEvent).toHaveBeenCalledWith('deviceready');
-        });
-    });
-
-    describe('receivedEvent', function() {
-        beforeEach(function() {
-            var el = document.getElementById('stage');
-            el.innerHTML = ['<div id="deviceready">',
-                            '    <p class="event listening">Listening</p>',
-                            '    <p class="event received">Received</p>',
-                            '</div>'].join('\n');
-        });
-
-        it('should hide the listening element', function() {
-            app.receivedEvent('deviceready');
-            var displayStyle = helper.getComputedStyle('#deviceready .listening', 'display');
-            expect(displayStyle).toEqual('none');
-        });
-
-        it('should show the received element', function() {
-            app.receivedEvent('deviceready');
-            var displayStyle = helper.getComputedStyle('#deviceready .received', 'display');
-            expect(displayStyle).toEqual('block');
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE b/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
deleted file mode 100644
index 7c435ba..0000000
--- a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2008-2011 Pivotal Labs
-
-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/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js b/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js
deleted file mode 100644
index a0b0639..0000000
--- a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine-html.js
+++ /dev/null
@@ -1,616 +0,0 @@
-jasmine.HtmlReporterHelpers = {};
-
-jasmine.HtmlReporterHelpers.createDom = function(type, attrs, childrenVarArgs) {
-  var el = document.createElement(type);
-
-  for (var i = 2; i < arguments.length; i++) {
-    var child = arguments[i];
-
-    if (typeof child === 'string') {
-      el.appendChild(document.createTextNode(child));
-    } else {
-      if (child) {
-        el.appendChild(child);
-      }
-    }
-  }
-
-  for (var attr in attrs) {
-    if (attr == "className") {
-      el[attr] = attrs[attr];
-    } else {
-      el.setAttribute(attr, attrs[attr]);
-    }
-  }
-
-  return el;
-};
-
-jasmine.HtmlReporterHelpers.getSpecStatus = function(child) {
-  var results = child.results();
-  var status = results.passed() ? 'passed' : 'failed';
-  if (results.skipped) {
-    status = 'skipped';
-  }
-
-  return status;
-};
-
-jasmine.HtmlReporterHelpers.appendToSummary = function(child, childElement) {
-  var parentDiv = this.dom.summary;
-  var parentSuite = (typeof child.parentSuite == 'undefined') ? 'suite' : 'parentSuite';
-  var parent = child[parentSuite];
-
-  if (parent) {
-    if (typeof this.views.suites[parent.id] == 'undefined') {
-      this.views.suites[parent.id] = new jasmine.HtmlReporter.SuiteView(parent, this.dom, this.views);
-    }
-    parentDiv = this.views.suites[parent.id].element;
-  }
-
-  parentDiv.appendChild(childElement);
-};
-
-
-jasmine.HtmlReporterHelpers.addHelpers = function(ctor) {
-  for(var fn in jasmine.HtmlReporterHelpers) {
-    ctor.prototype[fn] = jasmine.HtmlReporterHelpers[fn];
-  }
-};
-
-jasmine.HtmlReporter = function(_doc) {
-  var self = this;
-  var doc = _doc || window.document;
-
-  var reporterView;
-
-  var dom = {};
-
-  // Jasmine Reporter Public Interface
-  self.logRunningSpecs = false;
-
-  self.reportRunnerStarting = function(runner) {
-    var specs = runner.specs() || [];
-
-    if (specs.length == 0) {
-      return;
-    }
-
-    createReporterDom(runner.env.versionString());
-    doc.body.appendChild(dom.reporter);
-
-    reporterView = new jasmine.HtmlReporter.ReporterView(dom);
-    reporterView.addSpecs(specs, self.specFilter);
-  };
-
-  self.reportRunnerResults = function(runner) {
-    reporterView && reporterView.complete();
-  };
-
-  self.reportSuiteResults = function(suite) {
-    reporterView.suiteComplete(suite);
-  };
-
-  self.reportSpecStarting = function(spec) {
-    if (self.logRunningSpecs) {
-      self.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
-    }
-  };
-
-  self.reportSpecResults = function(spec) {
-    reporterView.specComplete(spec);
-  };
-
-  self.log = function() {
-    var console = jasmine.getGlobal().console;
-    if (console && console.log) {
-      if (console.log.apply) {
-        console.log.apply(console, arguments);
-      } else {
-        console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
-      }
-    }
-  };
-
-  self.specFilter = function(spec) {
-    if (!focusedSpecName()) {
-      return true;
-    }
-
-    return spec.getFullName().indexOf(focusedSpecName()) === 0;
-  };
-
-  return self;
-
-  function focusedSpecName() {
-    var specName;
-
-    (function memoizeFocusedSpec() {
-      if (specName) {
-        return;
-      }
-
-      var paramMap = [];
-      var params = doc.location.search.substring(1).split('&');
-
-      for (var i = 0; i < params.length; i++) {
-        var p = params[i].split('=');
-        paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
-      }
-
-      specName = paramMap.spec;
-    })();
-
-    return specName;
-  }
-
-  function createReporterDom(version) {
-    dom.reporter = self.createDom('div', { id: 'HTMLReporter', className: 'jasmine_reporter' },
-      dom.banner = self.createDom('div', { className: 'banner' },
-        self.createDom('span', { className: 'title' }, "Jasmine "),
-        self.createDom('span', { className: 'version' }, version)),
-
-      dom.symbolSummary = self.createDom('ul', {className: 'symbolSummary'}),
-      dom.alert = self.createDom('div', {className: 'alert'}),
-      dom.results = self.createDom('div', {className: 'results'},
-        dom.summary = self.createDom('div', { className: 'summary' }),
-        dom.details = self.createDom('div', { id: 'details' }))
-    );
-  }
-};
-jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter);jasmine.HtmlReporter.ReporterView = function(dom) {
-  this.startedAt = new Date();
-  this.runningSpecCount = 0;
-  this.completeSpecCount = 0;
-  this.passedCount = 0;
-  this.failedCount = 0;
-  this.skippedCount = 0;
-
-  this.createResultsMenu = function() {
-    this.resultsMenu = this.createDom('span', {className: 'resultsMenu bar'},
-      this.summaryMenuItem = this.createDom('a', {className: 'summaryMenuItem', href: "#"}, '0 specs'),
-      ' | ',
-      this.detailsMenuItem = this.createDom('a', {className: 'detailsMenuItem', href: "#"}, '0 failing'));
-
-    this.summaryMenuItem.onclick = function() {
-      dom.reporter.className = dom.reporter.className.replace(/ showDetails/g, '');
-    };
-
-    this.detailsMenuItem.onclick = function() {
-      showDetails();
-    };
-  };
-
-  this.addSpecs = function(specs, specFilter) {
-    this.totalSpecCount = specs.length;
-
-    this.views = {
-      specs: {},
-      suites: {}
-    };
-
-    for (var i = 0; i < specs.length; i++) {
-      var spec = specs[i];
-      this.views.specs[spec.id] = new jasmine.HtmlReporter.SpecView(spec, dom, this.views);
-      if (specFilter(spec)) {
-        this.runningSpecCount++;
-      }
-    }
-  };
-
-  this.specComplete = function(spec) {
-    this.completeSpecCount++;
-
-    if (isUndefined(this.views.specs[spec.id])) {
-      this.views.specs[spec.id] = new jasmine.HtmlReporter.SpecView(spec, dom);
-    }
-
-    var specView = this.views.specs[spec.id];
-
-    switch (specView.status()) {
-      case 'passed':
-        this.passedCount++;
-        break;
-
-      case 'failed':
-        this.failedCount++;
-        break;
-
-      case 'skipped':
-        this.skippedCount++;
-        break;
-    }
-
-    specView.refresh();
-    this.refresh();
-  };
-
-  this.suiteComplete = function(suite) {
-    var suiteView = this.views.suites[suite.id];
-    if (isUndefined(suiteView)) {
-      return;
-    }
-    suiteView.refresh();
-  };
-
-  this.refresh = function() {
-
-    if (isUndefined(this.resultsMenu)) {
-      this.createResultsMenu();
-    }
-
-    // currently running UI
-    if (isUndefined(this.runningAlert)) {
-      this.runningAlert = this.createDom('a', {href: "?", className: "runningAlert bar"});
-      dom.alert.appendChild(this.runningAlert);
-    }
-    this.runningAlert.innerHTML = "Running " + this.completeSpecCount + " of " + specPluralizedFor(this.totalSpecCount);
-
-    // skipped specs UI
-    if (isUndefined(this.skippedAlert)) {
-      this.skippedAlert = this.createDom('a', {href: "?", className: "skippedAlert bar"});
-    }
-
-    this.skippedAlert.innerHTML = "Skipping " + this.skippedCount + " of " + specPluralizedFor(this.totalSpecCount) + " - run all";
-
-    if (this.skippedCount === 1 && isDefined(dom.alert)) {
-      dom.alert.appendChild(this.skippedAlert);
-    }
-
-    // passing specs UI
-    if (isUndefined(this.passedAlert)) {
-      this.passedAlert = this.createDom('span', {href: "?", className: "passingAlert bar"});
-    }
-    this.passedAlert.innerHTML = "Passing " + specPluralizedFor(this.passedCount);
-
-    // failing specs UI
-    if (isUndefined(this.failedAlert)) {
-      this.failedAlert = this.createDom('span', {href: "?", className: "failingAlert bar"});
-    }
-    this.failedAlert.innerHTML = "Failing " + specPluralizedFor(this.failedCount);
-
-    if (this.failedCount === 1 && isDefined(dom.alert)) {
-      dom.alert.appendChild(this.failedAlert);
-      dom.alert.appendChild(this.resultsMenu);
-    }
-
-    // summary info
-    this.summaryMenuItem.innerHTML = "" + specPluralizedFor(this.runningSpecCount);
-    this.detailsMenuItem.innerHTML = "" + this.failedCount + " failing";
-  };
-
-  this.complete = function() {
-    dom.alert.removeChild(this.runningAlert);
-
-    this.skippedAlert.innerHTML = "Ran " + this.runningSpecCount + " of " + specPluralizedFor(this.totalSpecCount) + " - run all";
-
-    if (this.failedCount === 0) {
-      dom.alert.appendChild(this.createDom('span', {className: 'passingAlert bar'}, "Passing " + specPluralizedFor(this.passedCount)));
-    } else {
-      showDetails();
-    }
-
-    dom.banner.appendChild(this.createDom('span', {className: 'duration'}, "finished in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s"));
-  };
-
-  return this;
-
-  function showDetails() {
-    if (dom.reporter.className.search(/showDetails/) === -1) {
-      dom.reporter.className += " showDetails";
-    }
-  }
-
-  function isUndefined(obj) {
-    return typeof obj === 'undefined';
-  }
-
-  function isDefined(obj) {
-    return !isUndefined(obj);
-  }
-
-  function specPluralizedFor(count) {
-    var str = count + " spec";
-    if (count > 1) {
-      str += "s"
-    }
-    return str;
-  }
-
-};
-
-jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.ReporterView);
-
-
-jasmine.HtmlReporter.SpecView = function(spec, dom, views) {
-  this.spec = spec;
-  this.dom = dom;
-  this.views = views;
-
-  this.symbol = this.createDom('li', { className: 'pending' });
-  this.dom.symbolSummary.appendChild(this.symbol);
-
-  this.summary = this.createDom('div', { className: 'specSummary' },
-      this.createDom('a', {
-        className: 'description',
-        href: '?spec=' + encodeURIComponent(this.spec.getFullName()),
-        title: this.spec.getFullName()
-      }, this.spec.description)
-  );
-
-  this.detail = this.createDom('div', { className: 'specDetail' },
-      this.createDom('a', {
-        className: 'description',
-        href: '?spec=' + encodeURIComponent(this.spec.getFullName()),
-        title: this.spec.getFullName()
-      }, this.spec.getFullName())
-  );
-};
-
-jasmine.HtmlReporter.SpecView.prototype.status = function() {
-  return this.getSpecStatus(this.spec);
-};
-
-jasmine.HtmlReporter.SpecView.prototype.refresh = function() {
-  this.symbol.className = this.status();
-
-  switch (this.status()) {
-    case 'skipped':
-      break;
-
-    case 'passed':
-      this.appendSummaryToSuiteDiv();
-      break;
-
-    case 'failed':
-      this.appendSummaryToSuiteDiv();
-      this.appendFailureDetail();
-      break;
-  }
-};
-
-jasmine.HtmlReporter.SpecView.prototype.appendSummaryToSuiteDiv = function() {
-  this.summary.className += ' ' + this.status();
-  this.appendToSummary(this.spec, this.summary);
-};
-
-jasmine.HtmlReporter.SpecView.prototype.appendFailureDetail = function() {
-  this.detail.className += ' ' + this.status();
-
-  var resultItems = this.spec.results().getItems();
-  var messagesDiv = this.createDom('div', { className: 'messages' });
-
-  for (var i = 0; i < resultItems.length; i++) {
-    var result = resultItems[i];
-
-    if (result.type == 'log') {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
-    } else if (result.type == 'expect' && result.passed && !result.passed()) {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
-
-      if (result.trace.stack) {
-        messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
-      }
-    }
-  }
-
-  if (messagesDiv.childNodes.length > 0) {
-    this.detail.appendChild(messagesDiv);
-    this.dom.details.appendChild(this.detail);
-  }
-};
-
-jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SpecView);jasmine.HtmlReporter.SuiteView = function(suite, dom, views) {
-  this.suite = suite;
-  this.dom = dom;
-  this.views = views;
-
-  this.element = this.createDom('div', { className: 'suite' },
-      this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(this.suite.getFullName()) }, this.suite.description)
-  );
-
-  this.appendToSummary(this.suite, this.element);
-};
-
-jasmine.HtmlReporter.SuiteView.prototype.status = function() {
-  return this.getSpecStatus(this.suite);
-};
-
-jasmine.HtmlReporter.SuiteView.prototype.refresh = function() {
-  this.element.className += " " + this.status();
-};
-
-jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SuiteView);
-
-/* @deprecated Use jasmine.HtmlReporter instead
- */
-jasmine.TrivialReporter = function(doc) {
-  this.document = doc || document;
-  this.suiteDivs = {};
-  this.logRunningSpecs = false;
-};
-
-jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) {
-  var el = document.createElement(type);
-
-  for (var i = 2; i < arguments.length; i++) {
-    var child = arguments[i];
-
-    if (typeof child === 'string') {
-      el.appendChild(document.createTextNode(child));
-    } else {
-      if (child) { el.appendChild(child); }
-    }
-  }
-
-  for (var attr in attrs) {
-    if (attr == "className") {
-      el[attr] = attrs[attr];
-    } else {
-      el.setAttribute(attr, attrs[attr]);
-    }
-  }
-
-  return el;
-};
-
-jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
-  var showPassed, showSkipped;
-
-  this.outerDiv = this.createDom('div', { id: 'TrivialReporter', className: 'jasmine_reporter' },
-      this.createDom('div', { className: 'banner' },
-        this.createDom('div', { className: 'logo' },
-            this.createDom('span', { className: 'title' }, "Jasmine"),
-            this.createDom('span', { className: 'version' }, runner.env.versionString())),
-        this.createDom('div', { className: 'options' },
-            "Show ",
-            showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }),
-            this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "),
-            showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }),
-            this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped")
-            )
-          ),
-
-      this.runnerDiv = this.createDom('div', { className: 'runner running' },
-          this.createDom('a', { className: 'run_spec', href: '?' }, "run all"),
-          this.runnerMessageSpan = this.createDom('span', {}, "Running..."),
-          this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, ""))
-      );
-
-  this.document.body.appendChild(this.outerDiv);
-
-  var suites = runner.suites();
-  for (var i = 0; i < suites.length; i++) {
-    var suite = suites[i];
-    var suiteDiv = this.createDom('div', { className: 'suite' },
-        this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"),
-        this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description));
-    this.suiteDivs[suite.id] = suiteDiv;
-    var parentDiv = this.outerDiv;
-    if (suite.parentSuite) {
-      parentDiv = this.suiteDivs[suite.parentSuite.id];
-    }
-    parentDiv.appendChild(suiteDiv);
-  }
-
-  this.startedAt = new Date();
-
-  var self = this;
-  showPassed.onclick = function(evt) {
-    if (showPassed.checked) {
-      self.outerDiv.className += ' show-passed';
-    } else {
-      self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, '');
-    }
-  };
-
-  showSkipped.onclick = function(evt) {
-    if (showSkipped.checked) {
-      self.outerDiv.className += ' show-skipped';
-    } else {
-      self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, '');
-    }
-  };
-};
-
-jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) {
-  var results = runner.results();
-  var className = (results.failedCount > 0) ? "runner failed" : "runner passed";
-  this.runnerDiv.setAttribute("class", className);
-  //do it twice for IE
-  this.runnerDiv.setAttribute("className", className);
-  var specs = runner.specs();
-  var specCount = 0;
-  for (var i = 0; i < specs.length; i++) {
-    if (this.specFilter(specs[i])) {
-      specCount++;
-    }
-  }
-  var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s");
-  message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s";
-  this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild);
-
-  this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString()));
-};
-
-jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) {
-  var results = suite.results();
-  var status = results.passed() ? 'passed' : 'failed';
-  if (results.totalCount === 0) { // todo: change this to check results.skipped
-    status = 'skipped';
-  }
-  this.suiteDivs[suite.id].className += " " + status;
-};
-
-jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) {
-  if (this.logRunningSpecs) {
-    this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
-  }
-};
-
-jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
-  var results = spec.results();
-  var status = results.passed() ? 'passed' : 'failed';
-  if (results.skipped) {
-    status = 'skipped';
-  }
-  var specDiv = this.createDom('div', { className: 'spec '  + status },
-      this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"),
-      this.createDom('a', {
-        className: 'description',
-        href: '?spec=' + encodeURIComponent(spec.getFullName()),
-        title: spec.getFullName()
-      }, spec.description));
-
-
-  var resultItems = results.getItems();
-  var messagesDiv = this.createDom('div', { className: 'messages' });
-  for (var i = 0; i < resultItems.length; i++) {
-    var result = resultItems[i];
-
-    if (result.type == 'log') {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
-    } else if (result.type == 'expect' && result.passed && !result.passed()) {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
-
-      if (result.trace.stack) {
-        messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
-      }
-    }
-  }
-
-  if (messagesDiv.childNodes.length > 0) {
-    specDiv.appendChild(messagesDiv);
-  }
-
-  this.suiteDivs[spec.suite.id].appendChild(specDiv);
-};
-
-jasmine.TrivialReporter.prototype.log = function() {
-  var console = jasmine.getGlobal().console;
-  if (console && console.log) {
-    if (console.log.apply) {
-      console.log.apply(console, arguments);
-    } else {
-      console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
-    }
-  }
-};
-
-jasmine.TrivialReporter.prototype.getLocation = function() {
-  return this.document.location;
-};
-
-jasmine.TrivialReporter.prototype.specFilter = function(spec) {
-  var paramMap = {};
-  var params = this.getLocation().search.substring(1).split('&');
-  for (var i = 0; i < params.length; i++) {
-    var p = params[i].split('=');
-    paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
-  }
-
-  if (!paramMap.spec) {
-    return true;
-  }
-  return spec.getFullName().indexOf(paramMap.spec) === 0;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css b/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css
deleted file mode 100644
index 826e575..0000000
--- a/blackberry10/bin/templates/project/www/spec/lib/jasmine-1.2.0/jasmine.css
+++ /dev/null
@@ -1,81 +0,0 @@
-body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
-
-#HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
-#HTMLReporter a { text-decoration: none; }
-#HTMLReporter a:hover { text-decoration: underline; }
-#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
-#HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
-#HTMLReporter #jasmine_content { position: fixed; right: 100%; }
-#HTMLReporter .version { color: #aaaaaa; }
-#HTMLReporter .banner { margin-top: 14px; }
-#HTMLReporter .duration { color: #aaaaaa; float: right; }
-#HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
-#HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
-#HTMLReporter .symbolSummary li.passed { font-size: 14px; }
-#HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
-#HTMLReporter .symbolSummary li.failed { line-height: 9px; }
-#HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
-#HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
-#HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
-#HTMLReporter .symbolSummary li.pending { line-height: 11px; }
-#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
-#HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
-#HTMLReporter .runningAlert { background-color: #666666; }
-#HTMLReporter .skippedAlert { background-color: #aaaaaa; }
-#HTMLReporter .skippedAlert:first-child { background-color: #333333; }
-#HTMLReporter .skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; }
-#HTMLReporter .passingAlert { background-color: #a6b779; }
-#HTMLReporter .passingAlert:first-child { background-color: #5e7d00; }
-#HTMLReporter .failingAlert { background-color: #cf867e; }
-#HTMLReporter .failingAlert:first-child { background-color: #b03911; }
-#HTMLReporter .results { margin-top: 14px; }
-#HTMLReporter #details { display: none; }
-#HTMLReporter .resultsMenu, #HTMLReporter .resultsMenu a { background-color: #fff; color: #333333; }
-#HTMLReporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
-#HTMLReporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
-#HTMLReporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
-#HTMLReporter.showDetails .summary { display: none; }
-#HTMLReporter.showDetails #details { display: block; }
-#HTMLReporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
-#HTMLReporter .summary { margin-top: 14px; }
-#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary { margin-left: 14px; }
-#HTMLReporter .summary .specSummary.passed a { color: #5e7d00; }
-#HTMLReporter .summary .specSummary.failed a { color: #b03911; }
-#HTMLReporter .description + .suite { margin-top: 0; }
-#HTMLReporter .suite { margin-top: 14px; }
-#HTMLReporter .suite a { color: #333333; }
-#HTMLReporter #details .specDetail { margin-bottom: 28px; }
-#HTMLReporter #details .specDetail .description { display: block; color: white; background-color: #b03911; }
-#HTMLReporter .resultMessage { padding-top: 14px; color: #333333; }
-#HTMLReporter .resultMessage span.result { display: block; }
-#HTMLReporter .stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
-
-#TrivialReporter { padding: 8px 13px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow-y: scroll; background-color: white; font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; /*.resultMessage {*/ /*white-space: pre;*/ /*}*/ }
-#TrivialReporter a:visited, #TrivialReporter a { color: #303; }
-#TrivialReporter a:hover, #TrivialReporter a:active { color: blue; }
-#TrivialReporter .run_spec { float: right; padding-right: 5px; font-size: .8em; text-decoration: none; }
-#TrivialReporter .banner { color: #303; background-color: #fef; padding: 5px; }
-#TrivialReporter .logo { float: left; font-size: 1.1em; padding-left: 5px; }
-#TrivialReporter .logo .version { font-size: .6em; padding-left: 1em; }
-#TrivialReporter .runner.running { background-color: yellow; }
-#TrivialReporter .options { text-align: right; font-size: .8em; }
-#TrivialReporter .suite { border: 1px outset gray; margin: 5px 0; padding-left: 1em; }
-#TrivialReporter .suite .suite { margin: 5px; }
-#TrivialReporter .suite.passed { background-color: #dfd; }
-#TrivialReporter .suite.failed { background-color: #fdd; }
-#TrivialReporter .spec { margin: 5px; padding-left: 1em; clear: both; }
-#TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped { padding-bottom: 5px; border: 1px solid gray; }
-#TrivialReporter .spec.failed { background-color: #fbb; border-color: red; }
-#TrivialReporter .spec.passed { background-color: #bfb; border-color: green; }
-#TrivialReporter .spec.skipped { background-color: #bbb; }
-#TrivialReporter .messages { border-left: 1px dashed gray; padding-left: 1em; padding-right: 1em; }
-#TrivialReporter .passed { background-color: #cfc; display: none; }
-#TrivialReporter .failed { background-color: #fbb; }
-#TrivialReporter .skipped { color: #777; background-color: #eee; display: none; }
-#TrivialReporter .resultMessage span.result { display: block; line-height: 2em; color: black; }
-#TrivialReporter .resultMessage .mismatch { color: black; }
-#TrivialReporter .stackTrace { white-space: pre; font-size: .8em; margin-left: 10px; max-height: 5em; overflow: auto; border: 1px inset red; padding: 1em; background: #eef; }
-#TrivialReporter .finished-at { padding-left: 1em; font-size: .6em; }
-#TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped { display: block; }
-#TrivialReporter #jasmine_content { position: fixed; right: 100%; }
-#TrivialReporter .runner { border: 1px solid gray; display: block; margin: 5px 0; padding: 2px 0 2px 10px; }


[19/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/lib/prompt.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/lib/prompt.js b/blackberry10/node_modules/prompt/lib/prompt.js
deleted file mode 100644
index 250b047..0000000
--- a/blackberry10/node_modules/prompt/lib/prompt.js
+++ /dev/null
@@ -1,756 +0,0 @@
-/*
- * prompt.js: Simple prompt for prompting information from the command line
- *
- * (C) 2010, Nodejitsu Inc.
- *
- */
-
-var events = require('events'),
-    readline = require('readline'),
-    utile = require('utile'),
-    async = utile.async,
-    read = require('read'),
-    validate = require('revalidator').validate,
-    winston = require('winston');
-
-//
-// Monkey-punch readline.Interface to work-around
-// https://github.com/joyent/node/issues/3860
-//
-readline.Interface.prototype.setPrompt = function(prompt, length) {
-  this._prompt = prompt;
-  if (length) {
-    this._promptLength = length;
-  } else {
-    var lines = prompt.split(/[\r\n]/);
-    var lastLine = lines[lines.length - 1];
-    this._promptLength = lastLine.replace(/\u001b\[(\d+(;\d+)*)?m/g, '').length;
-  }
-};
-
-//
-// Expose version using `pkginfo`
-//
-require('pkginfo')(module, 'version');
-
-var stdin, stdout, history = [];
-var prompt = module.exports = Object.create(events.EventEmitter.prototype);
-var logger = prompt.logger = new winston.Logger({
-  transports: [new (winston.transports.Console)()]
-});
-
-prompt.started    = false;
-prompt.paused     = false;
-prompt.allowEmpty = false;
-prompt.message    = 'prompt';
-prompt.delimiter  = ': ';
-prompt.colors     = true;
-
-//
-// Create an empty object for the properties
-// known to `prompt`
-//
-prompt.properties = {};
-
-//
-// Setup the default winston logger to use
-// the `cli` levels and colors.
-//
-logger.cli();
-
-//
-// ### function start (options)
-// #### @options {Object} **Optional** Options to consume by prompt
-// Starts the prompt by listening to the appropriate events on `options.stdin`
-// and `options.stdout`. If no streams are supplied, then `process.stdin`
-// and `process.stdout` are used, respectively.
-//
-prompt.start = function (options) {
-  if (prompt.started) {
-    return;
-  }
-
-  options = options        || {};
-  stdin   = options.stdin  || process.stdin;
-  stdout  = options.stdout || process.stdout;
-
-  //
-  // By default: Remember the last `10` prompt property /
-  // answer pairs and don't allow empty responses globally.
-  //
-  prompt.memory     = options.memory     || 10;
-  prompt.allowEmpty = options.allowEmpty || false;
-  prompt.message    = options.message    || prompt.message;
-  prompt.delimiter  = options.delimiter  || prompt.delimiter;
-  prompt.colors     = options.colors     || prompt.colors;
-
-  if (process.platform !== 'win32') {
-    // windows falls apart trying to deal with SIGINT
-    process.on('SIGINT', function () {
-      stdout.write('\n');
-      process.exit(1);
-    });
-  }
-
-  prompt.emit('start');
-  prompt.started = true;
-  return prompt;
-};
-
-//
-// ### function pause ()
-// Pauses input coming in from stdin
-//
-prompt.pause = function () {
-  if (!prompt.started || prompt.paused) {
-    return;
-  }
-
-  stdin.pause();
-  prompt.emit('pause');
-  prompt.paused = true;
-  return prompt;
-};
-
-//
-// ### function resume ()
-// Resumes input coming in from stdin
-//
-prompt.resume = function () {
-  if (!prompt.started || !prompt.paused) {
-    return;
-  }
-
-  stdin.resume();
-  prompt.emit('resume');
-  prompt.paused = false;
-  return prompt;
-};
-
-//
-// ### function history (search)
-// #### @search {Number|string} Index or property name to find.
-// Returns the `property:value` pair from within the prompts
-// `history` array.
-//
-prompt.history = function (search) {
-  if (typeof search === 'number') {
-    return history[search] || {};
-  }
-
-  var names = history.map(function (pair) {
-    return typeof pair.property === 'string'
-      ? pair.property
-      : pair.property.name;
-  });
-
-  if (~names.indexOf(search)) {
-    return null;
-  }
-
-  return history.filter(function (pair) {
-    return typeof pair.property === 'string'
-      ? pair.property === search
-      : pair.property.name === search;
-  })[0];
-};
-
-//
-// ### function get (schema, callback)
-// #### @schema {Array|Object|string} Set of variables to get input for.
-// #### @callback {function} Continuation to pass control to when complete.
-// Gets input from the user via stdin for the specified message(s) `msg`.
-//
-prompt.get = function (schema, callback) {
-  //
-  // Transforms a full JSON-schema into an array describing path and sub-schemas.
-  // Used for iteration purposes.
-  //
-  function untangle(schema, path) {
-    var results = [];
-    path = path || [];
-
-    if (schema.properties) {
-      //
-      // Iterate over the properties in the schema and use recursion
-      // to process sub-properties.
-      //
-      Object.keys(schema.properties).forEach(function (key) {
-        var obj = {};
-        obj[key] = schema.properties[key];
-
-        //
-        // Concat a sub-untangling to the results.
-        //
-        results = results.concat(untangle(obj[key], path.concat(key)));
-      });
-
-      // Return the results.
-      return results;
-    }
-
-    //
-    // This is a schema "leaf".
-    //
-    return {
-      path: path,
-      schema: schema
-    };
-  }
-
-  //
-  // Iterate over the values in the schema, represented as
-  // a legit single-property object subschemas. Accepts `schema`
-  // of the forms:
-  //
-  //    'prop-name'
-  //
-  //    ['string-name', { path: ['or-well-formed-subschema'], properties: ... }]
-  //
-  //    { path: ['or-well-formed-subschema'], properties: ... ] }
-  //
-  //    { properties: { 'schema-with-no-path' } }
-  //
-  // And transforms them all into
-  //
-  //    { path: ['path', 'to', 'property'], properties: { path: { to: ...} } }
-  //
-  function iterate(schema, get, done) {
-    var iterator = [],
-        result = {};
-
-    if (typeof schema === 'string') {
-      //
-      // We can iterate over a single string.
-      //
-      iterator.push({
-        path: [schema],
-        schema: prompt.properties[schema.toLowerCase()] || {}
-      });
-    }
-    else if (Array.isArray(schema)) {
-      //
-      // An array of strings and/or single-prop schema and/or no-prop schema.
-      //
-      iterator = schema.map(function (element) {
-        if (typeof element === 'string') {
-          return {
-            path: [element],
-            schema: prompt.properties[element.toLowerCase()] || {}
-          };
-        }
-        else if (element.properties) {
-          return {
-            path: [Object.keys(element.properties)[0]],
-            schema: element.properties[Object.keys(element.properties)[0]]
-          };
-        }
-        else if (element.path && element.schema) {
-          return element;
-        }
-        else {
-          return {
-            path: [element.name || 'question'],
-            schema: element
-          };
-        }
-      });
-    }
-    else if (schema.properties) {
-      //
-      // Or a complete schema `untangle` it for use.
-      //
-      iterator = untangle(schema);
-    }
-    else {
-      //
-      // Or a partial schema and path.
-      // TODO: Evaluate need for this option.
-      //
-      iterator = [{
-        schema: schema.schema ? schema.schema : schema,
-        path: schema.path || [schema.name || 'question']
-      }];
-    }
-
-    //
-    // Now, iterate and assemble the result.
-    //
-    async.forEachSeries(iterator, function (branch, next) {
-      get(branch, function assembler(err, line) {
-        if (err) {
-          return next(err);
-        }
-
-        function build(path, line) {
-          var obj = {};
-          if (path.length) {
-            obj[path[0]] = build(path.slice(1), line);
-            return obj;
-          }
-
-          return line;
-        }
-
-        function attach(obj, attr) {
-          var keys;
-          if (typeof attr !== 'object' || attr instanceof Array) {
-            return attr;
-          }
-
-          keys = Object.keys(attr);
-          if (keys.length) {
-            if (!obj[keys[0]]) {
-              obj[keys[0]] = {};
-            }
-            obj[keys[0]] = attach(obj[keys[0]], attr[keys[0]]);
-          }
-
-          return obj;
-        }
-
-        result = attach(result, build(branch.path, line));
-        next();
-      });
-    }, function (err) {
-      return err ? done(err) : done(null, result);
-    });
-  }
-
-  iterate(schema, function get(target, next) {
-    prompt.getInput(target, function (err, line) {
-      return err ? next(err) : next(null, line);
-    });
-  }, callback);
-
-  return prompt;
-};
-
-//
-// ### function confirm (msg, callback)
-// #### @msg {Array|Object|string} set of message to confirm
-// #### @callback {function} Continuation to pass control to when complete.
-// Confirms a single or series of messages by prompting the user for a Y/N response.
-// Returns `true` if ALL messages are answered in the affirmative, otherwise `false`
-//
-// `msg` can be a string, or object (or array of strings/objects).
-// An object may have the following properties:
-//
-//    {
-//      description: 'yes/no' // message to prompt user
-//      pattern: /^[yntf]{1}/i // optional - regex defining acceptable responses
-//      yes: /^[yt]{1}/i // optional - regex defining `affirmative` responses
-//      message: 'yes/no' // optional - message to display for invalid responses
-//    }
-//
-prompt.confirm = function (/* msg, options, callback */) {
-  var args     = Array.prototype.slice.call(arguments),
-      msg      = args.shift(),
-      callback = args.pop(),
-      opts     = args.shift(),
-      vars     = !Array.isArray(msg) ? [msg] : msg,
-      RX_Y     = /^[yt]{1}/i,
-      RX_YN    = /^[yntf]{1}/i;
-
-  function confirm(target, next) {
-    var yes = target.yes || RX_Y,
-      options = utile.mixin({
-        description: typeof target === 'string' ? target : target.description||'yes/no',
-        pattern: target.pattern || RX_YN,
-        name: 'confirm',
-        message: target.message || 'yes/no'
-      }, opts || {});
-
-
-    prompt.get([options], function (err, result) {
-      next(err ? false : yes.test(result[options.name]));
-    });
-  }
-
-  async.rejectSeries(vars, confirm, function(result) {
-    callback(null, result.length===0);
-  });
-};
-
-
-// Variables needed outside of getInput for multiline arrays.
-var tmp = [];
-
-
-// ### function getInput (prop, callback)
-// #### @prop {Object|string} Variable to get input for.
-// #### @callback {function} Continuation to pass control to when complete.
-// Gets input from the user via stdin for the specified message `msg`.
-//
-prompt.getInput = function (prop, callback) {
-  var schema = prop.schema || prop,
-      propName = prop.path && prop.path.join(':') || prop,
-      storedSchema = prompt.properties[propName.toLowerCase()],
-      delim = prompt.delimiter,
-      defaultLine,
-      against,
-      hidden,
-      length,
-      valid,
-      name,
-      raw,
-      msg;
-
-  //
-  // If there is a stored schema for `propName` in `propmpt.properties`
-  // then use it.
-  //
-  if (schema instanceof Object && !Object.keys(schema).length &&
-    typeof storedSchema !== 'undefined') {
-    schema = storedSchema;
-  }
-
-  //
-  // Build a proper validation schema if we just have a string
-  // and no `storedSchema`.
-  //
-  if (typeof prop === 'string' && !storedSchema) {
-    schema = {};
-  }
-
-  schema = convert(schema);
-  defaultLine = schema.default;
-  name = prop.description || schema.description || propName;
-  raw = prompt.colors
-    ? [prompt.message, delim + name.grey, delim.grey]
-    : [prompt.message, delim + name, delim];
-
-  prop = {
-    schema: schema,
-    path: propName.split(':')
-  };
-
-  //
-  // If the schema has no `properties` value then set
-  // it to an object containing the current schema
-  // for `propName`.
-  //
-  if (!schema.properties) {
-    schema = (function () {
-      var obj = { properties: {} };
-      obj.properties[propName] = schema;
-      return obj;
-    })();
-  }
-
-  //
-  // Handle overrides here.
-  // TODO: Make overrides nestable
-  //
-  if (prompt.override && prompt.override[propName]) {
-    if (prompt._performValidation(name, prop, prompt.override, schema, -1, callback)) {
-      return callback(null, prompt.override[propName]);
-    }
-
-    delete prompt.override[propName];
-  }
-
-  var type = (schema.properties && schema.properties[name] &&
-              schema.properties[name].type || '').toLowerCase().trim(),
-      wait = type === 'array';
-
-  if (type === 'array') {
-    length = prop.schema.maxItems;
-    if (length) {
-      msg = (tmp.length + 1).toString() + '/' + length.toString();
-    }
-    else {
-      msg = (tmp.length + 1).toString();
-    }
-    msg += delim;
-    raw.push(prompt.colors ? msg.grey : msg);
-  }
-
-  //
-  // Calculate the raw length and colorize the prompt
-  //
-  length = raw.join('').length;
-  raw[0] = raw[0];
-  msg = raw.join('');
-
-  if (schema.help) {
-    schema.help.forEach(function (line) {
-      logger.help(line);
-    });
-  }
-
-  //
-  // Emit a "prompting" event
-  //
-  prompt.emit('prompt', prop);
-
-  //
-  // If there is no default line, set it to an empty string
-  //
-  if(typeof defaultLine === 'undefined') {
-    defaultLine = '';
-  }
-
-  //
-  // set to string for readline ( will not accept Numbers )
-  //
-  defaultLine = defaultLine.toString();
-
-  //
-  // Make the actual read
-  //
-  read({
-    prompt: msg,
-    silent: prop.schema && prop.schema.hidden,
-    default: defaultLine,
-    input: stdin,
-    output: stdout
-  }, function (err, line) {
-    if (err && wait === false) {
-      return callback(err);
-    }
-
-    var against = {},
-        numericInput,
-        isValid;
-
-    if (line !== '') {
-
-      if (schema.properties[name]) {
-        var type = (schema.properties[name].type || '').toLowerCase().trim() || undefined;
-
-        //
-        // Attempt to parse input as a float if the schema expects a number.
-        //
-        if (type == 'number') {
-          numericInput = parseFloat(line, 10);
-          if (!isNaN(numericInput)) {
-            line = numericInput;
-          }
-        }
-
-        //
-        // Attempt to parse input as a boolean if the schema expects a boolean
-        //
-        if (type == 'boolean') {
-          if(line === "true") {
-            line = true;
-          }
-          if(line === "false") {
-            line = false;
-          }
-        }
-
-        //
-        // If the type is an array, wait for the end. Fixes #54
-        //
-        if (type == 'array') {
-          var length = prop.schema.maxItems;
-          if (err) {
-            if (err.message == 'canceled') {
-              wait = false;
-              stdout.write('\n');
-            }
-          }
-          else {
-            if (length) {
-              if (tmp.length + 1 < length) {
-                isValid = false;
-                wait = true;
-              }
-              else {
-                isValid = true;
-                wait = false;
-              }
-            }
-            else {
-              isValid = false;
-              wait = true;
-            }
-            tmp.push(line);
-          }
-          line = tmp;
-        }
-      }
-
-      against[propName] = line;
-    }
-
-    if (prop && prop.schema.before) {
-      line = prop.schema.before(line);
-    }
-
-    // Validate
-    if (isValid === undefined) isValid = prompt._performValidation(name, prop, against, schema, line, callback);
-
-    if (!isValid) {
-      return prompt.getInput(prop, callback);
-    }
-
-    //
-    // Log the resulting line, append this `property:value`
-    // pair to the history for `prompt` and respond to
-    // the callback.
-    //
-    logger.input(line.yellow);
-    prompt._remember(propName, line);
-    callback(null, line);
-
-    // Make sure `tmp` is emptied
-    tmp = [];
-  });
-};
-
-//
-// ### function performValidation (name, prop, against, schema, line, callback)
-// #### @name {Object} Variable name
-// #### @prop {Object|string} Variable to get input for.
-// #### @against {Object} Input
-// #### @schema {Object} Validation schema
-// #### @line {String|Boolean} Input line
-// #### @callback {function} Continuation to pass control to when complete.
-// Perfoms user input validation, print errors if needed and returns value according to validation
-//
-prompt._performValidation = function (name, prop, against, schema, line, callback) {
-  var numericInput, valid, msg;
-
-  try {
-    valid = validate(against, schema);
-  }
-  catch (err) {
-    return (line !== -1) ? callback(err) : false;
-  }
-
-  if (!valid.valid) {
-    msg = line !== -1 ? 'Invalid input for ' : 'Invalid command-line input for ';
-
-    if (prompt.colors) {
-      logger.error(msg + name.grey);
-    }
-    else {
-      logger.error(msg + name);
-    }
-
-    if (prop.schema.message) {
-      logger.error(prop.schema.message);
-    }
-
-    prompt.emit('invalid', prop, line);
-  }
-
-  return valid.valid;
-};
-
-//
-// ### function addProperties (obj, properties, callback)
-// #### @obj {Object} Object to add properties to
-// #### @properties {Array} List of properties to get values for
-// #### @callback {function} Continuation to pass control to when complete.
-// Prompts the user for values each of the `properties` if `obj` does not already
-// have a value for the property. Responds with the modified object.
-//
-prompt.addProperties = function (obj, properties, callback) {
-  properties = properties.filter(function (prop) {
-    return typeof obj[prop] === 'undefined';
-  });
-
-  if (properties.length === 0) {
-    return callback(obj);
-  }
-
-  prompt.get(properties, function (err, results) {
-    if (err) {
-      return callback(err);
-    }
-    else if (!results) {
-      return callback(null, obj);
-    }
-
-    function putNested (obj, path, value) {
-      var last = obj, key;
-
-      while (path.length > 1) {
-        key = path.shift();
-        if (!last[key]) {
-          last[key] = {};
-        }
-
-        last = last[key];
-      }
-
-      last[path.shift()] = value;
-    }
-
-    Object.keys(results).forEach(function (key) {
-      putNested(obj, key.split('.'), results[key]);
-    });
-
-    callback(null, obj);
-  });
-
-  return prompt;
-};
-
-//
-// ### @private function _remember (property, value)
-// #### @property {Object|string} Property that the value is in response to.
-// #### @value {string} User input captured by `prompt`.
-// Prepends the `property:value` pair into the private `history` Array
-// for `prompt` so that it can be accessed later.
-//
-prompt._remember = function (property, value) {
-  history.unshift({
-    property: property,
-    value: value
-  });
-
-  //
-  // If the length of the `history` Array
-  // has exceeded the specified length to remember,
-  // `prompt.memory`, truncate it.
-  //
-  if (history.length > prompt.memory) {
-    history.splice(prompt.memory, history.length - prompt.memory);
-  }
-};
-
-//
-// ### @private function convert (schema)
-// #### @schema {Object} Schema for a property
-// Converts the schema into new format if it is in old format
-//
-function convert(schema) {
-  var newProps = Object.keys(validate.messages),
-      newSchema = false,
-      key;
-
-  newProps = newProps.concat(['description', 'dependencies']);
-
-  for (key in schema) {
-    if (newProps.indexOf(key) > 0) {
-      newSchema = true;
-      break;
-    }
-  }
-
-  if (!newSchema || schema.validator || schema.warning || typeof schema.empty !== 'undefined') {
-    schema.description = schema.message;
-    schema.message = schema.warning;
-
-    if (typeof schema.validator === 'function') {
-      schema.conform = schema.validator;
-    } else {
-      schema.pattern = schema.validator;
-    }
-
-    if (typeof schema.empty !== 'undefined') {
-      schema.required = !(schema.empty);
-    }
-
-    delete schema.warning;
-    delete schema.validator;
-    delete schema.empty;
-  }
-
-  return schema;
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/.npmignore b/blackberry10/node_modules/prompt/node_modules/pkginfo/.npmignore
deleted file mode 100644
index 9303c34..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/LICENSE b/blackberry10/node_modules/prompt/node_modules/pkginfo/LICENSE
deleted file mode 100644
index ed4a4e7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Charlie Robbins.
-
-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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/README.md b/blackberry10/node_modules/prompt/node_modules/pkginfo/README.md
deleted file mode 100644
index 332704e..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# node-pkginfo
-
-An easy way to expose properties on a module from a package.json
-
-## Installation
-
-### Installing npm (node package manager)
-```
-  curl http://npmjs.org/install.sh | sh
-```
-
-### Installing pkginfo
-```
-  [sudo] npm install pkginfo
-```
-
-## Motivation
-How often when writing node.js modules have you written the following line(s) of code? 
-
-* Hard code your version string into your code
-
-``` js
-  exports.version = '0.1.0';
-```
-
-* Programmatically expose the version from the package.json
-
-``` js
-  exports.version = JSON.parse(fs.readFileSync('/path/to/package.json', 'utf8')).version;
-```
-
-In other words, how often have you wanted to expose basic information from your package.json onto your module programmatically? **WELL NOW YOU CAN!**
-
-## Usage
-
-Using `pkginfo` is idiot-proof, just require and invoke it. 
-
-``` js
-  var pkginfo = require('pkginfo')(module);
-  
-  console.dir(module.exports);
-```
-
-By invoking the `pkginfo` module all of the properties in your `package.json` file will be automatically exposed on the callee module (i.e. the parent module of `pkginfo`). 
-
-Here's a sample of the output:
-
-```
-  { name: 'simple-app',
-    description: 'A test fixture for pkginfo',
-    version: '0.1.0',
-    author: 'Charlie Robbins <ch...@gmail.com>',
-    keywords: [ 'test', 'fixture' ],
-    main: './index.js',
-    scripts: { test: 'vows test/*-test.js --spec' },
-    engines: { node: '>= 0.4.0' } }
-```
-
-### Expose specific properties
-If you don't want to expose **all** properties on from your `package.json` on your module then simple pass those properties to the `pkginfo` function:
-
-``` js
-  var pkginfo = require('pkginfo')(module, 'version', 'author');
-  
-  console.dir(module.exports);
-```
-
-```
-  { version: '0.1.0',
-    author: 'Charlie Robbins <ch...@gmail.com>' }
-```
-
-If you're looking for further usage see the [examples][0] included in this repository. 
-
-## Run Tests
-Tests are written in [vows][1] and give complete coverage of all APIs.
-
-```
-  vows test/*-test.js --spec
-```
-
-[0]: https://github.com/indexzero/node-pkginfo/tree/master/examples
-[1]: http://vowsjs.org
-
-#### Author: [Charlie Robbins](http://nodejitsu.com)
-#### License: MIT
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/docco.css
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/docco.css b/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/docco.css
deleted file mode 100644
index bd54134..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/docco.css
+++ /dev/null
@@ -1,194 +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;
-}
-h4, h5, h6 {
-  color: #333;
-  margin: 6px 0 6px 0;
-  font-size: 13px;
-}
-  h2, h3 {
-    margin-bottom: 0;
-    color: #000;
-  }
-    h1 {
-      margin-top: 40px;
-      margin-bottom: 15px;
-      color: #000;
-    }
-#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: 450px;
-    min-width: 450px;
-    min-height: 5px;
-    padding: 10px 25px 1px 50px;
-    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;
-    }
-    .pilwrap {
-      position: relative;
-    }
-      .pilcrow {
-        font: 12px Arial;
-        text-decoration: none;
-        color: #454545;
-        position: absolute;
-        top: 3px; left: -20px;
-        padding: 1px 2px;
-        opacity: 0;
-        -webkit-transition: opacity 0.2s linear;
-      }
-        td.docs:hover .pilcrow {
-          opacity: 1;
-        }
-  td.code, th.code {
-    padding: 14px 15px 16px 25px;
-    width: 100%;
-    vertical-align: top;
-    background: #f5f5ff;
-    border-left: 1px solid #e5e5ee;
-  }
-    pre, tt, code {
-      font-size: 12px; line-height: 18px;
-      font-family: Menlo, 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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/pkginfo.html
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/pkginfo.html b/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/pkginfo.html
deleted file mode 100644
index bf615fa..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/docs/pkginfo.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>pkginfo.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               pkginfo.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span class="cm">/*</span>
-<span class="cm"> * pkginfo.js: Top-level include for the pkginfo module</span>
-<span class="cm"> *</span>
-<span class="cm"> * (C) 2011, Charlie Robbins</span>
-<span class="cm"> *</span>
-<span class="cm"> */</span>
- 
-<span class="kd">var</span> <span class="nx">fs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;fs&#39;</span><span class="p">),</span>
-    <span class="nx">path</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <h3>function pkginfo ([options, 'property', 'property' ..])</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@options {Object|Array|string} <strong>Optional</strong> Options used when exposing properties.</h4>
-
-<h4>@arguments {string...} <strong>Optional</strong> Specified properties to expose.</h4>
-
-<p>Exposes properties from the package.json file for the parent module on 
-it's exports. Valid usage:</p>
-
-<p><code>require('pkginfo')()</code></p>
-
-<p><code>require('pkginfo')('version', 'author');</code></p>
-
-<p><code>require('pkginfo')(['version', 'author']);</code></p>
-
-<p><code>require('pkginfo')({ include: ['version', 'author'] });</code></p>             </td>             <td class="code">               <div class="highlight"><pre><span class="kd">var</span> <span class="nx">pkginfo</span> <span class="o">=</span> <span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-  <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="p">[].</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">,</span> <span class="mi">2</span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">arg</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="k">typeof</span> <span class="nx">arg</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">;</span>
-  <span class="p">});</span>
-  </pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p><strong>Parse variable arguments</strong></p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="k">if</span> <span class="p">(</span><span class="nb">Array</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">options</span><span class="p">))</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>If the options passed in is an Array assume that
-it is the Array of properties to expose from the
-on the package.json file on the parent module.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="nx">options</span> <span class="p">};</span>
-  <span class="p">}</span>
-  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">options</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Otherwise if the first argument is a string, then
-assume that it is the first property to expose from
-the package.json file on the parent module.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="p">[</span><span class="nx">options</span><span class="p">]</span> <span class="p">};</span>
-  <span class="p">}</span>
-  </pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p><strong>Setup default options</strong></p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{</span> <span class="nx">include</span><span class="o">:</span> <span class="p">[]</span> <span class="p">};</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">args</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <p>If additional string arguments have been passed in
-then add them to the properties to expose on the 
-parent module. </p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">options</span><span class="p">.</span><span class="nx">include</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">args</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="kd">var</span> <span class="nx">pkg</span> <span class="o">=</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">read</span><span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">options</span><span class="p">.</span><span class="nx">dir</span><span class="p">).</span><span class="kr">package</span><span class="p">;</span>
-  <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">pkg</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="o">!~</span><span class="nx">options</span><span class="p">.</span><span class="nx">include</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
-      <span class="k">return</span><span class="p">;</span>
-    <span class="p">}</span>
-    
-    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">pmodule</span><span class="p">.</span><span class="nx">exports</span><span class="p">[</span><span class="nx">key</span><span class="p">])</span> <span class="p">{</span>
-      <span class="nx">pmodule</span><span class="p">.</span><span class="nx">exports</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">pkg</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span>
-    <span class="p">}</span>
-  <span class="p">});</span>
-  
-  <span class="k">return</span> <span class="nx">pkginfo</span><span class="p">;</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <h3>function find (dir)</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@dir {string} <strong>Optional</strong> Directory to start search from.</h4>
-
-<p>Searches up the directory tree from <code>dir</code> until it finds a directory
-which contains a <code>package.json</code> file. </p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">)</span> <span class="p">{</span>
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">dir</span> <span class="o">||</span> <span class="nx">pmodule</span><span class="p">.</span><span class="nx">filename</span><span class="p">;</span>
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">path</span><span class="p">.</span><span class="nx">dirname</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span> 
-  
-  <span class="kd">var</span> <span class="nx">files</span> <span class="o">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">readdirSync</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="o">~</span><span class="nx">files</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;package.json&#39;</span><span class="p">))</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="nx">path</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="nx">dir</span><span class="p">,</span> <span class="s1">&#39;package.json&#39;</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="k">if</span> <span class="p">(</span><span class="nx">dir</span> <span class="o">===</span> <span class="s1">&#39;/&#39;</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Could not find package.json up from: &#39;</span> <span class="o">+</span> <span class="nx">dir</span><span class="p">);</span>
-  <span class="p">}</span>
-  
-  <span class="k">return</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="nx">dir</span><span class="p">);</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <h3>function read (pmodule, dir)</h3>
-
-<h4>@pmodule {Module} Parent module to read from.</h4>
-
-<h4>@dir {string} <strong>Optional</strong> Directory to start search from.</h4>
-
-<p>Searches up the directory tree from <code>dir</code> until it finds a directory
-which contains a <code>package.json</code> file and returns the package information.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">.</span><span class="nx">read</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">)</span> <span class="p">{</span> 
-  <span class="nx">dir</span> <span class="o">=</span> <span class="nx">pkginfo</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="nx">pmodule</span><span class="p">,</span> <span class="nx">dir</span><span class="p">);</span>
-  
-  <span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">readFileSync</span><span class="p">(</span><span class="nx">dir</span><span class="p">).</span><span class="nx">toString</span><span class="p">();</span>
-      
-  <span class="k">return</span> <span class="p">{</span>
-    <span class="nx">dir</span><span class="o">:</span> <span class="nx">dir</span><span class="p">,</span> 
-    <span class="kr">package</span><span class="o">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
-  <span class="p">};</span>
-<span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>Call <code>pkginfo</code> on this module and expose version.</p>             </td>             <td class="code">               <div class="highlight"><pre><span class="nx">pkginfo</span><span class="p">(</span><span class="nx">module</span><span class="p">,</span> <span class="p">{</span>
-  <span class="nx">dir</span><span class="o">:</span> <span class="nx">__dirname</span><span class="p">,</span>
-  <span class="nx">include</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">],</span>
-  <span class="nx">target</span><span class="o">:</span> <span class="nx">pkginfo</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/all-properties.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/all-properties.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/all-properties.js
deleted file mode 100644
index fd1d831..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/all-properties.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * all-properties.js: Sample of including all properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
-
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module);
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/array-argument.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/array-argument.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/array-argument.js
deleted file mode 100644
index b1b6848..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/array-argument.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * array-argument.js: Sample of including specific properties from a package.json file
- *                    using Array argument syntax.
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, ['version', 'author']);
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/multiple-properties.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/multiple-properties.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/multiple-properties.js
deleted file mode 100644
index b4b5fd6..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/multiple-properties.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * multiple-properties.js: Sample of including multiple properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, 'version', 'author');
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/object-argument.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/object-argument.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/object-argument.js
deleted file mode 100644
index 28420c8..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/object-argument.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * object-argument.js: Sample of including specific properties from a package.json file
- *                     using Object argument syntax.
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, {
-      include: ['version', 'author']
-    });
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/package.json b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/package.json
deleted file mode 100644
index 1f2f01c..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "name": "simple-app",
-  "description": "A test fixture for pkginfo",
-  "version": "0.1.0",
-  "author": "Charlie Robbins <ch...@gmail.com>",
-  "keywords": ["test", "fixture"],
-  "main": "./index.js",
-  "scripts": { "test": "vows test/*-test.js --spec" },
-  "engines": { "node": ">= 0.4.0" }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/single-property.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/single-property.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/single-property.js
deleted file mode 100644
index 4f44561..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/single-property.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * single-property.js: Sample of including a single specific properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    pkginfo = require('../lib/pkginfo')(module, 'version');
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/subdir/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/subdir/package.json b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/subdir/package.json
deleted file mode 100644
index aa85410..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/subdir/package.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "name": "simple-app-subdir",
-  "description": "A test fixture for pkginfo",
-  "version": "0.1.0",
-  "author": "Charlie Robbins <ch...@gmail.com>",
-  "keywords": ["test", "fixture"],
-  "main": "./index.js",
-  "scripts": { "test": "vows test/*-test.js --spec" },
-  "engines": { "node": ">= 0.4.0" },
-  "subdironly": "true"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/target-dir.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/target-dir.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/target-dir.js
deleted file mode 100644
index 88770e6..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/examples/target-dir.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * multiple-properties.js: Sample of including multiple properties from a package.json file
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var util = require('util'),
-    path = require('path'),
-    pkginfo = require('../lib/pkginfo')(module, { dir: path.resolve(__dirname, 'subdir' )});
-
-exports.someFunction = function () {
-  console.log('some of your custom logic here');
-};
-
-console.log('Inspecting module:');
-console.dir(module.exports);
-
-console.log('\nAll exports exposed:');
-console.error(Object.keys(module.exports));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/lib/pkginfo.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/lib/pkginfo.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/lib/pkginfo.js
deleted file mode 100644
index c5dc020..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/lib/pkginfo.js
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * pkginfo.js: Top-level include for the pkginfo module
- *
- * (C) 2011, Charlie Robbins
- *
- */
- 
-var fs = require('fs'),
-    path = require('path');
-
-//
-// ### function pkginfo ([options, 'property', 'property' ..])
-// #### @pmodule {Module} Parent module to read from.
-// #### @options {Object|Array|string} **Optional** Options used when exposing properties.
-// #### @arguments {string...} **Optional** Specified properties to expose.
-// Exposes properties from the package.json file for the parent module on 
-// it's exports. Valid usage:
-//
-// `require('pkginfo')()`
-//
-// `require('pkginfo')('version', 'author');`
-//
-// `require('pkginfo')(['version', 'author']);`
-//
-// `require('pkginfo')({ include: ['version', 'author'] });`
-//
-var pkginfo = module.exports = function (pmodule, options) {
-  var args = [].slice.call(arguments, 2).filter(function (arg) {
-    return typeof arg === 'string';
-  });
-  
-  //
-  // **Parse variable arguments**
-  //
-  if (Array.isArray(options)) {
-    //
-    // If the options passed in is an Array assume that
-    // it is the Array of properties to expose from the
-    // on the package.json file on the parent module.
-    //
-    options = { include: options };
-  }
-  else if (typeof options === 'string') {
-    //
-    // Otherwise if the first argument is a string, then
-    // assume that it is the first property to expose from
-    // the package.json file on the parent module.
-    //
-    options = { include: [options] };
-  }
-  
-  //
-  // **Setup default options**
-  //
-  options = options || {};
-  
-  // ensure that includes have been defined
-  options.include = options.include || [];
-  
-  if (args.length > 0) {
-    //
-    // If additional string arguments have been passed in
-    // then add them to the properties to expose on the 
-    // parent module. 
-    //
-    options.include = options.include.concat(args);
-  }
-  
-  var pkg = pkginfo.read(pmodule, options.dir).package;
-  Object.keys(pkg).forEach(function (key) {
-    if (options.include.length > 0 && !~options.include.indexOf(key)) {
-      return;
-    }
-    
-    if (!pmodule.exports[key]) {
-      pmodule.exports[key] = pkg[key];
-    }
-  });
-  
-  return pkginfo;
-};
-
-//
-// ### function find (dir)
-// #### @pmodule {Module} Parent module to read from.
-// #### @dir {string} **Optional** Directory to start search from.
-// Searches up the directory tree from `dir` until it finds a directory
-// which contains a `package.json` file. 
-//
-pkginfo.find = function (pmodule, dir) {
-  if (! dir) {
-    dir = path.dirname(pmodule.filename);
-  }
-  
-  var files = fs.readdirSync(dir);
-  
-  if (~files.indexOf('package.json')) {
-    return path.join(dir, 'package.json');
-  }
-  
-  if (dir === '/') {
-    throw new Error('Could not find package.json up from: ' + dir);
-  }
-  else if (!dir || dir === '.') {
-    throw new Error('Cannot find package.json from unspecified directory');
-  }
-  
-  return pkginfo.find(pmodule, path.dirname(dir));
-};
-
-//
-// ### function read (pmodule, dir)
-// #### @pmodule {Module} Parent module to read from.
-// #### @dir {string} **Optional** Directory to start search from.
-// Searches up the directory tree from `dir` until it finds a directory
-// which contains a `package.json` file and returns the package information.
-//
-pkginfo.read = function (pmodule, dir) { 
-  dir = pkginfo.find(pmodule, dir);
-  
-  var data = fs.readFileSync(dir).toString();
-      
-  return {
-    dir: dir, 
-    package: JSON.parse(data)
-  };
-};
-
-//
-// Call `pkginfo` on this module and expose version.
-//
-pkginfo(module, {
-  dir: __dirname,
-  include: ['version'],
-  target: pkginfo
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/package.json b/blackberry10/node_modules/prompt/node_modules/pkginfo/package.json
deleted file mode 100644
index 173f799..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "name": "pkginfo",
-  "version": "0.3.0",
-  "description": "An easy way to expose properties on a module from a package.json",
-  "author": {
-    "name": "Charlie Robbins",
-    "email": "charlie.robbins@gmail.com"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/indexzero/node-pkginfo.git"
-  },
-  "keywords": [
-    "info",
-    "tools",
-    "package.json"
-  ],
-  "devDependencies": {
-    "vows": "0.7.x"
-  },
-  "main": "./lib/pkginfo",
-  "scripts": {
-    "test": "vows test/*-test.js --spec"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
-  },
-  "readme": "# node-pkginfo\n\nAn easy way to expose properties on a module from a package.json\n\n## Installation\n\n### Installing npm (node package manager)\n```\n  curl http://npmjs.org/install.sh | sh\n```\n\n### Installing pkginfo\n```\n  [sudo] npm install pkginfo\n```\n\n## Motivation\nHow often when writing node.js modules have you written the following line(s) of code? \n\n* Hard code your version string into your code\n\n``` js\n  exports.version = '0.1.0';\n```\n\n* Programmatically expose the version from the package.json\n\n``` js\n  exports.version = JSON.parse(fs.readFileSync('/path/to/package.json', 'utf8')).version;\n```\n\nIn other words, how often have you wanted to expose basic information from your package.json onto your module programmatically? **WELL NOW YOU CAN!**\n\n## Usage\n\nUsing `pkginfo` is idiot-proof, just require and invoke it. \n\n``` js\n  var pkginfo = require('pkginfo')(module);\n  \n  console.dir(module.exports);\n```\n\nBy invoking the `pkgin
 fo` module all of the properties in your `package.json` file will be automatically exposed on the callee module (i.e. the parent module of `pkginfo`). \n\nHere's a sample of the output:\n\n```\n  { name: 'simple-app',\n    description: 'A test fixture for pkginfo',\n    version: '0.1.0',\n    author: 'Charlie Robbins <ch...@gmail.com>',\n    keywords: [ 'test', 'fixture' ],\n    main: './index.js',\n    scripts: { test: 'vows test/*-test.js --spec' },\n    engines: { node: '>= 0.4.0' } }\n```\n\n### Expose specific properties\nIf you don't want to expose **all** properties on from your `package.json` on your module then simple pass those properties to the `pkginfo` function:\n\n``` js\n  var pkginfo = require('pkginfo')(module, 'version', 'author');\n  \n  console.dir(module.exports);\n```\n\n```\n  { version: '0.1.0',\n    author: 'Charlie Robbins <ch...@gmail.com>' }\n```\n\nIf you're looking for further usage see the [examples][0] included in this repository. 
 \n\n## Run Tests\nTests are written in [vows][1] and give complete coverage of all APIs.\n\n```\n  vows test/*-test.js --spec\n```\n\n[0]: https://github.com/indexzero/node-pkginfo/tree/master/examples\n[1]: http://vowsjs.org\n\n#### Author: [Charlie Robbins](http://nodejitsu.com)\n#### License: MIT",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/indexzero/node-pkginfo/issues"
-  },
-  "_id": "pkginfo@0.3.0",
-  "_from": "pkginfo@0.x.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/pkginfo/test/pkginfo-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/pkginfo/test/pkginfo-test.js b/blackberry10/node_modules/prompt/node_modules/pkginfo/test/pkginfo-test.js
deleted file mode 100644
index a59f077..0000000
--- a/blackberry10/node_modules/prompt/node_modules/pkginfo/test/pkginfo-test.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * pkginfo-test.js: Tests for the pkginfo module.
- *
- * (C) 2011, Charlie Robbins
- *
- */
-
-var assert = require('assert'),
-    exec = require('child_process').exec,
-    fs = require('fs'),
-    path = require('path'),
-    vows = require('vows'),
-    pkginfo = require('../lib/pkginfo');
-
-function assertProperties (source, target) {
-  assert.lengthOf(source, target.length + 1);
-  target.forEach(function (prop) {
-    assert.isTrue(!!~source.indexOf(prop));
-  });
-}
-
-function compareWithExample(targetPath) {
-  var examplePaths = ['package.json'];
-  
-  if (targetPath) {
-    examplePaths.unshift(targetPath);
-  }
-  
-  return function(exposed) {
-    var pkg = fs.readFileSync(path.join.apply(null, [__dirname, '..', 'examples'].concat(examplePaths))).toString(),
-        keys = Object.keys(JSON.parse(pkg));
-    
-    assertProperties(exposed, keys);
-  };
-}
-
-function testExposes (options) {
-  return {
-    topic: function () {
-      exec('node ' + path.join(__dirname, '..', 'examples', options.script), this.callback);
-    },
-    "should expose that property correctly": function (err, stdout, stderr) {
-      assert.isNull(err);
-      
-      var exposed = stderr.match(/'(\w+)'/ig).map(function (p) { 
-        return p.substring(1, p.length - 1);
-      });
-      
-      return !options.assert 
-        ? assertProperties(exposed, options.properties)
-        : options.assert(exposed);
-    }
-  }
-}
-
-vows.describe('pkginfo').addBatch({
-  "When using the pkginfo module": {
-    "and passed a single `string` argument": testExposes({
-      script: 'single-property.js',
-      properties: ['version']
-    }),
-    "and passed multiple `string` arguments": testExposes({
-      script: 'multiple-properties.js',
-      properties: ['version', 'author']
-    }),
-    "and passed an `object` argument": testExposes({
-      script: 'object-argument.js',
-      properties: ['version', 'author']
-    }),
-    "and passed an `array` argument": testExposes({
-      script: 'array-argument.js',
-      properties: ['version', 'author']
-    }),
-    "and read from a specified directory": testExposes({
-      script: 'target-dir.js',
-      assert: compareWithExample('subdir')
-    }),
-    "and passed no arguments": testExposes({
-      script: 'all-properties.js',
-      assert: compareWithExample()
-    })
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/.npmignore b/blackberry10/node_modules/prompt/node_modules/read/.npmignore
deleted file mode 100644
index 0db216b..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-npm-debug.log
-node_modules

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/LICENCE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/LICENCE b/blackberry10/node_modules/prompt/node_modules/read/LICENCE
deleted file mode 100644
index 74489e2..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/LICENCE
+++ /dev/null
@@ -1,25 +0,0 @@
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/README.md b/blackberry10/node_modules/prompt/node_modules/read/README.md
deleted file mode 100644
index 5967fad..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-## read
-
-For reading user input from stdin.
-
-Similar to the `readline` builtin's `question()` method, but with a
-few more features.
-
-## USAGE
-
-```javascript
-var read = require("read")
-read(options, callback)
-```
-
-The callback gets called with either the user input, or the default
-specified, or an error, as `callback(error, result, isDefault)`
-node style.
-
-## OPTIONS
-
-Every option is optional.
-
-* `prompt` What to write to stdout before reading input.
-* `silent` Don't echo the output as the user types it.
-* `replace` Replace silenced characters with the supplied character value.
-* `timeout` Number of ms to wait for user input before giving up.
-* `default` The default value if the user enters nothing.
-* `edit` Allow the user to edit the default value.
-* `terminal` Treat the output as a TTY, whether it is or not.
-* `input` Readable stream to get input data from. (default `process.stdin`)
-* `output` Writeable stream to write prompts to. (default: `process.stdout`)
-
-If silent is true, and the input is a TTY, then read will set raw
-mode, and read character by character.
-
-## COMPATIBILITY
-
-This module works sort of with node 0.6.  It does not work with node
-versions less than 0.6.  It is best on node 0.8.
-
-On node version 0.6, it will remove all listeners on the input
-stream's `data` and `keypress` events, because the readline module did
-not fully clean up after itself in that version of node, and did not
-make it possible to clean up after it in a way that has no potential
-for side effects.
-
-Additionally, some of the readline options (like `terminal`) will not
-function in versions of node before 0.8, because they were not
-implemented in the builtin readline module.
-
-## CONTRIBUTING
-
-Patches welcome.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/lib/read.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/lib/read.js b/blackberry10/node_modules/prompt/node_modules/read/lib/read.js
deleted file mode 100644
index a93d1b3..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/lib/read.js
+++ /dev/null
@@ -1,113 +0,0 @@
-
-module.exports = read
-
-var readline = require('readline')
-var Mute = require('mute-stream')
-
-function read (opts, cb) {
-  if (opts.num) {
-    throw new Error('read() no longer accepts a char number limit')
-  }
-
-  if (typeof opts.default !== 'undefined' &&
-      typeof opts.default !== 'string' &&
-      typeof opts.default !== 'number') {
-    throw new Error('default value must be string or number')
-  }
-
-  var input = opts.input || process.stdin
-  var output = opts.output || process.stdout
-  var prompt = (opts.prompt || '').trim() + ' '
-  var silent = opts.silent
-  var editDef = false
-  var timeout = opts.timeout
-
-  var def = opts.default || ''
-  if (def) {
-    if (silent) {
-      prompt += '(<default hidden>) '
-    } else if (opts.edit) {
-      editDef = true
-    } else {
-      prompt += '(' + def + ') '
-    }
-  }
-  var terminal = !!(opts.terminal || output.isTTY)
-
-  var m = new Mute({ replace: opts.replace, prompt: prompt })
-  m.pipe(output, {end: false})
-  output = m
-  var rlOpts = { input: input, output: output, terminal: terminal }
-
-  if (process.version.match(/^v0\.6/)) {
-    var rl = readline.createInterface(rlOpts.input, rlOpts.output)
-  } else {
-    var rl = readline.createInterface(rlOpts)
-  }
-
-
-  output.unmute()
-  rl.setPrompt(prompt)
-  rl.prompt()
-  if (silent) {
-    output.mute()
-  } else if (editDef) {
-    rl.line = def
-    rl.cursor = def.length
-    rl._refreshLine()
-  }
-
-  var called = false
-  rl.on('line', onLine)
-  rl.on('error', onError)
-
-  rl.on('SIGINT', function () {
-    rl.close()
-    onError(new Error('canceled'))
-  })
-
-  var timer
-  if (timeout) {
-    timer = setTimeout(function () {
-      onError(new Error('timed out'))
-    }, timeout)
-  }
-
-  function done () {
-    called = true
-    rl.close()
-
-    if (process.version.match(/^v0\.6/)) {
-      rl.input.removeAllListeners('data')
-      rl.input.removeAllListeners('keypress')
-      rl.input.pause()
-    }
-
-    clearTimeout(timer)
-    output.mute()
-    output.end()
-  }
-
-  function onError (er) {
-    if (called) return
-    done()
-    return cb(er)
-  }
-
-  function onLine (line) {
-    if (called) return
-    if (silent && terminal) {
-      output.unmute()
-      output.write('\r\n')
-    }
-    done()
-    // truncate the \n at the end.
-    line = line.replace(/\r?\n$/, '')
-    var isDefault = !!(editDef && line === def)
-    if (def && !line) {
-      isDefault = true
-      line = def
-    }
-    cb(null, line, isDefault)
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/LICENSE b/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/LICENSE
deleted file mode 100644
index 0c44ae7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-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/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/README.md b/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/README.md
deleted file mode 100644
index 8ab1238..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# mute-stream
-
-Bytes go in, but they don't come out (when muted).
-
-This is a basic pass-through stream, but when muted, the bytes are
-silently dropped, rather than being passed through.
-
-## Usage
-
-```javascript
-var MuteStream = require('mute-stream')
-
-var ms = new MuteStream(options)
-
-ms.pipe(process.stdout)
-ms.write('foo') // writes 'foo' to stdout
-ms.mute()
-ms.write('bar') // does not write 'bar'
-ms.unmute()
-ms.write('baz') // writes 'baz' to stdout
-
-// can also be used to mute incoming data
-var ms = new MuteStream
-input.pipe(ms)
-
-ms.on('data', function (c) {
-  console.log('data: ' + c)
-})
-
-input.emit('data', 'foo') // logs 'foo'
-ms.mute()
-input.emit('data', 'bar') // does not log 'bar'
-ms.unmute()
-input.emit('data', 'baz') // logs 'baz'
-```
-
-## Options
-
-All options are optional.
-
-* `replace` Set to a string to replace each character with the
-  specified string when muted.  (So you can show `****` instead of the
-  password, for example.)
-
-* `prompt` If you are using a replacement char, and also using a
-  prompt with a readline stream (as for a `Password: *****` input),
-  then specify what the prompt is so that backspace will work
-  properly.  Otherwise, pressing backspace will overwrite the prompt
-  with the replacement character, which is weird.
-
-## ms.mute()
-
-Set `muted` to `true`.  Turns `.write()` into a no-op.
-
-## ms.unmute()
-
-Set `muted` to `false`
-
-## ms.isTTY
-
-True if the pipe destination is a TTY, or if the incoming pipe source is
-a TTY.
-
-## Other stream methods...
-
-The other standard readable and writable stream methods are all
-available.  The MuteStream object acts as a facade to its pipe source
-and destination.

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/mute.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/mute.js b/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/mute.js
deleted file mode 100644
index 42eac31..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/mute.js
+++ /dev/null
@@ -1,140 +0,0 @@
-var Stream = require('stream')
-
-module.exports = MuteStream
-
-// var out = new MuteStream(process.stdout)
-// argument auto-pipes
-function MuteStream (opts) {
-  Stream.apply(this)
-  opts = opts || {}
-  this.writable = this.readable = true
-  this.muted = false
-  this.on('pipe', this._onpipe)
-  this.replace = opts.replace
-
-  // For readline-type situations
-  // This much at the start of a line being redrawn after a ctrl char
-  // is seen (such as backspace) won't be redrawn as the replacement
-  this._prompt = opts.prompt || null
-  this._hadControl = false
-}
-
-MuteStream.prototype = Object.create(Stream.prototype)
-
-Object.defineProperty(MuteStream.prototype, 'constructor', {
-  value: MuteStream,
-  enumerable: false
-})
-
-MuteStream.prototype.mute = function () {
-  this.muted = true
-}
-
-MuteStream.prototype.unmute = function () {
-  this.muted = false
-}
-
-Object.defineProperty(MuteStream.prototype, '_onpipe', {
-  value: onPipe,
-  enumerable: false,
-  writable: true,
-  configurable: true
-})
-
-function onPipe (src) {
-  this._src = src
-}
-
-Object.defineProperty(MuteStream.prototype, 'isTTY', {
-  get: getIsTTY,
-  set: setIsTTY,
-  enumerable: true,
-  configurable: true
-})
-
-function getIsTTY () {
-  return( (this._dest) ? this._dest.isTTY
-        : (this._src) ? this._src.isTTY
-        : false
-        )
-}
-
-// basically just get replace the getter/setter with a regular value
-function setIsTTY (isTTY) {
-  Object.defineProperty(this, 'isTTY', {
-    value: isTTY,
-    enumerable: true,
-    writable: true,
-    configurable: true
-  })
-}
-
-Object.defineProperty(MuteStream.prototype, 'rows', {
-  get: function () {
-    return( this._dest ? this._dest.rows
-          : this._src ? this._src.rows
-          : undefined )
-  }, enumerable: true, configurable: true })
-
-Object.defineProperty(MuteStream.prototype, 'columns', {
-  get: function () {
-    return( this._dest ? this._dest.columns
-          : this._src ? this._src.columns
-          : undefined )
-  }, enumerable: true, configurable: true })
-
-
-MuteStream.prototype.pipe = function (dest) {
-  this._dest = dest
-  return Stream.prototype.pipe.call(this, dest)
-}
-
-MuteStream.prototype.pause = function () {
-  if (this._src) return this._src.pause()
-}
-
-MuteStream.prototype.resume = function () {
-  if (this._src) return this._src.resume()
-}
-
-MuteStream.prototype.write = function (c) {
-  if (this.muted) {
-    if (!this.replace) return true
-    if (c.match(/^\u001b/)) {
-      this._hadControl = true
-      return this.emit('data', c)
-    } else {
-      if (this._prompt && this._hadControl &&
-          c.indexOf(this._prompt) === 0) {
-        this._hadControl = false
-        this.emit('data', this._prompt)
-        c = c.substr(this._prompt.length)
-      }
-      c = c.toString().replace(/./g, this.replace)
-    }
-  }
-  this.emit('data', c)
-}
-
-MuteStream.prototype.end = function (c) {
-  if (this.muted) {
-    if (c && this.replace) {
-      c = c.toString().replace(/./g, this.replace)
-    } else {
-      c = null
-    }
-  }
-  if (c) this.emit('data', c)
-  this.emit('end')
-}
-
-function proxy (fn) { return function () {
-  var d = this._dest
-  var s = this._src
-  if (d && d[fn]) d[fn].apply(d, arguments)
-  if (s && s[fn]) s[fn].apply(s, arguments)
-}}
-
-MuteStream.prototype.destroy = proxy('destroy')
-MuteStream.prototype.destroySoon = proxy('destroySoon')
-MuteStream.prototype.close = proxy('close')

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/package.json b/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/package.json
deleted file mode 100644
index 5e69980..0000000
--- a/blackberry10/node_modules/prompt/node_modules/read/node_modules/mute-stream/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "name": "mute-stream",
-  "version": "0.0.4",
-  "main": "mute.js",
-  "directories": {
-    "test": "test"
-  },
-  "devDependencies": {
-    "tap": "~0.2.5"
-  },
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/mute-stream"
-  },
-  "keywords": [
-    "mute",
-    "stream",
-    "pipe"
-  ],
-  "author": {
-    "name": "Isaac Z. Schlueter",
-    "email": "i@izs.me",
-    "url": "http://blog.izs.me/"
-  },
-  "license": "BSD",
-  "description": "Bytes go in, but they don't come out (when muted).",
-  "readme": "# mute-stream\n\nBytes go in, but they don't come out (when muted).\n\nThis is a basic pass-through stream, but when muted, the bytes are\nsilently dropped, rather than being passed through.\n\n## Usage\n\n```javascript\nvar MuteStream = require('mute-stream')\n\nvar ms = new MuteStream(options)\n\nms.pipe(process.stdout)\nms.write('foo') // writes 'foo' to stdout\nms.mute()\nms.write('bar') // does not write 'bar'\nms.unmute()\nms.write('baz') // writes 'baz' to stdout\n\n// can also be used to mute incoming data\nvar ms = new MuteStream\ninput.pipe(ms)\n\nms.on('data', function (c) {\n  console.log('data: ' + c)\n})\n\ninput.emit('data', 'foo') // logs 'foo'\nms.mute()\ninput.emit('data', 'bar') // does not log 'bar'\nms.unmute()\ninput.emit('data', 'baz') // logs 'baz'\n```\n\n## Options\n\nAll options are optional.\n\n* `replace` Set to a string to replace each character with the\n  specified string when muted.  (So you can show `****` instead of the\n  password, fo
 r example.)\n\n* `prompt` If you are using a replacement char, and also using a\n  prompt with a readline stream (as for a `Password: *****` input),\n  then specify what the prompt is so that backspace will work\n  properly.  Otherwise, pressing backspace will overwrite the prompt\n  with the replacement character, which is weird.\n\n## ms.mute()\n\nSet `muted` to `true`.  Turns `.write()` into a no-op.\n\n## ms.unmute()\n\nSet `muted` to `false`\n\n## ms.isTTY\n\nTrue if the pipe destination is a TTY, or if the incoming pipe source is\na TTY.\n\n## Other stream methods...\n\nThe other standard readable and writable stream methods are all\navailable.  The MuteStream object acts as a facade to its pipe source\nand destination.\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/isaacs/mute-stream/issues"
-  },
-  "_id": "mute-stream@0.0.4",
-  "_from": "mute-stream@~0.0.4"
-}


[15/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-sync.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-sync.js b/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-sync.js
deleted file mode 100644
index eb71f10..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/node_modules/rimraf/test/test-sync.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var rimraf = require("../rimraf")
-  , path = require("path")
-rimraf.sync(path.join(__dirname, "target"))

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/package.json b/blackberry10/node_modules/prompt/node_modules/utile/package.json
deleted file mode 100644
index 16a81bd..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "name": "utile",
-  "description": "A drop-in replacement for `util` with some additional advantageous functions",
-  "version": "0.2.1",
-  "author": {
-    "name": "Nodejitsu Inc.",
-    "email": "info@nodejitsu.com"
-  },
-  "maintainers": [
-    {
-      "name": "indexzero",
-      "email": "charlie@nodejitsu.com"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/flatiron/utile.git"
-  },
-  "dependencies": {
-    "async": "~0.2.9",
-    "deep-equal": "*",
-    "i": "0.3.x",
-    "mkdirp": "0.x.x",
-    "ncp": "0.4.x",
-    "rimraf": "2.x.x"
-  },
-  "devDependencies": {
-    "vows": "0.7.x"
-  },
-  "scripts": {
-    "test": "vows --spec"
-  },
-  "main": "./lib/index",
-  "engines": {
-    "node": ">= 0.6.4"
-  },
-  "readme": "# utile [![Build Status](https://secure.travis-ci.org/flatiron/utile.png)](http://travis-ci.org/flatiron/utile)\n\nA drop-in replacement for `util` with some additional advantageous functions\n\n## Motivation\nJavascript is definitely a \"batteries not included language\" when compared to languages like Ruby or Python. Node.js has a simple utility library which exposes some basic (but important) functionality:\n\n```\n$ node\n> var util = require('util');\n> util.\n(...)\n\nutil.debug                 util.error                 util.exec                  util.inherits              util.inspect\nutil.log                   util.p                     util.print                 util.pump                  util.puts\n```\n\nWhen one considers their own utility library, why ever bother requiring `util` again? That is the approach taken by this module. To compare:\n\n```\n$ node\n> var utile = require('./lib')\n> utile.\n(...)\n\nutile.async                 utile.capitalize     
        utile.clone                 utile.cpr                   utile.createPath            utile.debug\nutile.each                  utile.error                 utile.exec                  utile.file                  utile.filter                utile.find\nutile.inherits              utile.log                   utile.mixin                 utile.mkdirp                utile.p                     utile.path\nutile.print                 utile.pump                  utile.puts                  utile.randomString          utile.requireDir            uile.requireDirLazy\nutile.rimraf\n```\n\nAs you can see all of the original methods from `util` are there, but there are several new methods specific to `utile`. A note about implementation: _no node.js native modules are modified by utile, it simply copies those methods._\n\n## Methods\nThe `utile` modules exposes some simple utility methods:\n\n* `.each(obj, iterator)`: Iterate over the keys of an object.\n* `.mixin(target [source0, source1, 
 ...])`: Copies enumerable properties from `source0 ... sourceN` onto `target` and returns the resulting object.\n* `.clone(obj)`: Shallow clones the specified object.\n* `.capitalize(str)`: Capitalizes the specified `str`.\n* `.randomString(length)`: randomString returns a pseudo-random ASCII string (subset) the return value is a string of length ⌈bits/6⌉ of characters from the base64 alphabet.\n* `.filter(obj, test)`: return an object with the properties that `test` returns true on.\n* `.args(arguments)`: Converts function arguments into actual array with special `callback`, `cb`, `array`, and `last` properties. Also supports *optional* argument contracts. See [the example](https://github.com/flatiron/utile/blob/master/examples/utile-args.js) for more details.\n* `.requireDir(directory)`: Requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values being return values of `require(filename)`.\n*
  `.requireDirLazy(directory)`: Lazily requires all files and directories from `directory`, returning an object with keys being filenames (without trailing `.js`) and respective values (getters) being return values of `require(filename)`.\n* `.format([string] text, [array] formats, [array] replacements)`: Replace `formats` in `text` with `replacements`. This will fall back to the original `util.format` command if it is called improperly.\n\n## Packaged Dependencies\nIn addition to the methods that are built-in, utile includes a number of commonly used dependencies to reduce the number of includes in your package.json. These modules _are not eagerly loaded to be respectful of startup time,_ but instead are lazy-loaded getters on the `utile` object\n\n* `.async`: [Async utilities for node and the browser][0]\n* `.inflect`: [Customizable inflections for node.js][6]\n* `.mkdirp`: [Recursively mkdir, like mkdir -p, but in node.js][1]\n* `.rimraf`: [A rm -rf util for nodejs][2]\n* `.cpr`: 
 [Asynchronous recursive file copying with Node.js][3]\n\n## Installation\n\n### Installing npm (node package manager)\n```\n  curl http://npmjs.org/install.sh | sh\n```\n\n### Installing utile\n```\n  [sudo] npm install utile\n```\n\n## Tests\nAll tests are written with [vows][4] and should be run with [npm][5]:\n\n``` bash\n  $ npm test\n```\n\n#### Author: [Nodejitsu Inc.](http://www.nodejitsu.com)\n#### Contributors: [Charlie Robbins](http://github.com/indexzero), [Dominic Tarr](http://github.com/dominictarr)\n#### License: MIT\n\n[0]: https://github.com/caolan/async\n[1]: https://github.com/substack/node-mkdirp\n[2]: https://github.com/isaacs/rimraf\n[3]: https://github.com/avianflu/ncp\n[4]: https://vowsjs.org\n[5]: https://npmjs.org\n[6]: https://github.com/pksunkara/inflect\n",
-  "readmeFilename": "README.md",
-  "bugs": {
-    "url": "https://github.com/flatiron/utile/issues"
-  },
-  "_id": "utile@0.2.1",
-  "_from": "utile@0.2.x"
-}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/file-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/file-test.js b/blackberry10/node_modules/prompt/node_modules/utile/test/file-test.js
deleted file mode 100644
index 93ea089..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/file-test.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * file-test.js: Tests for `utile.file` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    path = require('path'),
-    vows = require('vows'),
-    macros = require('./helpers/macros'),
-    utile = require('../');
-
-var fixture = path.join(__dirname, 'fixtures', 'read-json-file', 'config.json');
-
-vows.describe('utile/file').addBatch({
-  'When using utile': {
-    'the `.file.readJson()` function': {
-      topic: function () {
-        utile.file.readJson(fixture, this.callback);
-      },
-      'should return correct JSON structure': macros.assertReadCorrectJson
-    },
-    'the `.file.readJsonSync()` function': {
-      topic: utile.file.readJsonSync(fixture),
-      'should return correct JSON structure': macros.assertReadCorrectJson
-    }
-  }
-}).export(module);
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/read-json-file/config.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/read-json-file/config.json b/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/read-json-file/config.json
deleted file mode 100644
index e12a106..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/read-json-file/config.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "hello": "World",
-  "I am": ["the utile module"],
-  "thisMakesMe": {
-    "really": 1337,
-    "right?": true
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/directory/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/directory/index.js b/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/directory/index.js
deleted file mode 100644
index 1afb489..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/directory/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-exports.me = 'directory/index.js';
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/helloWorld.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/helloWorld.js b/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/helloWorld.js
deleted file mode 100644
index 1c842ec..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/fixtures/require-directory/helloWorld.js
+++ /dev/null
@@ -1,2 +0,0 @@
-exports.me = 'helloWorld.js';
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/format-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/format-test.js b/blackberry10/node_modules/prompt/node_modules/utile/test/format-test.js
deleted file mode 100644
index fb1a2b7..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/format-test.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * format-test.js: Tests for `utile.format` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var vows = require('vows'),
-    assert = require('assert'),
-    utile = require('../lib');
-
-vows.describe('utile/format').addBatch({
-
-  'Should use the original `util.format` if there are no custom parameters to replace.': function() {
-    assert.equal(utile.format('%s %s %s', 'test', 'test2', 'test3'), 'test test2 test3');
-  },
-
-  'Should use `utile.format` if custom parameters are provided.': function() {
-    assert.equal(utile.format('%a %b %c', [
-      '%a',
-      '%b',
-      '%c'
-    ], [
-      'test',
-      'test2',
-      'test3'
-    ]), 'test test2 test3');
-  }
-
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/function-args-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/function-args-test.js b/blackberry10/node_modules/prompt/node_modules/utile/test/function-args-test.js
deleted file mode 100644
index b2852eb..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/function-args-test.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * function-args-test.js: Tests for `args` method
- *
- * (C) 2012, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    path = require('path'),
-    vows = require('vows'),
-    macros = require('./helpers/macros'),
-    utile = require('../');
-
-vows.describe('utile/args').addBatch({
-  'When using utile': {
-    'the `args` function': {
-      topic: utile,
-      'should be a function': function (_utile) {
-        assert.isFunction(_utile.args);
-      },
-    }
-  },
-  'utile.rargs()': {
-    'with no arguments': {
-      topic: utile.rargs(),
-      'should return an empty object': function (result) {
-        assert.isArray(result);
-        assert.lengthOf(result, 0);
-      }
-    },
-    'with simple arguments': {
-      topic: function () {
-        return (function () {
-          return utile.rargs(arguments);
-        })('a', 'b', 'c');
-      },
-      'should return an array with three items': function (result) {
-        assert.isArray(result);
-        assert.equal(3, result.length);
-        assert.equal(result[0], 'a');
-        assert.equal(result[1], 'b');
-        assert.equal(result[2], 'c');
-      }
-    },
-    'with a simple slice': {
-      topic: function () {
-        return (function () {
-          return utile.rargs(arguments, 1);
-        })('a', 'b', 'c');
-      },
-      'should return an array with three items': function (result) {
-        assert.isArray(result);
-        assert.equal(2, result.length);
-        assert.equal(result[0], 'b');
-        assert.equal(result[1], 'c');
-      }
-    }
-  },
-  'utile.args()': {
-    'with no arguments': {
-      topic: utile.args(),
-      'should return an empty Array': function (result) {
-        assert.isUndefined(result.callback);
-        assert.isArray(result);
-        assert.lengthOf(result, 0);
-      }
-    },
-    'with simple arguments': {
-      topic: function () {
-        return (function () {
-          return utile.args(arguments);
-        })('a', 'b', 'c', function () {
-          return 'ok';
-        });
-      },
-      'should return an array with three items': function (result) {
-        assert.isArray(result);
-        assert.equal(3, result.length);
-        assert.equal(result[0], 'a');
-        assert.equal(result[1], 'b');
-        assert.equal(result[2], 'c');
-
-        //
-        // Ensure that the Array returned
-        // by `utile.args()` enumerates correctly
-        //
-        var length = 0;
-        result.forEach(function (item) {
-          length++;
-        });
-
-        assert.equal(length, 3);
-      },
-      'should return lookup helpers': function (result) {
-        assert.isArray(result);
-        assert.equal(result.first, 'a');
-        assert.equal(result.last, 'c');
-        assert.isFunction(result.callback);
-        assert.isFunction(result.cb);
-      }
-    }
-  }
-}).export(module);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/helpers/macros.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/helpers/macros.js b/blackberry10/node_modules/prompt/node_modules/utile/test/helpers/macros.js
deleted file mode 100644
index 66f386d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/helpers/macros.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * macros.js: Test macros for `utile` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    utile = require('../../lib');
-
-var macros = exports;
-
-macros.assertReadCorrectJson = function (obj) {
-  assert.isObject(obj);
-  utile.deepEqual(obj, {
-    hello: 'World',
-    'I am': ['the utile module'],
-    thisMakesMe: {
-      really: 1337,
-      'right?': true
-    }
-  });
-};
-
-macros.assertDirectoryRequired = function (obj) {
-  assert.isObject(obj);
-  utile.deepEqual(obj, {
-    directory: {
-      me: 'directory/index.js'
-    },
-    helloWorld: {
-      me: 'helloWorld.js'
-    }
-  });
-};
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/random-string-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/random-string-test.js b/blackberry10/node_modules/prompt/node_modules/utile/test/random-string-test.js
deleted file mode 100644
index c21af3f..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/random-string-test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * common-test.js : testing common.js for expected functionality
- *
- * (C) 2011, Nodejitsu Inc.
- *
- */
-
-var assert = require('assert'),
-    vows = require('vows'),
-    utile = require('../lib');
-
-vows.describe('utile/randomString').addBatch({
-  "When using utile": {
-    "the randomString() function": {
-      topic: function () {
-        return utile.randomString();
-      },
-      "should return 16 characters that are actually random by default": function (random) {
-        assert.isString(random);
-        assert.lengthOf(random, 16);
-        assert.notEqual(random, utile.randomString());
-      },
-      "when you can asked for different length strings": {
-        topic: function () {
-          return [utile.randomString(4), utile.randomString(128)];
-        },
-        "where they actually are of length 4, 128": function (strings) {
-          assert.isArray(strings);
-          assert.lengthOf(strings,2);
-          assert.isString(strings[0]);
-          assert.isString(strings[1]);
-          assert.lengthOf(strings[0], 4);
-          assert.lengthOf(strings[1], 128);
-          assert.notEqual(strings[0], strings[1].substr(0,4));
-        }
-      }
-    }
-  }
-}).export(module);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/require-directory-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/require-directory-test.js b/blackberry10/node_modules/prompt/node_modules/utile/test/require-directory-test.js
deleted file mode 100644
index ce7ea83..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/require-directory-test.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * require-directory-test.js: Tests for `requireDir` and `requireDirLazy`
- * methods.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    path = require('path'),
-    vows = require('vows'),
-    macros = require('./helpers/macros'),
-    utile = require('../');
-
-var requireFixtures = path.join(__dirname, 'fixtures', 'require-directory');
-
-vows.describe('utile/require-directory').addBatch({
-  'When using utile': {
-    'the `requireDir()` function': {
-      topic: utile.requireDir(requireFixtures),
-      'should contain all wanted modules': macros.assertDirectoryRequired
-    },
-    'the `requireDirLazy()` function': {
-      topic: utile.requireDirLazy(requireFixtures),
-      'all properties should be getters': function (obj) {
-        assert.isObject(obj);
-        assert.isTrue(!!Object.getOwnPropertyDescriptor(obj, 'directory').get);
-        assert.isTrue(!!Object.getOwnPropertyDescriptor(obj, 'helloWorld').get);
-      },
-      'should contain all wanted modules': macros.assertDirectoryRequired
-    }
-  }
-}).export(module);
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/utile/test/utile-test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/utile/test/utile-test.js b/blackberry10/node_modules/prompt/node_modules/utile/test/utile-test.js
deleted file mode 100644
index 7dd5b0f..0000000
--- a/blackberry10/node_modules/prompt/node_modules/utile/test/utile-test.js
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * utile-test.js: Tests for `utile` module.
- *
- * (C) 2011, Nodejitsu Inc.
- * MIT LICENSE
- *
- */
-
-var assert = require('assert'),
-    vows = require('vows'),
-    utile = require('../lib');
-
-var obj1, obj2;
-
-obj1 = {
-  foo: true,
-  bar: {
-    bar1: true,
-    bar2: 'bar2'
-  }
-};
-
-obj2 = {
-  baz: true,
-  buzz: 'buzz'
-};
-
-Object.defineProperties(obj2, {
-
-  'bazz': {
-    get: function() {
-      return 'bazz';
-    },
-
-    set: function() {
-      return 'bazz';
-    }
-  },
-
-  'wat': {
-    set: function() {
-      return 'wat';
-    }
-  }
-
-});
-
-vows.describe('utile').addBatch({
-  "When using utile": {
-    "it should have the same methods as the `util` module": function () {
-      Object.keys(require('util')).forEach(function (fn) {
-        assert.isFunction(utile[fn]);
-      });
-    },
-    "it should have the correct methods defined": function () {
-      assert.isFunction(utile.mixin);
-      assert.isFunction(utile.clone);
-      assert.isFunction(utile.rimraf);
-      assert.isFunction(utile.mkdirp);
-      assert.isFunction(utile.cpr);
-    },
-    "the mixin() method": function () {
-      var mixed = utile.mixin({}, obj1, obj2);
-      assert.isTrue(mixed.foo);
-      assert.isObject(mixed.bar);
-      assert.isTrue(mixed.baz);
-      assert.isString(mixed.buzz);
-      assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'bazz').get);
-      assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'bazz').set);
-      assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'wat').set);
-      assert.isString(mixed.bazz);
-    },
-    "the clone() method": function () {
-      var clone = utile.clone(obj1);
-      assert.isTrue(clone.foo);
-      assert.isObject(clone.bar);
-      assert.notStrictEqual(obj1, clone);
-    },
-    "the createPath() method": function () {
-      var x = {},
-          r = Math.random();
-
-      utile.createPath(x, ['a','b','c'], r)
-      assert.equal(x.a.b.c, r)
-    },
-    "the capitalize() method": function () {
-      assert.isFunction(utile.capitalize);
-      assert.equal(utile.capitalize('bullet'), 'Bullet');
-      assert.equal(utile.capitalize('bullet_train'), 'BulletTrain');
-    },
-    "the escapeRegExp() method": function () {
-      var ans = "\\/path\\/to\\/resource\\.html\\?search=query";
-      assert.isFunction(utile.escapeRegExp);
-      assert.equal(utile.escapeRegExp('/path/to/resource.html?search=query'), ans);
-    },
-    "the underscoreToCamel() method": function () {
-      var obj = utile.underscoreToCamel({
-        key_with_underscore: {
-          andNested: 'values',
-          several: [1, 2, 3],
-          nested_underscores: true
-        },
-        just_one: 'underscore'
-      });
-
-      assert.isObject(obj.keyWithUnderscore);
-      assert.isString(obj.justOne);
-      assert.isTrue(obj.keyWithUnderscore.nestedUnderscores);
-    },
-    "the camelToUnderscore() method": function () {
-      var obj = utile.camelToUnderscore({
-        keyWithCamel: {
-          andNested: 'values',
-          several: [1, 2, 3],
-          nestedCamel: true
-        },
-        justOne: 'camel'
-      });
-
-      assert.isObject(obj.key_with_camel);
-      assert.isString(obj.just_one);
-      assert.isTrue(obj.key_with_camel.nested_camel);
-    }
-  }
-}).export(module);
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/.npmignore
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/.npmignore b/blackberry10/node_modules/prompt/node_modules/winston/.npmignore
deleted file mode 100644
index 2c5c40a..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/.npmignore
+++ /dev/null
@@ -1,6 +0,0 @@
-test/*.log
-test/fixtures/*.json
-test/fixtures/logs/*.log
-node_modules/
-node_modules/*
-npm-debug.log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/.travis.yml
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/.travis.yml b/blackberry10/node_modules/prompt/node_modules/winston/.travis.yml
deleted file mode 100644
index b250521..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: node_js
-node_js:
-  - 0.4
-  - 0.6
-branches:
-  only:
-    - master
-notifications:
-  email:
-    - travis@nodejitsu.com
-  irc: "irc.freenode.org#nodejitsu"
-

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/LICENSE
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/LICENSE b/blackberry10/node_modules/prompt/node_modules/winston/LICENSE
deleted file mode 100644
index 948d80d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010 Charlie Robbins
-
-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

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/README.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/README.md b/blackberry10/node_modules/prompt/node_modules/winston/README.md
deleted file mode 100644
index 2fc4798..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/README.md
+++ /dev/null
@@ -1,790 +0,0 @@
-# winston [![Build Status](https://secure.travis-ci.org/flatiron/winston.png)](http://travis-ci.org/flatiron/winston)
-
-A multi-transport async logging library for node.js. <span style="font-size:28px; font-weight:bold;">&quot;CHILL WINSTON! ... I put it in the logs.&quot;</span>
-
-## Motivation
-Winston is designed to be a simple and universal logging library with support for multiple transports. A transport is essentially a storage device for your logs. Each instance of a winston logger can have multiple transports configured at different levels. For example, one may want error logs to be stored in a persistent remote location (like a database), but all logs output to the console or a local file.
-
-There also seemed to be a lot of logging libraries out there that coupled their implementation of logging (i.e. how the logs are stored / indexed) to the API that they exposed to the programmer. This library aims to decouple those parts of the process to make it more flexible and extensible.
-
-## Usage
-There are two different ways to use winston: directly via the default logger, or by instantiating your own Logger. The former is merely intended to be a convenient shared logger to use throughout your application if you so choose.
-
-* [Logging](#logging)
-  * [Using the Default Logger](#using-the-default-logger)
-  * [Instantiating your own Logger](#instantiating-your-own-logger)
-  * [Logging with Metadata](#logging-with-metadata)
-* [Transports](https://github.com/flatiron/winston/blob/master/docs/transports.md)
-* [Profiling](#profiling)
-* [Streaming Logs](#streaming-logs)
-* [Querying Logs](#querying-logs)  
-* [Exceptions](#exceptions)
-  * [Handling Uncaught Exceptions with winston](#handling-uncaught-exceptions-with-winston)
-  * [To Exit or Not to Exit](#to-exit-or-not-to-exit)
-* [Logging Levels](#logging-levels)
-  * [Using Logging Levels](#using-logging-levels)
-  * [Using Custom Logging Levels](#using-custom-logging-levels)
-* [Further Reading](#further-reading)
-  * [Events and Callbacks in Winston](#events-and-callbacks-in-winston)
-  * [Working with multiple Loggers in winston](#working-with-multiple-loggers-in-winston)
-  * [Using winston in a CLI tool](#using-winston-in-a-cli-tool)
-  * [Extending another object with Logging](#extending-another-object-with-logging)
-  * [Adding Custom Transports](#adding-custom-transports)
-
-## Logging
-
-### Using the Default Logger
-The default logger is accessible through the winston module directly. Any method that you could call on an instance of a logger is available on the default logger:
-
-``` js
-  var winston = require('winston');
-
-  winston.log('info', 'Hello distributed log files!');
-  winston.info('Hello again distributed logs');
-```
-
-By default, only the Console transport is set on the default logger. You can add or remove transports via the add() and remove() methods:
-
-``` js
-  winston.add(winston.transports.File, { filename: 'somefile.log' });
-  winston.remove(winston.transports.Console);
-```
-
-For more documenation about working with each individual transport supported by Winston see the "Working with Transports" section below.
-
-### Instantiating your own Logger
-If you would prefer to manage the object lifetime of loggers you are free to instantiate them yourself:
-
-``` js
-  var logger = new (winston.Logger)({
-    transports: [
-      new (winston.transports.Console)(),
-      new (winston.transports.File)({ filename: 'somefile.log' })
-    ]
-  });
-```
-
-You can work with this logger in the same way that you work with the default logger:
-
-``` js
-  //
-  // Logging
-  //
-  logger.log('info', 'Hello distributed log files!');
-  logger.info('Hello again distributed logs');
-
-  //
-  // Adding / Removing Transports
-  //   (Yes It's chainable)
-  //
-  logger.add(winston.transports.File)
-        .remove(winston.transports.Console);
-```
-
-### Logging with Metadata
-In addition to logging string messages, winston will also optionally log additional JSON metadata objects. Adding metadata is simple:
-
-``` js
-  winston.log('info', 'Test Log Message', { anything: 'This is metadata' });
-```
-
-The way these objects is stored varies from transport to transport (to best support the storage mechanisms offered). Here's a quick summary of how each transports handles metadata:
-
-1. __Console:__ Logged via util.inspect(meta)
-2. __File:__ Logged via util.inspect(meta)
-
-## Profiling
-In addition to logging messages and metadata, winston also has a simple profiling mechanism implemented for any logger:
-
-``` js
-  //
-  // Start profile of 'test'
-  // Remark: Consider using Date.now() with async operations
-  //
-  winston.profile('test');
-
-  setTimeout(function () {
-    //
-    // Stop profile of 'test'. Logging will now take place:
-    //   "17 Jan 21:00:00 - info: test duration=1000ms"
-    //
-    winston.profile('test');
-  }, 1000);
-```
-
-All profile messages are set to the 'info' by default and both message and metadata are optional There are no plans in the Roadmap to make this configurable, but I'm open to suggestions / issues.
-
-
-## Querying Logs
-Winston supports querying of logs with Loggly-like options.
-Specifically: `File`, `Couchdb`, `Redis`, `Loggly`, `Nssocket`, and `Http`.
-
-``` js
-  var options = {
-    from: new Date - 24 * 60 * 60 * 1000,
-    until: new Date
-  };
-
-  //
-  // Find items logged between today and yesterday.
-  //
-  winston.query(options, function (err, results) {
-    if (err) {
-      throw err;
-    }
-    
-    console.log(results);
-  });
-```
-
-## Streaming Logs
-Streaming allows you to stream your logs back from your chosen transport.
-
-``` js
-  //
-  // Start at the end.
-  //
-  winston.stream({ start: -1 }).on('log', function(log) {
-    console.log(log);
-  });
-```
-
-## Exceptions
-
-### Handling Uncaught Exceptions with winston
-
-With `winston`, it is possible to catch and log `uncaughtException` events from your process. There are two distinct ways of enabling this functionality either through the default winston logger or your own logger instance.
-
-If you want to use this feature with the default logger simply call `.handleExceptions()` with a transport instance.
-
-``` js
-  //
-  // You can add a separate exception logger by passing it to `.handleExceptions`
-  //
-  winston.handleExceptions(new winston.transports.File({ filename: 'path/to/exceptions.log' }))
-
-  //
-  // Alternatively you can set `.handleExceptions` to true when adding transports to winston
-  //
-  winston.add(winston.transports.File, {
-    filename: 'path/to/all-logs.log',
-    handleExceptions: true
-  });
-```
-
-### To Exit or Not to Exit
-
-by default, winston will exit after logging an uncaughtException. if this is not the behavior you want,
-set `exitOnError = false`
-
-``` js
-  var logger = new (winston.Logger)({ exitOnError: false });
-
-  //
-  // or, like this:
-  //
-  logger.exitOnError = false;
-```
-
-When working with custom logger instances, you can pass in separate transports to the `exceptionHandlers` property or set `.handleExceptions` on any transport.
-
-Example 1
-
-``` js
-  var logger = new (winston.Logger)({
-    transports: [
-      new winston.transports.File({ filename: 'path/to/all-logs.log' })
-    ]
-    exceptionHandlers: [
-      new winston.transports.File({ filename: 'path/to/exceptions.log' })
-    ]
-  });
-```
-
-Example 2
-
-```
-var logger = new winston.Logger({
-  transports: [
-    new winston.transports.Console({
-      handleExceptions: true,
-      json: true
-    })
-  ],
-  exitOnError: false
-});
-```
-
-The `exitOnError` option can also be a function to prevent exit on only certain types of errors:
-
-``` js
-  function ignoreEpipe(err) {
-    return err.code !== 'EPIPE';
-  }
-
-  var logger = new (winston.Logger)({ exitOnError: ignoreEpipe });
-
-  //
-  // or, like this:
-  //
-  logger.exitOnError = ignoreEpipe;
-```
-
-## Logging Levels
-
-### Using Logging Levels
-Setting the level for your logging message can be accomplished in one of two ways. You can pass a string representing the logging level to the log() method or use the level specified methods defined on every winston Logger.
-
-``` js
-  //
-  // Any logger instance
-  //
-  logger.log('info', "127.0.0.1 - there's no place like home");
-  logger.log('warn', "127.0.0.1 - there's no place like home");
-  logger.log('error', "127.0.0.1 - there's no place like home");
-  logger.info("127.0.0.1 - there's no place like home");
-  logger.warn("127.0.0.1 - there's no place like home");
-  logger.error("127.0.0.1 - there's no place like home");
-
-  //
-  // Default logger
-  //
-  winston.log('info', "127.0.0.1 - there's no place like home");
-  winston.info("127.0.0.1 - there's no place like home");
-```
-
-Winston allows you to set a `level` on each transport that specifies the level of messages this transport should log. For example, you could log only errors to the console, with the full logs in a file:
-
-``` js
-  var logger = new (winston.Logger)({
-    transports: [
-      new (winston.transports.Console)({ level: 'error' }),
-      new (winston.transports.File)({ filename: 'somefile.log' })
-    ]
-  });
-```
-
-As of 0.2.0, winston supports customizable logging levels, defaulting to [npm][0] style logging levels. Changing logging levels is easy:
-
-``` js
-  //
-  // Change levels on the default winston logger
-  //
-  winston.setLevels(winston.config.syslog.levels);
-
-  //
-  // Change levels on an instance of a logger
-  //
-  logger.setLevels(winston.config.syslog.levels);
-```
-
-Calling `.setLevels` on a logger will remove all of the previous helper methods for the old levels and define helper methods for the new levels. Thus, you should be careful about the logging statements you use when changing levels. For example, if you ran this code after changing to the syslog levels:
-
-``` js
-  //
-  // Logger does not have 'silly' defined since that level is not in the syslog levels
-  //
-  logger.silly('some silly message');
-```
-
-### Using Custom Logging Levels
-In addition to the predefined `npm` and `syslog` levels available in Winston, you can also choose to define your own:
-
-``` js
-  var myCustomLevels = {
-    levels: {
-      foo: 0,
-      bar: 1,
-      baz: 2,
-      foobar: 3
-    },
-    colors: {
-      foo: 'blue',
-      bar: 'green',
-      baz: 'yellow',
-      foobar: 'red'
-    }
-  };
-
-  var customLevelLogger = new (winston.Logger)({ levels: myCustomLevels.levels });
-  customLevelLogger.foobar('some foobar level-ed message');
-```
-
-Although there is slight repetition in this data structure, it enables simple encapsulation if you not to have colors. If you do wish to have colors, in addition to passing the levels to the Logger itself, you must make winston aware of them:
-
-``` js
-  //
-  // Make winston aware of these colors
-  //
-  winston.addColors(myCustomLevels.colors);
-```
-
-This enables transports with the 'colorize' option set to appropriately color the output of custom levels.
-
-## Further Reading
-
-### Events and Callbacks in Winston
-Each instance of winston.Logger is also an instance of an [EventEmitter][1]. A log event will be raised each time a transport successfully logs a message:
-
-``` js
-  logger.on('logging', function (transport, level, msg, meta) {
-    // [msg] and [meta] have now been logged at [level] to [transport]
-  });
-
-  logger.info('CHILL WINSTON!', { seriously: true });
-```
-
-It is also worth mentioning that the logger also emits an 'error' event which you should handle or suppress if you don't want unhandled exceptions:
-
-``` js
-  //
-  // Handle errors
-  //
-  logger.on('error', function (err) { /* Do Something */ });
-
-  //
-  // Or just suppress them.
-  //
-  logger.emitErrs = false;
-```
-
-Every logging method described in the previous section also takes an optional callback which will be called only when all of the transports have logged the specified message.
-
-``` js
-  logger.info('CHILL WINSTON!', { seriously: true }, function (err, level, msg, meta) {
-    // [msg] and [meta] have now been logged at [level] to **every** transport.
-  });
-```
-
-### Working with multiple Loggers in winston
-
-Often in larger, more complex applications it is necessary to have multiple logger instances with different settings. Each logger is responsible for a different feature area (or category). This is exposed in `winston` in two ways: through `winston.loggers` and instances of `winston.Container`. In fact, `winston.loggers` is just a predefined instance of `winston.Container`:
-
-``` js
-  var winston = require('winston');
-
-  //
-  // Configure the logger for `category1`
-  //
-  winston.loggers.add('category1', {
-    console: {
-      level: 'silly',
-      colorize: 'true'
-    },
-    file: {
-      filename: '/path/to/some/file'
-    }
-  });
-
-  //
-  // Configure the logger for `category2`
-  //
-  winston.loggers.add('category2', {
-    couchdb: {
-      host: '127.0.0.1',
-      port: 5984
-    }
-  });
-```
-
-Now that your loggers are setup you can require winston _in any file in your application_ and access these pre-configured loggers:
-
-``` js
-  var winston = require('winston');
-
-  //
-  // Grab your preconfigured logger
-  //
-  var category1 = winston.loggers.get('category1');
-
-  category1.info('logging from your IoC container-based logger');
-```
-
-If you prefer to manage the `Container` yourself you can simply instantiate one:
-
-``` js
-  var winston = require('winston'),
-      container = new winston.Container();
-
-  container.add('category1', {
-    console: {
-      level: 'silly',
-      colorize: 'true'
-    },
-    file: {
-      filename: '/path/to/some/file'
-    }
-  });
-```
-
-### Sharing transports between Loggers in winston
-
-``` js
-  var winston = require('winston');
-
-  //
-  // Setup transports to be shared across all loggers
-  // in three ways:
-  //
-  // 1. By setting it on the default Container
-  // 2. By passing `transports` into the constructor function of winston.Container
-  // 3. By passing `transports` into the `.get()` or `.add()` methods
-  //
-
-  //
-  // 1. By setting it on the default Container
-  //
-  winston.loggers.options.transports = [
-    // Setup your shared transports here
-  ];
-
-  //
-  // 2. By passing `transports` into the constructor function of winston.Container
-  //
-  var container = new winston.Container({
-    transports: [
-      // Setup your shared transports here
-    ]
-  });
-
-  //
-  // 3. By passing `transports` into the `.get()` or `.add()` methods
-  //
-  winston.loggers.add('some-category', {
-    transports: [
-      // Setup your shared transports here
-    ]
-  });
-
-  container.add('some-category', {
-    transports: [
-      // Setup your shared transports here
-    ]
-  });
-```
-
-### Using winston in a CLI tool
-A common use-case for logging is output to a CLI tool. Winston has a special helper method which will pretty print output from your CLI tool. Here's an example from the [require-analyzer][2] written by [Nodejitsu][3]:
-
-```
-  info:   require-analyzer starting in /Users/Charlie/Nodejitsu/require-analyzer
-  info:   Found existing dependencies
-  data:   {
-  data:     colors: '0.x.x',
-  data:     eyes: '0.1.x',
-  data:     findit: '0.0.x',
-  data:     npm: '1.0.x',
-  data:     optimist: '0.2.x',
-  data:     semver: '1.0.x',
-  data:     winston: '0.2.x'
-  data:   }
-  info:   Analyzing dependencies...
-  info:   Done analyzing raw dependencies
-  info:   Retrieved packages from npm
-  warn:   No additional dependencies found
-```
-
-Configuring output for this style is easy, just use the `.cli()` method on `winston` or an instance of `winston.Logger`:
-
-``` js
-  var winston = require('winston');
-
-  //
-  // Configure CLI output on the default logger
-  //
-  winston.cli();
-
-  //
-  // Configure CLI on an instance of winston.Logger
-  //
-  var logger = new winston.Logger({
-    transports: [
-      new (winston.transports.Console)()
-    ]
-  });
-
-  logger.cli();
-```
-
-### Extending another object with Logging
-Often in a given code base with lots of Loggers it is useful to add logging methods a different object so that these methods can be called with less syntax. Winston exposes this functionality via the 'extend' method:
-
-``` js
-  var myObject = {};
-
-  logger.extend(myObject);
-
-  //
-  // You can now call logger methods on 'myObject'
-  //
-  myObject.info('127.0.0.1 - there's no place like home');
-```
-
-## Working with Transports
-Right now there are four transports supported by winston core. If you have a transport you would like to add either open an issue or fork and submit a pull request. Commits are welcome, but I'll give you extra street cred if you __add tests too :D__
-   
-1. __Console:__ Output to the terminal
-2. __Files:__ Append to a file
-3. __Loggly:__ Log to Logging-as-a-Service platform Loggly
-
-### Console Transport
-``` js
-  winston.add(winston.transports.Console, options)
-```
-
-The Console transport takes two simple options:
-
-* __level:__ Level of messages that this transport should log (default 'info').
-* __silent:__ Boolean flag indicating whether to suppress output (default false).
-* __colorize:__ Boolean flag indicating if we should colorize output (default false).
-* __timestamp:__ Boolean flag indicating if we should prepend output with timestamps (default false). If function is specified, its return value will be used instead of timestamps.
-
-*Metadata:* Logged via util.inspect(meta);
-
-### File Transport
-``` js
-  winston.add(winston.transports.File, options)
-```
-
-The File transport should really be the 'Stream' transport since it will accept any [WritableStream][14]. It is named such because it will also accept filenames via the 'filename' option:
-
-* __level:__ Level of messages that this transport should log.
-* __silent:__ Boolean flag indicating whether to suppress output.
-* __colorize:__ Boolean flag indicating if we should colorize output.
-* __timestamp:__ Boolean flag indicating if we should prepend output with timestamps (default true). If function is specified, its return value will be used instead of timestamps.
-* __filename:__ The filename of the logfile to write output to.
-* __maxsize:__ Max size in bytes of the logfile, if the size is exceeded then a new file is created.
-* __maxFiles:__ Limit the number of files created when the size of the logfile is exceeded.
-* __stream:__ The WriteableStream to write output to.
-* __json:__ If true, messages will be logged as JSON (default true).
-
-*Metadata:* Logged via util.inspect(meta);
-
-### Loggly Transport
-``` js
-  var Loggly = require('winston-loggly').Loggly
-  winston.add(Loggly, options);
-```
-
-The Loggly transport is based on [Nodejitsu's][5] [node-loggly][6] implementation of the [Loggly][7] API. If you haven't heard of Loggly before, you should probably read their [value proposition][8]. The Loggly transport takes the following options. Either 'inputToken' or 'inputName' is required:
-
-* __level:__ Level of messages that this transport should log. 
-* __subdomain:__ The subdomain of your Loggly account. *[required]*
-* __auth__: The authentication information for your Loggly account. *[required with inputName]*
-* __inputName:__ The name of the input this instance should log to.
-* __inputToken:__ The input token of the input this instance should log to.
-* __json:__ If true, messages will be sent to Loggly as JSON.
-
-*Metadata:* Logged in suggested [Loggly format][2]
-
-### Riak Transport
-As of `0.3.0` the Riak transport has been broken out into a new module: [winston-riak][17]. Using it is just as easy:
-
-``` js
-  var Riak = require('winston-riak').Riak;
-  winston.add(Riak, options);
-```
-
-In addition to the options accepted by the [riak-js][3] [client][4], the Riak transport also accepts the following options. It is worth noting that the riak-js debug option is set to *false* by default:
-
-* __level:__ Level of messages that this transport should log.
-* __bucket:__ The name of the Riak bucket you wish your logs to be in or a function to generate bucket names dynamically.
-
-``` js
-  // Use a single bucket for all your logs
-  var singleBucketTransport = new (Riak)({ bucket: 'some-logs-go-here' });
-  
-  // Generate a dynamic bucket based on the date and level
-  var dynamicBucketTransport = new (Riak)({
-    bucket: function (level, msg, meta, now) {
-      var d = new Date(now);
-      return level + [d.getDate(), d.getMonth(), d.getFullYear()].join('-');
-    }
-  });
-```
-
-*Metadata:* Logged as JSON literal in Riak
-
-### MongoDB Transport
-As of `0.3.0` the MongoDB transport has been broken out into a new module: [winston-mongodb][16]. Using it is just as easy:
-
-``` js
-  var MongoDB = require('winston-mongodb').MongoDB;
-  winston.add(MongoDB, options);
-```
-
-The MongoDB transport takes the following options. 'db' is required:
-
-* __level:__ Level of messages that this transport should log. 
-* __silent:__ Boolean flag indicating whether to suppress output.
-* __db:__ The name of the database you want to log to. *[required]*
-* __collection__: The name of the collection you want to store log messages in, defaults to 'log'.
-* __safe:__ Boolean indicating if you want eventual consistency on your log messages, if set to true it requires an extra round trip to the server to ensure the write was committed, defaults to true.
-* __host:__ The host running MongoDB, defaults to localhost.
-* __port:__ The port on the host that MongoDB is running on, defaults to MongoDB's default port.
-
-*Metadata:* Logged as a native JSON object.
-
-### SimpleDB Transport
-
-The [winston-simpledb][18] transport is just as easy:
-
-``` js
-  var SimpleDB = require('winston-simpledb').SimpleDB;
-  winston.add(SimpleDB, options);
-```
-
-The SimpleDB transport takes the following options. All items marked with an asterisk are required:
-
-* __awsAccessKey__:* your AWS Access Key
-* __secretAccessKey__:* your AWS Secret Access Key
-* __awsAccountId__:* your AWS Account Id
-* __domainName__:* a string or function that returns the domain name to log to
-* __region__:* the region your domain resides in
-* __itemName__: a string ('uuid', 'epoch', 'timestamp') or function that returns the item name to log
-
-*Metadata:* Logged as a native JSON object to the 'meta' attribute of the item.
-
-### Mail Transport
-
-The [winston-mail][19] is an email transport:
-
-``` js
-  var Mail = require('winston-mail').Mail;
-  winston.add(Mail, options);
-```
-
-The Mail transport uses [emailjs](https://github.com/eleith/emailjs) behind the scenes.  Options are the following:
-
-* __to:__ The address(es) you want to send to. *[required]*
-* __from:__ The address you want to send from. (default: `winston@[server-host-name]`)
-* __host:__ SMTP server hostname (default: localhost)
-* __port:__ SMTP port (default: 587 or 25)
-* __username__ User for server auth
-* __password__ Password for server auth
-* __ssl:__ Use SSL (boolean or object { key, ca, cert })
-* __tls:__ Boolean (if true, use starttls)
-* __level:__ Level of messages that this transport should log. 
-* __silent:__ Boolean flag indicating whether to suppress output.
-
-*Metadata:* Stringified as JSON in email.
-
-### Amazon SNS (Simple Notification System) Transport
-
-The [winston-sns][21] transport uses amazon SNS to send emails, texts, or a bunch of other notifications.
-
-``` js
-  require('winston-sns').SNS;
-  winston.add(winston.transports.SNS, options);
-```
-
-Options:
-
-* __aws_key:__ Your Amazon Web Services Key. *[required]*
-* __aws_secret:__ Your Amazon Web Services Secret. *[required]*
-* __subscriber:__ Subscriber number - found in your SNS AWS Console, after clicking on a topic. Same as AWS Account ID. *[required]*
-* __topic_arn:__ Also found in SNS AWS Console - listed under a topic as Topic ARN. *[required]*
-* __region:__ AWS Region to use. Can be one of: `us-east-1`,`us-west-1`,`eu-west-1`,`ap-southeast-1`,`ap-northeast-1`,`us-gov-west-1`,`sa-east-1`. (default: `us-east-1`)
-* __subject:__ Subject for notifications. (default: "Winston Error Report")
-* __message:__ Message of notifications. Uses placeholders for level (%l), error message (%e), and metadata (%m). (default: "Level '%l' Error:\n%e\n\nMetadata:\n%m")
-* __level:__ lowest level this transport will log. (default: `info`)
-
-### Graylog2 Transport
-
-[winston-graylog2][22] is a Graylog2 transport:
-
-``` js
-  var Graylog2 = require('winston-graylog2').Graylog2;
-  winston.add(Graylog2, options);
-```
-
-The Graylog2 transport connects to a Graylog2 server over UDP using the following options:
-
-* __level:__ Level of messages this transport should log. (default: info)
-* __silent:__ Boolean flag indicating whether to suppress output. (default: false)
-
-* __graylogHost:__ IP address or hostname of the graylog2 server. (default: localhost)
-* __graylogPort:__ Port to send messages to on the graylog2 server. (default: 12201)
-* __graylogHostname:__ The hostname associated with graylog2 messages. (default: require('os').hostname())
-* __graylogFacility:__ The graylog2 facility to send log messages.. (default: nodejs)
-
-*Metadata:* Stringified as JSON in the full message GELF field.
-
-### Adding Custom Transports
-Adding a custom transport (say for one of the datastore on the Roadmap) is actually pretty easy. All you need to do is accept a couple of options, set a name, implement a log() method, and add it to the set of transports exposed by winston.
-
-``` js
-  var util = require('util'),
-      winston = require('winston');
-
-  var CustomLogger = winston.transports.CustomerLogger = function (options) {
-    //
-    // Name this logger
-    //
-    this.name = 'customLogger';
-
-    //
-    // Set the level from your options
-    //
-    this.level = options.level || 'info';
-
-    //
-    // Configure your storage backing as you see fit
-    //
-  };
-
-  //
-  // Inherit from `winston.Transport` so you can take advantage
-  // of the base functionality and `.handleExceptions()`.
-  //
-  util.inherits(CustomLogger, winston.Transport);
-
-  CustomLogger.prototype.log = function (level, msg, meta, callback) {
-    //
-    // Store this message and metadata, maybe use some custom logic
-    // then callback indicating success.
-    //
-    callback(null, true);
-  };
-```
-
-### Inspirations
-1. [npm][0]
-2. [log.js][4]
-3. [socket.io][5]
-4. [node-rlog][6]
-5. [BigBrother][7]
-6. [Loggly][8]
-
-## Installation
-
-### Installing npm (node package manager)
-```
-  curl http://npmjs.org/install.sh | sh
-```
-
-### Installing winston
-```
-  [sudo] npm install winston
-```
-
-## Run Tests
-All of the winston tests are written in [vows][9], and designed to be run with npm. 
-
-``` bash
-  $ npm test
-```
-
-#### Author: [Charlie Robbins](http://twitter.com/indexzero)
-#### Contributors: [Matthew Bergman](http://github.com/fotoverite), [Marak Squires](http://github.com/marak)
-
-[0]: https://github.com/isaacs/npm/blob/master/lib/utils/log.js
-[1]: http://nodejs.org/docs/v0.3.5/api/events.html#events.EventEmitter
-[2]: http://github.com/nodejitsu/require-analyzer
-[3]: http://nodejitsu.com
-[4]: https://github.com/visionmedia/log.js
-[5]: http://socket.io
-[6]: https://github.com/jbrisbin/node-rlog
-[7]: https://github.com/feisty/BigBrother
-[8]: http://loggly.com
-[9]: http://vowsjs.org

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/docs/transports.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/docs/transports.md b/blackberry10/node_modules/prompt/node_modules/winston/docs/transports.md
deleted file mode 100644
index 5930ad4..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/docs/transports.md
+++ /dev/null
@@ -1,342 +0,0 @@
-# Winston Transports
-
-In `winston` a transport a transport is essentially a storage device for your logs. Each instance of a winston logger can have multiple transports configured at different levels. For example, one may want error logs to be stored in a persistent remote location (like a database), but all logs output to the console or a local file.
-
-There are several [core transports](#winston-core) included in `winston`, which leverage the built-in networking and file I/O offered by node.js core. In addition, there are [third-party transports which are supported by the winston core team](#winston-more). And last (but not least) there are [additional transports written by members of the community](#additional-transports).
-
-* **[Winston Core](#winston-core)**
-  * [Console](#console-transport)
-  * [File](#file-transport)
-  * [Http](#http-transport)
-  * [Webhook](#webhook-transport)
-
-* **[Winston More](#winston-more)**
-  * [CouchDB](#couchdb-transport)
-  * [Loggly](#loggly-transport)
-  * [MongoDB](#mongodb-transport)
-  * [Redis](#redis-transport)
-  * [Riak](#riak-transport)
-  
-* **[Additional Transports](#additional-transports)**
-  * [SimpleDB](#simpledb-transport)
-  * [Mail](#mail-transport)
-  * [Amazon SNS](#amazon-sns-simple-notification-system-transport)
-  * [Graylog2](#graylog2-transport)
-
-## Winston Core
-
-There are several core transports included in `winston`, which leverage the built-in networking and file I/O offered by node.js core.  
-
-* [Console](#console-transport)
-* [File](#file-transport)
-* [Http](#http-transport)
-* [Webhook](#webhook-transport)
-
-### Console Transport
-
-``` js
-  winston.add(winston.transports.Console, options)
-```
-
-The Console transport takes two simple options:
-
-* __level:__ Level of messages that this transport should log (default 'debug').
-* __silent:__ Boolean flag indicating whether to suppress output (default false).
-* __colorize:__ Boolean flag indicating if we should colorize output (default false).
-* __timestamp:__ Boolean flag indicating if we should prepend output with timestamps (default false). If function is specified, its return value will be used instead of timestamps.
-
-*Metadata:* Logged via util.inspect(meta);
-
-### File Transport
-
-``` js
-  winston.add(winston.transports.File, options)
-```
-
-The File transport should really be the 'Stream' transport since it will accept any [WritableStream][0]. It is named such because it will also accept filenames via the 'filename' option:
-
-* __level:__ Level of messages that this transport should log.
-* __silent:__ Boolean flag indicating whether to suppress output.
-* __colorize:__ Boolean flag indicating if we should colorize output.
-* __timestamp:__ Boolean flag indicating if we should prepend output with timestamps (default false). If function is specified, its return value will be used instead of timestamps.
-* __filename:__ The filename of the logfile to write output to.
-* __maxsize:__ Max size in bytes of the logfile, if the size is exceeded then a new file is created.
-* __maxFiles:__ Limit the number of files created when the size of the logfile is exceeded.
-* __stream:__ The WriteableStream to write output to.
-* __json:__ If true, messages will be logged as JSON (default true).
-
-*Metadata:* Logged via util.inspect(meta);
-
-### Http Transport
-
-``` js
-  winston.add(winston.transports.Http, options)
-```
-
-The `Http` transport is a generic way to log, query, and stream logs from an arbitrary Http endpoint, preferably [winstond][1]. It takes options that are passed to the node.js `http` or `https` request:
-
-* __host:__ (Default: **localhost**) Remote host of the HTTP logging endpoint
-* __port:__ (Default: **80 or 443**) Remote port of the HTTP logging endpoint
-* __path:__ (Default: **/**) Remote URI of the HTTP logging endpoint 
-* __auth:__ (Default: **None**) An object representing the `username` and `password` for HTTP Basic Auth
-* __ssl:__ (Default: **false**) Value indicating if we should us HTTPS
-
-## Winston More
-
-Starting with `winston@0.3.0` an effort was made to remove any transport which added additional dependencies to `winston`. At the time there were several transports already in `winston` which will **always be supported by the winston core team.**
-
-* [CouchDB](#couchdb-transport)
-* [Redis](#redis-transport)
-* [MongoDB](#mongodb-transport)
-* [Riak](#riak-transport)
-* [Loggly](#loggly-transport)
-
-### CouchDB Transport
-
-_As of `winston@0.6.0` the CouchDB transport has been broken out into a new module: [winston-couchdb][2]._
-
-``` js
-  winston.add(winston.transports.Couchdb, options)
-```
-
-The `Couchdb` will place your logs in a remote CouchDB database. It will also create a [Design Document][3], `_design/Logs` for later querying and streaming your logs from CouchDB. The transport takes the following options:
-
-* __host:__ (Default: **localhost**) Remote host of the HTTP logging endpoint
-* __port:__ (Default: **5984**) Remote port of the HTTP logging endpoint
-* __db:__ (Default: **winston**) Remote URI of the HTTP logging endpoint 
-* __auth:__ (Default: **None**) An object representing the `username` and `password` for HTTP Basic Auth
-* __ssl:__ (Default: **false**) Value indicating if we should us HTTPS
-
-### Redis Transport
-
-``` js
-  winston.add(winston.transports.Redis, options)
-```
-
-This transport accepts the options accepted by the [node-redis][4] client:
-
-* __host:__ (Default **localhost**) Remote host of the Redis server
-* __port:__ (Default **6379**) Port the Redis server is running on.
-* __auth:__ (Default **None**) Password set on the Redis server
-
-In addition to these, the Redis transport also accepts the following options.
-
-* __length:__ (Default **200**) Number of log messages to store.
-* __container:__ (Default **winston**) Name of the Redis container you wish your logs to be in.
-* __channel:__ (Default **None**) Name of the Redis channel to stream logs from. 
-
-*Metadata:* Logged as JSON literal in Redis
-
-### Loggly Transport
-
-_As of `winston@0.6.0` the Loggly transport has been broken out into a new module: [winston-loggly][5]._
-
-``` js
-  winston.add(winston.transports.Loggly, options);
-```
-
-The Loggly transport is based on [Nodejitsu's][6] [node-loggly][7] implementation of the [Loggly][8] API. If you haven't heard of Loggly before, you should probably read their [value proposition][9]. The Loggly transport takes the following options. Either 'inputToken' or 'inputName' is required:
-
-* __level:__ Level of messages that this transport should log.
-* __subdomain:__ The subdomain of your Loggly account. *[required]*
-* __auth__: The authentication information for your Loggly account. *[required with inputName]*
-* __inputName:__ The name of the input this instance should log to.
-* __inputToken:__ The input token of the input this instance should log to.
-* __json:__ If true, messages will be sent to Loggly as JSON.
-
-*Metadata:* Logged in suggested [Loggly format][10]
-
-### Riak Transport
-
-_As of `winston@0.3.0` the Riak transport has been broken out into a new module: [winston-riak][11]._ Using it is just as easy:
-
-``` js
-  var Riak = require('winston-riak').Riak;
-  winston.add(Riak, options);
-```
-
-In addition to the options accepted by the [riak-js][12] [client][13], the Riak transport also accepts the following options. It is worth noting that the riak-js debug option is set to *false* by default:
-
-* __level:__ Level of messages that this transport should log.
-* __bucket:__ The name of the Riak bucket you wish your logs to be in or a function to generate bucket names dynamically.
-
-``` js
-  // Use a single bucket for all your logs
-  var singleBucketTransport = new (Riak)({ bucket: 'some-logs-go-here' });
-
-  // Generate a dynamic bucket based on the date and level
-  var dynamicBucketTransport = new (Riak)({
-    bucket: function (level, msg, meta, now) {
-      var d = new Date(now);
-      return level + [d.getDate(), d.getMonth(), d.getFullYear()].join('-');
-    }
-  });
-```
-
-*Metadata:* Logged as JSON literal in Riak
-
-### MongoDB Transport
-
-As of `winston@0.3.0` the MongoDB transport has been broken out into a new module: [winston-mongodb][14]. Using it is just as easy:
-
-``` js
-  var MongoDB = require('winston-mongodb').MongoDB;
-  winston.add(MongoDB, options);
-```
-
-The MongoDB transport takes the following options. 'db' is required:
-
-* __level:__ Level of messages that this transport should log.
-* __silent:__ Boolean flag indicating whether to suppress output.
-* __db:__ The name of the database you want to log to. *[required]*
-* __collection__: The name of the collection you want to store log messages in, defaults to 'log'.
-* __safe:__ Boolean indicating if you want eventual consistency on your log messages, if set to true it requires an extra round trip to the server to ensure the write was committed, defaults to true.
-* __host:__ The host running MongoDB, defaults to localhost.
-* __port:__ The port on the host that MongoDB is running on, defaults to MongoDB's default port.
-
-*Metadata:* Logged as a native JSON object.
-
-## Additional Transports
-
-The community has truly embraced `winston`; there are over **23** winston transports and over half of them are maintained by authors external to the winston core team. If you want to check them all out, just search `npm`:
-
-``` bash
-  $ npm search winston
-```
-
-**If you have an issue using one of these modules you should contact the module author directly**
-
-### SimpleDB Transport
-
-The [winston-simpledb][15] transport is just as easy:
-
-``` js
-  var SimpleDB = require('winston-simpledb').SimpleDB;
-  winston.add(SimpleDB, options);
-```
-
-The SimpleDB transport takes the following options. All items marked with an asterisk are required:
-
-* __awsAccessKey__:* your AWS Access Key
-* __secretAccessKey__:* your AWS Secret Access Key
-* __awsAccountId__:* your AWS Account Id
-* __domainName__:* a string or function that returns the domain name to log to
-* __region__:* the region your domain resides in
-* __itemName__: a string ('uuid', 'epoch', 'timestamp') or function that returns the item name to log
-
-*Metadata:* Logged as a native JSON object to the 'meta' attribute of the item.
-
-### Mail Transport
-
-The [winston-mail][16] is an email transport:
-
-``` js
-  var Mail = require('winston-mail').Mail;
-  winston.add(Mail, options);
-```
-
-The Mail transport uses [node-mail][17] behind the scenes.  Options are the following, `to` and `host` are required:
-
-* __to:__ The address(es) you want to send to. *[required]*
-* __from:__ The address you want to send from. (default: `winston@[server-host-name]`)
-* __host:__ SMTP server hostname
-* __port:__ SMTP port (default: 587 or 25)
-* __secure:__ Use secure
-* __username__ User for server auth
-* __password__ Password for server auth
-* __level:__ Level of messages that this transport should log.
-* __silent:__ Boolean flag indicating whether to suppress output.
-
-*Metadata:* Stringified as JSON in email.
-
-### Amazon SNS (Simple Notification System) Transport
-
-The [winston-sns][18] transport uses amazon SNS to send emails, texts, or a bunch of other notifications.
-
-``` js
-  require('winston-sns').SNS;
-  winston.add(winston.transports.SNS, options);
-```
-
-Options:
-
-* __aws_key:__ Your Amazon Web Services Key. *[required]*
-* __aws_secret:__ Your Amazon Web Services Secret. *[required]*
-* __subscriber:__ Subscriber number - found in your SNS AWS Console, after clicking on a topic. Same as AWS Account ID. *[required]*
-* __topic_arn:__ Also found in SNS AWS Console - listed under a topic as Topic ARN. *[required]*
-* __region:__ AWS Region to use. Can be one of: `us-east-1`,`us-west-1`,`eu-west-1`,`ap-southeast-1`,`ap-northeast-1`,`us-gov-west-1`,`sa-east-1`. (default: `us-east-1`)
-* __subject:__ Subject for notifications. (default: "Winston Error Report")
-* __message:__ Message of notifications. Uses placeholders for level (%l), error message (%e), and metadata (%m). (default: "Level '%l' Error:\n%e\n\nMetadata:\n%m")
-* __level:__ lowest level this transport will log. (default: `info`)
-
-### Graylog2 Transport
-
-[winston-graylog2][19] is a Graylog2 transport:
-
-``` js
-  var Graylog2 = require('winston-graylog2').Graylog2;
-  winston.add(Graylog2, options);
-```
-
-The Graylog2 transport connects to a Graylog2 server over UDP using the following options:
-
-* __level:__ Level of messages this transport should log. (default: info)
-* __silent:__ Boolean flag indicating whether to suppress output. (default: false)
-
-* __graylogHost:__ IP address or hostname of the graylog2 server. (default: localhost)
-* __graylogPort:__ Port to send messages to on the graylog2 server. (default: 12201)
-* __graylogHostname:__ The hostname associated with graylog2 messages. (default: require('os').hostname())
-* __graylogFacility:__ The graylog2 facility to send log messages.. (default: nodejs)
-
-*Metadata:* Stringified as JSON in the full message GELF field.
-
-## Find more Transports
-
-``` bash
-  $ npm search winston
-  (...)
-  winston-amon         Winston transport for Amon logging                            =zoramite             
-  winston-amqp         An AMQP transport for winston                                 =kr1sp1n              
-  winston-couchdb      a couchdb transport for winston                               =alz               
-  winston-express      Express middleware to let you use winston from the browser.   =regality             
-  winston-graylog2     A graylog2 transport for winston                              =smithclay            
-  winston-hbase        A HBase transport for winston                                 =ddude                
-  winston-loggly       A Loggly transport for winston                                =indexzero            
-  winston-mail         A mail transport for winston                                  =wavded               
-  winston-mail2        A mail transport for winston                                  =ivolo                
-  winston-mongodb      A MongoDB transport for winston                               =indexzero            
-  winston-nodemail     A mail transport for winston                                  =reinpk               
-  winston-nssocket     nssocket transport for winston                                =mmalecki             
-  winston-papertrail   A Papertrail transport for winston                            =kenperkins           
-  winston-redis        A fixed-length Redis transport for winston                    =indexzero            
-  winston-riak         A Riak transport for winston                                  =indexzero            
-  winston-scribe       A scribe transport for winston                                =wnoronha             
-  winston-simpledb     A Winston transport for Amazon SimpleDB                       =chilts               
-  winston-skywriter    A Windows Azure table storage transport for winston           =pofallon             
-  winston-sns          A Simple Notification System Transport for winston            =jesseditson
-  winston-syslog       A syslog transport for winston                                =indexzero            
-  winston-syslog-ain2  An ain2 based syslog transport for winston                    =lamtha               
-  winston-winlog       Windows Event Log logger for Winston                          =jfromaniello         
-  winston-zmq          A 0MQ transport for winston                                   =dhendo
-```
-
-[0]: http://nodejs.org/docs/v0.3.5/api/streams.html#writable_Stream
-[1]: https://github.com/flatiron/winstond
-[2]: https://github.com/indexzero/winston-couchdb
-[3]: http://guide.couchdb.org/draft/design.html
-[4]: https://github.com/mranney/node_redis
-[5]: https://github.com/indexzero/winston-loggly
-[6]: http://nodejitsu.com
-[7]: https://github.com/nodejitsu/node-loggly
-[8]: http://loggly.com
-[9]: http://www.loggly.com/product/
-[10]: http://wiki.loggly.com/loggingfromcode
-[11]: https://github.com/indexzero/winston-riak
-[12]: http://riakjs.org
-[13]: https://github.com/frank06/riak-js/blob/master/src/http_client.coffee#L10
-[14]: http://github.com/indexzero/winston-mongodb
-[15]: http://github.com/appsattic/winston-simpledb
-[16]: http://github.com/wavded/winston-mail
-[17]: https://github.com/weaver/node-mail
-[18]: https://github.com/jesseditson/winston-sns
-[19]: https://github.com/flite/winston-graylog2

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/examples/couchdb.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/examples/couchdb.js b/blackberry10/node_modules/prompt/node_modules/winston/examples/couchdb.js
deleted file mode 100644
index ce2d960..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/examples/couchdb.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var winston = require('../lib/winston');
-
-//
-// Create a new winston logger instance with two tranports: Console, and Couchdb
-//
-//
-// The Console transport will simply output to the console screen
-// The Couchdb tranport will perform an HTTP POST request to the specified CouchDB instance
-//
-var logger = new (winston.Logger)({
-  transports: [
-    new (winston.transports.Console)(),
-    new (winston.transports.Couchdb)({ 'host': 'localhost', 'db': 'logs' })
-    // if you need auth do this: new (winston.transports.Couchdb)({ 'user': 'admin', 'pass': 'admin', 'host': 'localhost', 'db': 'logs' })
-  ]
-});
-
-logger.log('info', 'Hello webhook log files!', { 'foo': 'bar' });

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/examples/exception.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/examples/exception.js b/blackberry10/node_modules/prompt/node_modules/winston/examples/exception.js
deleted file mode 100644
index 99f605b..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/examples/exception.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var winston = require('../');
-winston.handleExceptions(new winston.transports.Console({ colorize: true, json: true }));
-
-throw new Error('Hello, winston!');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/examples/raw-mode.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/examples/raw-mode.js b/blackberry10/node_modules/prompt/node_modules/winston/examples/raw-mode.js
deleted file mode 100644
index 89e070d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/examples/raw-mode.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var winston = require('../lib/winston');
-
-var logger = new (winston.Logger)({
-  transports: [
-    new (winston.transports.Console)({ raw: true }),
-  ]
-});
-
-logger.log('info', 'Hello, this is a raw logging event',   { 'foo': 'bar' });
-logger.log('info', 'Hello, this is a raw logging event 2', { 'foo': 'bar' });

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/examples/webhook-post.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/examples/webhook-post.js b/blackberry10/node_modules/prompt/node_modules/winston/examples/webhook-post.js
deleted file mode 100644
index 0fa1c8d..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/examples/webhook-post.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var winston = require('../lib/winston');
-
-//
-// Create a new winston logger instance with two tranports: Console, and Webhook
-//
-//
-// The Console transport will simply output to the console screen
-// The Webhook tranports will perform an HTTP POST request to an abritrary end-point ( for post/recieve webhooks )
-//
-var logger = new (winston.Logger)({
-  transports: [
-    new (winston.transports.Console)(),
-    new (winston.transports.Webhook)({ 'host': 'localhost', 'port': 8080, 'path': '/collectdata' })
-  ]
-});
-
-logger.log('info', 'Hello webhook log files!', { 'foo': 'bar' });

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston.js
deleted file mode 100644
index b8fea28..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * winston.js: Top-level include defining Winston.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var winston = exports;
-
-//
-// Expose version using `pkginfo`
-//
-require('pkginfo')(module, 'version');
-
-//
-// Include transports defined by default by winston
-//
-winston.transports = require('./winston/transports');
-
-//
-// Expose utility methods
-//
-var common             = require('./winston/common');
-winston.hash           = common.hash;
-winston.clone          = common.clone;
-winston.longestElement = common.longestElement;
-winston.exception      = require('./winston/exception');
-winston.config         = require('./winston/config');
-winston.addColors      = winston.config.addColors;
-
-//
-// Expose core Logging-related prototypes.
-//
-winston.Container      = require('./winston/container').Container;
-winston.Logger         = require('./winston/logger').Logger;
-winston.Transport      = require('./winston/transports/transport').Transport;
-
-//
-// We create and expose a default `Container` to `winston.loggers` so that the
-// programmer may manage multiple `winston.Logger` instances without any additional overhead.
-//
-// ### some-file1.js
-//
-//     var logger = require('winston').loggers.get('something');
-//
-// ### some-file2.js
-//
-//     var logger = require('winston').loggers.get('something');
-//
-winston.loggers = new winston.Container();
-
-//
-// We create and expose a 'defaultLogger' so that the programmer may do the
-// following without the need to create an instance of winston.Logger directly:
-//
-//     var winston = require('winston');
-//     winston.log('info', 'some message');
-//     winston.error('some error');
-//
-var defaultLogger = new winston.Logger({
-  transports: [new winston.transports.Console()]
-});
-
-//
-// Pass through the target methods onto `winston.
-//
-var methods = [
-  'log',
-  'query',
-  'stream',
-  'add',
-  'remove',
-  'profile',
-  'startTimer',
-  'extend',
-  'cli',
-  'handleExceptions',
-  'unhandleExceptions'
-];
-common.setLevels(winston, null, defaultLogger.levels);
-methods.forEach(function (method) {
-  winston[method] = function () {
-    return defaultLogger[method].apply(defaultLogger, arguments);
-  };
-});
-
-//
-// ### function cli ()
-// Configures the default winston logger to have the
-// settings for command-line interfaces: no timestamp,
-// colors enabled, padded output, and additional levels.
-//
-winston.cli = function () {
-  winston.padLevels = true;
-  common.setLevels(winston, defaultLogger.levels, winston.config.cli.levels);
-  defaultLogger.setLevels(winston.config.cli.levels);
-  winston.config.addColors(winston.config.cli.colors);
-
-  if (defaultLogger.transports.console) {
-    defaultLogger.transports.console.colorize = true;
-    defaultLogger.transports.console.timestamp = false;
-  }
-
-  return winston;
-};
-
-//
-// ### function setLevels (target)
-// #### @target {Object} Target levels to use
-// Sets the `target` levels specified on the default winston logger.
-//
-winston.setLevels = function (target) {
-  common.setLevels(winston, defaultLogger.levels, target);
-  defaultLogger.setLevels(target);
-};
-
-//
-// Define getters / setters for appropriate properties of the
-// default logger which need to be exposed by winston.
-//
-['emitErrs', 'exitOnError', 'padLevels', 'level', 'levelLength', 'stripColors'].forEach(function (prop) {
-  Object.defineProperty(winston, prop, {
-    get: function () {
-      return defaultLogger[prop];
-    },
-    set: function (val) {
-      defaultLogger[prop] = val;
-    }
-  });
-});
-
-//
-// @default {Object}
-// The default transports and exceptionHandlers for
-// the default winston logger.
-//
-Object.defineProperty(winston, 'default', {
-  get: function () {
-    return {
-      transports: defaultLogger.transports,
-      exceptionHandlers: defaultLogger.exceptionHandlers
-    };
-  }
-});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/common.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/common.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/common.js
deleted file mode 100644
index c67a878..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/common.js
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * common.js: Internal helper and utility functions for winston
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var util = require('util'),
-    crypto = require('crypto'),
-    cycle = require('cycle'),
-    config = require('./config');
-
-//
-// ### function setLevels (target, past, current)
-// #### @target {Object} Object on which to set levels.
-// #### @past {Object} Previous levels set on target.
-// #### @current {Object} Current levels to set on target.
-// Create functions on the target objects for each level
-// in current.levels. If past is defined, remove functions
-// for each of those levels.
-//
-exports.setLevels = function (target, past, current, isDefault) {
-  if (past) {
-    Object.keys(past).forEach(function (level) {
-      delete target[level];
-    });
-  }
-
-  target.levels = current || config.npm.levels;
-  if (target.padLevels) {
-    target.levelLength = exports.longestElement(Object.keys(target.levels));
-  }
-
-  //
-  //  Define prototype methods for each log level
-  //  e.g. target.log('info', msg) <=> target.info(msg)
-  //
-  Object.keys(target.levels).forEach(function (level) {
-    target[level] = function (msg) {
-      var args     = Array.prototype.slice.call(arguments),
-          callback = typeof args[args.length - 1] === 'function' || !args[args.length - 1] ? args.pop() : null,
-          meta     = args.length === 2 ? args.pop() : null;
-
-      return target.log(level, msg, meta, callback);
-    };
-  });
-
-  return target;
-};
-
-//
-// ### function longestElement
-// #### @xs {Array} Array to calculate against
-// Returns the longest element in the `xs` array.
-//
-exports.longestElement = function (xs) {
-  return Math.max.apply(
-    null,
-    xs.map(function (x) { return x.length; })
-  );
-};
-
-//
-// ### function clone (obj)
-// #### @obj {Object} Object to clone.
-// Helper method for deep cloning pure JSON objects
-// i.e. JSON objects that are either literals or objects (no Arrays, etc)
-//
-exports.clone = function (obj) {
-  // we only need to clone refrence types (Object)
-  if (!(obj instanceof Object)) {
-    return obj;
-  }
-  else if (obj instanceof Date) {
-    return obj;
-  }
-
-  var copy = {};
-  for (var i in obj) {
-    if (Array.isArray(obj[i])) {
-      copy[i] = obj[i].slice(0);
-    }
-    else if (obj[i] instanceof Buffer) {
-        copy[i] = obj[i].slice(0);
-    }
-    else if (typeof obj[i] != 'function') {
-      copy[i] = obj[i] instanceof Object ? exports.clone(obj[i]) : obj[i];
-    }
-  }
-
-  return copy;
-};
-
-//
-// ### function log (options)
-// #### @options {Object} All information about the log serialization.
-// Generic logging function for returning timestamped strings
-// with the following options:
-//
-//    {
-//      level:     'level to add to serialized message',
-//      message:   'message to serialize',
-//      meta:      'additional logging metadata to serialize',
-//      colorize:  false, // Colorizes output (only if `.json` is false)
-//      timestamp: true   // Adds a timestamp to the serialized message
-//    }
-//
-exports.log = function (options) {
-  var timestampFn = typeof options.timestamp === 'function'
-                  ? options.timestamp
-                  : exports.timestamp,
-      timestamp   = options.timestamp ? timestampFn() : null,
-      meta        = options.meta ? exports.clone(cycle.decycle(options.meta)) : null,
-      output;
-
-  //
-  // raw mode is intended for outputing winston as streaming JSON to STDOUT
-  //
-  if (options.raw) {
-    if (typeof meta !== 'object' && meta != null) {
-      meta = { meta: meta };
-    }
-    output         = exports.clone(meta) || {};
-    output.level   = options.level;
-    output.message = options.message.stripColors;
-    return JSON.stringify(output);
-  }
-
-  //
-  // json mode is intended for pretty printing multi-line json to the terminal
-  //
-  if (options.json) {
-    if (typeof meta !== 'object' && meta != null) {
-      meta = { meta: meta };
-    }
-
-    output         = exports.clone(meta) || {};
-    output.level   = options.level;
-    output.message = options.message;
-
-    if (timestamp) {
-      output.timestamp = timestamp;
-    }
-
-    if (typeof options.stringify === 'function') {
-      return options.stringify(output);
-    }
-
-    return JSON.stringify(output, function (key, value) {
-      return value instanceof Buffer
-        ? value.toString('base64')
-        : value;
-    });
-  }
-
-  output = timestamp ? timestamp + ' - ' : '';
-  output += options.colorize ? config.colorize(options.level) : options.level;
-  output += (': ' + options.message);
-
-  if (meta) {
-    if (typeof meta !== 'object') {
-      output += ' ' + meta;
-    }
-    else if (Object.keys(meta).length > 0) {
-      output += ' ' + (options.prettyPrint ? ('\n' + util.inspect(meta, false, null, options.colorize)) : exports.serialize(meta));
-    }
-  }
-
-  return output;
-};
-
-exports.capitalize = function (str) {
-  return str && str[0].toUpperCase() + str.slice(1);
-};
-
-//
-// ### function hash (str)
-// #### @str {string} String to hash.
-// Utility function for creating unique ids
-// e.g. Profiling incoming HTTP requests on the same tick
-//
-exports.hash = function (str) {
-  return crypto.createHash('sha1').update(str).digest('hex');
-};
-
-//
-// ### function pad (n)
-// Returns a padded string if `n < 10`.
-//
-exports.pad = function (n) {
-  return n < 10 ? '0' + n.toString(10) : n.toString(10);
-};
-
-//
-// ### function timestamp ()
-// Returns a timestamp string for the current time.
-//
-exports.timestamp = function () {
-  return new Date().toISOString();
-};
-
-//
-// ### function serialize (obj, key)
-// #### @obj {Object|literal} Object to serialize
-// #### @key {string} **Optional** Optional key represented by obj in a larger object
-// Performs simple comma-separated, `key=value` serialization for Loggly when
-// logging to non-JSON inputs.
-//
-exports.serialize = function (obj, key) {
-  if (obj === null) {
-    obj = 'null';
-  }
-  else if (obj === undefined) {
-    obj = 'undefined';
-  }
-  else if (obj === false) {
-    obj = 'false';
-  }
-
-  if (typeof obj !== 'object') {
-    return key ? key + '=' + obj : obj;
-  }
-
-  if (obj instanceof Buffer) {
-    return key ? key + '=' + obj.toString('base64') : obj.toString('base64');
-  }
-
-  var msg = '',
-      keys = Object.keys(obj),
-      length = keys.length;
-
-  for (var i = 0; i < length; i++) {
-    if (Array.isArray(obj[keys[i]])) {
-      msg += keys[i] + '=[';
-
-      for (var j = 0, l = obj[keys[i]].length; j < l; j++) {
-        msg += exports.serialize(obj[keys[i]][j]);
-        if (j < l - 1) {
-          msg += ', ';
-        }
-      }
-
-      msg += ']';
-    }
-    else if (obj[keys[i]] instanceof Date) {
-      msg += keys[i] + '=' + obj[keys[i]];
-    }
-    else {
-      msg += exports.serialize(obj[keys[i]], keys[i]);
-    }
-
-    if (i < length - 1) {
-      msg += ', ';
-    }
-  }
-
-  return msg;
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config.js b/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config.js
deleted file mode 100644
index a466086..0000000
--- a/blackberry10/node_modules/prompt/node_modules/winston/lib/winston/config.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * config.js: Default settings for all levels that winston knows about
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- *
- */
-
-var colors = require('colors');
-
-var config = exports,
-    allColors = exports.allColors = {};
-
-config.addColors = function (colors) {
-  mixin(allColors, colors);
-};
-
-config.colorize = function (level) {
-  return level[allColors[level]];
-};
-
-//
-// Export config sets
-//
-config.cli    = require('./config/cli-config');
-config.npm    = require('./config/npm-config');
-config.syslog = require('./config/syslog-config');
-
-//
-// Add colors for pre-defined config sets
-//
-config.addColors(config.npm.colors);
-config.addColors(config.syslog.colors);
-
-function mixin (target) {
-  var args = Array.prototype.slice.call(arguments, 1);
-
-  args.forEach(function (a) {
-    var keys = Object.keys(a);
-    for (var i = 0; i < keys.length; i++) {
-      target[keys[i]] = a[keys[i]];
-    }
-  });
-  return target;
-};
\ No newline at end of file


[41/51] [partial] CB-7087 Retire blackberry10/ directory

Posted by js...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/localize.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/localize.js b/blackberry10/bin/templates/project/cordova/lib/localize.js
deleted file mode 100755
index a6fe900..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/localize.js
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var Localize = require("localize"),
-    loc = new Localize({
-        "EXCEPTION_NATIVEPACKAGER": {
-            "en": "Native Packager exception occurred"
-        },
-        "EXCEPTION_WIDGET_ARCHIVE_NOT_FOUND": {
-            "en": "Failed to find WebWorks archive: $[1]"
-        },
-        "EXCEPTION_MISSING_SIGNING_KEY_FILE": {
-            "en": "Cannot sign application - failed to find signing key file: $[1]"
-        },
-        "WARNING_MISSING_SIGNING_KEY_FILE": {
-            "en": "Build ID set in config.xml [version], but signing key file was not found: $[1]"
-        },
-        "EXCEPTION_MISSING_SIGNING_PASSWORD": {
-            "en": "Cannot sign application - No signing password provided [-g]"
-        },
-        "WARNING_SIGNING_PASSWORD_EXPECTED": {
-            "en": "Build ID set in config.xml [version], but no signing password was provided [-g]. Bar will be unsigned"
-        },
-        "EXCEPTION_DEBUG_TOKEN_NOT_FOUND": {
-            "en": "Failed to find debug token. If you have an existing debug token, please copy it to $[1]. To generate a new debug token, execute the 'run' command."
-        },
-        "EXCEPTION_DEBUG_TOKEN_WRONG_FILE_EXTENSION": {
-            "en": "Specified debug token not a .bar extension"
-        },
-        "PROGRESS_SESSION_CONFIGXML": {
-            "en": "Parsing config.xml"
-        },
-        "PROGRESS_FILE_POPULATING_SOURCE": {
-            "en": "Populating application source"
-        },
-        "PROGRESS_GEN_OUTPUT": {
-            "en": "Generating output files"
-        },
-        "PROGRESS_PACKAGING": {
-            "en": "Packaging the BAR file"
-        },
-        "PROGRESS_COMPLETE": {
-            "en": "BAR packaging complete"
-        },
-        "EXCEPTION_PARSING_XML": {
-            "en": "An error has occurred parsing the config.xml. Please ensure that it is syntactically correct"
-        },
-        "EXCEPTION_INVALID_VERSION": {
-            "en": "Please enter a valid application version"
-        },
-        "EXCEPTION_INVALID_NAME": {
-            "en": "Please enter a valid application name"
-        },
-        "EXCEPTION_INVALID_AUTHOR": {
-            "en": "Please enter an author for the application"
-        },
-        "EXCEPTION_INVALID_ID": {
-            "en": "Please enter an application id"
-        },
-        "EXCEPTION_INVALID_FEATURE_ID": {
-            "en": "Invalid <feature> element - failed to find the id attribute"
-        },
-        "EXCEPTION_BUFFER_ERROR": {
-            "en": "ERROR in bufferToString(): Buffer length must be even"
-        },
-        "EXCEPTION_FEATURE_DEFINED_WITH_WILDCARD_ACCESS_URI_OR_ORIGIN": {
-            "en": "Invalid config.xml - no <feature> tags are allowed for this <access> element"
-        },
-        "EXCEPTION_INVALID_ACCESS_URI_NO_PROTOCOL": {
-            "en": "Invalid URI attribute in the access element - protocol required($[1])"
-        },
-        "WARNING_URI_AND_ORIGIN_FOUND_IN_CONFIG": {
-            "en": "Invalid config.xml - <access> tags should have one of 'uri' or 'origin' attributes. 'origin' attribute will be ignored"
-        },
-        "EXCEPTION_INVALID_ACCESS_URI_NO_URN": {
-            "en": "Failed to parse the URI attribute in the access element($[1])"
-        },
-        "EXCEPTION_CMDLINE_ARG_INVALID": {
-            "en": "Invalid command line argument \"$[1]\""
-        },
-        "EXCEPTION_INVOKE_TARGET_INVALID_ID": {
-            "en": "Each rim:invoke-target element must specify a valid id attribute"
-        },
-        "EXCEPTION_INVOKE_TARGET_INVALID_TYPE": {
-            "en": "rim:invoke-target element must be specified and cannot be empty"
-        },
-        "EXCEPTION_INVOKE_TARGET_ACTION_INVALID": {
-            "en": "Each filter element must specify at least one valid action"
-        },
-        "EXCEPTION_INVOKE_TARGET_MIME_TYPE_INVALID": {
-            "en": "Each filter element must specify at least one valid mime-type"
-        },
-        "EXCEPTION_INVOKE_TARGET_FILTER_PROPERTY_INVALID": {
-            "en": "At least one property element in an invoke filter is invalid"
-        },
-        "EXCEPTION_INVALID_ICON_SRC": {
-            "en": "Icon src cannot be empty"
-        },
-        "EXCEPTION_INVALID_SPLASH_SRC": {
-            "en": "Splash src cannot be empty"
-        },
-        "EXCEPTION_INVALID_ICON_SRC_LOCALES": {
-            "en": "Icon src should not point to files under \"locales\" folder, bbwp will perform folder-based localization"
-        },
-        "EXCEPTION_INVALID_SPLASH_SRC_LOCALES": {
-            "en": "Splash src should not point to files under \"locales\" folder, bbwp will perform folder-based localization"
-        },
-        "EXCEPTION_EXTENSION_CIRCULAR_DEPENDENCY": {
-            "en": "Circular dependency detected for extension: \"$[1]\""
-        },
-        "EXCEPTION_EXTENSION_NOT_FOUND": {
-            "en": "Extension \"$[1]\" not found in \"ext\" folder"
-        },
-        "EXCEPTION_PARAMS_FILE_ERROR": {
-            "en": "An error has occurred parsing \"$[1]\""
-        },
-        "EXCEPTION_PARAMS_FILE_NOT_FOUND": {
-            "en": "\"$[1]\" does not exist"
-        },
-        "EXCEPTION_MISSING_TOOLS": {
-            "en": "BBNDK tools could not be found. Please ensure you have installed the BlackBerry Native SDK [http://developer.blackberry.com/native/] and have the PATH configured via bbndk-env script."
-        },
-        "EXCEPTION_INVALID_ORIENTATION_MODE": {
-            "en": "\"$[1]\" is not a valid orientation mode"
-        },
-        "EXCEPTION_EMPTY_ORIENTATION_MODE": {
-            "en": "blackberry.app.orientation parameter \"mode\" missing"
-        },
-        "EXCEPTION_BGCOLOR_INVALID" : {
-            "en": "Background color \"$[1]\" is not a valid number"
-        },
-        "EXCEPTION_CONFIG_NOT_FOUND" : {
-            "en": "No config.xml file was found at the root of the .zip file"
-        },
-        "EXCEPTION_CORDOVA_JS_IN_LIB_DIR" : {
-            "en": "$[1] cordova.js files found in lib"
-        },
-        "WARN_CORDOVA_JS_PACKAGED" : {
-            "en": "cordova.js is now packaged as local:///chrome/cordova.js"
-        },
-        "WARN_WEBPLATFORM_JS_PACKAGED" : {
-            "en": "webplatform.js has been packaged as an alternative to the on device version"
-        },
-        "WARN_WEBPLATFORM_I18N_PACKAGED" : {
-            "en": "i18n.js has been packaged as an alternative to the on device version"
-        },
-        "EXCEPTION_INVALID_ARCHIVE_PATH" : {
-            "en": "An archive or directory does not exist at the path specified: \"$[1]\""
-        },
-        "EXCEPTION_APPDESC_NOT_FOUND" : {
-            "en": "The bar descriptor file does not exist at the path specified: \"$[1]\""
-        },
-        "WARNING_ORIENTATION_DEPRECATED": {
-            "en": "blackberry.app.orientation has been deprecated, please use blackberry.app instead"
-        },
-        "WARNING_WEBSECURITY_DISABLED": {
-            "en": "You have disabled all web security in this WebWorks application"
-        },
-        "PROGRESS_DEBUG_TOKEN_IS_VALID": {
-            "en": "The existing debug token is valid"
-        },
-        "WARN_TARGET_NOT_EXIST": {
-            "en": "The target \"$[1]\" does not exist"
-        },
-        "WARN_IP_NOT_DEFINED": {
-            "en": "IP is not defined in target \"$[1]\""
-        },
-        "WARN_PASSWORD_NOT_DEFINED": {
-            "en": "Password is not defined in target \"$[1]\""
-        },
-        "PROGRESS_DEPLOYING_DEBUG_TOKEN": {
-            "en": "Deploying debug token to target \"$[1]\""
-        },
-        "WARN_NO_DEVICE_PIN_FOUND": {
-            "en": "No device PIN found, will omit debug token generation"
-        },
-        "WARN_NO_SIGNING_PASSWORD_PROVIDED": {
-            "en": "No signing password provided, debug token cannot be generated. Please enter a value for 'keystorepass' in $[1]/.cordova/blackberry10.json or use --keystorepass via command-line."
-        },
-        "PROGRESS_GENERATING_DEBUG_TOKEN": {
-            "en": "Generating debug token"
-        },
-        "WARN_RUN_DEVICE_OVERRIDES_EMULATOR": {
-            "en": "Skipping emulator detection and detecting device. Please provide only 1 of --target, --device, and --emulator"
-        }
-
-    }, "", ""); // TODO maybe a bug in localize, must set default locale to "" in order get it to work
-
-loc.setLocale("en");
-
-module.exports = loc;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/log
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/log b/blackberry10/bin/templates/project/cordova/lib/log
deleted file mode 100755
index 84e76c6..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/log
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-set -e
-NOTIMPLEMENTED_VALUE=1
-
-echo 'BlackBerry10: logging not supported at this time.'
-exit $NOTIMPLEMENTED_VALUE

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/log.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/log.bat b/blackberry10/bin/templates/project/cordova/lib/log.bat
deleted file mode 100644
index ef5f6d9..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/log.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements.  See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership.  The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License.  You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied.  See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-
-ECHO echo 'BlackBerry10: logging not supported at this time.'
-EXIT /B 1

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/logger.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/logger.js b/blackberry10/bin/templates/project/cordova/lib/logger.js
deleted file mode 100644
index f751a57..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/logger.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var level = 'verbose';
-
-module.exports = {
-    level: function (value) {
-        level = value;
-    },
-    info: function (msg) {
-        if (level === 'verbose') {
-            console.log("[INFO]    " + msg.replace(/info: /i, ""));
-        }
-    },
-    error: function (msg) {
-        console.error("[ERROR]   " + msg.replace(/error: /i, ""));
-    },
-    warn: function (msg) {
-        if (level !== 'error') {
-            console.log("[WARN]    " + msg.replace(/warning: /i, ""));
-        }
-    },
-    log: function (msg) {
-        if (level === "verbose") {
-            console.log("[INFO]    " + msg.replace(/info: /i, ""));
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/native-packager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/native-packager.js b/blackberry10/bin/templates/project/cordova/lib/native-packager.js
deleted file mode 100644
index 9f53779..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/native-packager.js
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*jshint sub:true*/
-var childProcess = require("child_process"),
-    fs = require("fs"),
-    path = require("path"),
-    util = require("util"),
-    utils = require("./utils"),
-    data2xml = require("../third_party/data2xml/data2xml"),
-    wrench = require("wrench"),
-    conf = require("./conf"),
-    logger = require("./logger"),
-    localize = require("./localize"),
-    pkgrUtils = require("./packager-utils"),
-    i18nMgr = require("./i18n-manager"),
-    et = require("elementtree"),
-    xmlHelper = require("./xml-helpers"),
-    NL = pkgrUtils.isWindows() ? "\r\n" : "\n";
-
-function generateTabletXMLFile(session, config) {
-    var files = wrench.readdirSyncRecursive(session.sourceDir),
-        xmlData,
-        xmlDoc,
-        xmlObject = {
-            id : config.id,
-            versionNumber : config.version,
-            author : config.author,
-            asset : [{
-                _attr : { entry : 'true', type : 'qnx/elf' },
-                _value : 'wwe'
-            }],
-            entryPointType : {
-                _value : "Qnx/WebKit"
-            },
-            cascadesTheme : {
-                _value : config.theme
-            },
-            initialWindow : {
-                systemChrome : 'none',
-                transparent : 'true',
-                autoOrients : 'true'
-            },
-            env : [{
-                _attr : { value : '2.0.0', var : 'WEBWORKS_VERSION'}
-            }],
-            permission : [{
-                _attr : { system : 'true'},
-                _value : 'run_native'
-            }, {
-                // hardcoded access_internet to ensure user has internet (whitelist takes care of security)
-                _attr : { system : 'false'},
-                _value : 'access_internet'
-            }]
-        };
-
-    // If appdesc is specified, use it as the bar descriptor
-    if (session.appdesc) {
-        pkgrUtils.copyFile(session.appdesc, session.sourceDir);
-        return;
-    }
-
-    //Enable slog2 output if debugging
-    if (session.debug) {
-        xmlObject.env.push({
-            _attr : { value : 'slog2', 'var' : 'CONSOLE_MODE' }
-        });
-    }
-
-    //Write user specified permissions
-    if (config.permissions) {
-        config.permissions.forEach(function (permission) {
-            var permissionAttr,
-                permissionValue;
-
-            if (typeof permission === "string") {
-                //Permission with no attributes
-                permissionValue = permission;
-            } else if (permission["@"] && permission["#"]) {
-                //Permission with attributes
-                permissionAttr = permission["@"];
-                permissionValue = permission["#"];
-            }
-
-            if (permissionValue) {
-                xmlObject.permission.push({
-                    _attr : permissionAttr,
-                    _value : permissionValue
-                });
-            }
-        });
-    }
-
-    i18nMgr.generateLocalizedText(session, config, xmlObject, "name");
-
-    if (config.description) {
-        i18nMgr.generateLocalizedText(session, config, xmlObject, "description");
-    }
-
-    i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "icon");
-    i18nMgr.generateLocalizedMetadata(session, config, xmlObject, "rim:splash");
-
-    if (config["invoke-target"]) {
-        xmlObject["invoke-target"] = [];
-
-        config["invoke-target"].forEach(function (invokeTarget) {
-
-            var xmlInvokeTarget = {
-                "_attr" : { id : invokeTarget["@"]["id"] },
-                "entry-point" : config.name,
-                "type" : invokeTarget["type"]
-            };
-
-            if (invokeTarget["require-source-permissions"]) {
-                xmlInvokeTarget["require-source-permissions"] = {
-                    _value : invokeTarget["require-source-permissions"]
-                };
-            }
-
-            if (invokeTarget.filter) {
-                xmlInvokeTarget.filter = [];
-                invokeTarget.filter.forEach(function (filter) {
-                    var xmlFilter = {
-                        "action" : filter.action,
-                        "mime-type": filter["mime-type"]
-                    };
-
-                    if (filter.property) {
-                        xmlFilter.property = [];
-                        filter.property.forEach(function (property) {
-                            xmlFilter.property.push({
-                                "_attr": { var : property["@"]["var"], value : property["@"].value }
-                            });
-                        });
-                    }
-
-                    xmlInvokeTarget.filter.push(xmlFilter);
-                });
-            }
-
-            xmlObject["invoke-target"].push(xmlInvokeTarget);
-
-        });
-    }
-
-    //buildId
-    if (config.buildId) {
-        xmlObject.buildId = config.buildId;
-    }
-
-    if (files) {
-        files.forEach(function (file) {
-            file = path.resolve(session.sourceDir, file);
-
-            if (file.indexOf(conf.BAR_DESCRIPTOR) < 0 && !fs.statSync(file).isDirectory()) {
-                file = file.replace(/\\/g, "/");
-                file = file.split("src/")[1];
-
-                if (path.extname(file) === ".so") {
-                    xmlObject.asset.push({
-                        _attr : { type : 'qnx/elf' },
-                        _value : file
-                    });
-                } else {
-                    xmlObject.asset.push({
-                        _value : file
-                    });
-                }
-            }
-        });
-    }
-
-    //Add orientation mode
-    if (config.orientation) {
-        xmlObject.initialWindow.aspectRatio = config.orientation;
-    }
-
-    //Add auto orientation
-    xmlObject.initialWindow.autoOrients = config.autoOrientation;
-
-    xmlData = data2xml('qnx', xmlObject);
-
-    //Inject any config-file modifications for bar-descriptor.xml
-    if (config.configFileInjections && Array.isArray(config.configFileInjections)) {
-        xmlDoc = new et.ElementTree(et.XML(xmlData));
-        config.configFileInjections.forEach(function (config_file) {
-            if (config_file.attrib["parent"] && config_file.attrib["target"]  && config_file.attrib["target"] === "bar-descriptor.xml") {
-                xmlHelper.graftXML(xmlDoc, config_file._children, config_file.attrib["parent"]);
-            }
-        });
-        xmlData = xmlDoc.write({indent: 4});
-    }
-
-    pkgrUtils.writeFile(session.sourceDir, conf.BAR_DESCRIPTOR, xmlData);
-}
-
-function generateOptionsFile(session, target, config) {
-    var srcFiles = wrench.readdirSyncRecursive(session.sourceDir),
-        isSigning = session.isSigningRequired(config),
-        optionsStr = "-package" + NL,
-        params = session.getParams("blackberry-nativepackager");
-
-    //if -d was provided and we are not signing [-g], set debugToken and devMode
-    if (session.debug && !isSigning) {
-        if (fs.existsSync(conf.DEBUG_TOKEN)) {
-            optionsStr += "-debugToken" + NL;
-            optionsStr += conf.DEBUG_TOKEN + NL;
-        } else {
-            logger.warn(localize.translate("EXCEPTION_DEBUG_TOKEN_NOT_FOUND", path.join(pkgrUtils.homedir(), '.cordova', 'blackberry10debugtoken.bar')));
-        }
-        optionsStr += "-devMode" + NL;
-    }
-
-    if (target === "device" && isSigning && config.buildId) {
-        optionsStr += "-buildId" + NL;
-        optionsStr += config.buildId + NL;
-    }
-
-    if (params) {
-        Object.getOwnPropertyNames(params).forEach(function (p) {
-            optionsStr += p + NL;
-
-            if (params[p]) {
-                optionsStr += params[p] + NL;
-            }
-        });
-    }
-
-    optionsStr += path.resolve(util.format(session.barPath, target)) + NL;
-
-    //to support splash screens/icons for multiple resolutions/devices
-    optionsStr += "-barVersion" + NL;
-    optionsStr += "1.5" + NL;
-
-    optionsStr += "-C" + NL;
-    optionsStr += session.sourceDir + NL;
-    optionsStr += conf.BAR_DESCRIPTOR + NL;
-
-    srcFiles.forEach(function (file) {
-        file = path.resolve(session.sourceDir, file);
-
-        if (file.indexOf(conf.BAR_DESCRIPTOR) < 0 && !fs.statSync(file).isDirectory()) {
-            optionsStr += file + NL;
-        }
-    });
-
-    fs.writeFileSync(path.normalize(session.sourceDir + "/../options"), optionsStr);
-}
-
-function execNativePackager(session, callback) {
-    var script = path.join(process.env.CORDOVA_BBTOOLS, "blackberry-nativepackager"),
-        cwd = session.sourceDir,
-        nativePkgr;
-
-    if (pkgrUtils.isWindows()) {
-        script += ".bat";
-    }
-
-    nativePkgr = childProcess.spawn(script, ["@../options"], {
-        "cwd": cwd,
-        "env": process.env
-    });
-
-    nativePkgr.stdout.on("data", pkgrUtils.handleProcessOutput);
-
-    nativePkgr.stderr.on("data", pkgrUtils.handleProcessOutput);
-
-    nativePkgr.on("exit", function (code) {
-        if (callback && typeof callback === "function") {
-            callback(code);
-        }
-    });
-}
-
-module.exports = {
-    exec: function (session, target, config, callback) {
-        generateOptionsFile(session, target, config);
-        generateTabletXMLFile(session, config);
-        execNativePackager(session, callback);
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/packager-utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/packager-utils.js b/blackberry10/bin/templates/project/cordova/lib/packager-utils.js
deleted file mode 100644
index 95fe955..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/packager-utils.js
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* globals Buffer */
-
-var fs = require('fs'),
-    path = require('path'),
-    wrench = require('wrench'),
-    localize = require("./localize"),
-    logger = require("./logger"),
-    os = require('os'),
-    _self;
-
-function swapBytes(buffer) {
-    var l = buffer.length,
-        i,
-        a;
-
-    if (l % 2 === 0x01) {
-        throw localize.translate("EXCEPTION_BUFFER_ERROR");
-    }
-
-    for (i = 0; i < l; i += 2) {
-        a = buffer[i];
-        buffer[i] = buffer[i + 1];
-        buffer[i + 1] = a;
-    }
-
-    return buffer;
-}
-
-_self = {
-    writeFile: function (fileLocation, fileName, fileData) {
-        //If directory does not exist, create it.
-        if (!fs.existsSync(fileLocation)) {
-            wrench.mkdirSyncRecursive(fileLocation, "0755");
-        }
-
-        fs.writeFileSync(path.join(fileLocation, fileName), fileData);
-    },
-
-    copyFile: function (srcFile, destDir, baseDir) {
-        var filename = path.basename(srcFile),
-            fileBuffer = fs.readFileSync(srcFile),
-            fileLocation;
-
-        //if a base directory was provided, determine
-        //folder structure from the relative path of the base folder
-        if (baseDir && srcFile.indexOf(baseDir) === 0) {
-            fileLocation = srcFile.replace(baseDir, destDir);
-            wrench.mkdirSyncRecursive(path.dirname(fileLocation), "0755");
-            fs.writeFileSync(fileLocation, fileBuffer);
-        } else {
-            fs.writeFileSync(path.join(destDir, filename), fileBuffer);
-        }
-    },
-
-    listFiles: function (directory, filter) {
-        var files = wrench.readdirSyncRecursive(directory),
-            filteredFiles = [];
-
-        files.forEach(function (file) {
-            //On mac wrench.readdirSyncRecursive does not return absolute paths, so resolve one.
-            file = path.resolve(directory, file);
-
-            if (filter(file)) {
-                filteredFiles.push(file);
-            }
-        });
-
-        return filteredFiles;
-    },
-
-    isWindows: function () {
-        return os.type().toLowerCase().indexOf("windows") >= 0;
-    },
-
-    isArray: function (obj) {
-        return obj.constructor.toString().indexOf("Array") !== -1;
-    },
-
-    isEmpty : function (obj) {
-        for (var prop in obj) {
-            if (obj.hasOwnProperty(prop))
-                return false;
-        }
-        return true;
-    },
-
-    toBoolean: function (myString, defaultVal) {
-        // if defaultVal is not passed, default value is undefined
-        return myString === "true" ? true : myString === "false" ? false : defaultVal;
-    },
-
-    homedir: function () {
-        if (_self.isWindows()) {
-            return process.env.USERPROFILE;
-        } 
-        return process.env.HOME;
-    },
-
-    parseUri : function (str) {
-        var i, uri = {},
-            key = [ "source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ],
-            matcher = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(str);
-
-        for (i = key.length - 1; i >= 0; i--) {
-            uri[key[i]] = matcher[i] || "";
-        }
-
-        return uri;
-    },
-
-    // uri - output from parseUri
-    isAbsoluteURI : function (uri) {
-        if (uri && uri.source) {
-            return uri.relative !== uri.source;
-        }
-
-        return false;
-    },
-
-    isLocalURI : function (uri) {
-        return uri && uri.scheme && uri.scheme.toLowerCase() === "local";
-    },
-
-    // Convert node.js Buffer data (encoded) to String
-    bufferToString : function (data) {
-        var s = "";
-        if (Buffer.isBuffer(data)) {
-            if (data.length >= 2 && data[0] === 0xFF && data[1] === 0xFE) {
-                s = data.toString("ucs2", 2);
-            } else if (data.length >= 2 && data[0] === 0xFE && data[1] === 0xFF) {
-                swapBytes(data);
-                s = data.toString("ucs2", 2);
-            } else if (data.length >= 3 && data[0] === 0xEF && data[1] === 0xBB && data[2] === 0xBF) {
-                s = data.toString("utf8", 3);
-            } else {
-                s = data.toString("utf8");
-            }
-        }
-
-        return s;
-    },
-
-    // Wrap object property in an Array if the property is defined and it is not an Array
-    wrapPropertyInArray : function (obj, property) {
-        if (obj && obj[property] && !(obj[property] instanceof Array)) {
-            obj[property] = [ obj[property] ];
-        }
-    },
-
-    loadModule: function (path) {
-        return require(path);
-    },
-
-    handleProcessOutput: function (data) {
-        var msg = data.toString().replace(/[\n\r]/g, '');
-
-        if (msg) {
-            if (msg.indexOf("[ERROR] ") >= 0) {
-                logger.error(msg.substring(8).trim());
-            } else if (msg.indexOf("[WARN] ") >= 0) {
-                logger.warn(msg.substring(7).trim());
-            } else if (msg.indexOf("[INFO] ") >= 0) {
-                logger.info(msg.substring(8).trim());
-            } else if (msg.indexOf("[BUILD] ") >= 0) {
-                logger.info(msg.substring(8).trim());
-            } else {
-                logger.info(msg);
-            }
-        }
-    },
-
-    escapeStringForShell: function (str) {
-        if (require('os').type().toLowerCase().indexOf("windows") >= 0) {
-            return "\"" + str + "\"";
-        } else {
-            return str.replace(/(["\s'$`\\])/g, '\\$1');
-        }
-    }
-
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/packager-validator.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/packager-validator.js b/blackberry10/bin/templates/project/cordova/lib/packager-validator.js
deleted file mode 100644
index 985e137..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/packager-validator.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var check = require('validator').check,
-    sanitize = require('validator').sanitize,
-    localize = require("./localize"),
-    logger = require("./logger"),
-    path = require("path"),
-    fs = require("fs"),
-    packagerUtils = require("./packager-utils"),
-    signingUtils = require("./signing-utils"),
-    CORDOVA_JS_REGEX = /(cordova-.+js)|cordova\.js/,
-    _self;
-
-//NOTE this class is unfinished and is a work in progress
-
-_self = {
-    //TODO create one global validate method that will validate
-    //both the session and configObj?
-    validateSession: function (session, widgetConfig) {
-        //The string checks below is to get around a really weird issue in commander
-        //where sometimes unspecified arguments come in as a function...
-        var keysFound = session.keystore,
-            keysDefault = session.keystore === signingUtils.getDefaultPath("author.p12"),
-            cskFound = session.keystoreCsk,//barsigner.csk
-            dbFound = session.keystoreDb,//barsigner.db
-            bbidFound = session.keystoreBBID,
-            keysPassword = session.storepass && typeof session.storepass === "string",
-            commandLinebuildId = session.buildId && typeof session.buildId === "string",//--buildId
-            buildId = widgetConfig.buildId && typeof widgetConfig.buildId === "string",//Finalized Build ID
-
-            //Constants
-            AUTHOR_P12 = "author.p12",
-            BARSIGNER_CSK = "barsigner.csk",
-            BARSIGNER_DB = "barsigner.db",
-            BARSIGNER_BBID = "bbidtoken.csk",
-
-            //Logging function
-            signingFileWarn = function (file) {
-                logger.warn(localize.translate("WARNING_MISSING_SIGNING_KEY_FILE", file));
-            },
-            signingFileError = function (file) {
-                throw localize.translate("EXCEPTION_MISSING_SIGNING_KEY_FILE", file);
-            };
-
-        //If -g <password> or --buildId is set, but signing key files are missing, throw an error
-        if (keysPassword || commandLinebuildId) {
-            if (!keysFound) {
-                signingFileError(AUTHOR_P12);
-            } else if (keysDefault && !cskFound && !bbidFound) {
-                //Only warn about BBID since the old tokens are deprecated
-                signingFileError(BARSIGNER_BBID);
-            } else if (keysDefault && cskFound && !dbFound) {
-                signingFileError(BARSIGNER_DB);
-            }
-
-        //If a buildId exists in config, but no keys were found, throw a warning
-        } else if (buildId) {
-            if (!keysFound) {
-                signingFileWarn(AUTHOR_P12);
-            } else if (keysDefault && !cskFound && !bbidFound) {
-                //Only warn about BBID since the old tokens are deprecated
-                signingFileWarn(BARSIGNER_BBID);
-            } else if (keysDefault && cskFound && !dbFound) {
-                signingFileWarn(BARSIGNER_DB);
-            }
-        }
-
-        if (commandLinebuildId && !keysPassword) {
-            //if --buildId was provided with NO password, throw error
-            throw localize.translate("EXCEPTION_MISSING_SIGNING_PASSWORD");
-        }
-
-        //if --appdesc was provided, but the file is not existing, throw an error
-        if (session.appdesc && !fs.existsSync(session.appdesc)) {
-            throw localize.translate("EXCEPTION_APPDESC_NOT_FOUND", session.appdesc);
-        }
-    },
-
-    //Validation for configObj, iterates through whitelisted features in configObj to remove any non-existing APIs
-    validateConfig: function (session, configObj) {
-        var cordovaJsFiles;
-        //if packageCordovaJs was set, test for existing cordova.js files
-        if (configObj.packageCordovaJs) {
-            cordovaJsFiles = packagerUtils.listFiles(session.sourceDir, function (file) {
-                return CORDOVA_JS_REGEX.test(file);
-            });
-            if (cordovaJsFiles.length > 0) {
-                logger.warn(localize.translate("WARN_CORDOVA_JS_PACKAGED"));
-            }
-        }
-
-    }
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/packager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/packager.js b/blackberry10/bin/templates/project/cordova/lib/packager.js
deleted file mode 100644
index e8ac24c..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/packager.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    wrench = require("wrench"),
-    cmdline = require("./cmdline"),
-    logger = require("./logger"),
-    fileManager = require("./file-manager"),
-    localize = require("./localize"),
-    configParser = require("./config-parser"),
-    packagerUtils = require("./packager-utils"),
-    packagerValidator = require("./packager-validator"),
-    barBuilder = require("./bar-builder"),
-    session;
-
-module.exports = {
-    start: function (callback) {
-        try {
-            cmdline.parse(process.argv);
-            session = require("./session").initialize(cmdline.commander);
-
-            //prepare files for webworks archiving
-            logger.log(localize.translate("PROGRESS_FILE_POPULATING_SOURCE"));
-            fileManager.prepareOutputFiles(session);
-
-            //parse config.xml
-            logger.log(localize.translate("PROGRESS_SESSION_CONFIGXML"));
-            configParser.parse(path.join(session.sourceDir, "config.xml"), session, function (configObj) {
-                //validate session Object
-                packagerValidator.validateSession(session, configObj);
-                //validage configuration object
-                packagerValidator.validateConfig(session, configObj);
-
-                //generate user.js
-                logger.log(localize.translate("PROGRESS_GEN_OUTPUT"));
-                //Adding debuEnabled property to user.js. Framework will enable/disable WebInspector based on that variable.
-                configObj.debugEnabled = session.debug;
-
-                barBuilder.build(session, configObj, function (code) {
-                    fileManager.cleanSource(session);
-
-                    if (code === 0) {
-                        logger.log(localize.translate("PROGRESS_COMPLETE"));
-                    }
-
-                    if (callback && typeof callback === "function") {
-                        callback(code);
-                    }
-                });
-            });
-        } catch (e) {
-            try {
-                fileManager.cleanSource(session);
-            } catch (ex) {
-            } finally {
-                logger.error(e);
-                if (callback && typeof callback === "function") {
-                    callback(e);
-                }
-            }
-
-        }
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/params.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/params.js b/blackberry10/bin/templates/project/cordova/lib/params.js
deleted file mode 100644
index 955302f..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/params.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Copyright 2014 BlackBerry Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    fs = require("fs"),
-    utils = require("./utils"),
-    localize = require("./localize");
-
-function getParams(toolName, cmdline) {
-    var properties = utils.getProperties(),
-        params = properties[toolName],
-        paramsPath,
-        cmdParams;
-
-    if (cmdline && cmdline.params) {
-        if (!cmdParams) {
-            paramsPath = path.resolve(cmdline.params);
-
-            if (fs.existsSync(paramsPath)) {
-                try {
-                    cmdParams = require(paramsPath);
-                } catch (e) {
-                    throw localize.translate("EXCEPTION_PARAMS_FILE_ERROR", paramsPath);
-                }
-            } else {
-                throw localize.translate("EXCEPTION_PARAMS_FILE_NOT_FOUND", paramsPath);
-            }
-        }
-    }
-
-    if (cmdParams && cmdParams[toolName]) {
-        if (params) {
-            params = utils.mixin(cmdParams[toolName], params);
-        } else {
-            params = cmdParams[toolName];
-        }
-    }
-
-    return params;
-}
-
-
-module.exports = getParams;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/run-utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/run-utils.js b/blackberry10/bin/templates/project/cordova/lib/run-utils.js
deleted file mode 100644
index fb7fefd..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/run-utils.js
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var fs = require("fs"),
-    path = require("path"),
-    utils = require("./utils"),
-    targetUtils = require("./target-utils.js"),
-    localize = require("./localize"),
-    pkgrUtils = require("./packager-utils"),
-    debugTokenHelper = require("./debugtoken-helper"),
-    xml2js = require('xml2js'),
-    logger = require("./logger"),
-    async = require("async"),
-    session = require("./session"),
-    properties = utils.getProperties(),
-    workingdir = path.normalize(__dirname + "/.."),
-    _self;
-
-//Options looking for are: (Device | Emulator, query, devicepass). Calls back with:  (error || options object, target object)
-function getTargetName(options, done) {
-    var ipFinder = options.emulator ? targetUtils.findConnectedSimulator : targetUtils.findConnectedDevice,
-        targetType = options.emulator ? "emulator" : "device";
-
-    if (options.target) {
-        done(null, options, options.target);
-    } else {
-        
-        if (options.device && options.emulator) {
-            localize.translate("WARN_RUN_DEVICE_OVERRIDES_EMULATOR");
-        }
-
-        async.series(
-        {
-            ip: function (done) {
-                ipFinder(function (ip) {
-                    done(ip ? null : "No connected BlackBerry 10 " + targetType + " found", ip);
-                });
-            },
-            devicePass: function (done) {
-                if (!options.devicepass && options.devicepass !== "") {
-                    if (options.query) {
-                        utils.prompt({description: getPasswordPrompt(targetType), hidden: true}, done);
-                    } else {
-                        done("");
-                    }
-                } else {
-                    done(null, options.devicepass);
-                }
-            }
-        },
-        function (err, results) {
-            if (err) {
-                done(err);
-            } else {
-                options.devicepass = results.devicePass;
-                _self.checkDeviceInfo(options, results.ip, targetType, results.devicePass, done);
-            }
-        });
-    }
-}
-
-//Options looking for are: (query, devicepass). Calls back with:  (error || target object)
-function validateTarget(options, targetName, allDone) {
-    var deployTarget,
-        err,
-        runTasks = [];
-
-    if (!targetName) {
-        err = "No target exists, to add that target please run: target add <name> <ip> [-t | --type <device | simulator>] [-p <password>] [--pin <devicepin>]";
-    } else if (!properties.targets[targetName]) {
-        err = "The target \"" + targetName + "\" does not exist, to add that target please run: target add " + targetName + " <ip> [-t | --type <device | simulator>] [-p <password>] [--pin <devicepin>]";
-    } else {
-        deployTarget = utils.clone(properties.targets[targetName]);
-        deployTarget.name = targetName;
-
-        if (!deployTarget.ip) {
-            if (options.query) {
-                runTasks.push(function (done) {
-                    utils.prompt({description: "Please enter the IP address for target " + deployTarget.name + ": "}, function (e, ip) {
-                        deployTarget.ip = ip;
-                        done(e);
-                    });
-                });
-            } else {
-                err = "IP is not defined in target \"" + deployTarget.name + "\"";
-            }
-        }
-
-        if (err === undefined && !deployTarget.password && deployTarget.password !== "") {
-            if (options.devicepass || options.devicepass === "") {
-                deployTarget.password = options.devicepass;
-            } else {
-                if (options.query) {
-                    runTasks.push(function (done) {
-                        utils.prompt({description: getPasswordPrompt(deployTarget.type), hidden: true}, function (e, devicePass) {
-                            deployTarget.password = devicePass;
-                            done(e);
-                        });
-                    });
-                } else if (!options.emulator) {
-                    err = "No device password provided. You can omit --no-query, use --devicepass, or enter a value for 'password' to the target " + deployTarget.name + " defined at " + utils.getPropertiesFilePath();
-                }
-            }
-        }
-
-        if (!deployTarget.pin) {
-            runTasks.push(function (done) {
-                targetUtils.getDeviceInfo(deployTarget.ip, deployTarget.password, function (err, result) {
-                    deployTarget.pin = result.pin;
-                    done(err);
-                });
-            });
-        }
-    }
-
-    async.series(runTasks, function (e) {
-        var finalErr = err || e;
-        if (!finalErr && deployTarget) {
-            logger.info("Target " + deployTarget.name + " selected");
-        }
-        allDone(err || e, options, deployTarget);
-    });
-}
-//Options looking for are: (keystorepass, query). Calls back with:  (error || target object)
-function handleDebugToken(options, deployTarget, allDone) {
-    options.keystorepass = session.getKeyStorePass(options);
-
-    // deploy debug token for device debug builds only
-    if (deployTarget.pin && !options.emulator && options.build && !options.release) {
-        async.waterfall(
-            [
-                debugTokenHelper.checkDebugToken.bind(this, deployTarget.pin),
-                function (done) {
-                    //If no keystorepass is provided debugTokenHelper will throw an error.
-                    if (!options.keystorepass && options.query) {
-                        utils.prompt({description: "Please enter your keystore password: ", hidden: true}, function (err, result) {
-                            options.keystorepass = result;
-                            done(null, result);
-                        });
-                    } else {
-                        done(null, options.keystorepass);
-                    }
-                },
-                debugTokenHelper.createToken.bind(this, properties, "all")
-            ],
-            function (err, results) {
-                // If the error is true, then the debug token is valid and creation was skipped.
-                if (err === true) {
-                    logger.info(localize.translate("PROGRESS_DEBUG_TOKEN_IS_VALID"));
-                    //Clear the error so it is still deployed
-                    err = null;
-                }
-
-                if (!err) {
-                    debugTokenHelper.deployToken(deployTarget.name, deployTarget.ip, deployTarget.password, function (code) {
-                        allDone(code, deployTarget);
-                    });
-                } else {
-                    allDone(null, deployTarget);
-                }
-            }
-        );
-    } else {
-        allDone(null, deployTarget);
-    }
-}
-
-function generateDeployOptions(options, deployTarget) {
-    var deployOptions = [],
-        barPath = pkgrUtils.escapeStringForShell(
-            path.normalize(__dirname + "/../../build/" +
-                (deployTarget.type === "device" ? "device" : "simulator") +
-                "/" + utils.genBarName() + ".bar"));
-
-    deployOptions.push("-device");
-    deployOptions.push(deployTarget.ip);
-
-    if (deployTarget.password) {
-        deployOptions.push("-password");
-        deployOptions.push(deployTarget.password);
-    }
-
-    deployOptions.push("-package");
-    deployOptions.push(barPath);
-    deployOptions.push("-uninstallApp");
-    deployOptions.push("-installApp");
-
-    if (options.launch) {
-        deployOptions.push("-launchApp");
-    }
-
-    return deployOptions;
-}
-
-function execNativeDeploy(deployOptions, callback) {
-    var script = path.normalize(path.join(process.env.CORDOVA_BBTOOLS, "blackberry-deploy"));
-
-    utils.exec(script, deployOptions, {
-        "cwd": workingdir,
-        "env": process.env
-    }, callback);
-}
-
-function getPasswordPrompt(targetType) {
-    var prompt = "Please enter your " + targetType + " password";
-    if (targetType === "emulator") {
-        prompt += " (For no password press ENTER)";
-    }
-    prompt += ": ";
-    return prompt;
-}
-
-_self = {
-    //options looking for are: (query, devicepass, password, target, (device || emulator)) Function returns (error || deployTarget)
-    getValidatedTarget : function (options, callback) {
-        async.waterfall(
-            [
-                getTargetName.bind(this, options),
-                validateTarget,
-                handleDebugToken
-            ], callback
-        );
-    },
-
-    //Function returns (error || null)
-    install : function (options, deployTarget, allDone) {
-        var script = path.join(process.env.CORDOVA_BBTOOLS, "blackberry-deploy"),
-            args = [
-                "-device",
-                deployTarget.ip
-            ],
-            projectRootDir = path.normalize(path.join(__dirname, "..")),
-            installedAppsOutput,
-            runTasks = [];
-
-        if (deployTarget.password) {
-            args.push("-password", deployTarget.password);
-        }
-        runTasks = [
-            function uninstallInstallLaunchApp(result, done) {
-                var deployOptions = generateDeployOptions(options, deployTarget);
-                execNativeDeploy(deployOptions, done);
-            }
-        ];
-
-        async.waterfall(runTasks,
-            function (err, results) {
-                allDone(null, deployTarget);
-            }
-        );
-    },
-
-    //Function returns (error || deployTarget)
-    checkBuild : function (deployTarget, allDone) {
-        var barPath = path.normalize(__dirname + "/../../build/" +
-                (deployTarget.type === "device" ? "device" : "simulator") +
-                "/" + utils.genBarName() + ".bar");
-        if (fs.existsSync(barPath)) {
-            allDone(null, deployTarget);
-        } else {
-            allDone("No build file exists, please run: build [--debug | --release] [--keystorepass <password>] [--buildId <number>] [--params <json>] [--loglevel <level>] [--web-inspector] [--no-signing]");
-        }
-    },
-
-    //No options needed within function Function returns (error || options, targetName)
-    checkDeviceInfo : function (options, ip, deviceType, devicePass, done) {
-        var props = utils.getProperties(),
-            targetName;
-
-        targetUtils.getDeviceInfo(ip, devicePass, function (err, device) {
-            if (!err) {
-                targetName = device.name.replace(/ /g, "-") + "-" + device.pin;
-                props.targets[targetName] = {
-                    ip: ip,
-                    pin: device.pin,
-                    type: deviceType
-                };
-                utils.writeToPropertiesFile(props);
-            }
-            done(err, options, targetName);
-        });
-    }
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/run.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/run.js b/blackberry10/bin/templates/project/cordova/lib/run.js
deleted file mode 100755
index 15ff7eb..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/run.js
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/env node
-
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    os = require("os"),
-    utils = require("./utils"),
-    options = require('commander'),
-    runUtils = require("./run-utils"),
-    async = require("async");
-
-function install(deployTarget, done) {
-    var buildCmd = utils.isWindows() ? "build" : "./build",
-        buildArgs = options.keystorepass ? ["-k", options.keystorepass] : [],
-        projectRootDir = path.normalize(path.join(__dirname, "..")),
-        installTasks = [];
-
-    if (options.build) {
-        if (options.release) {
-            buildArgs.push("--release");
-        }
-        installTasks.push(utils.exec.bind(this, buildCmd, buildArgs, {"cwd": projectRootDir}));
-    }
-
-    installTasks.push(runUtils.install.bind(this, options, deployTarget));
-
-    async.series(installTasks, done);
-}
-
-options
-    .usage('[--device] [--emulator] [--target=<id>] [--release] [--no-query] [-k | --keystorepass] [--devicepass] [--no-launch] [--no-uninstall] [--no-build]')
-    .option('-k, --keystorepass <password>', 'the password of signing key; needed for creating debug token')
-    .option('--device', 'run on connected device')
-    .option('--emulator', 'run on BB10 simulator')
-    .option('--devicepass <password>', 'device password')
-    .option('--target <id>', 'specifies the target to run the application')
-    .option('--release', 'build in release mode')
-    .option('--no-query', 'fail if no password is provided and one is needed')
-    .option('--no-launch', 'do not launch the application on device')
-    .option('--no-build', 'deploy the pre-built bar file and skip building')
-    .on('--help', function () {
-        console.log('  Examples:');
-        console.log('');
-        console.log("  Deploying to a predefined target");
-        console.log('    $ run --target=Z10');
-        console.log("  Deploying to a connected device");
-        console.log('    $ run --device --devicepass devicePassword --keystorepass keystorePassword');
-        console.log('');
-    });
-
-process.argv.forEach(function (argument, index, args) {
-    if (argument.match(/^--target=/)) {
-        args.splice(index, 1, "--target", argument.substr("--target=".length));
-    }
-});
-
-options.parse(process.argv);
-
-utils.waterfall(
-    [
-        runUtils.getValidatedTarget.bind(this, options),
-        install
-    ]
-);

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/session.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/session.js b/blackberry10/bin/templates/project/cordova/lib/session.js
deleted file mode 100644
index 3dd8763..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/session.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *  Copyright 2014 BlackBerry Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var path = require("path"),
-    fs = require("fs"),
-    wrench = require("wrench"),
-    utils = require("./utils"),
-    logger = require("./logger"),
-    signingUtils = require("./signing-utils"),
-    barConf = require("./bar-conf"),
-    localize = require("./localize"),
-    getParams = require("./params");
-
-
-module.exports = {
-    getKeyStorePass: function (cmdline) {
-        var properties = utils.getProperties(),
-            params = getParams("blackberry-signer", cmdline) || {},
-            keystorepass;
-
-        //Check commandline first, then properties, then params
-        //Packager expects value provided as password
-        //Cordova scripts expects value provided as keystorepass
-        //String checks are to get around issue where commander sometimes passed in a function
-        if (cmdline.password && typeof cmdline.password === "string") {
-            keystorepass = cmdline.password;
-        } else if (cmdline.keystorepass && typeof cmdline.keystorepass === "string") {
-            keystorepass = cmdline.keystorepass;
-        } else if (properties.keystorepass) {
-            keystorepass = properties.keystorepass;
-        } else if (params["-storepass"]) {
-            keystorepass = params["-storepass"];
-        }
-
-        return keystorepass;
-    },
-    initialize: function (cmdline) {
-        var sourceDir,
-            signingPassword = module.exports.getKeyStorePass(cmdline),
-            outputDir = cmdline.output,
-            archivePath = path.resolve(cmdline.args[0] ? cmdline.args[0] : "../../www"),
-            archiveName = utils.genBarName(),
-            appdesc,
-            buildId = cmdline.buildId,
-            signerParams = getParams("blackberry-signer", cmdline) || {},
-            keystore = signerParams["-keystore"],
-            bbidtoken = signerParams["-bbidtoken"];
-
-        //If -o option was not provided, default output location is the same as .zip
-        outputDir = outputDir || path.dirname(archivePath);
-
-        if (cmdline.appdesc && "string" === typeof cmdline.appdesc) {
-            appdesc = path.resolve(cmdline.appdesc);
-        }
-
-        //If -s [dir] is provided
-        if (cmdline.source && "string" === typeof cmdline.source) {
-            sourceDir = cmdline.source + "/src";
-        } else {
-            sourceDir = outputDir + "/src";
-        }
-
-        if (!fs.existsSync(sourceDir)) {
-            wrench.mkdirSyncRecursive(sourceDir, "0755");
-        }
-
-        logger.level(cmdline.loglevel || 'verbose');
-
-        //If signer params exist, check whether the files are there
-        //This is to be consistent with the default files
-        if (keystore && !fs.existsSync(keystore)) {
-            keystore = false;
-        }
-        if (bbidtoken && !fs.existsSync(bbidtoken)) {
-            bbidtoken = false;
-        }
-
-        return {
-            "conf": require("./conf"),
-            "keepSource": !!cmdline.source,
-            "sourceDir": path.resolve(sourceDir),
-            "sourcePaths": {
-                "ROOT": path.resolve(sourceDir),
-                "CHROME": path.normalize(path.resolve(sourceDir) + barConf.CHROME),
-                "LIB": path.normalize(path.resolve(sourceDir) + barConf.LIB),
-                "EXT": path.normalize(path.resolve(sourceDir) + barConf.EXT),
-                "UI": path.normalize(path.resolve(sourceDir) + barConf.UI),
-                "PLUGINS": path.normalize(path.resolve(sourceDir) + barConf.PLUGINS),
-                "JNEXT_PLUGINS": path.normalize(path.resolve(sourceDir) + barConf.JNEXT_PLUGINS)
-            },
-            "outputDir": path.resolve(outputDir),
-            "archivePath": archivePath,
-            "archiveName": archiveName,
-            "barPath": outputDir + "/%s/" + archiveName + ".bar",
-            "debug": !!cmdline.debug,
-            "keystore": keystore || signingUtils.getKeyStorePath(),
-            "keystoreCsk": signingUtils.getCskPath(),
-            "keystoreDb": signingUtils.getDbPath(),
-            "keystoreBBID": bbidtoken || signingUtils.getKeyStorePathBBID(),
-            "storepass": signingPassword,
-            "buildId": buildId,
-            "appdesc" : appdesc,
-            getParams: function (toolName) {
-                return getParams(toolName, cmdline);
-            },
-            isSigningRequired: function (config) {
-                return (keystore || signingUtils.getKeyStorePath()) && signingPassword;
-            },
-            "targets": ["simulator", "device"]
-        };
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/signing-helper.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/signing-helper.js b/blackberry10/bin/templates/project/cordova/lib/signing-helper.js
deleted file mode 100644
index 3ede0b6..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/signing-helper.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var path = require('path'),
-    fs = require("fs"),
-    os = require('os'),
-    childProcess = require("child_process"),
-    util = require("util"),
-    utils = require("./utils"),
-    conf = require("./conf"),
-    pkgrUtils = require("./packager-utils"),
-    signingUtils = require("./signing-utils"),
-    logger = require("./logger"),
-    _self;
-
-function execSigner(session, target, callback) {
-    var script = path.join(process.env.CORDOVA_BBTOOLS, "blackberry-signer"),
-        signer,
-        params = session.getParams("blackberry-signer"),
-        args = [];
-
-    if (params) {
-        Object.getOwnPropertyNames(params).forEach(function (p) {
-            args.push(p);
-
-            if (params[p]) {
-                args.push(params[p]);
-            }
-        });
-    }
-
-    //Only specify default args if they aren't specified by the user
-    if (args.indexOf("-keystore") === -1) {
-        args.push("-keystore");
-        args.push(session.keystore);
-    }
-    if (args.indexOf("-storepass") === -1) {
-        args.push("-storepass");
-        args.push(session.storepass);
-    }
-
-    //Validate arguments
-
-
-    args.push(path.resolve(util.format(session.barPath, target)));
-
-    utils.exec(script, args, {
-        "env": process.env
-    }, callback);
-}
-
-_self = {
-    execSigner: execSigner,
-
-    warn: function () {
-        if (!signingUtils.getKeyStorePath()) {
-            logger.warn(
-                "Cannot sign applications. Author.p12 file cannot be found at default location: " +
-                signingUtils.getDefaultPath("author.p12")
-            );
-        }
-
-        if (!signingUtils.getKeyStorePathBBID()) {
-
-            if (signingUtils.getCskPath() && signingUtils.getDbPath()) {
-                logger.warn("Using legacy signing keys");
-            } else {
-                logger.warn(
-                    "Cannot sign applications. bbidtoken.csk file cannot be found at default location: " +
-                    signingUtils.getDefaultPath("bbidtoken.csk")
-                );
-            }
-        }
-    }
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/signing-utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/signing-utils.js b/blackberry10/bin/templates/project/cordova/lib/signing-utils.js
deleted file mode 100644
index 2f3b398..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/signing-utils.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var fs = require('fs'),
-    path = require('path'),
-    os = require('os'),
-    childProcess = require('child_process'),
-    AUTHOR_P12 = "author.p12",
-    BBIDTOKEN = "bbidtoken.csk",
-    CSK = "barsigner.csk",
-    DB = "barsigner.db",
-    _self;
-
-function getDefaultPath(file) {
-    // The default location where signing key files are stored will vary based on the OS:
-    // Windows XP: %USERPROFILE%\Local Settings\Application Data\Research In Motion
-    // Windows Vista and Windows 7: %USERPROFILE%\AppData\Local\Research In Motion
-    // Mac OS: ~/Library/Research In Motion
-    // UNIX or Linux: ~/.rim
-    var p = "";
-    if (os.type().toLowerCase().indexOf("windows") >= 0) {
-        p = process.env.LOCALAPPDATA === undefined ?
-            /* ...-XP */
-            process.env.USERPROFILE + "\\Local Settings\\Application Data" :
-            /* Vista+ */
-            process.env.LOCALAPPDATA;
-        p += "\\Research In Motion\\";
-    } else if (os.type().toLowerCase().indexOf("darwin") >= 0) {
-        // Try Mac OS location
-        p = process.env.HOME + "/Library/Research In Motion/";
-    } else if (os.type().toLowerCase().indexOf("linux") >= 0) {
-        // Try Linux location
-        p = process.env.HOME + "/.rim/";
-    }
-
-    return p + file;
-
-}
-
-function getDefaultPathIfExists(file) {
-    var p = getDefaultPath(file);
-    if (fs.existsSync(p)) {
-        return p;
-    }
-}
-
-_self = {
-    getDefaultPath: getDefaultPath,
-
-    getKeyStorePath : function () {
-        // Todo: decide where to put sigtool.p12 which is generated and used in WebWorks SDK for Tablet OS
-        return getDefaultPathIfExists(AUTHOR_P12);
-    },
-
-    getKeyStorePathBBID: function () {
-        return getDefaultPathIfExists(BBIDTOKEN);
-    },
-
-    getCskPath : function () {
-        return getDefaultPathIfExists(CSK);
-    },
-
-    getDbPath : function () {
-        return getDefaultPathIfExists(DB);
-    }
-};
-
-module.exports = _self;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/start-emulator
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/start-emulator b/blackberry10/bin/templates/project/cordova/lib/start-emulator
deleted file mode 100755
index 1ad590b..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/start-emulator
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env bash
-<<COMMENT
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-COMMENT
-# support for this script on BB10 is dependent on vmware tools being on the path, or in the default install directory
-# Valid values for "--target": path to 'vmwarevm' file
-
-VMWARE_DEFAULT_PATH=/Applications/VMware\ Fusion.app/Contents/Library
-VMWARE_TOOL=vmrun
-OS_NAME=`uname`
-ERROR_VALUE=2
-NOTIMPLEMENTED_VALUE=1
-
-if [ "$1" = "" -o ! -e "$1" ]
-then
-    echo "BlackBerry10: must provide path to valid vmwarevm image"
-    exit $ERROR_VALUE
-fi
-
-if [ "$OS_NAME" = "Darwin" ]; then
-    if [ "`which vmrun`" = "" ]; then
-        echo "BlackBerry10: VMware Fusion 'vmrun' tool not found on path, trying default install path"
-        runpath=$VMWARE_DEFAULT_PATH/$VMWARE_TOOL
-    else
-        runpath=`which vmrun`
-    fi
-    
-    if [ -x "$runpath" ]; then
-        echo $runpath start $1
-        `$"$runpath" start "$1" > /dev/null`
-
-        exit 0 
-    else
-        echo "BlackBerry10: could not find VMware Fusion 'vmrun' tool"
-        exit $ERROR_VALUE
-    fi
-else
-    echo "BlackBerry10: currently only supports installing to emulator on OS X"
-    exit $NOTIMPLEMENTED_VALUE 
-fi

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/start-emulator.bat
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/start-emulator.bat b/blackberry10/bin/templates/project/cordova/lib/start-emulator.bat
deleted file mode 100644
index 714d6b4..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/start-emulator.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements.  See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership.  The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License.  You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied.  See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-set NOTIMPLEMENTED_VALUE=1
-
-ECHO echo 'BlackBerry10: Not able to start emulator images on windows command-line at this time.'
-EXIT /B %NOTIMPLEMENTED_VALUE%

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/a6733a83/blackberry10/bin/templates/project/cordova/lib/target-utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/target-utils.js b/blackberry10/bin/templates/project/cordova/lib/target-utils.js
deleted file mode 100755
index bb3b34d..0000000
--- a/blackberry10/bin/templates/project/cordova/lib/target-utils.js
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- *  Copyright 2012 Research In Motion Limited.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var _self,
-    os = require("os"),
-    fs = require('fs'),
-    path = require('path'),
-    bb10_utils = require('./utils'),
-    blackberryProperties = bb10_utils.getProperties();
-
-
-//fix older blackberry10.json files 
-//these may include 'simulator' type rather than 'emulator'
-function replaceSimulator(targets) {
-    var replace = false,
-        t;
-    for (t in targets) {
-        if (targets.hasOwnProperty(t) && targets[t].type === "simulator") {
-            targets[t].type = "emulator";
-            replace = true;
-        }
-    }
-    if (replace) {
-        blackberryProperties.targets = targets;
-        bb10_utils.writeToPropertiesFile(blackberryProperties);
-    }
-}
-
-_self = {
-    getTargetList : function (type, pruneDisconnected, callback) {
-        var targList = [],
-            count = 0,
-            targets = blackberryProperties.targets,
-            addItem = function (t) {
-                targets[t].name = t;
-                targList.push(targets[t]);
-            },
-            complete = function () {
-                if (count === Object.keys(targets).length) {
-                    callback(targList);
-                }
-            },
-            checkConnection = function (name) {
-                _self.checkConnection(targets[name].ip, type, function (connected) {
-                    count++;
-                    if (connected) {
-                        addItem(name);
-                    }
-                    complete();
-                });
-            },
-            t;
-
-        if (targets) {
-            replaceSimulator(targets);
-            for (t in targets) {
-                if (targets.hasOwnProperty(t) && targets[t].type === type) {
-                    if (pruneDisconnected) {
-                        checkConnection(t);
-                    }
-                    else {
-                        addItem(t);
-                        count++;
-                    }
-                } else {
-                    count++;
-                }
-            }
-        }
-        complete();
-    },
-
-    getDeviceInfo: function (ip, password, callback) {
-        var cmd = path.join(process.env.CORDOVA_BBTOOLS, 'blackberry-deploy'),
-            args = [
-                '-listDeviceInfo',
-                ip
-            ],
-            options = {
-                _customOptions: { silent: true }
-            };
-
-        if (password) {
-            args.push('-password');
-            args.push(password);
-        }
-
-        bb10_utils.exec(cmd, args, options, function (error, stdout, stderr) {
-            var err = error,
-                result = {},
-                name = /modelname::(.*?)(\r?)\n/.exec(stdout),
-                pin = /devicepin::0x(.*?)(\r?)\n/.exec(stdout);
-            if (name && name.length > 0) {
-                result.name = name[1];
-            }
-            if (pin && pin.length > 0) {
-                result.pin = pin[1];
-            }
-
-            if (!result.name) {
-                if (stdout.indexOf("Error:") !== -1) {
-                    err = stdout.slice(stdout.indexOf("Error:") + 6);
-                } else if (stdout === "" && stderr.indexOf("Error:") === 0) {
-                    err = stderr.slice(7);
-                } else {
-                    err = "Unable to authenticate with BlackBerry 10 device/emulator at " + ip + ".";
-                }
-            }
-
-            callback(err, result);
-        });
-    },
-
-    findConnectedDevice: function (callback) {
-        var defaultIp = '169.254.0.1',
-            count = 0,
-            i;
-        _self.discoverUsb(function (result) {
-            if (!result || result.length === 0) {
-                result = [defaultIp];
-            }
-            for (i = 0; i < result.length; i++) {
-                /* jshint ignore:start */
-                _self.checkConnection(result[i], 'device', function (connection, ip) {
-                    if (connection)  {
-                        callback(ip);
-                        return;
-                    } else if (++count === result.length) {
-                        callback();
-                    }
-                });
-                /* jshint ignore:end */
-            }
-        });
-    },
-
-    discoverUsb: function (callback) {
-        var IPV4_TYPE = "IPv4",
-            IP_SPLIT_REGEXP = /(169\.254\.\d{1,3}\.)(\d{1,3})/,
-            networkInterfaces = os.networkInterfaces(),
-            result,
-            matches = [],
-            ni,
-            i;
-
-        for (ni in networkInterfaces) {
-            if (networkInterfaces.hasOwnProperty(ni)) {
-                for (i = 0; i < networkInterfaces[ni].length; i++) {
-                    if (networkInterfaces[ni][i].family === IPV4_TYPE) {
-                        result = IP_SPLIT_REGEXP.exec(networkInterfaces[ni][i].address);
-                        if (result && result[1] && result[2]) {
-                            matches.push(result[1] + (result[2] - 1));
-                        }
-                    }
-                }
-
-            }
-        }
-        callback(matches);
-    },
-
-    findConnectedSimulator: function (callback) {
-        var pathVmDhcpLeases,
-            pathUserProfile,
-            pathAllUserProfile,
-            vmDhcpLeasesFiles,
-            DHCP_LEASES_REGEX = /VMware\\vmnetdhcp.leases$/,
-            targets = blackberryProperties.targets,
-            ipsToTest = [],
-            dhcpIPs = [],
-            t;
-
-        // Firstly, check targets in the properties file
-        if (targets) {
-            for (t in targets) {
-                if (targets.hasOwnProperty(t) && targets[t].type === "emulator" && targets[t].ip) {
-                    ipsToTest.push(targets[t].ip);
-                }
-            }
-        }
-
-        // Secondly, check VMware dhcp.leases file
-        if (bb10_utils.isWindows()) {
-            pathUserProfile = process.env.USERPROFILE;
-            pathAllUserProfile = pathUserProfile.substr(0, pathUserProfile.lastIndexOf("\\") + 1) + "All Users";
-            vmDhcpLeasesFiles = bb10_utils.readdirSyncRecursive(pathAllUserProfile).filter(function (file) {
-                return DHCP_LEASES_REGEX.test(file);
-            });
-            pathVmDhcpLeases = vmDhcpLeasesFiles[0];
-        } else if (bb10_utils.isOSX()) {
-            pathVmDhcpLeases = "/private/var/db/vmware/vmnet-dhcpd-vmnet8.leases";
-        } else {
-            pathVmDhcpLeases = "/var/db/vmware/vmnet-dhcpd-vmnet8.leases";
-        }
-
-        fs.readFile(pathVmDhcpLeases, 'utf8', function (err, data) {
-            if (!err) {
-                // Find all lines that start with "lease xxx.xxx.xxx.xxx "
-                dhcpIPs = data.match(/lease \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3} /g) || [];
-                dhcpIPs = dhcpIPs.map(function (result) {
-                    return result.substr(6, result.indexOf(' ', 7) - 6);
-                });
-            }
-
-            ipsToTest = ipsToTest.concat(dhcpIPs);
-            // Remove duplicated ip
-            ipsToTest = ipsToTest.filter(function (item, index, arr) {
-                return arr.indexOf(item) === index;
-            });
-
-            _self.checkConnectionRecursive(ipsToTest, 0, callback);
-        });
-    },
-
-    checkConnectionRecursive: function (ips, index, callback) {
-        var ip;
-
-        if (!ips || index === ips.length) {
-            callback();
-            return;
-        }
-
-        console.log("Searching for connected BlackBerry 10 Simulator (" + (index + 1) + "/" + ips.length + ")...");
-        ip = ips[index];
-        _self.checkConnection(ip, "emulator", function (connection) {
-            if (connection) {
-                callback(ip);
-            } else {
-                _self.checkConnectionRecursive(ips, index + 1, callback);
-            }
-        });
-    },
-
-    checkConnection: function (ip, type, callback) {
-        var script = path.join(process.env.CORDOVA_BBTOOLS, 'blackberry-deploy'),
-            args = [
-                '-test',
-                ip
-            ],
-            options = {
-                _customOptions: { silent: true }
-            };
-
-        bb10_utils.exec(script, args, options, function (error, stdout, stderr) {
-            // error code 3 corresponds to connected device with password
-            // null or "Error: null" in stderr corresponds to connected simulator or device without password
-            var connected =
-                    error === null ||
-                    (error && error.code === 3) ||
-                    stderr.length === 0 ||
-                    stderr.indexOf('Error: null') >= 0 ||
-                    stderr.indexOf('Error: Authentication failed') >= 0;
-            callback(connected, ip);
-        });
-    },
-
-    listTargets : function (type, pruneDisconnected) {
-        _self.getTargetList(type, pruneDisconnected, function (targets) {
-            for (var t in targets) {
-                if (targets.hasOwnProperty(t)) {
-                    console.log(targets[t].name + ' ip: ' + targets[t].ip);
-                }
-            }
-        });
-    }
-
-};
-
-module.exports = _self;