http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/locale/en-US.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/d8/locale/en-US.js 
b/node_modules/cordova-serve/node_modules/d8/locale/en-US.js
deleted file mode 100644
index e91568f..0000000
--- a/node_modules/cordova-serve/node_modules/d8/locale/en-US.js
+++ /dev/null
@@ -1,55 +0,0 @@
-Date.localize( {
-       id                  : 'en-US',
-       AM                  : 'am',
-       PM                  : 'pm',
-       days                : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 
'Thursday', 'Friday', 'Saturday'],
-       days_short          : ['Sun',    'Mon',    'Tue',     'Wed',       
'Thu',      'Fri', 'Sat'],
-       day_count           : [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
-       lexicon             : {
-               DEFAULT         : 'approx',
-               a               : 'a',
-               about           : 'about',
-               ago             : 'ago',
-               almost          : 'almost',
-               an              : 'an',
-               and             : 'and',
-               delim           : ', ',
-               from_now        : 'from now',
-               half            : 'half',
-               just_now        : 'just now',
-               just_over       : 'just over',
-               last            : 'last',
-               next            : 'next',
-               now             : 'now',
-               today           : 'today',
-               tomorrow        : 'tomorrow',
-               yesterday       : 'yesterday',
-               time_units      : [ // the descending order of these is 
important!
-                       ['year', 'years'], ['month',  'months'],  ['week',   
'weeks'], ['day', 'days'],
-                       ['hour', 'hours'], ['minute', 'minutes'], ['second', 
'seconds']
-               ]
-       },
-       formats             : {
-               server_date     : 'Y-m-d',
-               server_datetime : 'Y-m-d<T>H:i:sP',
-               server_time     : 'H:i:s',
-               short_date      : 'm/d/Y',
-               short_time      : 'h:ia'
-       },
-       months              : ['January', 'February', 'March', 'April', 'May', 
'June', 'July', 'August', 'September', 'October', 'November', 'December'],
-       months_short        : ['Jan',     'Feb',      'Mar',   'Apr',   'May', 
'Jun',  'Jul',  'Aug',    'Sep',       'Oct',     'Nov',      'Dec'],
-       ordinal             : ['th', 'st', 'nd', 'rd', 'th'],
-       ordinal_day_count   : [
-               [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],
-               [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]
-       ],
-       getOrdinal          : function( d ) {
-               return ( d > 3 && d < 21 ) ? Date.locale.ordinal[0] : 
Date.locale.ordinal[Math.min( d % 10, 4 )];
-       },
-       isLeapYear          : function( y ) {
-               return !!( y && ( ( new Date( y, 1, 29 ) ).getDate() == 29 && ( 
y % 100 || y % 400 == 0 ) ) );
-       },
-       setLeapYear         : function( d ) {
-               Date.locale.day_count[1] = Date.locale.isLeapYear( 
d.getFullYear() ) ? 29 : 28;
-       }
-} );

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.catn8
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.catn8 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.catn8
deleted file mode 100644
index c531401..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.catn8
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "source"    : {
-               "dir"   : "./src",
-               "files" : ["vars", "lib", "lib.x", "nativex", "expose"]
-       },
-       "target"    : {
-               "dir"   : "{pwd}",
-               "min"   : true
-       },
-       "type"      : "application/javascript"
-}

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.nodemonignore
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.nodemonignore 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.nodemonignore
deleted file mode 100644
index 69161ff..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.nodemonignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.git/*
-.idea/*
-node_modules/*
-m8.js
-m8.min.js
-*.sh

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.npmignore
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.npmignore 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.npmignore
deleted file mode 100644
index aaceacc..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.npmignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.git*
-.DS_Store
-.idea
-
-node_modules
-npm-debug.log
-
-*.bak*
-*.local*
-
-__ignore__

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.travis.yml
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.travis.yml 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.travis.yml
deleted file mode 100644
index a2f5f9f..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/.travis.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-language: node_js
-node_js: 0.8

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/LICENSE 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/LICENSE
deleted file mode 100644
index 3d98f9f..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/LICENSE
+++ /dev/null
@@ -1,9 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2011 christos "constantology" constandinou http://muigui.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the 'Software'), to deal 
in the Software without restriction, including without limitation the rights to 
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
of the Software, and to permit persons to whom the Software is furnished to do 
so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all 
copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/README.md
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/README.md 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/README.md
deleted file mode 100644
index 53d7569..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/README.md
+++ /dev/null
@@ -1,1085 +0,0 @@
-# m8.js [![build 
status](https://secure.travis-ci.org/constantology/m8.png)](http://travis-ci.org/constantology/m8)
-
-m8 (mate) is a small utility library – for modern JavaScript engines – you 
might find useful or just plain annoying.
-
-m8 provides a set of basic functionality I tend to write over and over in each 
of my projects, so I just abstracted it out into its own library!
-
-## A note on the archticture
-The bulk of the `m8` API, lives under the `m8` namespace. There are a few 
extensions to JavaScript Natives.
-
-The reason being: some methods/ properties make more sense being assigned to a 
specific Type. These are extended correctly, using `Object.defineProperty` and 
are non-enumerable.
-
-They will not break any standard functionality – e.g. `for ... in` loops – 
and they will not overwrite any existing functionality with the same name – 
though it is possible if you want to.
-
-### Extending into the future
-[Common JS Modules 1.1.1](http://wiki.commonjs.org/wiki/Modules/1.1.1) [notes 
on extending native prototypes from a 
module](http://wiki.commonjs.org/wiki/Modules/Natives) contains a [proposal for 
explicit native use in 
modules](http://wiki.commonjs.org/wiki/Modules/ProposalForNativeExtension).
-
-In essence: future commonjs modules could potentially be sandboxed from the 
rest of the environment they're running in. So the behaviour of extending 
native Types could become unpredictable.
-
-m8 **attempts** to future proof itself by implementing functionality similar 
to that defined in the [example of how to extend prototypes using a commonjs 
module](https://gist.github.com/268543) included in the proposal.
-
-#### m8.x( [Type1:Mixed, Type2:Mixed, ..., TypeN:Mixed] ):m8 and m8.x.cache( 
Type:String, extensisons:Function ):m8
-These two methods work in tandem to allow you to store any extensions for a 
particular Type – Native or otherwise, using `m8.x.cache` – and then extend 
Types as and when needed – using `m8.x`.
-
-##### Example:
-Suppose we have a module called `foo` with the following code:
-
-```javascript
-
-// require m8
-    var m8 = require( 'm8' );
-
-// extend foo module's natives if sandboxed.
-// IMPORTANT: if the module IS NOT sandboxed, the natives in foo will have 
already been extended when m8 was required
-//            m8 keeps track of this and will only attempt to apply any newly 
added extensions.
-    m8.x( Object, Array, Boolean, Function );
-
-// caching new extensions for Array. won't actually extend anything at this 
point.
-     m8.x.cache( 'Array', function( Type ) { // <= notice 'Array' is a String, 
NOT the actual Array Function
-       m8.def( Type, m8.describe( function() {
-          /** some static method **/
-       }, 'w' ) );
-
-       m8.defs( Type.prototype, {
-          doSomething     : function() { /** do something **/ },
-          doSomethingElse : function() { /** do something else **/ }
-       }, 'w' );
-    } );
-
-// only extends foo module's Array! since it is the only Type to have more 
extensions added.
-    m8.x( Object, Array, Boolean, Function ); // no danger and no pointless 
iterations either.
-
-    module.exports = {
-      extend : function() {
-         m8.x.apply( m8, arguments );
-       }
-    };
-
-```
-
-We can then require `foo` from another module and pass it any Types we want to 
extend:
-
-```javascript
-
-// extend this module's natives if sandboxed.
-    require( 'foo' ).extend( Object, Array, Boolean, Function );
-
-// do all the stuff "JavaScript: The Good Parts" tells you not to do here, coz 
you're an animal!
-
-```
-
-## Support
-
-Tested to work with nodejs, FF4+, Safari 5+, Chrome 7+, IE9+. Should 
technically work in any browser that supports [ecma 5]( 
http://kangax.github.com/es5-compat-table/) without throwing any JavaScript 
errors.
-
-## API
-
-### m8( item:Mixed ):Mixed
-m8 itself is a Function which returns the the first parameter passed to it.
-
-#### Example
-
-```javascript
-
-    m8( true );            // returns => true
-
-    m8( 'foo' );           // returns => "foo"
-
-    m8( { foo : 'bar' } ); // returns => { "foo" : "bar" }
-
-```
-
-### m8.bless( namespace:String[, context:Object] ):Object
-Creates an Object representation of the passed `namespace` String and returns 
it.
-
-If a `context` Object is given, the Object tree created will be added to the 
`context` Object, otherwise it will be added to the global namespace.
-
-**NOTE:** If any existing Objects with the same name already exist, they will 
**NOT** be replaced and any child Objects will be appended to them.
-
-#### Example:
-
-```javascript
-
-// m8.ENV == 'browser'
-    m8.bless( 'foo.bar' );       // creates => global.foo.bar
-
-// you can now do:
-    foo.bar.Something = function() {};
-
-    m8.bless( 'foo.bar', m8 );   // creates => m8.foo.bar
-
-    var bar = m8.bless( 'foo.bar' );
-
-    bar === foo.bar              // returns => true
-
-```
-
-**IMPORTANT:** When using `m8.bless` within a commonjs module: if you want 
your namespace Object to be assigned to the correct `module.exports`, then you 
should always pass the `module` instance as the context (`ctx`) of your 
namespace.
-
-#### Example:
-
-```javascript
-
-// m8.ENV == 'commonjs'
-
-// inside my_commonjs_module.js
-    m8.bless( 'foo.bar', module );            // creates => 
module.exports.foo.bar
-
-// you can now do:
-    module.exports.foo.bar.Something = function() {};
-
-// if you want to include "exports" in your namespace, you can do so by 
placing a carat (^) at the start of the String
-    m8.bless( '^exports.foo.bar', module ); // creates => 
module.exports.foo.bar
-
-// otherwise, you will end up creating an extra exports Object, e.g:
-    m8.bless( 'exports.foo.bar', module ); // creates => 
module.exports.exports.foo.bar
-
-// alternatively, you can also do:
-    m8.bless( 'foo.bar', module.exports ); // creates => module.exports.foo.bar
-
-```
-
-### m8.coerce( item:Mixed ):Mixed
-Attempts to coerce primitive values "trapped" in Strings, into their real 
types.
-
-#### Example:
-
-```javascript
-
-    m8.coerce( 'false' );       // returns false
-
-    m8.coerce( 'null' );        // returns null
-
-    m8.coerce( 'true' );        // returns true
-
-    m8.coerce( 'undefined' );   // returns undefined
-
-    m8.coerce( 'NaN' );         // returns NaN
-
-    m8.coerce( '0001' );        // returns 1
-
-    m8.coerce( '0012' );        // returns 12
-
-    m8.coerce( '0123' );        // returns 123
-
-    m8.coerce( '123.4' );       // returns 123.4
-
-    m8.coerce( '123.45' );      // returns 123.45
-
-    m8.coerce( '123.456' );     // returns 123.456
-
-    m8.coerce( '123.456.789' ); // returns "123.456.789"
-
-```
-
-### m8.copy( target:Object, source:Object[, no_overwrite:Boolean] ):Object
-Copies the properties – accessible via `Object.keys` – from the `source` 
Object to the `target` Object and returns the `target` Object.
-
-#### Example:
-
-```javascript
-
-    var foo = { one : 1, two : 2, three : 3 },
-        bar = m8.copy( {}, foo );
-
-    bar          // returns => { "one" : 1, "two" : 2, "three" : 3 }
-
-    foo === bar  // returns => false
-
-    m8.copy( foo, { three : 3.3, four : 4 }, true ); // returns => { "one" : 
1, "two" : 2, "three" : 3, "four" : 4 }
-
-```
-
-### m8.def( item:Mixed, name:String, descriptor:Object[, overwrite:Boolean, 
debug:Boolean]] ):m8
-Shortened version of 
[Object.defineProperty](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty)
 with some extra options.
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-       <tr><td>item</td><td>The item to define a property on.</td></tr>
-       <tr><td>name</td><td>The name of the property you are 
defining.</td></tr>
-       <tr><td>descriptor</td><td>The property descriptor for the new/ 
modified property.</td></tr>
-       <tr><td>overwrite</td><td>Whether or not to attempt overwriting the new 
property if it exists.</td></tr>
-       <tr><td>debug</td><td>Whether or not to throw an error if the property 
already exists.</td></tr>
-</table>
-
-The last two – optional – parameters are handy for extending JavaScript 
Natives without risking collisions with native/ other implementations.
-
-#### Example:
-
-```javascript
-
-    m8.def( Object, 'greet', m8.describe( function( name ) { return 'Hello ' + 
name + '!'; }, 'w' ) );
-
-    Object.greet( 'world' ); // returns => "Hello world!"
-
-    delete Object.greet;     // returns => false; Object.greet is not 
configurable
-
-```
-
-### m8.defs( item:Mixed, descriptors:Object, mode:String|Object[, 
overwrite:Boolean, debug:Boolean]] ):m8
-Similar to `m8.def` except `m8.defs` allows you to define multiple properties 
at once.
-
-**NOTE:** Calls `m8.def` internally.
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-       <tr><td>item</td><td>The item to define the properties on.</td></tr>
-       <tr><td>descriptors</td><td>An Object of properties apply to the item. 
Each of the <code>descriptors</code> key/ value pairs become the property name 
and value on the item. This can be a property descriptor, partial descriptor or 
just the value you want to assign.</td></tr>
-       <tr><td>mode</td><td>The permissions to apply to each property 
descriptor in the <code>descriptors</code> Object. See <code>m8.describe</code> 
directly below and <code>m8.modes</code> to find out more about this.</td></tr>
-       <tr><td>overwrite</td><td>Whether or not to attempt overwriting the new 
property if it exists.</td></tr>
-       <tr><td>debug</td><td>Whether or not to throw an error if the property 
already exists.</td></tr>
-</table>
-
-The last two – optional – parameters are handy for extending JavaScript 
Natives without risking collisions with native/ other implementations.
-
-#### Example:
-
-```javascript
-
-    m8.defs( Object, {
-       accessor : { get : function() { return this.__accessor; }, set : 
function( a ) { this.__accessor = a; } },
-       global   : { value : window },
-       greeting : function( name ) { return 'Hello ' + name + '!'; }
-    }, 'w' ) );
-/**
-    IMPORTANT TO NOTE: Accessors do not alllow the "writable" attribute to 
even be present in their descriptor Object.
-                      see: 
https://plus.google.com/117400647045355298632/posts/YTX1wMry8M2
-                      m8.def handles this internally, so if a "get" or "set" 
accessor Function is in the descriptor, the
-                      "writable" attribute will be removed from the 
descriptor, if it exists.
-**/
-
-    Object.accessor = 'foo'; // returns => 'foo'
-    Object.accessor;         // returns => 'foo'
-
-    Object.global === window // returns => true
-    Object.greet( 'world' ); // returns => "Hello world!"
-
-    delete Object.greet;     // returns => false; Object.greet is not 
configurable
-
-```
-
-### m8.describe( value:Mixed[, mode:Object|String] ):Object
-When using 
[Object.defineProperty](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty)
 en masse, your property descriptors can really start to bulk out your codebase.
-
-Using `m8.describe` in combination with `m8.modes` can significantly reduce 
the amount of superfluous code you need to write. Especially when working with 
verbose property names like: `configurable`, `enumerable` & `writeable`.
-
-When `value` is an Object `m8.describe` assumes you are passing it a property 
descriptor you want to assign modes to.
-
-#### Example:
-
-```javascript
-
-    m8.describe( {
-       get : function() { ... },
-       set : function() { ... }
-    }, 'cw' );
-
-    /*  returns => {
-        configurable : true,
-        enumerable   : false,
-        get          : function() { ... },
-        set          : function() { ... },
-        writable     : true // NOTE: this property is illegal in an accessor 
descriptor. however, m8.def will handle this internally saving you tears
-    } */
-
-```
-
-When `value` is anything but an Object, it is assigned to the `value` property 
of the property descriptor.
-
-#### Example:
-
-```javascript
-
-    m8.describe( function() { ... }, m8.modes.c );
-
-    /* returns => {
-        configurable : true,
-        enumerable   : false,
-        value        : function() { ... },
-        writeable    : false
-    } */
-
-```
-
-See `m8.modes` below for a list of available property descriptors.
-
-### m8.description( item:Object, property:String ):Object
-Shortened version for 
[Object.getOwnPropertyDescriptor](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor).
-
-### m8.empty( value:Mixed ):Boolean
-Returns `true` if the passed `value` does not exist (see `exist` below), is an 
empty Array, Object, String or any other enumerable type.
-
-#### Example:
-
-```javascript
-
-    m8.empty( undefined );    // returns => true
-
-    m8.empty( null );         // returns => true
-
-    m8.empty( '' );           // returns => true
-
-    m8.empty( [] );           // returns => true
-
-    m8.empty( {} );           // returns => true
-
-    m8.empty( ' ' );          // returns => false
-
-    m8.empty( [1] );          // returns => false
-
-    m8.empty( { 0 : null } ); // returns => false
-
-```
-
-### m8.exists( value:Mixed ):Boolean
-Returns `false` if the passed `value` is `undefined` , `NaN` or `null`, 
returns `true` otherwise.
-
-#### Example:
-
-```javascript
-
-    m8.exists( undefined ); // returns => false
-
-    m8.exists( NaN );       // returns => false
-
-    m8.exists( null );      // returns => false
-
-    m8.exists( 0 );         // returns => true
-
-    m8.exists( false );     // returns => true
-
-    m8.exists( {} );        // returns => true
-
-```
-
-### m8.expose( library:Object[, name:String, module:Module] ):library
-Generic method to standardise exposing your library package to either the 
global namespace or a commonjs module.
-
-Internally resolves any conflict between the `library` to be exposed and an 
existing Object with the same `name`.
-
-If the `library` already has a `__name__` property then the `name` parameter 
may be omitted.
-
-If the `library` is not going to be used as a commonjs module then the 
`module` parameter may be omitted.
-
-#### Example:
-
-```javascript
-
-    // browser based version
-    ;!function() {
-
-      var my_library = { /* you awesome library api here */ };
-
-      m8.expose( my_library, 'foo' );
-
-    }();
-
-    m8.type( foo )   // returns => "library"
-
-    foo.__name__     // returns => "foo"
-
-    m8.expose( m8, foo );
-
-    foo.m8 === m8    // returns => true
-
-    m8.expose( m8, 'bar', foo );
- 
-    foo.bar === m8   // returns => true
-
-    foo.bar.__name__ // returns => "m8"
-
-```
-
-```javascript
-
-    // commonjs based version
-    var m8         = require( 'm8' ),
-        my_library = { /* you awesome library api here */ };
-
-    m8.expose( my_library, 'foo', module );
-
-    m8.type( foo );  // returns => 'library'
-
-    foo.__name__;    // returns => 'foo'
-
-```
-
-### m8.format( tpl:String, arg1:String[, arg2:String, ..., argN:String] 
):String
-Replaces the – zero indexed – numeric tokens in the String with the passed 
parameters.
-
-If a token does not have a value, an empty String is used in its place.
-
-**NOTE:** `format` calls `gsub` internally.
-
-#### Example:
-
-```javascript
-
-    m8.format( '{0} {1} {2} {3}', 'lorem', 'ipsum', 'dolor' ) // returns => 
"lorem ipsum dolor "
-
-```
-
-### m8.got( object:Object, key:String ):Boolean
-Returns `true` if `object` contains `key` based on the `in` operator.
-
-Any type passed to `m8.got` is cast as an Object before checking it contains a 
specific key. So using `m8.got` instead of simply using the `in` operator can 
help reduce the chance of error in your code.
-
-```javascript
-
-    var foo = { one : 1, two : 2, three : 3 };
-
-    m8.got( foo, 'one' );      // returns => true
-
-    m8.got( foo, 'four' );     // returns => false
-
-    m8.got( foo, '__type__' ); // returns => true
-
-```
-
-### m8.gsub( tpl:String, dictionary:String[]|String{}[, pattern:RegExp] 
):String
-Replaces the tokens in the String with the values of the corresponding 
properties from the passed `dictionary` Object.
-
-Also accepts an optional second parameter allowing you to define your own 
token matching `pattern`.
-
-If a token does not have a value, an empty String is used in its place.
-
-#### Example:
-
-```javascript
-
-    m8.gsub( '{one} {two} {three} {four}', { one : 'lorem', two : 'ipsum', 
three : 'dolor' } ) // returns => "lorem ipsum dolor "
-
-```
-
-### m8.guid():String
-Generates a guid/uuid, the code for this was adapted from [this 
gist](https://gist.github.com/2295777).
-
-```javascript
-
-       m8.guid(); // returns something like => 
"286cb768-df10-4466-aabf-f5cb4ba406a2"
-
-```
-
-### m8.has( object:Object, key:String ):Boolean
-Shortened version of `Object.prototype.hasOwnProperty.call`.
-
-#### Example:
-
-```javascript
-
-    var foo = { one : 1, two : 2, three : 3 };
-
-    m8.has( foo, 'one' );      // returns => true
-
-    m8.has( foo, 'four' );     // returns => false
-
-    m8.has( foo, '__type__' ); // returns => false
-
-```
-
-### m8.id( item:Mixed[, prefix:String] ):String
-Returns the `id` property of the passed item – item can be an Object, 
HTMLElement, "JavaScript Class" instance, etc...
-
-If an `id` does not exist on the passed `item`, the item is assigned an 
auto-generated `id` and the value is returned.
-
-If a `prefix` is supplied then it is used as the prefix for the `id` – if 
not `anon` is used as the `prefix`.
-
-An internal counter that is automatically incremented is appended to the end 
of the `prefix` and is separated from the prefix by a hyphen.
-
-#### Example:
-
-```javascript
-
-    var foo = { id   : 'foo' },
-       bar = { name : 'bar' },
-       yum = { nam  : 'yum' };
-
-    m8.id( foo );         // returns => "foo"
-
-    m8.id( bar );         // returns => "anon-1000"
-
-    m8.id( yum, 'yum' );  // returns => "yum-1001"
-
-```
-
-### m8.iter( item:Mixed ):Boolean
-Returns `true` if the passed item can be iterated over.
-
-### m8.len( item:Mixed ):Number
-Tries the returns the `length` property of the passed `item`.
-
-#### Example:
-
-```javascript
-
-    m8.len( { one : 1, two : 2, three : 3 } ); // returns => 3
-
-    m8.len( [1, 2, 3] );                       // returns => 3
-
-    m8.len( 'foobar' );                        // returns => 6
-
-    m8.len( { one : 1, two : 2, three : 3 } ) === Object.keys( { one : 1, two 
: 2, three : 3 } ).length
-    // returns => true
-
-```
-
-### m8.merge( target:Array|Object, source:Array|Object ):Boolean
-Performs a "deep copy" of all the properties in `source` to `target`, so that 
`target` does not reference any child Arrays and/ or Objects that belong to 
`source`.
-
-### m8.nativeType( item:Mixed ):String (alias: m8.ntype)
-Returns the native `type` of the passed item. For normalised types use 
`m8.type`.
-
-**Note:** All types are **always** in lowercase.
-
-#### Example:
-
-```javascript
-
-    m8.nativeType( null );                                   // returns => 
"null"
-
-    m8.nativeType( undefined );                              // returns => 
"undefined"
-
-    m8.nativeType( [] );                                     // returns => 
"array"
-
-    m8.nativeType( true );                                   // returns => 
"boolean"
-
-    m8.nativeType( new Date() );                             // returns => 
"date"
-
-    m8.nativeType( function() {} );                          // returns => 
"function"
-
-    m8.nativeType( 0 );                                      // returns => 
"number"
-
-    m8.type( { enumerable : true, get : function() {} } );   // returns => 
"object"
-
-    m8.type( m8.description( window, 'document' ) );         // returns => 
"object"
-
-    m8.nativeType( {} );                                     // returns => 
"object"
-
-    m8.nativeType( Object.create( null ) );                  // returns => 
"object"
-
-    m8.nativeType( /.*/ );                                   // returns => 
"regexp"
-
-    m8.nativeType( '' );                                     // returns => 
"string"
-
-    m8.nativeType( document.createElement( 'div' ) );        // returns => 
"htmldivelement"
-
-    m8.nativeType( document.querySelectorAll( 'div' ) );     // returns => 
"htmlcollection" | "nodelist"
-
-    m8.nativeType( document.getElementsByTagName( 'div' ) ); // returns => 
"htmlcollection" | "nodelist"
-
-    m8.nativeType( global );                                 // returns => 
"global"
-
-    m8.nativeType( window );                                 // returns => 
"global" | "window"
-
-```
-
-### m8.noop():void
-An empty Function that returns nothing.
-
-### m8.nativeType( item:Mixed ):String (alias: m8.ntype)
-Returns the native `type` of the passed item. For normalised types use 
`m8.type`.
-
-**Note:** All types are **always** in lowercase.
-
-#### Example:
-
-```javascript
-
-    m8.nativeType( null );                                       // returns => 
"null"
-
-    m8.nativeType( undefined );                                  // returns => 
"undefined"
-
-    m8.nativeType( [] );                                         // returns => 
"array"
-
-    m8.nativeType( true );                                       // returns => 
"boolean"
-
-    m8.nativeType( new Date() );                                 // returns => 
"date"
-
-    m8.nativeType( function() {} );                              // returns => 
"function"
-
-    m8.nativeType( 0 );                                          // returns => 
"number"
-
-    m8.nativeType( { enumerable : true, get : function() {} } ); // returns => 
"object"
-
-    m8.nativeType( m8.description( window, 'document' ) );       // returns => 
"object"
-
-    m8.nativeType( {} );                                         // returns => 
"object"
-
-    m8.nativeType( Object.create( null ) );                      // returns => 
"object"
-
-    m8.nativeType( /.*/ );                                       // returns => 
"regexp"
-
-    m8.nativeType( '' );                                         // returns => 
"string"
-
-    m8.nativeType( document.createElement( 'div' ) );            // returns => 
"htmldivelement"
-
-    m8.nativeType( document.querySelectorAll( 'div' ) );         // returns => 
"htmlcollection" | "nodelist"
-
-    m8.nativeType( document.getElementsByTagName( 'div' ) );     // returns => 
"htmlcollection" | "nodelist"
-
-    m8.nativeType( global );                                     // returns => 
"global"
-
-    m8.nativeType( window );                                     // returns => 
"global" | "window"
-
-```
-
-### m8.obj( [props:Obejct] ):Object
-Creates an empty Object using `Object.create( null )`, the Object has no 
constructor and executing `Object.getPrototypeOf` on the empty Object instance 
will return `null` rather than `Object.prototype`.
-
-Optionally pass an Object whose properties you want copied to the empty Object 
instance.
-
-### m8.ptype( item:Mixed ):String
-Returns the native `type` of the passed item's `__proto__`.
-
-**Note:** All types are **always** in lowercase.
-
-#### Example:
-
-```javascript
-
-    m8.ptype( null );                                   // returns => "object"
-
-    m8.ptype( undefined );                              // returns => "object"
-
-    m8.ptype( [] );                                     // returns => "array"
-
-    m8.ptype( true );                                   // returns => "boolean"
-
-    m8.ptype( new Date() );                             // returns => "date"
-
-    m8.ptype( function() {} );                          // returns => 
"function"
-
-    m8.ptype( 0 );                                      // returns => "number"
-
-    m8.ptype( {} );                                     // returns => "object"
-
-    m8.ptype( Object.create( null ) );                  // returns => "null"
-
-    m8.ptype( /.*/ );                                   // returns => "regexp"
-
-    m8.ptype( '' );                                     // returns => "string"
-
-    m8.ptype( document.createElement( 'div' ) );        // returns => "object" 
        <- WebKit
-                                                        // | "xpc_..._jsclass" 
        <- FireFox
-                                                        // | 
"htmldivelementprototype" <- MSIE >= 9
-
-    m8.ptype( document.querySelectorAll( 'div' ) );     // returns => "object" 
        <- WebKit
-                                                        // | "xpc_..._jsclass" 
        <- FireFox
-                                                        // | 
"htmlcollectionprototype" <- MSIE >= 9
-
-    m8.ptype( document.getElementsByTagName( 'div' ) ); // returns => "object" 
        <- WebKit
-                                                        // | "xpc_..._jsclass" 
        <- FireFox
-                                                        // | 
"nodelistprototype"       <- MSIE >= 9
-
-    m8.ptype( global );                                 // returns => "object" 
        <- WebKit
-                                                        // | "xpc_..._jsclass" 
        <- FireFox
-                                                        // | "windowprototype" 
        <- MSIE >= 9
-
-    m8.ptype( window );                                 // returns => "object" 
        <- WebKit
-                                                        // | "xpc_..._jsclass" 
        <- FireFox
-                                                        // | "windowprototype" 
        <- MSIE >= 9 (I like the MSIE ones the best!)
-
-```
-
-### m8.range( begin:Number|String, end:Number|String ):Array
-Returns an Array starting at `begin` where each value is incremented by `1` 
until `end` is reached.
-
-#### Example:
-
-```javascript
-
-    m8.range(  1,   10 );  // returns => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-    m8.range( 20, 1000 );  // returns => [20, 21, 22, ..., 1000]
-
-    m8.range( 'A', 'z' );  // returns => ['A', 'B', 'C', ..., 'x', 'y', 'z']
-    m8.range( 'α', 'ω' ); // returns => ['α', 'β', 'γ', ..., 'χ', 'ψ', 
'ω']
-
-```
-
-**NOTE:** Only the first character will be incremented in a `String` range.
-
-## m8.remove( item:Array, value_or_index1:Number|Mixed|Number[]|Mixed[][, 
value_or_index2:Number|Mixed, ..., value_or_indexN:Number|Mixed] ):item
-## m8.remove( item:Object, property1:String|String[][, property2:String, ..., 
propertyN:String] ):item
-Removes items from the passed Array or Object and returns the passed Array or 
Object.
-
-If removing items from an Array, you can either pass the index of the item you 
want to remove or the item itself.
-If removing items from an Object, you simply pass the key of the item you want 
to remove.
-
-#### Example:
-
-```javascript
-
-    var foo_arr = ['one', 'two', 'three'],
-       foo_obj = { one : 1, two : 2, three : 3 };
-
-    m8.remove( foo_arr, 'one', 'three' );   // returns => ['two']
-
-    m8.remove( foo_arr, ['one', 'three'] ); // same as above
-
-    m8.remove( foo_arr, 0, 2 );             // same as above
-
-    m8.remove( foo_arr, [0, 2] );           // same as above
-
-    m8.remove( foo_obj, 'one', 'three' );   // returns => { two : 2 }
-
-    m8.remove( foo_obj, ['one', 'three'] ); // same as above
-
-```
-
-### m8.tostr( item:Mixed ):String
-Shortened version of `Object.prototype.toString.call`.
-
-### m8.type( item:Mixed ):String
-Returns the normalised `type` of the passed item.
-
-**Note:** All types are **always** in lowercase.
-
-#### Example:
-
-```javascript
-
-    m8.type( null );                                       // returns => false
-
-    m8.type( undefined );                                  // returns => false
-
-    m8.type( [] );                                         // returns => 
"array"
-
-    m8.type( true );                                       // returns => 
"boolean"
-
-    m8.type( new Date() );                                 // returns => "date"
-
-    m8.type( { enumerable : true, get : function() {} } ); // returns => 
"descriptor"
-
-    m8.type( m8.description( window, 'document' ) );       // returns => 
"descriptor"
-
-    m8.type( function() {} );                              // returns => 
"function"
-
-    m8.type( 0 );                                          // returns => 
"number"
-
-    m8.type( NaN );                                        // returns => "nan"
-
-    m8.type( Object.create( null ) );                      // returns => 
"nullobject"
-
-    m8.type( {} );                                         // returns => 
"object"
-
-    m8.type( /.*/ );                                       // returns => 
"regexp"
-
-    m8.type( '' );                                         // returns => 
"string"
-
-    m8.type( document.createElement( 'div' ) );            // returns => 
"htmlelement"
-
-    m8.type( document.querySelectorAll( 'div' ) );         // returns => 
"htmlcollection"
-
-    m8.type( document.getElementsByTagName( 'div' ) );     // returns => 
"htmlcollection"
-
-    m8.type( global );                                     // returns => 
"global"
-
-    m8.type( window );                                     // returns => 
"global"
-
-```
-
-### m8.update( target:Array|Object, source:Array|Object ):Boolean
-Performs a "deep copy" of all the properties in `source` **that are not 
already contained in** `target`, so that `target` does not reference any child 
Arrays and/ or Objects that belong to `source`.
-
-This works similarly to `m8.merge` except that existing properties are not 
overwritten.
-
-## static properties
-
-### m8.ENV:String
-Internally `m8` tries to figure out what environment it is currrently being 
run in.
-
-`m8.ENV` is a String representation of what environment `m8` is assuming it is 
running in.
-
-#### Environments:
-<table border="0" cellpadding="0" cellspacing="0">
-       <thead><tr><th>env</th><th>description</th></tr></thead>
-       <tbody>
-               <tr><td><strong>browser</strong></td><td>m8 is being used 
within a web browser.</td></tr>
-               <tr><td><strong>commonjs</strong></td><td>m8 is being used 
within a commonjs style architecture (e.g. nodejs).</td></tr>
-               <tr><td><strong>other</strong></td><td>m8 has no idea where the 
fudge it is.</td></tr>
-       <tbody>
-</table>
-
-### m8.global:Global
-A reference to the global Object, this will be `window` in a web browser and 
`global` in nodejs.
-
-m8 uses the `"use strict";` directive, so having a reference to the global 
Object is handy.
-
-### m8.modes:Object
-`m8.modes` is an Object containing all the variations on different permissions 
a property may have when assigned using `Object.defineProperty`.
-
-See `m8.describe` above for more information on how to use `m8.modes` to 
create property descriptors compatible with `Object.defineProperty`.
-
-#### Available modes are:
-<table border="0" cellpadding="0" cellspacing="0">
-       
<thead><tr><th>mode</th><th>configurable</th><th>enumerable</th><th>writeable</th></tr></thead>
-       <tbody>
-               
<tr><td><strong>r</strong></td><td>false</td><td>false</td><td>false</td></tr>
-               
<tr><td><strong>ce</strong></td><td>true</td><td>true</td><td>false</td></tr>
-               
<tr><td><strong>cw</strong></td><td>true</td><td>false</td><td>true</td></tr>
-               
<tr><td><strong>ew</strong></td><td>false</td><td>true</td><td>true</td></tr>
-               
<tr><td><strong>cew</strong></td><td>true</td><td>true</td><td>true</td></tr>
-       <tbody>
-</table>
-
-**NOTE:** You can supply the characters for a specific mode in any order.
-
-## Extensions to JavaScript Natives
-
-### Array.coerce( value:Mixed[, index_from:Number[, index_to:Number]] ):Array
-Attempts to coerce the passed value into and Array.
-
-If the value cannot be coerced, an Array is returned with the value as the 
first and only item in the Array.
-
-The most common Types which can be coerced into Arrays are: `HtmlCollection`/ 
`NodeList` and Function `Arguments`.
-
-If a `index_from` is a valid Number, then `Array.coerce` will attempt to 
return a slice of the returned Array starting from the Number provided.
-
-If a `index_to` is a valid Number, then `Array.coerce` will attempt to return 
a slice of the returned Array starting from the Number provided by `index_from` 
and ending at `index_to` provided.
-
-#### Example:
-
-```html
-
-    <body>
-      <div id="one"></div>
-      <div id="two"></div>
-      <div id="three"></div>
-    </body>
-
-```
-
-```javascript
-
-    Array.coerce( document.body.children );                               // 
returns => [div#one, div#two, div#three]
-
-    Array.coerce( document.body.querySelectorAll( '*' ) );                // 
returns => [div#one, div#two, div#three]
-
-    Array.coerce( function( a, b, c ) { return arguments; }( 1, 2, 3 ) ); // 
returns => [1, 2, 3]
-
-    Array.coerce( { one : 1, two : 2, three : 3 } );                      // 
returns => [{ one : 1, two : 2, three : 3 }]
-
-    Array.coerce( [1, 2, 3, 4, 5, 6, 7], 3 );                             // 
returns => [4, 5, 6, 7]
-
-    Array.coerce( [1, 2, 3, 4, 5, 6, 7], 3, 0 );                          // 
returns => [4, 5, 6, 7]
-
-    Array.coerce( [1, 2, 3, 4, 5, 6, 7], 1, 3 );                          // 
returns => [2, 3]
-
-    Array.coerce( [1, 2, 3, 4, 5, 6, 7], 3, 2 );                          // 
returns => [4, 5]
-
-    Array.coerce( [1, 2, 3, 4, 5, 6, 7], 3, -1 );                         // 
returns => [4, 5, 6]
-
-```
-
-### Array.prototype.find( iterator:Function[, context:Object] ):Mixed
-Returns the first item in the Array that returns a "truthy" value when 
executing the passed `iterator` function over the Array, or `null` if none is 
found.
-
-#### Example:
-
-```javascript
-
-    [1, 2, 3, 4].find( function( value ) { return value > 2; } );              
       // returns => 3
-
-    [1, 2, 3, 4].find( function( value, index ) { return value > 2 && index > 
2; } ); // returns => 4
-
-    [1, 2, 3, 4].find( function( value ) { return value > 4; } );              
       // returns => null
-
-```
-
-**REMEMBER:** The ACTUAL item in the Array is returned, **NOT** the 
`iterator`'s return value.
-
-### Array.prototype.invoke( method:String[, arg1:Mixed, arg2:Mixed, ..., 
argN:Mixed] ):Array
-Executes the passed `method` — **NOTE:** `method` is a String, and should be 
the name of `method` that exists on each item in the Array — passing any 
extra arguments to each method call.
-
-#### Example:
-
-```javascript
-
-    ['lorem', 'ipsum', 'dolor', 'sit', 'amet'].invoke( 'toUpperCase' ); // 
returns => ["LOREM", "IPSUM", "DOLOR", "SIT", "AMET"]
-
-    [1, 2, 3, 4, 5, 6, 7, 8].invoke( 'toString', 2 );                   // 
returns => ['1', '10', '11', '100', '101', '110', '111', '1000']
-
-```
-
-### Array.prototype.pluck( key:String[, compact:Boolean] ):Array
-Returns a new Array where all the items are the values of the passed property 
`key`.
-
-If `compact` is set to `true` then all `NaN`, `null` and `undefined` values 
will be omitted from the returned Array.
-
-**NOTE:** Unlike other `pluck` implementations, this implementation has a 
"smarter" way to get property values, allows you to `pluck` nested Object 
values, as well as HTML attributes.
-
-#### Example:
-
-```javascript
-
-    var data = [{ data : { value : 'foo' } }, { data : { value : 'bar' } }, 
{}, { value : 'blim' }, { data : { value : 'blam' } }];
-
-// slower, has to iterate twice
-    data.pluck( 'data' ).pluck( 'value' );  // returns => ["foo", "bar", 
undefined, undefined, "blam"]
-
-// optimised version of the above
-    data.pluck( 'data.value' );             // returns => ["foo", "bar", 
undefined, undefined, "blam"]
-
-    data.pluck( 'data.value', true );       // returns => ["foo", "bar", 
"blam"]
-
-```
-
-### Boolean.coerce( value:Mixed ):Boolean
-Handy for working with Booleans trapped in Strings.
-
-Returns a normalised Boolean value for a String, Number, null or undefined.
-
-Everything will return `true`, except for the following which all return 
`false`:
-
-```javascript
-
-    Boolean.coerce( 'false' );     Boolean.coerce(  false  );
-
-    Boolean.coerce( '0' );         Boolean.coerce(  0  );
-
-    Boolean.coerce( 'NaN' );       Boolean.coerce(  NaN  );
-
-    Boolean.coerce( 'null' );      Boolean.coerce(  null  );
-
-    Boolean.coerce( 'undefined' ); Boolean.coerce(  undefined );
-
-    Boolean.coerce();              Boolean.coerce( '' );
-
-```
-
-### GET: Function.prototype.\_\_name\_\_:String
-### GET: Function.prototype.\_\_name\_\_:String
-Tries to return the name of a Function instance. If a function is mimicking 
another function, then that function's name is returned.
-
-If no name can be resolved, then `anonymous` is returned.
-
-### Function.prototype.mimic( fn:Function[, name:String] ):Function
-Handy for working with wrapper methods, allows a function to mimics another, 
by over-writing its `toString` and `valueOf` methods.
-
-The `displayName` property used by web inspector to allow assigning names to 
anonymous functions is also set.
-
-If a `name` param is passed, then it is used as the `displayName`, otherwise 
the passes function's name is used.
-
-#### Example:
-
-```javascript
-
-    function foo( a, b, c ) { ... }
-
-    foo.__name__;                                          // returns => "foo"
-
-    ( function( a, b, c ) { ... } ).__name__;              // returns => 
"anonymous"
-
-    function bar( a, b, c ) { ... }.mimic( foo ).__name__; // returns => "foo"
-
-```
-
-## Object.key( object:Object, value:Mixed ):String
-Returns the `object`'s property `key` for the passed `value` if `value` is a 
property of `object`. If not `null` is returned.
-
-**NOTE:** `value` is determined based on the `===` operator.
-
-#### Example:
-
-```javascript
-
-    var foo = { one : 1, two : 2, three : 3 };
-
-    Object.key( foo, 2 ); // returns => "two"
-
-    Object.key( foo, 4 ); // returns => null
-
-```
-
-### Object.reduce( object:Object, iterator:Function, value:Mixed ):Mixed
-This is similar to 
[Array.reduce](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce)
 except that it is used on Objects instead of Arrays.
-
-The `iterator` Function will receive 5 arguments:
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-       <tr><td>previous_value</td><td>When the <code>iterator</code> Function 
is first called, this will be the initially supplied <code>value</code>, after 
which it will be previous value returned by the <code>iterator</code> 
Function.</td></tr>
-       <tr><td>value</td><td>The value of the item currently being iterated 
over.</td></tr>
-       <tr><td>key</td><td>The key of the item currently being iterated 
over.</td></tr>
-       <tr><td>object</td><td>The Object being iterated over.</td></tr>
-       <tr><td>index</td><td>The zero based index of the item currently being 
iterated over.</td></tr>
-</table>
-
-#### Example:
-
-```javascript
-
-// the sum of all values of the passed object
-    Object.reduce( { one : 1, two : 2, three : 3 }, function( previous_value, 
value, key, index, object ) {
-        console.log( 'previous_value : ', previous_value, ', value : ', value, 
', key : ', key, ', index : ', index );
-               return previous_value += value;
-    }, 0 );
-// logs    => previous_value : 0, value : 1, key : one,   index : 0
-// logs    => previous_value : 1, value : 2, key : two,   index : 1
-// logs    => previous_value : 3, value : 3, key : three, index : 2
-// returns => 6
-
-```
-
-**NOTE:** `Object.reduce` is the only Object iterator included in `m8` because 
it is the most powerful.
-Apart from `every` & `some` you can use `reduce` to implement the same 
functionality available in all other ES5 Array iterators.
-
-This will help keep the file size down.
-
-### Object.value( object:Object, path:String ):Mixed
-Returns the property value at the specified path in an Object.
-
-#### Example:
-
-```javascript
-
-    var data = { one : { two : { three : true, four : [1, 2, 3, 4] } } };
-
-    Object.value( data, 'one' );            // returns => { two : { three : 
true, four : [1, 2, 3, 4] } }
-
-    Object.value( data, 'one.two' );        // returns => { three : true, four 
: [1, 2, 3, 4] }
-
-    Object.value( data, 'one.two.three' );  // returns => { three : true }
-
-    Object.value( data, 'one.two.four' );   // returns => [1, 2, 3, 4]
-
-    Object.value( data, 'one.two.four.2' ); // returns => 3
-
-```
-
-### Object.values( object:Object ):Array
-Returns the `values` of the passed Object based on it's enumerable keys.
-
-#### Example:
-
-```javascript
-
-    Object.values( { one : 1, two : 2, three : 3 } ); // returns => [1,2,3]
-
-```
-
-### GET: Object.prototype.\_\_proto\_\_:String
-Some browsers — like MSIE 9 & 10 which `m8` supports — do not support the 
non-standard property `__proto__`.
-
-Luckily however, they do support `Object.getPrototypeOf`, which will return 
the same value as `__proto__`.
-
-`m8` conveniently wraps this call up inside the `__proto__` getter for those 
browsers, so you can (more) easily work with `Object` prototypes.
-
-### GET: Object.prototype.\_\_type\_\_:String
-Attempts to resolve a normalised type for any type that inherits from 
JavaScript's `Object.prototype`. See `m8.type` for more information.
-
-**NOTE:** All types are **always** in lowercase
-
-## File size
-
-- m8.js ≅ 6.9kb (gzipped)
-- m8.min.js ≅ 3.7kb (minzipped)
-
-## License
-
-(The MIT License)
-
-Copyright &copy; 2012 christos "constantology" constandinou http://muigui.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the 'Software'), to deal 
in the Software without restriction, including without limitation the rights to 
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
of the Software, and to permit persons to whom the Software is furnished to do 
so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all 
copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/entrago.sh
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/entrago.sh 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/entrago.sh
deleted file mode 100644
index 7f4fdd6..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/entrago.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# nodemon --exec "sh" ./entrago.sh
-
-catn8 --nowatch;
-
-sleep 1;
-
-catn8 --nowatch;
-
-echo "copying m8 => entrago";
-
-cp ./m8.js /Volumes/beesknees/client/entrago/cms/web_ui/lib/external/

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.js 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.js
deleted file mode 100644
index 5cec186..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.js
+++ /dev/null
@@ -1,670 +0,0 @@
-;!function( root, Name, PACKAGE ) {
-       "use strict";
-
-
-
-/*~  src/vars.js  ~*/
-
-// if ENV === commonjs we want root to be global
-       typeof global == 'undefined' ? root : ( root = global );
-
-       var __name__  = '__name__', __type__ = '__type__', __xid__ = '__xid__',
-// it's a best guess as to whether the environment we're in is a browser, 
commonjs platform (like nodejs) or something else completely
-               AMD       = !!( typeof define == 'function' && define.amd ),
-               ENV       = typeof module != 'undefined' && 'exports' in module 
&& typeof require == 'function' ? 'commonjs' : typeof navigator != 'undefined' 
? 'browser' : 'other',
-               OP        = Object.prototype, UNDEF,
-// this will be used by the bless method to check if a context root is a 
commonjs module or not.
-// this way we know whether to assign the namespace been blessed to 
module.exports or not.
-               Module    = ENV != 'commonjs' ? null : require( 'module' ),
-               force     = [false, NaN, null, true, UNDEF].reduce( function( 
res, val ) {
-                       res[String( val )] = val; return res;
-               }, obj() ),
-               htmcol    = 'htmlcollection', htmdoc = 'htmldocument',
-               id_count  = 999, id_prefix = 'anon',
-// this is a Map of all the different combinations of permissions for 
assigning property descriptors using Object.defineProperty
-               modes     = function() {
-                       var mode_combos = { ce : 'ec', cw : 'wc', ew : 'we', 
cew : 'cwe ecw ewc wce wec'.split( ' ' ) },
-                               prop_keys   = 'configurable enumerable 
writable'.split( ' ' ),
-                               prop_vals   = {
-                                       c   : [true,  false, false], ce : 
[true,  true,  false],
-                                       cew : [true,  true,  true],  cw : 
[true,  false, true],
-                                       e   : [false, true,  false], ew : 
[false, true,  true],
-                                       r   : [false, false, false], w  : 
[false, false, true]
-                               },
-                               modes       = Object.keys( prop_vals ).reduce( 
function( res, key ) {
-                                       function assign( prop_val ) { 
res[prop_val] = res[key]; }
-
-                                       var combo = mode_combos[key];
-
-                                       res[key] = prop_keys.reduce( function( 
val, prop_key, i ) {
-                                               val[prop_key] = 
prop_vals[key][i];
-                                               return val;
-                                       }, obj() );
-
-                                       !combo || ( Array.isArray( combo ) ? 
combo.forEach( assign ) : assign( combo ) );
-
-                                       return res;
-                               }, obj() );
-                       delete modes[UNDEF];
-                       return modes;
-               }(), // pre-caching common types for faster checks
-               ntypes_common = 'Array Boolean Date Function Number Object 
RegExp String Null Undefined'.split( ' ' ),
-               ntype_cache   = ntypes_common.reduce( function( cache, type ) {
-                       cache['[object ' + type + ']'] = type.toLowerCase();
-                       return cache;
-               }, obj() ),
-               randy         = Math.random, re_global = /global|window/i,
-               re_gsub       =  /\$?\{([^\}'"]+)\}/g,            re_guid   = 
/[xy]/g,     re_lib    = new RegExp( '^\\u005E?' + Name ),
-               re_name       = /[\s\(]*function([^\(]+).*/,      //re_vendor = 
/^[Ww]ebkit|[Mm]oz|O|[Mm]s|[Kk]html(.*)$/,
-/** opera has been purposefully left out for the following reasons:
-  * whose stupid decision was it to make dragonfly not work unless you have an 
internet connection!?
-  * the previous point is so seriously retarded it needs to be mentioned 
again, here.
-  * the opera prefix `O` screws with [object Object] I don't like it, so it's 
gonski...
-**/
-               re_tostr      = /^\[object 
(?:[Ww]eb[Kk]it|[Mm]oz|[Mm]s|[Kk]html){0,1}([^\]]+)\]$/,
-               slice         = Array.prototype.slice,            tpl_guid  = 
'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx',
-               xcache        = ntypes_common.slice( 0, -2 ).reduce( function( 
cache, type ) {
-                       cache[type] = [];
-                       return cache;
-               }, obj() );
-
-
-
-/*~  src/lib.js  ~*/
-
-       function __lib__( val ) { return val; }
-
-       function bless( ns, ctx ) {
-               if ( !Array.isArray( ns ) ) {
-                       if ( typeof ns == 'string' )
-                               ns = ns.split( '.' );
-                       else
-                               return bless_ctx( ctx );
-               }
-
-               if ( re_lib.test( ns[0] ) ) { ctx = __lib__; ns.shift(); }
-
-               if ( !ns.length ) return bless_ctx( ctx );
-
-               ns[0].indexOf( '^' ) || ( ctx || ns[0] == '^' ? ns.shift() : 
ns[0] = ns[0].substring( 1 ) );
-               ctx = bless_ctx( ctx );
-
-               var o; while ( o = ns.shift() ) ctx = ctx[o] || ( ctx[o] = 
obj() );
-
-               return ctx;
-       }
-       function bless_ctx( ctx ) {
-               return ENV == 'commonjs'
-                       ? ( ctx ? is_mod( ctx ) ? ctx.exports : ctx : 
module.exports )
-                       : ctx || root;
-       }
-
-       function coerce( item ) {
-               var num = Number( item ), str;
-               return !isNaN( num ) ? num : ( str = String( item ) ) in force 
? force[str] : item;
-       }
-
-       function copy( target, source, no_overwrite ) {
-               no_overwrite = no_overwrite === true;
-               if ( !source ) {
-                       source = target;
-                       target = {};
-               }
-
-               source = Object( source );
-
-               for ( var key in source )
-                       if ( OP.hasOwnProperty.call( source, key ) && ( 
no_overwrite !== true || !OP.hasOwnProperty.call( target, key ) ) )
-                               target[key] = source[key];
-               return target;
-       }
-
-       function cpdef( target, source, no_overwrite ) {
-               no_overwrite = no_overwrite === true; source || ( source = 
target, target = obj() );
-               return Object.getOwnPropertyNames( source ).reduce( function( 
o, key ) {
-                       ( no_overwrite && has( o, key ) ) || def( o, key, 
description( source, key ) );
-                       return o;
-               }, target );
-       }
-
-       function def( item, name, desc ) {
-               var args    = slice.call( arguments, 3 ),
-                       defined = name in Object( item ), debug, mode, ntype, 
overwrite;
-
-               switch ( typeof args[0] ) {
-                       case 'string'  : mode = modes[args.shift()]; break;
-                       case 'object'  : mode = args.shift();
-                               if ( desc === null )
-                                       desc = { value : null };
-                               break;
-                       default        :
-                                ntype = nativeType( desc );
-                                mode  = ntype != 'object' && defined
-                                          ? description( item, name )
-                                          : null;
-
-                               if ( !mode )
-                                       mode = ntype == 'function'
-                                                ? modes.cw
-                                                : modes.cew;
-               }
-               overwrite = args.shift() === true;
-               debug     = args.shift() === true;
-
-               if ( defined && !overwrite ) {
-                       if ( debug ) new Error( Name + '.def cannot overwrite 
existing property: ' + name + ', in item type: ' + type( item ) + '.' );
-               }
-               else {
-                       if ( ntype != 'object' && mode )
-                               desc = describe( desc, mode );
-                       if ( desc.get || desc.set )
-                               delete desc.writable; // <- ARGH!!! see: 
https://plus.google.com/117400647045355298632/posts/YTX1wMry8M2
-                       Object.defineProperty( item, name, desc )
-               }
-               return __lib__;
-       }
-
-       function define_amd( path, deps, mod ) {
-               if ( !AMD ) return;
-
-               if ( Array.isArray( deps ) ) {
-                       mod  = deps;
-                       deps = [];
-               }
-
-               define( path, deps, function() { return mod; } );
-
-               return __lib__;
-       }
-
-       function defs( item, props, mode, overwrite, debug ) {
-               mode || ( mode = 'cw' );
-               for ( var key in props )
-                       !has( props, key ) || def( item, key, props[key], mode, 
overwrite, debug );
-               return __lib__;
-       }
-
-       function describe( desc, mode ) {
-               return copy( ( nativeType( desc ) == 'object' ? desc : { value 
: desc } ), ( nativeType( mode ) == 'object' ? mode : modes[String( mode 
).toLowerCase()] || modes.cew ), true );
-       }
-       function description( item, property ) {
-               return Object.getOwnPropertyDescriptor( item, property );
-       }
-
-       function empty( item ) { return !exists( item ) || ( !len( item ) && 
iter( item ) ) || false; }
-       function exists( item ) { return !( item === null || item === UNDEF || 
( typeof item == 'number' && isNaN( item ) ) ); }
-
-       function expose( lib, name, mod ) {
-               if ( typeof name != 'string' && lib[__name__] ) {
-                       mod  = name;
-                       name = lib[__name__];
-               }
-
-               var conflict, defaults = obj();                            // 
make sure the exposed library has a type
-               defaults[__name__] = name; defaults[__type__] = 'library'; // 
of "library" and its name attached to it.
-
-               if ( ENV == 'commonjs' && is_mod( mod ) )
-                       mod.exports = lib;
-               else {
-                       mod || ( mod = root );
-
-                       if ( ( conflict = mod[name] ) && iter( conflict ) ) {
-                               conflict[name] = lib;
-                               lib            = cpdef( conflict, lib );
-                       }
-                       else
-                               def( mod, name, describe( { value : lib }, 'ew' 
) );
-
- // don't expose as amd if lib is being added to a module that will be exposed
-                       !AMD || mod !== root || define_amd( name, lib );
-               }
-
-               defs( lib, defaults, 'w', true );
-
-               return lib; // return the exposed library, if it already exists 
this will allow us to re-assign our internal copy
-       }
-
-       function fname( fn ) { return fn.name || fn.displayName || ( String( fn 
).match( re_name ) || ['', ''] )[1].trim(); }
-
-       function format( str ) { return gsub( str, Array.coerce( arguments, 1 ) 
); }
-
-       function got( item, property ) {
-               return String( property ) in Object( item );
-       }
-
-       function gsub( str, o, pattern ) {
-               return String( str ).replace( ( pattern || re_gsub ), function( 
m, p ) { return o[p] || ''; } );
-       }
-
-       // credit for guid goes here: gist.github.com/2295777
-       function guid() { return tpl_guid.replace( re_guid, guid_replace ); }
-       function guid_replace( match ) {
-               var num = ( randy() * 16 ) | 0;
-               return ( match == 'x' ? num : ( num & 0x3 | 0x8 ) ).toString( 
16 );
-       }
-
-       function has( item, property ) {
-               return OP.hasOwnProperty.call( Object( item ), String( property 
) );
-       }
-
-       function id( item, prefix ) { return item ? 'id' in Object( item ) && 
!empty( item.id ) ? item.id : ( item.id = id_create( prefix ) ) : id_create( 
prefix ); }
-       function id_create( prefix ) { return ( prefix || id_prefix ) + '-' + ( 
++id_count ); }
-
-       function is_mod( mod ) {
-               if ( Module === null ) return false;
-               try { return mod instanceof Module; }
-               catch ( e ) { return false; }
-       }
-
-       function is_plain_object( item ) {
-               if ( item === UNDEF || item === null || typeof item !== 
'object' )
-                       return false;
-
-               var proto = Object.getPrototypeOf( item );
-
-               return !!( proto === null || proto.constructor === Object );
-       }
-
-       function iter( item ) { return exists( item ) && ( ( 'length' in 
Object( item ) ) || typeof item == 'object' ); }
-
-       function len( item ) { return ( 'length' in ( item = Object( item ) ) ? 
item : Object.keys( item ) ).length; }
-
-       function merge( target, source ) {
-               if ( source === UNDEF ) {
-                       if ( target === UNDEF ) // todo: test
-                               return  target;
-
-                       if ( Array.isArray( target ) )
-                               return  target.reduce( merge_array, [] );
-
-                       else if ( is_plain_object( target ) )
-                               return  Object.keys( target ).reduce( 
merge_object, {
-                                                       source : target,
-                                                       target : {}
-                                               } ).target;
-
-                       return target;
-               }
-
-               if ( Array.isArray( source ) ) {
-                       if ( !Array.isArray( target ) )
-                               target = [];
-                       else
-                               target.length = source.length; // remove any 
extra items on the merged Array
-
-                               return source.reduce( merge_array, target );
-               }
-               else if ( is_plain_object( source ) )
-                       return  Object.keys( source ).reduce( merge_object, {
-                                               source : source,
-                                               target : is_plain_object( 
target ) ? target : {}
-                                       } ).target;
-
-               return source;
-       }
-       function merge_array( target, source, i ) {
-               target[i] = merge( target[i], source );
-               return target;
-       }
-       function merge_object( o, key ) {
-               o.target[key] = merge( o.target[key], o.source[key] );
-               return o;
-       }
-
-       function noop() {}
-
-       function obj( props ) {
-               var nobj = Object.create( null );
-               return typeof props == 'object' ? copy( nobj, props ) : nobj;
-       }
-
-       function prop_exists( test, item, property ) {
-               var key; property = String( property );
-
-               if ( arguments.length > 3 ) {
-                       property = slice.call( arguments, 2 );
-
-                       while ( key = property.shift() )
-                               if ( prop_exists( test, item, key ) )
-                                       return true;
-
-                       return false;
-               }
-
-               if ( test( item, property ) )
-                       return true;
-
-               if ( typeof item != 'string' && !!~property.indexOf( '.' ) ) {
-                       property = property.split( '.' );
-
-                       while ( key = property.shift() ) {
-                               if ( !prop_exists( test, item, key ) )
-                                       return false;
-
-                               item = item[key];
-                       }
-
-                       return true;
-               }
-
-               return false;
-       }
-
-       function range( i, j ) {
-               return isNaN( i ) ? range_str( i, j ) : range_num( i, j );
-       }
-       function range_num( i, j ) {
-               var a = [i];
-               while ( ++i <= j ) a.push( i );
-               return a;
-       }
-       function range_str( i, j ) {
-               i = String( i ).charCodeAt( 0 );
-               j = String( j ).charCodeAt( 0 );
-
-               var a = [], m = -1, n = Math.abs( i - j ); --i;
-
-               while ( ++m <= n ) a.push( String.fromCharCode( ++i ) );
-
-               return a;
-       }
-
-       function remove( item, keys ) {
-               keys = Array.isArray( keys ) ? keys : slice.call( arguments, 1 
);
-               var remove_ = Array.isArray( item ) ? remove_array : 
remove_object;
-               keys.forEach( remove_, item );
-               return item;
-       }
-       function remove_array( val ) {
-               var i = this.indexOf( val );
-               i = !!~i ? i : !isNaN( val ) && val in this ? val : i;
-               i < 0 || this.splice( i, 1 );
-       }
-       function remove_object( key ) { delete this[key]; }
-
-       function proto( item ) { return Object.getPrototypeOf( item ); }
-       function tostr( item ) { return OP.toString.call( item ); }
-       function valof( item ) { return OP.valueOf.call( item ); }
-
-// type methods
-       function dom_type( dtype, item ) {
-               return dtype == htmdoc
-                        ? htmdoc : ( dtype == htmcol || dtype == 'nodelist' )
-                        ? htmcol : ( !dtype.indexOf( 'htm' ) && ( 
dtype.lastIndexOf( 'element' ) + 7 === dtype.length ) )
-                        ? 'htmlelement' : item === root ? 'global' : false;
-       }
-//     function get_type( str_type ) { return str_type.split( ' ' )[1].split( 
']' )[0].replace( re_vendor, '$1' ).toLowerCase(); }
-       function get_type( str_type ) { return str_type.replace( re_tostr, '$1' 
).toLowerCase(); }
-       function nativeType( item ) {
-               var native_type = OP.toString.call( item );
-
-               return native_type in ntype_cache // check the ntype_cache first
-                        ? ntype_cache[native_type]
-                        : ntype_cache[native_type] = get_type( native_type );
-       }
-       function ptype( item ) { return nativeType( proto( Object( item ) ) ); }
-       function type( item ) {
-               if ( item === null || item === UNDEF )
-                       return false;
-
-               if ( item === root ) return 'global'; // quick fix for android
-
-               var t = __type__ in Object( item )
-                         ? item[__type__] : proto( item ) === null
-                         ? 'nullobject'   : UNDEF;
-
-               return t;
-//             return t !== 'object'
-//                      ? t
-//                      : ( prop_exists( has, item, 'configurable', 
'enumerable', 'writable' ) && has( item, 'value' )
-//                      ||  prop_exists( has, item, 'get', 'set' ) )
-//                      ? 'descriptor'
-//                      : t;
-       }
-
-       function update( target, source ) {
-               if ( source === UNDEF ) return merge( target );
-
-               if ( target === UNDEF || target === null )
-                       return merge( source );
-
-               if ( Array.isArray( source ) ) {
-                       if ( !Array.isArray( target ) )
-                               return target;
-
-                       return source.reduce( update_array, target )
-               }
-               else if ( is_plain_object( source ) ) {
-                       if ( !is_plain_object( target ) )
-                               return target;
-
-                       return Object.keys( source ).reduce( update_object, { 
source : source, target : target } ).target;
-       }
-
-               return target;
-       }
-
-       function update_array( target, source, i ) {
-               target[i] = update( target[i], source );
-
-               return target;
-       }
-
-       function update_object( o, key ) {
-               o.target[key] = update( o.target[key], o.source[key] );
-
-               return o;
-       }
-
-
-
-/*~  src/lib.x.js  ~*/
-
-// Commonjs Modules 1.1.1: http://wiki.commonjs.org/wiki/Modules/1.1.1
-// notes section:          
http://wiki.commonjs.org/wiki/Modules/ProposalForNativeExtension
-// specifies the possibility of sandboxing JavaScript Natives in Modules in 
future versions
-// this should future proof this all up in your mother's fudge!
-       function x() {
-               slice.call( arguments ).forEach( x_update );
-               return __lib__;
-       }
-
-       def( x, 'cache', function( type, extender ) {
-               typeof type == 'string' || ( type = type[__name__] || fname( 
type ) );
-               xcache[type] || ( xcache[type] = [] );
-               xcache[type].push( extender );
-               return __lib__;
-       }, 'w' );
-
-       function x_extend( extend_type ) { extend_type( this, __lib__ ); }
-
-       function x_update( Type ) {
-               got( Type, __xid__ ) || def( Type, __xid__, 0, 'w' );       // 
Type.__xid__ will be updated, everytime a Type is
-               var extenders = xcache[Type[__name__] || fname( Type )];    // 
extended. This means unsandboxed environments will
-               if ( !extenders ) return;                                   // 
not have to suffer repeated attempts to assign
-               extenders.slice( Type[__xid__] ).forEach( x_extend, Type ); // 
methods and properties which have already being
-               Type[__xid__] = extenders.length;                           // 
assigned every time __lib__.x() is called, and
-       }                                                               // 
potentilly throwing overwrite errors.
-
-
-
-/*~  src/nativex.js  ~*/
-
-       x.cache( 'Array', function( Type ) {
-               var PROTO = Type.prototype;
-
-               def( Type, 'coerce', function( a, i, j ) {
-                       if ( !( 'length' in Object( a ) ) ) return [a];
-                       i = !isNaN( i ) ? i > 0 ? i : 0 : 0;
-                       j = !isNaN( j ) ? j > i ? j : j <= 0 ? a.length + j : i 
+ j : a.length;
-                       return slice.call( a, i, j );
-               }, 'w' );
-
-               defs( PROTO, {
-                       find : function( fn, ctx ) {
-                               var i = -1, l = this.length >>> 0;
-                               ctx || ( ctx = this );
-                               while ( ++i < l ) if ( !!fn.call( ctx, this[i], 
i, this ) ) return this[i];
-                               return null;
-                       },
-                       invoke    : function( fn ) {
-                               var args = Type.coerce( arguments, 1 );
-                               return PROTO.map.call( this, function( item ) {
-                                       return item && typeof item[fn] == 
'function' ? item[fn].apply( item, args ) : UNDEF;
-                               } );
-                       },
-                       pluck     : function( key, existing_only ) {
-                               existing_only = existing_only === true;
-                               return PROTO.reduce.call( this, function( val, 
item ) {
-                                       var v = Object.value( item, key );
-
-                                       ( existing_only && !exists( v ) ) || 
val.push( v );
-
-                                       return val;
-                               }, [] );
-                       }
-               }, 'w' );
-       } );
-
-       x.cache( 'Boolean', function( Type ) {
-               def( Type, 'coerce', function( item ) {
-                       switch( type( item ) ) {
-                               case 'boolean' : return item;
-                               case 'nan'     : case false    : return false;
-                               case 'number'  : case 'string' : return !( item 
in force ? !force[item] : Number( item ) === 0 );
-                       }
-                       return true;
-               }, 'w' );
-       } );
-
-       x.cache( 'Function', function( Type ) {
-               function anon( name ) { return !name || name in anon_list; }
-               function toString()   { return this.toString(); }
-               function valueOf()    { return this; }
-
-               var __xname__ = '__xname__',
-                       anon_list = { Anonymous : true, anonymous : true },
-                       desc      = { mimic : function( fn, name ) {
-                               var fn_val = fn.valueOf(); // in case fn is a 
mimicked Function, we'll want to mimic the original
-                               defs( this, {
-                                       displayName : ( name || fname( fn_val ) 
),
-                                       toString    : toString.bind( fn_val ),
-                                       valueOf     : valueOf.bind( fn_val )
-                               }, 'c', true );
-                               return this;
-                       } };
-
-               desc[__name__] = { get : function() {
-                       if ( !this[__xname__] ) {
-                               var fn     = this.valueOf(), // if this 
function is mimicking another, get the mimicked function
-// handles anonymous functions which are mimicking (see mimic below) named 
functions
-                                       name_m = fn !== this ? !anon( 
fn[__name__] ) ? fn[__name__] : null : null,
-                                       name   = name_m || fname( this );
-                               !anon( name ) || anon( this.displayName ) || ( 
name = this.displayName );
-                                def( this, __xname__, ( name || 'anonymous' ), 
'w' );
-                       }
-                       return this[__xname__];
-               } };
-
-               defs( Type.prototype, desc, 'w' );
-// allows us to better try and get a functions name, you can add to this list 
if you like
-               def( Type, 'anon_list', { value : anon_list }, 'w' );
-
-       } );
-
-       x.cache( 'Object', function( Type ) {
-// this is a special case which does not use __lib__.describe
-// since it internally uses __type__ which is about to be set up here.
-               def( Type.prototype, __type__, copy( { get : function() {
-                       var _type_, item = this, ctor = item.constructor, ntype 
= nativeType( item ),
-                               dtype = dom_type( ntype, item ) || ( 
re_global.test( ntype ) ? 'global' : false );
-
-                       if ( dtype ) return dtype;
-                       if ( ntype == 'number' ) return isNaN( item ) ? 'nan' : 
'number';
-
-                       if ( ntype == 'object' && typeof ctor == 'function' ) {
-                               if ( ctor[__type__] != 'function' ) {
-                                       _type_ = String( ctor[__name__] 
).toLowerCase();
-                                       return !_type_ || _type_ == 'anonymous' 
? ctor[__type__]  || ntype : _type_;
-                               }
-                       }
-
-                       return ntype;
-               } }, modes.r ) );
-
-               def( Type.prototype, '__proto__', {
-                       get : function() {
-                               return proto( this );
-                       } // todo: set, or would it be anti-spec/overkill???
-               }, 'c' );
-
-               defs( Type, {
-                       key    : function( item, val ) {
-                               return Type.keys( Type( item ) ).find( 
function( key ) {
-                                       return item[key] === val;
-                               } );
-                       },
-                       reduce : function( item, fn, val ) {
-                               return Type.keys( Type( item ) ).reduce( 
function( res, key, i ) {
-                                       res = fn.call( item, res, item[key], 
key, item, i );
-                                       return res;
-                               }, val );
-                       },
-                       value  : function( item, key )  {
-                               if ( !exists( item ) ) return UNDEF;
-
-                               if ( key in item ) return item[key];
-
-                               if ( isNaN( +key ) ) {
-                                       if ( !!~key.indexOf( '.' ) ) {
-                                               var val; key = key.split( '.' );
-                                               while ( val = key.shift() )
-                                                       if ( ( item = 
Type.value( item, val ) ) === UNDEF )
-                                                               break;
-                                               return item;
-                                       }
-                               }
-
-                               return item[key] !== UNDEF
-                                        ? item[key]                : typeof 
item.get          == 'function'
-                                        ? item.get( key )          : typeof 
item.getAttribute == 'function'
-                                        ? item.getAttribute( key ) : UNDEF;
-                       },
-                       values : function( item ) { return Type.keys( Object( 
item ) ).map( function( key ) { return item[key]; } ); }
-               }, 'w' );
-       } );
-
-
-
-/*~  src/expose.js  ~*/
-
-       iter( PACKAGE ) || ( PACKAGE = ENV == 'commonjs' ? module : root );
-
-       defs( ( __lib__ = expose( __lib__, Name, PACKAGE ) ), {
-       // properties
-               AMD        : AMD,               ENV         : ENV,
-               global     : { value : root  }, modes       : { value : modes },
-       // methods
-               bless      : bless,             coerce      : coerce,
-               copy       : copy,              cpdef       : cpdef,
-               def        : def,               defs        : defs,            
define : define_amd,
-               describe   : describe,          description : description,
-               empty      : empty,             exists      : exists,
-               expose     : expose,            format      : format,          
got    : prop_exists.bind( null, got ),
-               gsub       : gsub,              guid        : guid,            
has    : prop_exists.bind( null, has ),
-               id         : id,                isObject    : is_plain_object, 
iter   : iter,
-               len        : len,               merge       : merge,
-               nativeType : nativeType,        noop        : noop,
-               ntype      : nativeType,        obj         : obj,
-               proto      : proto,             ptype       : ptype,
-               range      : range,             remove      : remove,
-               tostr      : tostr,             type        : type,
-               update     : update,            valof       : valof,
-               x          : x
-       }, 'w' );
-
-       x( Object, Array, Boolean, Function );
-
-
-
-}( typeof global !== 'undefined' ? global : this, 'm8' );

http://git-wip-us.apache.org/repos/asf/cordova-browser/blob/1d2725bf/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.min.js
----------------------------------------------------------------------
diff --git 
a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.min.js 
b/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.min.js
deleted file mode 100644
index 5646ebb..0000000
--- a/node_modules/cordova-serve/node_modules/d8/node_modules/m8/m8.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,n,e){"use strict";function r(t){return t}function 
u(t,n){if(!Array.isArray(t)){if("string"!=typeof t)return 
i(n);t=t.split(".")}if(On.test(t[0])&&(n=r,t.shift()),!t.length)return 
i(n);t[0].indexOf("^")||(n||"^"==t[0]?t.shift():t[0]=t[0].substring(1)),n=i(n);for(var
 e;e=t.shift();)n=n[e]||(n[e]=B());return n}function 
i(n){return"commonjs"==an?n?_(n)?n.exports:n:module.exports:n||t}function 
o(t){var n,e=Number(t);return isNaN(e)?(n=String(t))in sn?sn[n]:t:e}function 
c(t,n,e){e=e===!0,n||(n=t,t={}),n=Object(n);for(var r in 
n)!fn.hasOwnProperty.call(n,r)||e===!0&&fn.hasOwnProperty.call(t,r)||(t[r]=n[r]);return
 t}function a(t,n,e){return 
e=e===!0,n||(n=t,t=B()),Object.getOwnPropertyNames(n).reduce(function(t,r){return
 e&&O(t,r)||f(t,r,g(n,r)),t},t)}function f(t,e,u){var 
i,o,c,a,f=_n.call(arguments,3),l=e in Object(t);switch(typeof 
f[0]){case"string":o=bn[f.shift()];break;case"object":o=f.shift(),null===u&&(u={value:null});break;default:c=G(u),o="object"!=c&&l?g(t,e):null,o||(
 o="function"==c?bn.cw:bn.cew)}return 
a=f.shift()===!0,i=f.shift()===!0,l&&!a?i&&new Error(n+".def cannot overwrite 
existing property: "+e+", in item type: 
"+J(t)+"."):("object"!=c&&o&&(u=y(u,o)),(u.get||u.set)&&delete 
u.writable,Object.defineProperty(t,e,u)),r}function l(t,n,e){return 
cn?(Array.isArray(n)&&(e=n,n=[]),define(t,n,function(){return e}),r):void 
0}function s(t,n,e,u,i){e||(e="cw");for(var o in 
n)!O(n,o)||f(t,o,n[o],e,u,i);return r}function y(t,n){return 
c("object"==G(t)?t:{value:t},"object"==G(n)?n:bn[String(n).toLowerCase()]||bn.cew,!0)}function
 g(t,n){return Object.getOwnPropertyDescriptor(t,n)}function 
p(t){return!h(t)||!E(t)&&k(t)||!1}function 
h(t){return!(null===t||t===en||"number"==typeof t&&isNaN(t))}function 
b(n,e,r){"string"!=typeof e&&n[rn]&&(r=e,e=n[rn]);var u,i=B();return 
i[rn]=e,i[un]="library","commonjs"==an&&_(r)?r.exports=n:(r||(r=t),(u=r[e])&&k(u)?(u[e]=n,n=a(u,n)):f(r,e,y({value:n},"ew")),!cn||r!==t||l(e,n)),s(n,i,"w",!0),n}function
 d(t){return t.name||
 t.displayName||(String(t).match(An)||["",""])[1].trim()}function m(t){return 
w(t,Array.coerce(arguments,1))}function v(t,n){return String(n)in 
Object(t)}function w(t,n,e){return String(t).replace(e||xn,function(t,e){return 
n[e]||""})}function x(){return Sn.replace(jn,j)}function j(t){var 
n=0|16*vn();return("x"==t?n:8|3&n).toString(16)}function O(t,n){return 
fn.hasOwnProperty.call(Object(t),String(n))}function A(t,n){return t?"id"in 
Object(t)&&!p(t.id)?t.id:t.id=N(n):N(n)}function N(t){return(t||hn)+"-"+ 
++pn}function _(t){if(null===ln)return!1;try{return t instanceof 
ln}catch(n){return!1}}function S(t){if(t===en||null===t||"object"!=typeof 
t)return!1;var 
n=Object.getPrototypeOf(t);return!(null!==n&&n.constructor!==Object)}function 
k(t){return h(t)&&("length"in Object(t)||"object"==typeof t)}function 
E(t){return("length"in(t=Object(t))?t:Object.keys(t)).length}function 
C(t,n){return 
n===en?t===en?t:Array.isArray(t)?t.reduce(P,[]):S(t)?Object.keys(t).reduce(M,{source:t,target:{}}).tar
 
get:t:Array.isArray(n)?(Array.isArray(t)?t.length=n.length:t=[],n.reduce(P,t)):S(n)?Object.keys(n).reduce(M,{source:n,target:S(t)?t:{}}).target:n}function
 P(t,n,e){return t[e]=C(t[e],n),t}function M(t,n){return 
t.target[n]=C(t.target[n],t.source[n]),t}function L(){}function B(t){var 
n=Object.create(null);return"object"==typeof t?c(n,t):n}function D(t,n,e){var 
r;if(e=String(e),arguments.length>3){for(e=_n.call(arguments,2);r=e.shift();)if(D(t,n,r))return!0;return!1}if(t(n,e))return!0;if("string"!=typeof
 
n&&~e.indexOf(".")){for(e=e.split(".");r=e.shift();){if(!D(t,n,r))return!1;n=n[r]}return!0}return!1}function
 F(t,n){return isNaN(t)?q(t,n):$(t,n)}function $(t,n){for(var 
e=[t];++t<=n;)e.push(t);return e}function 
q(t,n){t=String(t).charCodeAt(0),n=String(n).charCodeAt(0);var 
e=[],r=-1,u=Math.abs(t-n);for(--t;++r<=u;)e.push(String.fromCharCode(++t));return
 e}function K(t,n){n=Array.isArray(n)?n:_n.call(arguments,1);var 
e=Array.isArray(t)?R:z;return n.forEach(e,t),t}function R(t){var n=t
 his.indexOf(t);n=~n?n:!isNaN(t)&&t in this?t:n,0>n||this.splice(n,1)}function 
z(t){delete this[t]}function I(t){return Object.getPrototypeOf(t)}function 
T(t){return fn.toString.call(t)}function U(t){return 
fn.valueOf.call(t)}function V(n,e){return 
n==gn?gn:n==yn||"nodelist"==n?yn:n.indexOf("htm")||n.lastIndexOf("element")+7!==n.length?e===t?"global":!1:"htmlelement"}function
 W(t){return t.replace(Nn,"$1").toLowerCase()}function G(t){var 
n=fn.toString.call(t);return n in mn?mn[n]:mn[n]=W(n)}function H(t){return 
G(I(Object(t)))}function 
J(n){if(null===n||n===en)return!1;if(n===t)return"global";var e=un in 
Object(n)?n[un]:null===I(n)?"nullobject":en;return e}function Q(t,n){return 
n===en?C(t):t===en||null===t?C(n):Array.isArray(n)?Array.isArray(t)?n.reduce(X,t):t:S(n)?S(t)?Object.keys(n).reduce(Y,{source:n,target:t}).target:t:t}function
 X(t,n,e){return t[e]=Q(t[e],n),t}function Y(t,n){return 
t.target[n]=Q(t.target[n],t.source[n]),t}function Z(){return 
_n.call(arguments).forEach(nn),r}f
 unction tn(t){t(this,r)}function nn(t){v(t,on)||f(t,on,0,"w");var 
n=kn[t[rn]||d(t)];n&&(n.slice(t[on]).forEach(tn,t),t[on]=n.length)}"undefined"==typeof
 global?t:t=global;var 
en,rn="__name__",un="__type__",on="__xid__",cn=!("function"!=typeof 
define||!define.amd),an="undefined"!=typeof module&&"exports"in 
module&&"function"==typeof require?"commonjs":"undefined"!=typeof 
navigator?"browser":"other",fn=Object.prototype,ln="commonjs"!=an?null:require("module"),sn=[!1,0/0,null,!0,en].reduce(function(t,n){return
 
t[String(n)]=n,t},B()),yn="htmlcollection",gn="htmldocument",pn=999,hn="anon",bn=function(){var
 t={ce:"ec",cw:"wc",ew:"we",cew:"cwe ecw ewc wce wec".split(" 
")},n="configurable enumerable writable".split(" 
"),e={c:[!0,!1,!1],ce:[!0,!0,!1],cew:[!0,!0,!0],cw:[!0,!1,!0],e:[!1,!0,!1],ew:[!1,!0,!0],r:[!1,!1,!1],w:[!1,!1,!0]},r=Object.keys(e).reduce(function(r,u){function
 i(t){r[t]=r[u]}var o=t[u];return r[u]=n.reduce(function(t,n,r){return 
t[n]=e[u][r],t},B()),!o||(Array.isArray(o)?o.
 forEach(i):i(o)),r},B());return delete r[en],r}(),dn="Array Boolean Date 
Function Number Object RegExp String Null Undefined".split(" 
"),mn=dn.reduce(function(t,n){return t["[object 
"+n+"]"]=n.toLowerCase(),t},B()),vn=Math.random,wn=/global|window/i,xn=/\$?\{([^\}'"]+)\}/g,jn=/[xy]/g,On=new
 RegExp("^\\u005E?"+n),An=/[\s\(]*function([^\(]+).*/,Nn=/^\[object 
(?:[Ww]eb[Kk]it|[Mm]oz|[Mm]s|[Kk]html){0,1}([^\]]+)\]$/,_n=Array.prototype.slice,Sn="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",kn=dn.slice(0,-2).reduce(function(t,n){return
 t[n]=[],t},B());f(Z,"cache",function(t,n){return"string"==typeof 
t||(t=t[rn]||d(t)),kn[t]||(kn[t]=[]),kn[t].push(n),r},"w"),Z.cache("Array",function(t){var
 n=t.prototype;f(t,"coerce",function(t,n,e){return"length"in 
Object(t)?(n=isNaN(n)?0:n>0?n:0,e=isNaN(e)?t.length:e>n?e:0>=e?t.length+e:n+e,_n.call(t,n,e)):[t]},"w"),s(n,{find:function(t,n){var
 
e=-1,r=this.length>>>0;for(n||(n=this);++e<r;)if(t.call(n,this[e],e,this))return
 this[e];return null},invoke:function(e){
 var r=t.coerce(arguments,1);return n.map.call(this,function(t){return 
t&&"function"==typeof t[e]?t[e].apply(t,r):en})},pluck:function(t,e){return 
e=e===!0,n.reduce.call(this,function(n,r){var u=Object.value(r,t);return 
e&&!h(u)||n.push(u),n},[])}},"w")}),Z.cache("Boolean",function(t){f(t,"coerce",function(t){switch(J(t)){case"boolean":return
 t;case"nan":case!1:return!1;case"number":case"string":return!(t in 
sn?!sn[t]:0===Number(t))}return!0},"w")}),Z.cache("Function",function(t){function
 n(t){return!t||t in i}function e(){return this.toString()}function r(){return 
this}var u="__xname__",i={Anonymous:!0,anonymous:!0},o={mimic:function(t,n){var 
u=t.valueOf();return 
s(this,{displayName:n||d(u),toString:e.bind(u),valueOf:r.bind(u)},"c",!0),this}};o[rn]={get:function(){if(!this[u]){var
 
t=this.valueOf(),e=t!==this?n(t[rn])?null:t[rn]:null,r=e||d(this);!n(r)||n(this.displayName)||(r=this.displayName),f(this,u,r||"anonymous","w")}return
 this[u]}},s(t.prototype,o,"w"),f(t,"anon_list",{value:
 i},"w")}),Z.cache("Object",function(t){f(t.prototype,un,c({get:function(){var 
t,n=this,e=n.constructor,r=G(n),u=V(r,n)||(wn.test(r)?"global":!1);return 
u?u:"number"==r?isNaN(n)?"nan":"number":"object"==r&&"function"==typeof 
e&&"function"!=e[un]?(t=String(e[rn]).toLowerCase(),t&&"anonymous"!=t?t:e[un]||r):r}},bn.r)),f(t.prototype,"__proto__",{get:function(){return
 I(this)}},"c"),s(t,{key:function(n,e){return 
t.keys(t(n)).find(function(t){return n[t]===e})},reduce:function(n,e,r){return 
t.keys(t(n)).reduce(function(t,r,u){return 
t=e.call(n,t,n[r],r,n,u)},r)},value:function(n,e){if(!h(n))return en;if(e in 
n)return n[e];if(isNaN(+e)&&~e.indexOf(".")){var 
r;for(e=e.split(".");(r=e.shift())&&(n=t.value(n,r))!==en;);return n}return 
n[e]!==en?n[e]:"function"==typeof n.get?n.get(e):"function"==typeof 
n.getAttribute?n.getAttribute(e):en},values:function(n){return 
t.keys(Object(n)).map(function(t){return 
n[t]})}},"w")}),k(e)||(e="commonjs"==an?module:t),s(r=b(r,n,e),{AMD:cn,ENV:an,global:{valu
 
e:t},modes:{value:bn},bless:u,coerce:o,copy:c,cpdef:a,def:f,defs:s,define:l,describe:y,description:g,empty:p,exists:h,expose:b,format:m,got:D.bind(null,v),gsub:w,guid:x,has:D.bind(null,O),id:A,isObject:S,iter:k,len:E,merge:C,nativeType:G,noop:L,ntype:G,obj:B,proto:I,ptype:H,range:F,remove:K,tostr:T,type:J,update:Q,valof:U,x:Z},"w"),Z(Object,Array,Boolean,Function)}("undefined"!=typeof
 global?global:this,"m8");
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to