http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLNode.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLNode.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLNode.js
new file mode 100644
index 0000000..592545a
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLNode.js
@@ -0,0 +1,331 @@
+// Generated by CoffeeScript 1.9.1
+(function() {
+  var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, 
XMLRaw, XMLText, isEmpty, isFunction, isObject,
+    hasProp = {}.hasOwnProperty;
+
+  isObject = require('lodash/lang/isObject');
+
+  isFunction = require('lodash/lang/isFunction');
+
+  isEmpty = require('lodash/lang/isEmpty');
+
+  XMLElement = null;
+
+  XMLCData = null;
+
+  XMLComment = null;
+
+  XMLDeclaration = null;
+
+  XMLDocType = null;
+
+  XMLRaw = null;
+
+  XMLText = null;
+
+  module.exports = XMLNode = (function() {
+    function XMLNode(parent) {
+      this.parent = parent;
+      this.options = this.parent.options;
+      this.stringify = this.parent.stringify;
+      if (XMLElement === null) {
+        XMLElement = require('./XMLElement');
+        XMLCData = require('./XMLCData');
+        XMLComment = require('./XMLComment');
+        XMLDeclaration = require('./XMLDeclaration');
+        XMLDocType = require('./XMLDocType');
+        XMLRaw = require('./XMLRaw');
+        XMLText = require('./XMLText');
+      }
+    }
+
+    XMLNode.prototype.element = function(name, attributes, text) {
+      var childNode, item, j, k, key, lastChild, len, len1, ref, val;
+      lastChild = null;
+      if (attributes == null) {
+        attributes = {};
+      }
+      attributes = attributes.valueOf();
+      if (!isObject(attributes)) {
+        ref = [attributes, text], text = ref[0], attributes = ref[1];
+      }
+      if (name != null) {
+        name = name.valueOf();
+      }
+      if (Array.isArray(name)) {
+        for (j = 0, len = name.length; j < len; j++) {
+          item = name[j];
+          lastChild = this.element(item);
+        }
+      } else if (isFunction(name)) {
+        lastChild = this.element(name.apply());
+      } else if (isObject(name)) {
+        for (key in name) {
+          if (!hasProp.call(name, key)) continue;
+          val = name[key];
+          if (isFunction(val)) {
+            val = val.apply();
+          }
+          if ((isObject(val)) && (isEmpty(val))) {
+            val = null;
+          }
+          if (!this.options.ignoreDecorators && this.stringify.convertAttKey 
&& key.indexOf(this.stringify.convertAttKey) === 0) {
+            lastChild = 
this.attribute(key.substr(this.stringify.convertAttKey.length), val);
+          } else if (!this.options.ignoreDecorators && 
this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) {
+            lastChild = 
this.instruction(key.substr(this.stringify.convertPIKey.length), val);
+          } else if (Array.isArray(val)) {
+            for (k = 0, len1 = val.length; k < len1; k++) {
+              item = val[k];
+              childNode = {};
+              childNode[key] = item;
+              lastChild = this.element(childNode);
+            }
+          } else if (isObject(val)) {
+            lastChild = this.element(key);
+            lastChild.element(val);
+          } else {
+            lastChild = this.element(key, val);
+          }
+        }
+      } else {
+        if (!this.options.ignoreDecorators && this.stringify.convertTextKey && 
name.indexOf(this.stringify.convertTextKey) === 0) {
+          lastChild = this.text(text);
+        } else if (!this.options.ignoreDecorators && 
this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) 
=== 0) {
+          lastChild = this.cdata(text);
+        } else if (!this.options.ignoreDecorators && 
this.stringify.convertCommentKey && 
name.indexOf(this.stringify.convertCommentKey) === 0) {
+          lastChild = this.comment(text);
+        } else if (!this.options.ignoreDecorators && 
this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 
0) {
+          lastChild = this.raw(text);
+        } else {
+          lastChild = this.node(name, attributes, text);
+        }
+      }
+      if (lastChild == null) {
+        throw new Error("Could not create any elements with: " + name);
+      }
+      return lastChild;
+    };
+
+    XMLNode.prototype.insertBefore = function(name, attributes, text) {
+      var child, i, removed;
+      if (this.isRoot) {
+        throw new Error("Cannot insert elements at root level");
+      }
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i);
+      child = this.parent.element(name, attributes, text);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return child;
+    };
+
+    XMLNode.prototype.insertAfter = function(name, attributes, text) {
+      var child, i, removed;
+      if (this.isRoot) {
+        throw new Error("Cannot insert elements at root level");
+      }
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i + 1);
+      child = this.parent.element(name, attributes, text);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return child;
+    };
+
+    XMLNode.prototype.remove = function() {
+      var i, ref;
+      if (this.isRoot) {
+        throw new Error("Cannot remove the root element");
+      }
+      i = this.parent.children.indexOf(this);
+      [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), 
ref;
+      return this.parent;
+    };
+
+    XMLNode.prototype.node = function(name, attributes, text) {
+      var child, ref;
+      if (name != null) {
+        name = name.valueOf();
+      }
+      if (attributes == null) {
+        attributes = {};
+      }
+      attributes = attributes.valueOf();
+      if (!isObject(attributes)) {
+        ref = [attributes, text], text = ref[0], attributes = ref[1];
+      }
+      child = new XMLElement(this, name, attributes);
+      if (text != null) {
+        child.text(text);
+      }
+      this.children.push(child);
+      return child;
+    };
+
+    XMLNode.prototype.text = function(value) {
+      var child;
+      child = new XMLText(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.cdata = function(value) {
+      var child;
+      child = new XMLCData(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.comment = function(value) {
+      var child;
+      child = new XMLComment(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.raw = function(value) {
+      var child;
+      child = new XMLRaw(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.declaration = function(version, encoding, standalone) {
+      var doc, xmldec;
+      doc = this.document();
+      xmldec = new XMLDeclaration(doc, version, encoding, standalone);
+      doc.xmldec = xmldec;
+      return doc.root();
+    };
+
+    XMLNode.prototype.doctype = function(pubID, sysID) {
+      var doc, doctype;
+      doc = this.document();
+      doctype = new XMLDocType(doc, pubID, sysID);
+      doc.doctype = doctype;
+      return doctype;
+    };
+
+    XMLNode.prototype.up = function() {
+      if (this.isRoot) {
+        throw new Error("The root node has no parent. Use doc() if you need to 
get the document object.");
+      }
+      return this.parent;
+    };
+
+    XMLNode.prototype.root = function() {
+      var child;
+      if (this.isRoot) {
+        return this;
+      }
+      child = this.parent;
+      while (!child.isRoot) {
+        child = child.parent;
+      }
+      return child;
+    };
+
+    XMLNode.prototype.document = function() {
+      return this.root().documentObject;
+    };
+
+    XMLNode.prototype.end = function(options) {
+      return this.document().toString(options);
+    };
+
+    XMLNode.prototype.prev = function() {
+      var i;
+      if (this.isRoot) {
+        throw new Error("Root node has no siblings");
+      }
+      i = this.parent.children.indexOf(this);
+      if (i < 1) {
+        throw new Error("Already at the first node");
+      }
+      return this.parent.children[i - 1];
+    };
+
+    XMLNode.prototype.next = function() {
+      var i;
+      if (this.isRoot) {
+        throw new Error("Root node has no siblings");
+      }
+      i = this.parent.children.indexOf(this);
+      if (i === -1 || i === this.parent.children.length - 1) {
+        throw new Error("Already at the last node");
+      }
+      return this.parent.children[i + 1];
+    };
+
+    XMLNode.prototype.importXMLBuilder = function(xmlbuilder) {
+      var clonedRoot;
+      clonedRoot = xmlbuilder.root().clone();
+      clonedRoot.parent = this;
+      clonedRoot.isRoot = false;
+      this.children.push(clonedRoot);
+      return this;
+    };
+
+    XMLNode.prototype.ele = function(name, attributes, text) {
+      return this.element(name, attributes, text);
+    };
+
+    XMLNode.prototype.nod = function(name, attributes, text) {
+      return this.node(name, attributes, text);
+    };
+
+    XMLNode.prototype.txt = function(value) {
+      return this.text(value);
+    };
+
+    XMLNode.prototype.dat = function(value) {
+      return this.cdata(value);
+    };
+
+    XMLNode.prototype.com = function(value) {
+      return this.comment(value);
+    };
+
+    XMLNode.prototype.doc = function() {
+      return this.document();
+    };
+
+    XMLNode.prototype.dec = function(version, encoding, standalone) {
+      return this.declaration(version, encoding, standalone);
+    };
+
+    XMLNode.prototype.dtd = function(pubID, sysID) {
+      return this.doctype(pubID, sysID);
+    };
+
+    XMLNode.prototype.e = function(name, attributes, text) {
+      return this.element(name, attributes, text);
+    };
+
+    XMLNode.prototype.n = function(name, attributes, text) {
+      return this.node(name, attributes, text);
+    };
+
+    XMLNode.prototype.t = function(value) {
+      return this.text(value);
+    };
+
+    XMLNode.prototype.d = function(value) {
+      return this.cdata(value);
+    };
+
+    XMLNode.prototype.c = function(value) {
+      return this.comment(value);
+    };
+
+    XMLNode.prototype.r = function(value) {
+      return this.raw(value);
+    };
+
+    XMLNode.prototype.u = function() {
+      return this.up();
+    };
+
+    return XMLNode;
+
+  })();
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
new file mode 100644
index 0000000..f5d8c6c
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
@@ -0,0 +1,51 @@
+// Generated by CoffeeScript 1.9.1
+(function() {
+  var XMLProcessingInstruction, create;
+
+  create = require('lodash/object/create');
+
+  module.exports = XMLProcessingInstruction = (function() {
+    function XMLProcessingInstruction(parent, target, value) {
+      this.stringify = parent.stringify;
+      if (target == null) {
+        throw new Error("Missing instruction target");
+      }
+      this.target = this.stringify.insTarget(target);
+      if (value) {
+        this.value = this.stringify.insValue(value);
+      }
+    }
+
+    XMLProcessingInstruction.prototype.clone = function() {
+      return create(XMLProcessingInstruction.prototype, this);
+    };
+
+    XMLProcessingInstruction.prototype.toString = function(options, level) {
+      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
+      pretty = (options != null ? options.pretty : void 0) || false;
+      indent = (ref = options != null ? options.indent : void 0) != null ? ref 
: '  ';
+      offset = (ref1 = options != null ? options.offset : void 0) != null ? 
ref1 : 0;
+      newline = (ref2 = options != null ? options.newline : void 0) != null ? 
ref2 : '\n';
+      level || (level = 0);
+      space = new Array(level + offset + 1).join(indent);
+      r = '';
+      if (pretty) {
+        r += space;
+      }
+      r += '<?';
+      r += this.target;
+      if (this.value) {
+        r += ' ' + this.value;
+      }
+      r += '?>';
+      if (pretty) {
+        r += newline;
+      }
+      return r;
+    };
+
+    return XMLProcessingInstruction;
+
+  })();
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLRaw.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLRaw.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLRaw.js
new file mode 100644
index 0000000..499d0e2
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLRaw.js
@@ -0,0 +1,49 @@
+// Generated by CoffeeScript 1.9.1
+(function() {
+  var XMLNode, XMLRaw, create,
+    extend = 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; },
+    hasProp = {}.hasOwnProperty;
+
+  create = require('lodash/object/create');
+
+  XMLNode = require('./XMLNode');
+
+  module.exports = XMLRaw = (function(superClass) {
+    extend(XMLRaw, superClass);
+
+    function XMLRaw(parent, text) {
+      XMLRaw.__super__.constructor.call(this, parent);
+      if (text == null) {
+        throw new Error("Missing raw text");
+      }
+      this.value = this.stringify.raw(text);
+    }
+
+    XMLRaw.prototype.clone = function() {
+      return create(XMLRaw.prototype, this);
+    };
+
+    XMLRaw.prototype.toString = function(options, level) {
+      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
+      pretty = (options != null ? options.pretty : void 0) || false;
+      indent = (ref = options != null ? options.indent : void 0) != null ? ref 
: '  ';
+      offset = (ref1 = options != null ? options.offset : void 0) != null ? 
ref1 : 0;
+      newline = (ref2 = options != null ? options.newline : void 0) != null ? 
ref2 : '\n';
+      level || (level = 0);
+      space = new Array(level + offset + 1).join(indent);
+      r = '';
+      if (pretty) {
+        r += space;
+      }
+      r += this.value;
+      if (pretty) {
+        r += newline;
+      }
+      return r;
+    };
+
+    return XMLRaw;
+
+  })(XMLNode);
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLStringifier.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLStringifier.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLStringifier.js
new file mode 100644
index 0000000..f0ab1fc
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLStringifier.js
@@ -0,0 +1,165 @@
+// Generated by CoffeeScript 1.9.1
+(function() {
+  var XMLStringifier,
+    bind = function(fn, me){ return function(){ return fn.apply(me, 
arguments); }; },
+    hasProp = {}.hasOwnProperty;
+
+  module.exports = XMLStringifier = (function() {
+    function XMLStringifier(options) {
+      this.assertLegalChar = bind(this.assertLegalChar, this);
+      var key, ref, value;
+      this.allowSurrogateChars = options != null ? options.allowSurrogateChars 
: void 0;
+      ref = (options != null ? options.stringify : void 0) || {};
+      for (key in ref) {
+        if (!hasProp.call(ref, key)) continue;
+        value = ref[key];
+        this[key] = value;
+      }
+    }
+
+    XMLStringifier.prototype.eleName = function(val) {
+      val = '' + val || '';
+      return this.assertLegalChar(val);
+    };
+
+    XMLStringifier.prototype.eleText = function(val) {
+      val = '' + val || '';
+      return this.assertLegalChar(this.elEscape(val));
+    };
+
+    XMLStringifier.prototype.cdata = function(val) {
+      val = '' + val || '';
+      if (val.match(/]]>/)) {
+        throw new Error("Invalid CDATA text: " + val);
+      }
+      return this.assertLegalChar(val);
+    };
+
+    XMLStringifier.prototype.comment = function(val) {
+      val = '' + val || '';
+      if (val.match(/--/)) {
+        throw new Error("Comment text cannot contain double-hypen: " + val);
+      }
+      return this.assertLegalChar(val);
+    };
+
+    XMLStringifier.prototype.raw = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.attName = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.attValue = function(val) {
+      val = '' + val || '';
+      return this.attEscape(val);
+    };
+
+    XMLStringifier.prototype.insTarget = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.insValue = function(val) {
+      val = '' + val || '';
+      if (val.match(/\?>/)) {
+        throw new Error("Invalid processing instruction value: " + val);
+      }
+      return val;
+    };
+
+    XMLStringifier.prototype.xmlVersion = function(val) {
+      val = '' + val || '';
+      if (!val.match(/1\.[0-9]+/)) {
+        throw new Error("Invalid version number: " + val);
+      }
+      return val;
+    };
+
+    XMLStringifier.prototype.xmlEncoding = function(val) {
+      val = '' + val || '';
+      if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-]|-)*$/)) {
+        throw new Error("Invalid encoding: " + val);
+      }
+      return val;
+    };
+
+    XMLStringifier.prototype.xmlStandalone = function(val) {
+      if (val) {
+        return "yes";
+      } else {
+        return "no";
+      }
+    };
+
+    XMLStringifier.prototype.dtdPubID = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdSysID = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdElementValue = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdAttType = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdAttDefault = function(val) {
+      if (val != null) {
+        return '' + val || '';
+      } else {
+        return val;
+      }
+    };
+
+    XMLStringifier.prototype.dtdEntityValue = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdNData = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.convertAttKey = '@';
+
+    XMLStringifier.prototype.convertPIKey = '?';
+
+    XMLStringifier.prototype.convertTextKey = '#text';
+
+    XMLStringifier.prototype.convertCDataKey = '#cdata';
+
+    XMLStringifier.prototype.convertCommentKey = '#comment';
+
+    XMLStringifier.prototype.convertRawKey = '#raw';
+
+    XMLStringifier.prototype.assertLegalChar = function(str) {
+      var chars, chr;
+      if (this.allowSurrogateChars) {
+        chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/;
+      } else {
+        chars = 
/[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/;
+      }
+      chr = str.match(chars);
+      if (chr) {
+        throw new Error("Invalid character (" + chr + ") in string: " + str + 
" at index " + chr.index);
+      }
+      return str;
+    };
+
+    XMLStringifier.prototype.elEscape = function(str) {
+      return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, 
'&gt;').replace(/\r/g, '&#xD;');
+    };
+
+    XMLStringifier.prototype.attEscape = function(str) {
+      return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/"/g, 
'&quot;');
+    };
+
+    return XMLStringifier;
+
+  })();
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLText.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLText.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLText.js
new file mode 100644
index 0000000..15973b1
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/XMLText.js
@@ -0,0 +1,49 @@
+// Generated by CoffeeScript 1.9.1
+(function() {
+  var XMLNode, XMLText, create,
+    extend = 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; },
+    hasProp = {}.hasOwnProperty;
+
+  create = require('lodash/object/create');
+
+  XMLNode = require('./XMLNode');
+
+  module.exports = XMLText = (function(superClass) {
+    extend(XMLText, superClass);
+
+    function XMLText(parent, text) {
+      XMLText.__super__.constructor.call(this, parent);
+      if (text == null) {
+        throw new Error("Missing element text");
+      }
+      this.value = this.stringify.eleText(text);
+    }
+
+    XMLText.prototype.clone = function() {
+      return create(XMLText.prototype, this);
+    };
+
+    XMLText.prototype.toString = function(options, level) {
+      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
+      pretty = (options != null ? options.pretty : void 0) || false;
+      indent = (ref = options != null ? options.indent : void 0) != null ? ref 
: '  ';
+      offset = (ref1 = options != null ? options.offset : void 0) != null ? 
ref1 : 0;
+      newline = (ref2 = options != null ? options.newline : void 0) != null ? 
ref2 : '\n';
+      level || (level = 0);
+      space = new Array(level + offset + 1).join(indent);
+      r = '';
+      if (pretty) {
+        r += space;
+      }
+      r += this.value;
+      if (pretty) {
+        r += newline;
+      }
+      return r;
+    };
+
+    return XMLText;
+
+  })(XMLNode);
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/index.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/index.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/index.js
new file mode 100644
index 0000000..d345101
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/lib/index.js
@@ -0,0 +1,14 @@
+// Generated by CoffeeScript 1.9.1
+(function() {
+  var XMLBuilder, assign;
+
+  assign = require('lodash/object/assign');
+
+  XMLBuilder = require('./XMLBuilder');
+
+  module.exports.create = function(name, xmldec, doctype, options) {
+    options = assign({}, xmldec, doctype, options);
+    return new XMLBuilder(name, options).root();
+  };
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/LICENSE
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/LICENSE
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/LICENSE
new file mode 100644
index 0000000..9cd87e5
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/LICENSE
@@ -0,0 +1,22 @@
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+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-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/README.md
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/README.md
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/README.md
new file mode 100644
index 0000000..fd98e5c
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/README.md
@@ -0,0 +1,121 @@
+# lodash v3.10.1
+
+The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of 
[lodash](https://lodash.com/) exported as 
[Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) modules.
+
+Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
+```bash
+$ lodash modularize modern exports=node -o ./
+$ lodash modern -d -o ./index.js
+```
+
+## Installation
+
+Using npm:
+
+```bash
+$ {sudo -H} npm i -g npm
+$ npm i --save lodash
+```
+
+In Node.js/io.js:
+
+```js
+// load the modern build
+var _ = require('lodash');
+// or a method category
+var array = require('lodash/array');
+// or a method (great for smaller builds with browserify/webpack)
+var chunk = require('lodash/array/chunk');
+```
+
+See the [package source](https://github.com/lodash/lodash/tree/3.10.1-npm) for 
more details.
+
+**Note:**<br>
+Don’t assign values to the [special 
variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the 
REPL.<br>
+Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes lodash 
by default.
+
+## Module formats
+
+lodash is also available in a variety of other builds & module formats.
+
+ * npm packages for [modern](https://www.npmjs.com/package/lodash), 
[compatibility](https://www.npmjs.com/package/lodash-compat), & [per 
method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds
+ * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.10.1-amd) 
& [compatibility](https://github.com/lodash/lodash-compat/tree/3.10.1-amd) 
builds
+ * ES modules for the 
[modern](https://github.com/lodash/lodash/tree/3.10.1-es) build
+
+## Further Reading
+
+  * [API Documentation](https://lodash.com/docs)
+  * [Build 
Differences](https://github.com/lodash/lodash/wiki/Build-Differences)
+  * [Changelog](https://github.com/lodash/lodash/wiki/Changelog)
+  * [Roadmap](https://github.com/lodash/lodash/wiki/Roadmap)
+  * [More Resources](https://github.com/lodash/lodash/wiki/Resources)
+
+## Features
+
+ * ~100% [code coverage](https://coveralls.io/r/lodash)
+ * Follows [semantic versioning](http://semver.org/) for releases
+ * [Lazily 
evaluated](http://filimanjaro.com/blog/2014/introducing-lazy-evaluation/) 
chaining
+ * [_(…)](https://lodash.com/docs#_) supports implicit chaining
+ * [_.ary](https://lodash.com/docs#ary) & 
[_.rearg](https://lodash.com/docs#rearg) to change function argument limits & 
order
+ * [_.at](https://lodash.com/docs#at) for cherry-picking collection values
+ * [_.attempt](https://lodash.com/docs#attempt) to execute functions which may 
error without a try-catch
+ * [_.before](https://lodash.com/docs#before) to complement 
[_.after](https://lodash.com/docs#after)
+ * [_.bindKey](https://lodash.com/docs#bindKey) for binding 
[*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) 
defined methods
+ * [_.chunk](https://lodash.com/docs#chunk) for splitting an array into chunks 
of a given size
+ * [_.clone](https://lodash.com/docs#clone) supports shallow cloning of `Date` 
& `RegExp` objects
+ * [_.cloneDeep](https://lodash.com/docs#cloneDeep) for deep cloning arrays & 
objects
+ * [_.curry](https://lodash.com/docs#curry) & 
[_.curryRight](https://lodash.com/docs#curryRight) for creating 
[curried](http://hughfdjackson.com/javascript/why-curry-helps/) functions
+ * [_.debounce](https://lodash.com/docs#debounce) & 
[_.throttle](https://lodash.com/docs#throttle) are cancelable & accept options 
for more control
+ * [_.defaultsDeep](https://lodash.com/docs#defaultsDeep) for recursively 
assigning default properties
+ * [_.fill](https://lodash.com/docs#fill) to fill arrays with values
+ * [_.findKey](https://lodash.com/docs#findKey) for finding keys
+ * [_.flow](https://lodash.com/docs#flow) to complement 
[_.flowRight](https://lodash.com/docs#flowRight) (a.k.a `_.compose`)
+ * [_.forEach](https://lodash.com/docs#forEach) supports exiting early
+ * [_.forIn](https://lodash.com/docs#forIn) for iterating all enumerable 
properties
+ * [_.forOwn](https://lodash.com/docs#forOwn) for iterating own properties
+ * [_.get](https://lodash.com/docs#get) & [_.set](https://lodash.com/docs#set) 
for deep property getting & setting
+ * [_.gt](https://lodash.com/docs#gt), [_.gte](https://lodash.com/docs#gte), 
[_.lt](https://lodash.com/docs#lt), & [_.lte](https://lodash.com/docs#lte) 
relational methods
+ * [_.inRange](https://lodash.com/docs#inRange) for checking whether a number 
is within a given range
+ * [_.isNative](https://lodash.com/docs#isNative) to check for native functions
+ * [_.isPlainObject](https://lodash.com/docs#isPlainObject) & 
[_.toPlainObject](https://lodash.com/docs#toPlainObject) to check for & convert 
to `Object` objects
+ * [_.isTypedArray](https://lodash.com/docs#isTypedArray) to check for typed 
arrays
+ * [_.mapKeys](https://lodash.com/docs#mapKeys) for mapping keys to an object
+ * [_.matches](https://lodash.com/docs#matches) supports deep object 
comparisons
+ * [_.matchesProperty](https://lodash.com/docs#matchesProperty) to complement 
[_.matches](https://lodash.com/docs#matches) & 
[_.property](https://lodash.com/docs#property)
+ * [_.merge](https://lodash.com/docs#merge) for a deep 
[_.extend](https://lodash.com/docs#extend)
+ * [_.method](https://lodash.com/docs#method) & 
[_.methodOf](https://lodash.com/docs#methodOf) to create functions that invoke 
methods
+ * [_.modArgs](https://lodash.com/docs#modArgs) for more advanced functional 
composition
+ * [_.parseInt](https://lodash.com/docs#parseInt) for consistent 
cross-environment behavior
+ * [_.pull](https://lodash.com/docs#pull), 
[_.pullAt](https://lodash.com/docs#pullAt), & 
[_.remove](https://lodash.com/docs#remove) for mutating arrays
+ * [_.random](https://lodash.com/docs#random) supports returning 
floating-point numbers
+ * [_.restParam](https://lodash.com/docs#restParam) & 
[_.spread](https://lodash.com/docs#spread) for applying rest parameters & 
spreading arguments to functions
+ * [_.runInContext](https://lodash.com/docs#runInContext) for collisionless 
mixins & easier mocking
+ * [_.slice](https://lodash.com/docs#slice) for creating subsets of array-like 
values
+ * [_.sortByAll](https://lodash.com/docs#sortByAll) & 
[_.sortByOrder](https://lodash.com/docs#sortByOrder) for sorting by multiple 
properties & orders
+ * [_.support](https://lodash.com/docs#support) for flagging environment 
features
+ * [_.template](https://lodash.com/docs#template) supports 
[*“imports”*](https://lodash.com/docs#templateSettings-imports) options & 
[ES template 
delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components)
+ * [_.transform](https://lodash.com/docs#transform) as a powerful alternative 
to [_.reduce](https://lodash.com/docs#reduce) for transforming objects
+ * [_.unzipWith](https://lodash.com/docs#unzipWith) & 
[_.zipWith](https://lodash.com/docs#zipWith) to specify how grouped values 
should be combined
+ * [_.valuesIn](https://lodash.com/docs#valuesIn) for getting values of all 
enumerable properties
+ * [_.xor](https://lodash.com/docs#xor) to complement 
[_.difference](https://lodash.com/docs#difference), 
[_.intersection](https://lodash.com/docs#intersection), & 
[_.union](https://lodash.com/docs#union)
+ * [_.add](https://lodash.com/docs#add), 
[_.round](https://lodash.com/docs#round), [_.sum](https://lodash.com/docs#sum), 
&
+   [more](https://lodash.com/docs "_.ceil & _.floor") math methods
+ * [_.bind](https://lodash.com/docs#bind), 
[_.curry](https://lodash.com/docs#curry), 
[_.partial](https://lodash.com/docs#partial), &
+   [more](https://lodash.com/docs "_.bindKey, _.curryRight, _.partialRight") 
support customizable argument placeholders
+ * [_.capitalize](https://lodash.com/docs#capitalize), 
[_.trim](https://lodash.com/docs#trim), &
+   [more](https://lodash.com/docs "_.camelCase, _.deburr, _.endsWith, 
_.escapeRegExp, _.kebabCase, _.pad, _.padLeft, _.padRight, _.repeat, 
_.snakeCase, _.startCase, _.startsWith, _.trimLeft, _.trimRight, _.trunc, 
_.words") string methods
+ * [_.clone](https://lodash.com/docs#clone), 
[_.isEqual](https://lodash.com/docs#isEqual), &
+   [more](https://lodash.com/docs "_.assign, _.cloneDeep, _.merge") accept 
customizer callbacks
+ * [_.dropWhile](https://lodash.com/docs#dropWhile), 
[_.takeWhile](https://lodash.com/docs#takeWhile), &
+   [more](https://lodash.com/docs "_.drop, _.dropRight, _.dropRightWhile, 
_.take, _.takeRight, _.takeRightWhile") to complement 
[_.first](https://lodash.com/docs#first), 
[_.initial](https://lodash.com/docs#initial), 
[_.last](https://lodash.com/docs#last), & [_.rest](https://lodash.com/docs#rest)
+ * [_.findLast](https://lodash.com/docs#findLast), 
[_.findLastKey](https://lodash.com/docs#findLastKey), &
+   [more](https://lodash.com/docs "_.curryRight, _.dropRight, 
_.dropRightWhile, _.flowRight, _.forEachRight, _.forInRight, _.forOwnRight, 
_.padRight, partialRight, _.takeRight, _.trimRight, _.takeRightWhile") 
right-associative methods
+ * [_.includes](https://lodash.com/docs#includes), 
[_.toArray](https://lodash.com/docs#toArray), &
+   [more](https://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, 
_.findLast, _.findWhere, _.forEach, _.forEachRight, _.groupBy, _.indexBy, 
_.invoke, _.map, _.max, _.min, _.partition, _.pluck, _.reduce, _.reduceRight, 
_.reject, _.shuffle, _.size, _.some, _.sortBy, _.sortByAll, _.sortByOrder, 
_.sum, _.where") accept strings
+ * [_#commit](https://lodash.com/docs#prototype-commit) & 
[_#plant](https://lodash.com/docs#prototype-plant) for working with chain 
sequences
+ * [_#thru](https://lodash.com/docs#thru) to pass values thru a chain sequence
+
+## Support
+
+Tested in Chrome 43-44, Firefox 38-39, IE 6-11, MS Edge, Safari 5-8, 
ChakraNode 0.12.2, io.js 2.5.0, Node.js 0.8.28, 0.10.40, & 0.12.7, PhantomJS 
1.9.8, RingoJS 0.11, & Rhino 1.7.6.
+Automated [browser](https://saucelabs.com/u/lodash) & 
[CI](https://travis-ci.org/lodash/lodash/) test runs are available. Special 
thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser 
testing.

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array.js
new file mode 100644
index 0000000..e5121fa
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array.js
@@ -0,0 +1,44 @@
+module.exports = {
+  'chunk': require('./array/chunk'),
+  'compact': require('./array/compact'),
+  'difference': require('./array/difference'),
+  'drop': require('./array/drop'),
+  'dropRight': require('./array/dropRight'),
+  'dropRightWhile': require('./array/dropRightWhile'),
+  'dropWhile': require('./array/dropWhile'),
+  'fill': require('./array/fill'),
+  'findIndex': require('./array/findIndex'),
+  'findLastIndex': require('./array/findLastIndex'),
+  'first': require('./array/first'),
+  'flatten': require('./array/flatten'),
+  'flattenDeep': require('./array/flattenDeep'),
+  'head': require('./array/head'),
+  'indexOf': require('./array/indexOf'),
+  'initial': require('./array/initial'),
+  'intersection': require('./array/intersection'),
+  'last': require('./array/last'),
+  'lastIndexOf': require('./array/lastIndexOf'),
+  'object': require('./array/object'),
+  'pull': require('./array/pull'),
+  'pullAt': require('./array/pullAt'),
+  'remove': require('./array/remove'),
+  'rest': require('./array/rest'),
+  'slice': require('./array/slice'),
+  'sortedIndex': require('./array/sortedIndex'),
+  'sortedLastIndex': require('./array/sortedLastIndex'),
+  'tail': require('./array/tail'),
+  'take': require('./array/take'),
+  'takeRight': require('./array/takeRight'),
+  'takeRightWhile': require('./array/takeRightWhile'),
+  'takeWhile': require('./array/takeWhile'),
+  'union': require('./array/union'),
+  'uniq': require('./array/uniq'),
+  'unique': require('./array/unique'),
+  'unzip': require('./array/unzip'),
+  'unzipWith': require('./array/unzipWith'),
+  'without': require('./array/without'),
+  'xor': require('./array/xor'),
+  'zip': require('./array/zip'),
+  'zipObject': require('./array/zipObject'),
+  'zipWith': require('./array/zipWith')
+};

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js
new file mode 100644
index 0000000..c8be1fb
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js
@@ -0,0 +1,46 @@
+var baseSlice = require('../internal/baseSlice'),
+    isIterateeCall = require('../internal/isIterateeCall');
+
+/* Native method references for those with the same name as other `lodash` 
methods. */
+var nativeCeil = Math.ceil,
+    nativeFloor = Math.floor,
+    nativeMax = Math.max;
+
+/**
+ * Creates an array of elements split into groups the length of `size`.
+ * If `collection` can't be split evenly, the final chunk will be the remaining
+ * elements.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to process.
+ * @param {number} [size=1] The length of each chunk.
+ * @param- {Object} [guard] Enables use as a callback for functions like 
`_.map`.
+ * @returns {Array} Returns the new array containing chunks.
+ * @example
+ *
+ * _.chunk(['a', 'b', 'c', 'd'], 2);
+ * // => [['a', 'b'], ['c', 'd']]
+ *
+ * _.chunk(['a', 'b', 'c', 'd'], 3);
+ * // => [['a', 'b', 'c'], ['d']]
+ */
+function chunk(array, size, guard) {
+  if (guard ? isIterateeCall(array, size, guard) : size == null) {
+    size = 1;
+  } else {
+    size = nativeMax(nativeFloor(size) || 1, 1);
+  }
+  var index = 0,
+      length = array ? array.length : 0,
+      resIndex = -1,
+      result = Array(nativeCeil(length / size));
+
+  while (index < length) {
+    result[++resIndex] = baseSlice(array, index, (index += size));
+  }
+  return result;
+}
+
+module.exports = chunk;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/compact.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/compact.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/compact.js
new file mode 100644
index 0000000..1dc1c55
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/compact.js
@@ -0,0 +1,30 @@
+/**
+ * Creates an array with all falsey values removed. The values `false`, `null`,
+ * `0`, `""`, `undefined`, and `NaN` are falsey.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to compact.
+ * @returns {Array} Returns the new array of filtered values.
+ * @example
+ *
+ * _.compact([0, 1, false, 2, '', 3]);
+ * // => [1, 2, 3]
+ */
+function compact(array) {
+  var index = -1,
+      length = array ? array.length : 0,
+      resIndex = -1,
+      result = [];
+
+  while (++index < length) {
+    var value = array[index];
+    if (value) {
+      result[++resIndex] = value;
+    }
+  }
+  return result;
+}
+
+module.exports = compact;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/difference.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/difference.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/difference.js
new file mode 100644
index 0000000..128932a
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/difference.js
@@ -0,0 +1,29 @@
+var baseDifference = require('../internal/baseDifference'),
+    baseFlatten = require('../internal/baseFlatten'),
+    isArrayLike = require('../internal/isArrayLike'),
+    isObjectLike = require('../internal/isObjectLike'),
+    restParam = require('../function/restParam');
+
+/**
+ * Creates an array of unique `array` values not included in the other
+ * provided arrays using 
[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {...Array} [values] The arrays of values to exclude.
+ * @returns {Array} Returns the new array of filtered values.
+ * @example
+ *
+ * _.difference([1, 2, 3], [4, 2]);
+ * // => [1, 3]
+ */
+var difference = restParam(function(array, values) {
+  return (isObjectLike(array) && isArrayLike(array))
+    ? baseDifference(array, baseFlatten(values, false, true))
+    : [];
+});
+
+module.exports = difference;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/drop.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/drop.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/drop.js
new file mode 100644
index 0000000..039a0b5
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/drop.js
@@ -0,0 +1,39 @@
+var baseSlice = require('../internal/baseSlice'),
+    isIterateeCall = require('../internal/isIterateeCall');
+
+/**
+ * Creates a slice of `array` with `n` elements dropped from the beginning.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @param {number} [n=1] The number of elements to drop.
+ * @param- {Object} [guard] Enables use as a callback for functions like 
`_.map`.
+ * @returns {Array} Returns the slice of `array`.
+ * @example
+ *
+ * _.drop([1, 2, 3]);
+ * // => [2, 3]
+ *
+ * _.drop([1, 2, 3], 2);
+ * // => [3]
+ *
+ * _.drop([1, 2, 3], 5);
+ * // => []
+ *
+ * _.drop([1, 2, 3], 0);
+ * // => [1, 2, 3]
+ */
+function drop(array, n, guard) {
+  var length = array ? array.length : 0;
+  if (!length) {
+    return [];
+  }
+  if (guard ? isIterateeCall(array, n, guard) : n == null) {
+    n = 1;
+  }
+  return baseSlice(array, n < 0 ? 0 : n);
+}
+
+module.exports = drop;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js
new file mode 100644
index 0000000..14b5eb6
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js
@@ -0,0 +1,40 @@
+var baseSlice = require('../internal/baseSlice'),
+    isIterateeCall = require('../internal/isIterateeCall');
+
+/**
+ * Creates a slice of `array` with `n` elements dropped from the end.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @param {number} [n=1] The number of elements to drop.
+ * @param- {Object} [guard] Enables use as a callback for functions like 
`_.map`.
+ * @returns {Array} Returns the slice of `array`.
+ * @example
+ *
+ * _.dropRight([1, 2, 3]);
+ * // => [1, 2]
+ *
+ * _.dropRight([1, 2, 3], 2);
+ * // => [1]
+ *
+ * _.dropRight([1, 2, 3], 5);
+ * // => []
+ *
+ * _.dropRight([1, 2, 3], 0);
+ * // => [1, 2, 3]
+ */
+function dropRight(array, n, guard) {
+  var length = array ? array.length : 0;
+  if (!length) {
+    return [];
+  }
+  if (guard ? isIterateeCall(array, n, guard) : n == null) {
+    n = 1;
+  }
+  n = length - (+n || 0);
+  return baseSlice(array, 0, n < 0 ? 0 : n);
+}
+
+module.exports = dropRight;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js
new file mode 100644
index 0000000..be158bd
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js
@@ -0,0 +1,59 @@
+var baseCallback = require('../internal/baseCallback'),
+    baseWhile = require('../internal/baseWhile');
+
+/**
+ * Creates a slice of `array` excluding elements dropped from the end.
+ * Elements are dropped until `predicate` returns falsey. The predicate is
+ * bound to `thisArg` and invoked with three arguments: (value, index, array).
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that match the properties of the given
+ * object, else `false`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ *  per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {Array} Returns the slice of `array`.
+ * @example
+ *
+ * _.dropRightWhile([1, 2, 3], function(n) {
+ *   return n > 1;
+ * });
+ * // => [1]
+ *
+ * var users = [
+ *   { 'user': 'barney',  'active': true },
+ *   { 'user': 'fred',    'active': false },
+ *   { 'user': 'pebbles', 'active': false }
+ * ];
+ *
+ * // using the `_.matches` callback shorthand
+ * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 
'user');
+ * // => ['barney', 'fred']
+ *
+ * // using the `_.matchesProperty` callback shorthand
+ * _.pluck(_.dropRightWhile(users, 'active', false), 'user');
+ * // => ['barney']
+ *
+ * // using the `_.property` callback shorthand
+ * _.pluck(_.dropRightWhile(users, 'active'), 'user');
+ * // => ['barney', 'fred', 'pebbles']
+ */
+function dropRightWhile(array, predicate, thisArg) {
+  return (array && array.length)
+    ? baseWhile(array, baseCallback(predicate, thisArg, 3), true, true)
+    : [];
+}
+
+module.exports = dropRightWhile;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js
new file mode 100644
index 0000000..d9eabae
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js
@@ -0,0 +1,59 @@
+var baseCallback = require('../internal/baseCallback'),
+    baseWhile = require('../internal/baseWhile');
+
+/**
+ * Creates a slice of `array` excluding elements dropped from the beginning.
+ * Elements are dropped until `predicate` returns falsey. The predicate is
+ * bound to `thisArg` and invoked with three arguments: (value, index, array).
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ *  per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {Array} Returns the slice of `array`.
+ * @example
+ *
+ * _.dropWhile([1, 2, 3], function(n) {
+ *   return n < 3;
+ * });
+ * // => [3]
+ *
+ * var users = [
+ *   { 'user': 'barney',  'active': false },
+ *   { 'user': 'fred',    'active': false },
+ *   { 'user': 'pebbles', 'active': true }
+ * ];
+ *
+ * // using the `_.matches` callback shorthand
+ * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user');
+ * // => ['fred', 'pebbles']
+ *
+ * // using the `_.matchesProperty` callback shorthand
+ * _.pluck(_.dropWhile(users, 'active', false), 'user');
+ * // => ['pebbles']
+ *
+ * // using the `_.property` callback shorthand
+ * _.pluck(_.dropWhile(users, 'active'), 'user');
+ * // => ['barney', 'fred', 'pebbles']
+ */
+function dropWhile(array, predicate, thisArg) {
+  return (array && array.length)
+    ? baseWhile(array, baseCallback(predicate, thisArg, 3), true)
+    : [];
+}
+
+module.exports = dropWhile;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/fill.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/fill.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/fill.js
new file mode 100644
index 0000000..2c8f6da
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/fill.js
@@ -0,0 +1,44 @@
+var baseFill = require('../internal/baseFill'),
+    isIterateeCall = require('../internal/isIterateeCall');
+
+/**
+ * Fills elements of `array` with `value` from `start` up to, but not
+ * including, `end`.
+ *
+ * **Note:** This method mutates `array`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to fill.
+ * @param {*} value The value to fill `array` with.
+ * @param {number} [start=0] The start position.
+ * @param {number} [end=array.length] The end position.
+ * @returns {Array} Returns `array`.
+ * @example
+ *
+ * var array = [1, 2, 3];
+ *
+ * _.fill(array, 'a');
+ * console.log(array);
+ * // => ['a', 'a', 'a']
+ *
+ * _.fill(Array(3), 2);
+ * // => [2, 2, 2]
+ *
+ * _.fill([4, 6, 8], '*', 1, 2);
+ * // => [4, '*', 8]
+ */
+function fill(array, value, start, end) {
+  var length = array ? array.length : 0;
+  if (!length) {
+    return [];
+  }
+  if (start && typeof start != 'number' && isIterateeCall(array, value, 
start)) {
+    start = 0;
+    end = length;
+  }
+  return baseFill(array, value, start, end);
+}
+
+module.exports = fill;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js
new file mode 100644
index 0000000..2a6b8e1
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js
@@ -0,0 +1,53 @@
+var createFindIndex = require('../internal/createFindIndex');
+
+/**
+ * This method is like `_.find` except that it returns the index of the first
+ * element `predicate` returns truthy for instead of the element itself.
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to search.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ *  per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {number} Returns the index of the found element, else `-1`.
+ * @example
+ *
+ * var users = [
+ *   { 'user': 'barney',  'active': false },
+ *   { 'user': 'fred',    'active': false },
+ *   { 'user': 'pebbles', 'active': true }
+ * ];
+ *
+ * _.findIndex(users, function(chr) {
+ *   return chr.user == 'barney';
+ * });
+ * // => 0
+ *
+ * // using the `_.matches` callback shorthand
+ * _.findIndex(users, { 'user': 'fred', 'active': false });
+ * // => 1
+ *
+ * // using the `_.matchesProperty` callback shorthand
+ * _.findIndex(users, 'active', false);
+ * // => 0
+ *
+ * // using the `_.property` callback shorthand
+ * _.findIndex(users, 'active');
+ * // => 2
+ */
+var findIndex = createFindIndex();
+
+module.exports = findIndex;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js
new file mode 100644
index 0000000..d6d8eca
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js
@@ -0,0 +1,53 @@
+var createFindIndex = require('../internal/createFindIndex');
+
+/**
+ * This method is like `_.findIndex` except that it iterates over elements
+ * of `collection` from right to left.
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to search.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ *  per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {number} Returns the index of the found element, else `-1`.
+ * @example
+ *
+ * var users = [
+ *   { 'user': 'barney',  'active': true },
+ *   { 'user': 'fred',    'active': false },
+ *   { 'user': 'pebbles', 'active': false }
+ * ];
+ *
+ * _.findLastIndex(users, function(chr) {
+ *   return chr.user == 'pebbles';
+ * });
+ * // => 2
+ *
+ * // using the `_.matches` callback shorthand
+ * _.findLastIndex(users, { 'user': 'barney', 'active': true });
+ * // => 0
+ *
+ * // using the `_.matchesProperty` callback shorthand
+ * _.findLastIndex(users, 'active', false);
+ * // => 2
+ *
+ * // using the `_.property` callback shorthand
+ * _.findLastIndex(users, 'active');
+ * // => 0
+ */
+var findLastIndex = createFindIndex(true);
+
+module.exports = findLastIndex;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/first.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/first.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/first.js
new file mode 100644
index 0000000..b3b9c79
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/first.js
@@ -0,0 +1,22 @@
+/**
+ * Gets the first element of `array`.
+ *
+ * @static
+ * @memberOf _
+ * @alias head
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {*} Returns the first element of `array`.
+ * @example
+ *
+ * _.first([1, 2, 3]);
+ * // => 1
+ *
+ * _.first([]);
+ * // => undefined
+ */
+function first(array) {
+  return array ? array[0] : undefined;
+}
+
+module.exports = first;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js
new file mode 100644
index 0000000..dc2eff8
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js
@@ -0,0 +1,32 @@
+var baseFlatten = require('../internal/baseFlatten'),
+    isIterateeCall = require('../internal/isIterateeCall');
+
+/**
+ * Flattens a nested array. If `isDeep` is `true` the array is recursively
+ * flattened, otherwise it's only flattened a single level.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to flatten.
+ * @param {boolean} [isDeep] Specify a deep flatten.
+ * @param- {Object} [guard] Enables use as a callback for functions like 
`_.map`.
+ * @returns {Array} Returns the new flattened array.
+ * @example
+ *
+ * _.flatten([1, [2, 3, [4]]]);
+ * // => [1, 2, 3, [4]]
+ *
+ * // using `isDeep`
+ * _.flatten([1, [2, 3, [4]]], true);
+ * // => [1, 2, 3, 4]
+ */
+function flatten(array, isDeep, guard) {
+  var length = array ? array.length : 0;
+  if (guard && isIterateeCall(array, isDeep, guard)) {
+    isDeep = false;
+  }
+  return length ? baseFlatten(array, isDeep) : [];
+}
+
+module.exports = flatten;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js
new file mode 100644
index 0000000..9f775fe
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js
@@ -0,0 +1,21 @@
+var baseFlatten = require('../internal/baseFlatten');
+
+/**
+ * Recursively flattens a nested array.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to recursively flatten.
+ * @returns {Array} Returns the new flattened array.
+ * @example
+ *
+ * _.flattenDeep([1, [2, 3, [4]]]);
+ * // => [1, 2, 3, 4]
+ */
+function flattenDeep(array) {
+  var length = array ? array.length : 0;
+  return length ? baseFlatten(array, true) : [];
+}
+
+module.exports = flattenDeep;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/head.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/head.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/head.js
new file mode 100644
index 0000000..1961b08
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/head.js
@@ -0,0 +1 @@
+module.exports = require('./first');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js
new file mode 100644
index 0000000..4cfc682
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js
@@ -0,0 +1,53 @@
+var baseIndexOf = require('../internal/baseIndexOf'),
+    binaryIndex = require('../internal/binaryIndex');
+
+/* Native method references for those with the same name as other `lodash` 
methods. */
+var nativeMax = Math.max;
+
+/**
+ * Gets the index at which the first occurrence of `value` is found in `array`
+ * using 
[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * for equality comparisons. If `fromIndex` is negative, it's used as the 
offset
+ * from the end of `array`. If `array` is sorted providing `true` for 
`fromIndex`
+ * performs a faster binary search.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to search.
+ * @param {*} value The value to search for.
+ * @param {boolean|number} [fromIndex=0] The index to search from or `true`
+ *  to perform a binary search on a sorted array.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ * @example
+ *
+ * _.indexOf([1, 2, 1, 2], 2);
+ * // => 1
+ *
+ * // using `fromIndex`
+ * _.indexOf([1, 2, 1, 2], 2, 2);
+ * // => 3
+ *
+ * // performing a binary search
+ * _.indexOf([1, 1, 2, 2], 2, true);
+ * // => 2
+ */
+function indexOf(array, value, fromIndex) {
+  var length = array ? array.length : 0;
+  if (!length) {
+    return -1;
+  }
+  if (typeof fromIndex == 'number') {
+    fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
+  } else if (fromIndex) {
+    var index = binaryIndex(array, value);
+    if (index < length &&
+        (value === value ? (value === array[index]) : (array[index] !== 
array[index]))) {
+      return index;
+    }
+    return -1;
+  }
+  return baseIndexOf(array, value, fromIndex || 0);
+}
+
+module.exports = indexOf;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/initial.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/initial.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/initial.js
new file mode 100644
index 0000000..59b7a7d
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/initial.js
@@ -0,0 +1,20 @@
+var dropRight = require('./dropRight');
+
+/**
+ * Gets all but the last element of `array`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {Array} Returns the slice of `array`.
+ * @example
+ *
+ * _.initial([1, 2, 3]);
+ * // => [1, 2]
+ */
+function initial(array) {
+  return dropRight(array, 1);
+}
+
+module.exports = initial;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js
new file mode 100644
index 0000000..f218432
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js
@@ -0,0 +1,58 @@
+var baseIndexOf = require('../internal/baseIndexOf'),
+    cacheIndexOf = require('../internal/cacheIndexOf'),
+    createCache = require('../internal/createCache'),
+    isArrayLike = require('../internal/isArrayLike'),
+    restParam = require('../function/restParam');
+
+/**
+ * Creates an array of unique values that are included in all of the provided
+ * arrays using 
[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {...Array} [arrays] The arrays to inspect.
+ * @returns {Array} Returns the new array of shared values.
+ * @example
+ * _.intersection([1, 2], [4, 2], [2, 1]);
+ * // => [2]
+ */
+var intersection = restParam(function(arrays) {
+  var othLength = arrays.length,
+      othIndex = othLength,
+      caches = Array(length),
+      indexOf = baseIndexOf,
+      isCommon = true,
+      result = [];
+
+  while (othIndex--) {
+    var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? 
value : [];
+    caches[othIndex] = (isCommon && value.length >= 120) ? 
createCache(othIndex && value) : null;
+  }
+  var array = arrays[0],
+      index = -1,
+      length = array ? array.length : 0,
+      seen = caches[0];
+
+  outer:
+  while (++index < length) {
+    value = array[index];
+    if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
+      var othIndex = othLength;
+      while (--othIndex) {
+        var cache = caches[othIndex];
+        if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], 
value, 0)) < 0) {
+          continue outer;
+        }
+      }
+      if (seen) {
+        seen.push(value);
+      }
+      result.push(value);
+    }
+  }
+  return result;
+});
+
+module.exports = intersection;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/last.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/last.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/last.js
new file mode 100644
index 0000000..299af31
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/last.js
@@ -0,0 +1,19 @@
+/**
+ * Gets the last element of `array`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {*} Returns the last element of `array`.
+ * @example
+ *
+ * _.last([1, 2, 3]);
+ * // => 3
+ */
+function last(array) {
+  var length = array ? array.length : 0;
+  return length ? array[length - 1] : undefined;
+}
+
+module.exports = last;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js
new file mode 100644
index 0000000..02b8062
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js
@@ -0,0 +1,60 @@
+var binaryIndex = require('../internal/binaryIndex'),
+    indexOfNaN = require('../internal/indexOfNaN');
+
+/* Native method references for those with the same name as other `lodash` 
methods. */
+var nativeMax = Math.max,
+    nativeMin = Math.min;
+
+/**
+ * This method is like `_.indexOf` except that it iterates over elements of
+ * `array` from right to left.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to search.
+ * @param {*} value The value to search for.
+ * @param {boolean|number} [fromIndex=array.length-1] The index to search from
+ *  or `true` to perform a binary search on a sorted array.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ * @example
+ *
+ * _.lastIndexOf([1, 2, 1, 2], 2);
+ * // => 3
+ *
+ * // using `fromIndex`
+ * _.lastIndexOf([1, 2, 1, 2], 2, 2);
+ * // => 1
+ *
+ * // performing a binary search
+ * _.lastIndexOf([1, 1, 2, 2], 2, true);
+ * // => 3
+ */
+function lastIndexOf(array, value, fromIndex) {
+  var length = array ? array.length : 0;
+  if (!length) {
+    return -1;
+  }
+  var index = length;
+  if (typeof fromIndex == 'number') {
+    index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : 
nativeMin(fromIndex || 0, length - 1)) + 1;
+  } else if (fromIndex) {
+    index = binaryIndex(array, value, true) - 1;
+    var other = array[index];
+    if (value === value ? (value === other) : (other !== other)) {
+      return index;
+    }
+    return -1;
+  }
+  if (value !== value) {
+    return indexOfNaN(array, index, true);
+  }
+  while (index--) {
+    if (array[index] === value) {
+      return index;
+    }
+  }
+  return -1;
+}
+
+module.exports = lastIndexOf;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/object.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/object.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/object.js
new file mode 100644
index 0000000..f4a3453
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/object.js
@@ -0,0 +1 @@
+module.exports = require('./zipObject');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pull.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pull.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pull.js
new file mode 100644
index 0000000..7bcbb4a
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pull.js
@@ -0,0 +1,52 @@
+var baseIndexOf = require('../internal/baseIndexOf');
+
+/** Used for native method references. */
+var arrayProto = Array.prototype;
+
+/** Native method references. */
+var splice = arrayProto.splice;
+
+/**
+ * Removes all provided values from `array` using
+ * 
[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * **Note:** Unlike `_.without`, this method mutates `array`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to modify.
+ * @param {...*} [values] The values to remove.
+ * @returns {Array} Returns `array`.
+ * @example
+ *
+ * var array = [1, 2, 3, 1, 2, 3];
+ *
+ * _.pull(array, 2, 3);
+ * console.log(array);
+ * // => [1, 1]
+ */
+function pull() {
+  var args = arguments,
+      array = args[0];
+
+  if (!(array && array.length)) {
+    return array;
+  }
+  var index = 0,
+      indexOf = baseIndexOf,
+      length = args.length;
+
+  while (++index < length) {
+    var fromIndex = 0,
+        value = args[index];
+
+    while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {
+      splice.call(array, fromIndex, 1);
+    }
+  }
+  return array;
+}
+
+module.exports = pull;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js
new file mode 100644
index 0000000..4ca2476
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js
@@ -0,0 +1,40 @@
+var baseAt = require('../internal/baseAt'),
+    baseCompareAscending = require('../internal/baseCompareAscending'),
+    baseFlatten = require('../internal/baseFlatten'),
+    basePullAt = require('../internal/basePullAt'),
+    restParam = require('../function/restParam');
+
+/**
+ * Removes elements from `array` corresponding to the given indexes and returns
+ * an array of the removed elements. Indexes may be specified as an array of
+ * indexes or as individual arguments.
+ *
+ * **Note:** Unlike `_.at`, this method mutates `array`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to modify.
+ * @param {...(number|number[])} [indexes] The indexes of elements to remove,
+ *  specified as individual indexes or arrays of indexes.
+ * @returns {Array} Returns the new array of removed elements.
+ * @example
+ *
+ * var array = [5, 10, 15, 20];
+ * var evens = _.pullAt(array, 1, 3);
+ *
+ * console.log(array);
+ * // => [5, 15]
+ *
+ * console.log(evens);
+ * // => [10, 20]
+ */
+var pullAt = restParam(function(array, indexes) {
+  indexes = baseFlatten(indexes);
+
+  var result = baseAt(array, indexes);
+  basePullAt(array, indexes.sort(baseCompareAscending));
+  return result;
+});
+
+module.exports = pullAt;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/remove.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/remove.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/remove.js
new file mode 100644
index 0000000..0cf979b
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/remove.js
@@ -0,0 +1,64 @@
+var baseCallback = require('../internal/baseCallback'),
+    basePullAt = require('../internal/basePullAt');
+
+/**
+ * Removes all elements from `array` that `predicate` returns truthy for
+ * and returns an array of the removed elements. The predicate is bound to
+ * `thisArg` and invoked with three arguments: (value, index, array).
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
+ *
+ * **Note:** Unlike `_.filter`, this method mutates `array`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to modify.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ *  per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {Array} Returns the new array of removed elements.
+ * @example
+ *
+ * var array = [1, 2, 3, 4];
+ * var evens = _.remove(array, function(n) {
+ *   return n % 2 == 0;
+ * });
+ *
+ * console.log(array);
+ * // => [1, 3]
+ *
+ * console.log(evens);
+ * // => [2, 4]
+ */
+function remove(array, predicate, thisArg) {
+  var result = [];
+  if (!(array && array.length)) {
+    return result;
+  }
+  var index = -1,
+      indexes = [],
+      length = array.length;
+
+  predicate = baseCallback(predicate, thisArg, 3);
+  while (++index < length) {
+    var value = array[index];
+    if (predicate(value, index, array)) {
+      result.push(value);
+      indexes.push(index);
+    }
+  }
+  basePullAt(array, indexes);
+  return result;
+}
+
+module.exports = remove;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/rest.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/rest.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/rest.js
new file mode 100644
index 0000000..9bfb734
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/rest.js
@@ -0,0 +1,21 @@
+var drop = require('./drop');
+
+/**
+ * Gets all but the first element of `array`.
+ *
+ * @static
+ * @memberOf _
+ * @alias tail
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {Array} Returns the slice of `array`.
+ * @example
+ *
+ * _.rest([1, 2, 3]);
+ * // => [2, 3]
+ */
+function rest(array) {
+  return drop(array, 1);
+}
+
+module.exports = rest;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/slice.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/slice.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/slice.js
new file mode 100644
index 0000000..48ef1a1
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/slice.js
@@ -0,0 +1,30 @@
+var baseSlice = require('../internal/baseSlice'),
+    isIterateeCall = require('../internal/isIterateeCall');
+
+/**
+ * Creates a slice of `array` from `start` up to, but not including, `end`.
+ *
+ * **Note:** This method is used instead of `Array#slice` to support node
+ * lists in IE < 9 and to ensure dense arrays are returned.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to slice.
+ * @param {number} [start=0] The start position.
+ * @param {number} [end=array.length] The end position.
+ * @returns {Array} Returns the slice of `array`.
+ */
+function slice(array, start, end) {
+  var length = array ? array.length : 0;
+  if (!length) {
+    return [];
+  }
+  if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
+    start = 0;
+    end = length;
+  }
+  return baseSlice(array, start, end);
+}
+
+module.exports = slice;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js
new file mode 100644
index 0000000..6903bca
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js
@@ -0,0 +1,53 @@
+var createSortedIndex = require('../internal/createSortedIndex');
+
+/**
+ * Uses a binary search to determine the lowest index at which `value` should
+ * be inserted into `array` in order to maintain its sort order. If an iteratee
+ * function is provided it's invoked for `value` and each element of `array`
+ * to compute their sort ranking. The iteratee is bound to `thisArg` and
+ * invoked with one argument; (value).
+ *
+ * If a property name is provided for `iteratee` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `iteratee` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The sorted array to inspect.
+ * @param {*} value The value to evaluate.
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+ *  per iteration.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {number} Returns the index at which `value` should be inserted
+ *  into `array`.
+ * @example
+ *
+ * _.sortedIndex([30, 50], 40);
+ * // => 1
+ *
+ * _.sortedIndex([4, 4, 5, 5], 5);
+ * // => 2
+ *
+ * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };
+ *
+ * // using an iteratee function
+ * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {
+ *   return this.data[word];
+ * }, dict);
+ * // => 1
+ *
+ * // using the `_.property` callback shorthand
+ * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
+ * // => 1
+ */
+var sortedIndex = createSortedIndex();
+
+module.exports = sortedIndex;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js
new file mode 100644
index 0000000..81a4a86
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js
@@ -0,0 +1,25 @@
+var createSortedIndex = require('../internal/createSortedIndex');
+
+/**
+ * This method is like `_.sortedIndex` except that it returns the highest
+ * index at which `value` should be inserted into `array` in order to
+ * maintain its sort order.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The sorted array to inspect.
+ * @param {*} value The value to evaluate.
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+ *  per iteration.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {number} Returns the index at which `value` should be inserted
+ *  into `array`.
+ * @example
+ *
+ * _.sortedLastIndex([4, 4, 5, 5], 5);
+ * // => 4
+ */
+var sortedLastIndex = createSortedIndex(true);
+
+module.exports = sortedLastIndex;

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/tail.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/tail.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/tail.js
new file mode 100644
index 0000000..c5dfe77
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/tail.js
@@ -0,0 +1 @@
+module.exports = require('./rest');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/4c0c81a1/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/take.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/take.js
 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/take.js
new file mode 100644
index 0000000..875917a
--- /dev/null
+++ 
b/node_modules/cordova-common/node_modules/plist/node_modules/xmlbuilder/node_modules/lodash/array/take.js
@@ -0,0 +1,39 @@
+var baseSlice = require('../internal/baseSlice'),
+    isIterateeCall = require('../internal/isIterateeCall');
+
+/**
+ * Creates a slice of `array` with `n` elements taken from the beginning.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @param {number} [n=1] The number of elements to take.
+ * @param- {Object} [guard] Enables use as a callback for functions like 
`_.map`.
+ * @returns {Array} Returns the slice of `array`.
+ * @example
+ *
+ * _.take([1, 2, 3]);
+ * // => [1]
+ *
+ * _.take([1, 2, 3], 2);
+ * // => [1, 2]
+ *
+ * _.take([1, 2, 3], 5);
+ * // => [1, 2, 3]
+ *
+ * _.take([1, 2, 3], 0);
+ * // => []
+ */
+function take(array, n, guard) {
+  var length = array ? array.length : 0;
+  if (!length) {
+    return [];
+  }
+  if (guard ? isIterateeCall(array, n, guard) : n == null) {
+    n = 1;
+  }
+  return baseSlice(array, 0, n < 0 ? 0 : n);
+}
+
+module.exports = take;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to