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:10 UTC

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

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.