You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by he...@apache.org on 2013/03/27 23:41:13 UTC

[2/2] git commit: updated to 2.6.0rc1 retagged cordova.js libs

updated to 2.6.0rc1 retagged cordova.js libs


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

Branch: refs/heads/master
Commit: a2e1b796dbaa97cd8e8062694029f75ab9c1ea7b
Parents: 5ded5a7
Author: hermwong <he...@gmail.com>
Authored: Wed Mar 27 15:38:00 2013 -0700
Committer: hermwong <he...@gmail.com>
Committed: Wed Mar 27 15:38:00 2013 -0700

----------------------------------------------------------------------
 lib/cordova.firefoxos-debug.js |   14 ++--
 lib/cordova.firefoxos.js       |  104 ++++++++++++++++++++++-------------
 2 files changed, 73 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-firefoxos/blob/a2e1b796/lib/cordova.firefoxos-debug.js
----------------------------------------------------------------------
diff --git a/lib/cordova.firefoxos-debug.js b/lib/cordova.firefoxos-debug.js
index b7f7cf0..62d0403 100644
--- a/lib/cordova.firefoxos-debug.js
+++ b/lib/cordova.firefoxos-debug.js
@@ -1,8 +1,8 @@
 // Platform: firefoxos
 
-// commit bbf1562d4934b1331ffb263424b6ae054cedeb71
+// commit 4bbb9b5e9f232cc5f090e5065a0d92086b78628d
 
-// File generated at :: Thu Mar 21 2013 14:40:07 GMT-0700 (PDT)
+// File generated at :: Wed Mar 27 2013 15:35:48 GMT-0700 (PDT)
 
 /*
  Licensed to the Apache Software Foundation (ASF) under one
@@ -31,7 +31,7 @@ try {eval("define(\"cordova/argscheck\", function(require, exports, module) {\n\
 try {eval("define(\"cordova/builder\", function(require, exports, module) {\n\nvar utils = require('cordova/utils');\n\nfunction each(objects, func, context) {\n    for (var prop in objects) {\n        if (objects.hasOwnProperty(prop)) {\n            func.apply(context, [objects[prop], prop]);\n        }\n    }\n}\n\nfunction clobber(obj, key, value) {\n    exports.replaceHookForTesting(obj, key);\n    obj[key] = value;\n    // Getters can only be overridden by getters.\n    if (obj[key] !== value) {\n        utils.defineGetter(obj, key, function() {\n            return value;\n        });\n    }\n}\n\nfunction assignOrWrapInDeprecateGetter(obj, key, value, message) {\n    if (message) {\n        utils.defineGetter(obj, key, function() {\n            console.log(message);\n            delete obj[key];\n            clobber(obj, key, value);\n            return value;\n        });\n    } else {\n        clobber(obj, key, value);\n    }\n}\n\nfunction include(parent, objects, clobber, 
 merge) {\n    each(objects, function (obj, key) {\n        try {\n          var result = obj.path ? require(obj.path) : {};\n\n          if (clobber) {\n              // Clobber if it doesn't exist.\n              if (typeof parent[key] === 'undefined') {\n                  assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);\n              } else if (typeof obj.path !== 'undefined') {\n                  // If merging, merge properties onto parent, otherwise, clobber.\n                  if (merge) {\n                      recursiveMerge(parent[key], result);\n                  } else {\n                      assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);\n                  }\n              }\n              result = parent[key];\n          } else {\n            // Overwrite if not currently defined.\n            if (typeof parent[key] == 'undefined') {\n              assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);\n            }
  else {\n              // Set result to what already exists, so we can build children into it if they exist.\n              result = parent[key];\n            }\n          }\n\n          if (obj.children) {\n            include(result, obj.children, clobber, merge);\n          }\n        } catch(e) {\n          utils.alert('Exception building cordova JS globals: ' + e + ' for key \"' + key + '\"');\n        }\n    });\n}\n\n/**\n * Merge properties from one object onto another recursively.  Properties from\n * the src object will overwrite existing target property.\n *\n * @param target Object to merge properties into.\n * @param src Object to merge properties from.\n */\nfunction recursiveMerge(target, src) {\n    for (var prop in src) {\n        if (src.hasOwnProperty(prop)) {\n            if (target.prototype && target.prototype.constructor === target) {\n                // If the target object is a constructor override off prototype.\n                clobber(target.prototype, pr
 op, src[prop]);\n            } else {\n                if (typeof src[prop] === 'object' && typeof target[prop] === 'object') {\n                    recursiveMerge(target[prop], src[prop]);\n                } else {\n                    clobber(target, prop, src[prop]);\n                }\n            }\n        }\n    }\n}\n\nexports.buildIntoButDoNotClobber = function(objects, target) {\n    include(target, objects, false, false);\n};\nexports.buildIntoAndClobber = function(objects, target) {\n    include(target, objects, true, false);\n};\nexports.buildIntoAndMerge = function(objects, target) {\n    include(target, objects, true, true);\n};\nexports.recursiveMerge = recursiveMerge;\nexports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter;\nexports.replaceHookForTesting = function() {};\n\n});\n\n//@ sourceURL=lib/common/builder.js")} catch(e) {console.log("exception: in lib/common/builder.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/channel\", function(require, exports, module) {\n\nvar utils = require('cordova/utils'),\n    nextGuid = 1;\n\n/**\n * Custom pub-sub \"channel\" that can have functions subscribed to it\n * This object is used to define and control firing of events for\n * cordova initialization, as well as for custom events thereafter.\n *\n * The order of events during page load and Cordova startup is as follows:\n *\n * onDOMContentLoaded*         Internal event that is received when the web page is loaded and parsed.\n * onNativeReady*              Internal event that indicates the Cordova native side is ready.\n * onCordovaReady*             Internal event fired when all Cordova JavaScript objects have been created.\n * onCordovaInfoReady*         Internal event fired when device properties are available.\n * onCordovaConnectionReady*   Internal event fired when the connection property has been set.\n * onDeviceReady*              User event fired to indicate that C
 ordova is ready\n * onResume                    User event fired to indicate a start/resume lifecycle event\n * onPause                     User event fired to indicate a pause lifecycle event\n * onDestroy*                  Internal event fired when app is being destroyed (User should use window.onunload event, not this one).\n *\n * The events marked with an * are sticky. Once they have fired, they will stay in the fired state.\n * All listeners that subscribe after the event is fired will be executed right away.\n *\n * The only Cordova events that user code should register for are:\n *      deviceready           Cordova native code is initialized and Cordova APIs can be called from JavaScript\n *      pause                 App has moved to background\n *      resume                App has returned to foreground\n *\n * Listeners can be registered as:\n *      document.addEventListener(\"deviceready\", myDeviceReadyListener, false);\n *      document.addEventListener(\"resume\", 
 myResumeListener, false);\n *      document.addEventListener(\"pause\", myPauseListener, false);\n *\n * The DOM lifecycle events should be used for saving and restoring state\n *      window.onload\n *      window.onunload\n *\n */\n\n/**\n * Channel\n * @constructor\n * @param type  String the channel name\n */\nvar Channel = function(type, sticky) {\n    this.type = type;\n    // Map of guid -> function.\n    this.handlers = {};\n    // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired.\n    this.state = sticky ? 1 : 0;\n    // Used in sticky mode to remember args passed to fire().\n    this.fireArgs = null;\n    // Used by onHasSubscribersChange to know if there are any listeners.\n    this.numHandlers = 0;\n    // Function that is called when the first listener is subscribed, or when\n    // the last listener is unsubscribed.\n    this.onHasSubscribersChange = null;\n},\n    channel = {\n        /**\n         * Calls the provided function only after all of the channels spe
 cified\n         * have been fired. All channels must be sticky channels.\n         */\n        join: function(h, c) {\n            var len = c.length,\n                i = len,\n                f = function() {\n                    if (!(--i)) h();\n                };\n            for (var j=0; j<len; j++) {\n                if (c[j].state === 0) {\n                    throw Error('Can only use join with sticky channels.');\n                }\n                c[j].subscribe(f);\n            }\n            if (!len) h();\n        },\n        create: function(type) {\n            return channel[type] = new Channel(type, false);\n        },\n        createSticky: function(type) {\n            return channel[type] = new Channel(type, true);\n        },\n\n        /**\n         * cordova Channels that must fire before \"deviceready\" is fired.\n         */\n        deviceReadyChannelsArray: [],\n        deviceReadyChannelsMap: {},\n\n        /**\n         * Indicate that a feature needs
  to be initialized before it is ready to be used.\n         * This holds up Cordova's \"deviceready\" event until the feature has been initialized\n         * and Cordova.initComplete(feature) is called.\n         *\n         * @param feature {String}     The unique feature name\n         */\n        waitForInitialization: function(feature) {\n            if (feature) {\n                var c = channel[feature] || this.createSticky(feature);\n                this.deviceReadyChannelsMap[feature] = c;\n                this.deviceReadyChannelsArray.push(c);\n            }\n        },\n\n        /**\n         * Indicate that initialization code has completed and the feature is ready to be used.\n         *\n         * @param feature {String}     The unique feature name\n         */\n        initializationComplete: function(feature) {\n            var c = this.deviceReadyChannelsMap[feature];\n            if (c) {\n                c.fire();\n            }\n        }\n    };\n\nfunction f
 orceFunction(f) {\n    if (typeof f != 'function') throw \"Function required as first argument!\";\n}\n\n/**\n * Subscribes the given function to the channel. Any time that\n * Channel.fire is called so too will the function.\n * Optionally specify an execution context for the function\n * and a guid that can be used to stop subscribing to the channel.\n * Returns the guid.\n */\nChannel.prototype.subscribe = function(f, c) {\n    // need a function to call\n    forceFunction(f);\n    if (this.state == 2) {\n        f.apply(c || this, this.fireArgs);\n        return;\n    }\n\n    var func = f,\n        guid = f.observer_guid;\n    if (typeof c == \"object\") { func = utils.close(c, f); }\n\n    if (!guid) {\n        // first time any channel has seen this subscriber\n        guid = '' + nextGuid++;\n    }\n    func.observer_guid = guid;\n    f.observer_guid = guid;\n\n    // Don't add the same handler more than once.\n    if (!this.handlers[guid]) {\n        this.handlers[guid] = f
 unc;\n        this.numHandlers++;\n        if (this.numHandlers == 1) {\n            this.onHasSubscribersChange && this.onHasSubscribersChange();\n        }\n    }\n};\n\n/**\n * Unsubscribes the function with the given guid from the channel.\n */\nChannel.prototype.unsubscribe = function(f) {\n    // need a function to unsubscribe\n    forceFunction(f);\n\n    var guid = f.observer_guid,\n        handler = this.handlers[guid];\n    if (handler) {\n        delete this.handlers[guid];\n        this.numHandlers--;\n        if (this.numHandlers === 0) {\n            this.onHasSubscribersChange && this.onHasSubscribersChange();\n        }\n    }\n};\n\n/**\n * Calls all functions subscribed to this channel.\n */\nChannel.prototype.fire = function(e) {\n    var fail = false,\n        fireArgs = Array.prototype.slice.call(arguments);\n    // Apply stickiness.\n    if (this.state == 1) {\n        this.state = 2;\n        this.fireArgs = fireArgs;\n    }\n    if (this.numHandlers) {\n     
    // Copy the values first so that it is safe to modify it from within\n        // callbacks.\n        var toCall = [];\n        for (var item in this.handlers) {\n            toCall.push(this.handlers[item]);\n        }\n        for (var i = 0; i < toCall.length; ++i) {\n            toCall[i].apply(this, fireArgs);\n        }\n        if (this.state == 2 && this.numHandlers) {\n            this.numHandlers = 0;\n            this.handlers = {};\n            this.onHasSubscribersChange && this.onHasSubscribersChange();\n        }\n    }\n};\n\n\n// defining them here so they are ready super fast!\n// DOM event that is received when the web page is loaded and parsed.\nchannel.createSticky('onDOMContentLoaded');\n\n// Event to indicate the Cordova native side is ready.\nchannel.createSticky('onNativeReady');\n\n// Event to indicate that all Cordova JavaScript objects have been created\n// and it's time to run plugin constructors.\nchannel.createSticky('onCordovaReady');\n\n// Event to
  indicate that device properties are available\nchannel.createSticky('onCordovaInfoReady');\n\n// Event to indicate that the connection property has been set.\nchannel.createSticky('onCordovaConnectionReady');\n\n// Event to indicate that all automatically loaded JS plugins are loaded and ready.\nchannel.createSticky('onPluginsReady');\n\n// Event to indicate that Cordova is ready\nchannel.createSticky('onDeviceReady');\n\n// Event to indicate a resume lifecycle event\nchannel.create('onResume');\n\n// Event to indicate a pause lifecycle event\nchannel.create('onPause');\n\n// Event to indicate a destroy lifecycle event\nchannel.createSticky('onDestroy');\n\n// Channels that must fire before \"deviceready\" is fired.\nchannel.waitForInitialization('onCordovaReady');\nchannel.waitForInitialization('onCordovaConnectionReady');\n\nmodule.exports = channel;\n\n});\n\n//@ sourceURL=lib/common/channel.js")} catch(e) {console.log("exception: in lib/common/channel.js: " + e);console.log(e.s
 tack);}
 try {eval("define(\"cordova/commandProxy\", function(require, exports, module) {\n\n\n// internal map of proxy function\nvar CommandProxyMap = {};\n\nmodule.exports = {\n\n    // example: cordova.commandProxy.add(\"Accelerometer\",{getCurrentAcceleration: function(successCallback, errorCallback, options) {...},...);\n    add:function(id,proxyObj) {\n        console.log(\"adding proxy for \" + id);\n        CommandProxyMap[id] = proxyObj;\n        return proxyObj;\n    },\n\n    // cordova.commandProxy.remove(\"Accelerometer\");\n    remove:function(id) {\n        var proxy = CommandProxyMap[id];\n        delete CommandProxyMap[id];\n        CommandProxyMap[id] = null;\n        return proxy;\n    },\n\n    get:function(service,action) {\n        return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );\n    }\n};\n});\n\n//@ sourceURL=lib/common/commandProxy.js")} catch(e) {console.log("exception: in lib/common/commandProxy.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/exec\", function(require, exports, module) {\n\n/**\n * Execute a cordova command.  It is up to the native side whether this action\n * is synchronous or asynchronous.  The native side can return:\n *      Synchronous: PluginResult object as a JSON string\n *      Asynchrounous: Empty string \"\"\n * If async, the native side will cordova.callbackSuccess or cordova.callbackError,\n * depending upon the result of the action.\n *\n * @param {Function} success    The success callback\n * @param {Function} fail       The fail callback\n * @param {String} service      The name of the service to use\n * @param {String} action       Action to be run in cordova\n * @param {String[]} [args]     Zero or more arguments to pass to the method\n */\n\nvar plugins = {\n    \"Device\": require('cordova/plugin/firefoxos/device'),\n    \"NetworkStatus\": require('cordova/plugin/firefoxos/network'),\n    \"Accelerometer\" : require('cordova/plugin/firefoxos/accelerometer')\
 n    //\"Notification\" : require('cordova/plugin/firefoxos/notification')\n};\n\nmodule.exports = function(success, fail, service, action, args) {\n    try {\n        console.error(\"exec:call plugin:\"+service+\":\"+action);\n        plugins[service][action](success, fail, args);\n    }\n    catch(e) {\n        console.error(\"missing exec: \" + service + \".\" + action);\n        console.error(args);\n        console.error(e);\n        console.error(e.stack);\n    }\n};\n\n});\n\n//@ sourceURL=lib/firefoxos/exec.js")} catch(e) {console.log("exception: in lib/firefoxos/exec.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/exec\", function(require, exports, module) {\n\n/**\n * Execute a cordova command.  It is up to the native side whether this action\n * is synchronous or asynchronous.  The native side can return:\n *      Synchronous: PluginResult object as a JSON string\n *      Asynchrounous: Empty string \"\"\n * If async, the native side will cordova.callbackSuccess or cordova.callbackError,\n * depending upon the result of the action.\n *\n * @param {Function} success    The success callback\n * @param {Function} fail       The fail callback\n * @param {String} service      The name of the service to use\n * @param {String} action       Action to be run in cordova\n * @param {String[]} [args]     Zero or more arguments to pass to the method\n */\n\nvar plugins = {\n    \"Device\": require('cordova/plugin/firefoxos/device'),\n    \"NetworkStatus\": require('cordova/plugin/firefoxos/network'),\n    \"Accelerometer\": require('cordova/plugin/firefoxos/accelerometer'),\
 n    \"Orientation\": require('cordova/plugin/firefoxos/orientation')\n    //\"Notification\" : require('cordova/plugin/firefoxos/notification')\n};\n\nmodule.exports = function(success, fail, service, action, args) {\n    try {\n        console.error(\"exec:call plugin:\"+service+\":\"+action);\n        plugins[service][action](success, fail, args);\n    }\n    catch(e) {\n        console.error(\"missing exec: \" + service + \".\" + action);\n        console.error(args);\n        console.error(e);\n        console.error(e.stack);\n    }\n};\n\n});\n\n//@ sourceURL=lib/firefoxos/exec.js")} catch(e) {console.log("exception: in lib/firefoxos/exec.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/modulemapper\", function(require, exports, module) {\n\nvar builder = require('cordova/builder'),\n    moduleMap = define.moduleMap,\n    symbolList,\n    deprecationMap;\n\nexports.reset = function() {\n    symbolList = [];\n    deprecationMap = {};\n};\n\nfunction addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {\n    if (!(moduleName in moduleMap)) {\n        throw new Error('Module ' + moduleName + ' does not exist.');\n    }\n    symbolList.push(strategy, moduleName, symbolPath);\n    if (opt_deprecationMessage) {\n        deprecationMap[symbolPath] = opt_deprecationMessage;\n    }\n}\n\n// Note: Android 2.3 does have Function.bind().\nexports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {\n    addEntry('c', moduleName, symbolPath, opt_deprecationMessage);\n};\n\nexports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {\n    addEntry('m', moduleName, symbolPath, opt_deprecationMessage);\n};\
 n\nexports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {\n    addEntry('d', moduleName, symbolPath, opt_deprecationMessage);\n};\n\nfunction prepareNamespace(symbolPath, context) {\n    if (!symbolPath) {\n        return context;\n    }\n    var parts = symbolPath.split('.');\n    var cur = context;\n    for (var i = 0, part; part = parts[i]; ++i) {\n        cur = cur[part] = cur[part] || {};\n    }\n    return cur;\n}\n\nexports.mapModules = function(context) {\n    var origSymbols = {};\n    context.CDV_origSymbols = origSymbols;\n    for (var i = 0, len = symbolList.length; i < len; i += 3) {\n        var strategy = symbolList[i];\n        var moduleName = symbolList[i + 1];\n        var symbolPath = symbolList[i + 2];\n        var lastDot = symbolPath.lastIndexOf('.');\n        var namespace = symbolPath.substr(0, lastDot);\n        var lastName = symbolPath.substr(lastDot + 1);\n\n        var module = require(moduleName);\n        var deprecationMsg = sy
 mbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;\n        var parentObj = prepareNamespace(namespace, context);\n        var target = parentObj[lastName];\n\n        if (strategy == 'm' && target) {\n            builder.recursiveMerge(target, module);\n        } else if ((strategy == 'd' && !target) || (strategy != 'd')) {\n            if (!(symbolPath in origSymbols)) {\n                origSymbols[symbolPath] = target;\n            }\n            builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);\n        }\n    }\n};\n\nexports.getOriginalSymbol = function(context, symbolPath) {\n    var origSymbols = context.CDV_origSymbols;\n    if (origSymbols && (symbolPath in origSymbols)) {\n        return origSymbols[symbolPath];\n    }\n    var parts = symbolPath.split('.');\n    var obj = context;\n    for (var i = 0; i < parts.length; ++i) {\n        obj = obj && obj[parts[i]];\n    }\n    ret
 urn obj;\n};\n\nexports.loadMatchingModules = function(matchingRegExp) {\n    for (var k in moduleMap) {\n        if (matchingRegExp.exec(k)) {\n            require(k);\n        }\n    }\n};\n\nexports.reset();\n\n\n});\n\n//@ sourceURL=lib/common/modulemapper.js")} catch(e) {console.log("exception: in lib/common/modulemapper.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/platform\", function(require, exports, module) {\n\nmodule.exports = {\n    id: \"firefoxos\",\n    initialize: function() {\n    }\n};\n});\n\n//@ sourceURL=lib/firefoxos/platform.js")} catch(e) {console.log("exception: in lib/firefoxos/platform.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/Acceleration\", function(require, exports, module) {\n\nvar Acceleration = function(x, y, z, timestamp) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    this.timestamp = timestamp || (new Date()).getTime();\n};\n\nmodule.exports = Acceleration;\n\n});\n\n//@ sourceURL=lib/common/plugin/Acceleration.js")} catch(e) {console.log("exception: in lib/common/plugin/Acceleration.js: " + e);console.log(e.stack);}
@@ -63,14 +63,14 @@ try {eval("define(\"cordova/plugin/FileEntry\", function(require, exports, modul
 try {eval("define(\"cordova/plugin/FileError\", function(require, exports, module) {\n\n/**\n * FileError\n */\nfunction FileError(error) {\n  this.code = error || null;\n}\n\n// File error codes\n// Found in DOMException\nFileError.NOT_FOUND_ERR = 1;\nFileError.SECURITY_ERR = 2;\nFileError.ABORT_ERR = 3;\n\n// Added by File API specification\nFileError.NOT_READABLE_ERR = 4;\nFileError.ENCODING_ERR = 5;\nFileError.NO_MODIFICATION_ALLOWED_ERR = 6;\nFileError.INVALID_STATE_ERR = 7;\nFileError.SYNTAX_ERR = 8;\nFileError.INVALID_MODIFICATION_ERR = 9;\nFileError.QUOTA_EXCEEDED_ERR = 10;\nFileError.TYPE_MISMATCH_ERR = 11;\nFileError.PATH_EXISTS_ERR = 12;\n\nmodule.exports = FileError;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileError.js")} catch(e) {console.log("exception: in lib/common/plugin/FileError.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/FileReader\", function(require, exports, module) {\n\nvar exec = require('cordova/exec'),\n    modulemapper = require('cordova/modulemapper'),\n    utils = require('cordova/utils'),\n    File = require('cordova/plugin/File'),\n    FileError = require('cordova/plugin/FileError'),\n    ProgressEvent = require('cordova/plugin/ProgressEvent'),\n    origFileReader = modulemapper.getOriginalSymbol(this, 'FileReader');\n\n/**\n * This class reads the mobile device file system.\n *\n * For Android:\n *      The root directory is the root of the file system.\n *      To read from the SD card, the file name is \"sdcard/my_file.txt\"\n * @constructor\n */\nvar FileReader = function() {\n    this._readyState = 0;\n    this._error = null;\n    this._result = null;\n    this._fileName = '';\n    this._realReader = origFileReader ? new origFileReader() : {};\n};\n\n// States\nFileReader.EMPTY = 0;\nFileReader.LOADING = 1;\nFileReader.DONE = 2;\n\nutils.defineGett
 er(FileReader.prototype, 'readyState', function() {\n    return this._fileName ? this._readyState : this._realReader.readyState;\n});\n\nutils.defineGetter(FileReader.prototype, 'error', function() {\n    return this._fileName ? this._error: this._realReader.error;\n});\n\nutils.defineGetter(FileReader.prototype, 'result', function() {\n    return this._fileName ? this._result: this._realReader.result;\n});\n\nfunction defineEvent(eventName) {\n    utils.defineGetterSetter(FileReader.prototype, eventName, function() {\n        return this._realReader[eventName] || null;\n    }, function(value) {\n        this._realReader[eventName] = value;\n    });\n}\ndefineEvent('onloadstart');    // When the read starts.\ndefineEvent('onprogress');     // While reading (and decoding) file or fileBlob data, and reporting partial file data (progress.loaded/progress.total)\ndefineEvent('onload');         // When the read has successfully completed.\ndefineEvent('onerror');        // When the read h
 as failed (see errors).\ndefineEvent('onloadend');      // When the request has completed (either in success or failure).\ndefineEvent('onabort');        // When the read has been aborted. For instance, by invoking the abort() method.\n\nfunction initRead(reader, file) {\n    // Already loading something\n    if (reader.readyState == FileReader.LOADING) {\n      throw new FileError(FileError.INVALID_STATE_ERR);\n    }\n\n    reader._result = null;\n    reader._error = null;\n    reader._readyState = FileReader.LOADING;\n\n    if (typeof file == 'string') {\n        // Deprecated in Cordova 2.4.\n        console.warning('Using a string argument with FileReader.readAs functions is deprecated.');\n        reader._fileName = file;\n    } else if (typeof file.fullPath == 'string') {\n        reader._fileName = file.fullPath;\n    } else {\n        reader._fileName = '';\n        return true;\n    }\n\n    reader.onloadstart && reader.onloadstart(new ProgressEvent(\"loadstart\", {target:r
 eader}));\n}\n\n/**\n * Abort reading file.\n */\nFileReader.prototype.abort = function() {\n    if (origFileReader && !this._fileName) {\n        return this._realReader.abort();\n    }\n    this._result = null;\n\n    if (this._readyState == FileReader.DONE || this._readyState == FileReader.EMPTY) {\n      return;\n    }\n\n    this._readyState = FileReader.DONE;\n\n    // If abort callback\n    if (typeof this.onabort === 'function') {\n        this.onabort(new ProgressEvent('abort', {target:this}));\n    }\n    // If load end callback\n    if (typeof this.onloadend === 'function') {\n        this.onloadend(new ProgressEvent('loadend', {target:this}));\n    }\n};\n\n/**\n * Read text file.\n *\n * @param file          {File} File object containing file properties\n * @param encoding      [Optional] (see http://www.iana.org/assignments/character-sets)\n */\nFileReader.prototype.readAsText = function(file, encoding) {\n    if (initRead(this, file)) {\n        return this._realReade
 r.readAsText(file, encoding);\n    }\n\n    // Default encoding is UTF-8\n    var enc = encoding ? encoding : \"UTF-8\";\n    var me = this;\n    var execArgs = [this._fileName, enc, file.start, file.end];\n\n    // Read file\n    exec(\n        // Success callback\n        function(r) {\n            // If DONE (cancelled), then don't do anything\n            if (me._readyState === FileReader.DONE) {\n                return;\n            }\n\n            // Save result\n            me._result = r;\n\n            // If onload callback\n            if (typeof me.onload === \"function\") {\n                me.onload(new ProgressEvent(\"load\", {target:me}));\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n        },\n        // Error callback\n        functi
 on(e) {\n            // If DONE (cancelled), then don't do anything\n            if (me._readyState === FileReader.DONE) {\n                return;\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            // null result\n            me._result = null;\n\n            // Save error\n            me._error = new FileError(e);\n\n            // If onerror callback\n            if (typeof me.onerror === \"function\") {\n                me.onerror(new ProgressEvent(\"error\", {target:me}));\n            }\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n        }, \"File\", \"readAsText\", execArgs);\n};\n\n\n/**\n * Read file and return data as a base64 encoded data url.\n * A data url is of the form:\n *      data:[<mediatype>][;base64],<data>\n *\n * @param file          {File} File object containing 
 file properties\n */\nFileReader.prototype.readAsDataURL = function(file) {\n    if (initRead(this, file)) {\n        return this._realReader.readAsDataURL(file);\n    }\n\n    var me = this;\n    var execArgs = [this._fileName, file.start, file.end];\n\n    // Read file\n    exec(\n        // Success callback\n        function(r) {\n            // If DONE (cancelled), then don't do anything\n            if (me._readyState === FileReader.DONE) {\n                return;\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            // Save result\n            me._result = r;\n\n            // If onload callback\n            if (typeof me.onload === \"function\") {\n                me.onload(new ProgressEvent(\"load\", {target:me}));\n            }\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n       
  },\n        // Error callback\n        function(e) {\n            // If DONE (cancelled), then don't do anything\n            if (me._readyState === FileReader.DONE) {\n                return;\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            me._result = null;\n\n            // Save error\n            me._error = new FileError(e);\n\n            // If onerror callback\n            if (typeof me.onerror === \"function\") {\n                me.onerror(new ProgressEvent(\"error\", {target:me}));\n            }\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n        }, \"File\", \"readAsDataURL\", execArgs);\n};\n\n/**\n * Read file and return data as a binary data.\n *\n * @param file          {File} File object containing file properties\n */\nFileReader.prototype.readAsBinaryString = func
 tion(file) {\n    if (initRead(this, file)) {\n        return this._realReader.readAsBinaryString(file);\n    }\n\n    var me = this;\n    var execArgs = [this._fileName, file.start, file.end];\n\n    // Read file\n    exec(\n        // Success callback\n        function(r) {\n            // If DONE (cancelled), then don't do anything\n            if (me._readyState === FileReader.DONE) {\n                return;\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            me._result = r;\n\n            // If onload callback\n            if (typeof me.onload === \"function\") {\n                me.onload(new ProgressEvent(\"load\", {target:me}));\n            }\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n        },\n        // Error callback\n        function(e) {\n            // If DONE (cancell
 ed), then don't do anything\n            if (me._readyState === FileReader.DONE) {\n                return;\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            me._result = null;\n\n            // Save error\n            me._error = new FileError(e);\n\n            // If onerror callback\n            if (typeof me.onerror === \"function\") {\n                me.onerror(new ProgressEvent(\"error\", {target:me}));\n            }\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n        }, \"File\", \"readAsBinaryString\", execArgs);\n};\n\n/**\n * Read file and return data as a binary data.\n *\n * @param file          {File} File object containing file properties\n */\nFileReader.prototype.readAsArrayBuffer = function(file) {\n    if (initRead(this, file)) {\n        return this._realReader.rea
 dAsArrayBuffer(file);\n    }\n\n    var me = this;\n    var execArgs = [this._fileName, file.start, file.end];\n\n    // Read file\n    exec(\n        // Success callback\n        function(r) {\n            // If DONE (cancelled), then don't do anything\n            if (me._readyState === FileReader.DONE) {\n                return;\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            me._result = r;\n\n            // If onload callback\n            if (typeof me.onload === \"function\") {\n                me.onload(new ProgressEvent(\"load\", {target:me}));\n            }\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n        },\n        // Error callback\n        function(e) {\n            // If DONE (cancelled), then don't do anything\n            if (me._readyState === FileReader.DONE) {\
 n                return;\n            }\n\n            // DONE state\n            me._readyState = FileReader.DONE;\n\n            me._result = null;\n\n            // Save error\n            me._error = new FileError(e);\n\n            // If onerror callback\n            if (typeof me.onerror === \"function\") {\n                me.onerror(new ProgressEvent(\"error\", {target:me}));\n            }\n\n            // If onloadend callback\n            if (typeof me.onloadend === \"function\") {\n                me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n            }\n        }, \"File\", \"readAsArrayBuffer\", execArgs);\n};\n\nmodule.exports = FileReader;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileReader.js")} catch(e) {console.log("exception: in lib/common/plugin/FileReader.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/FileSystem\", function(require, exports, module) {\n\nvar DirectoryEntry = require('cordova/plugin/DirectoryEntry');\n\n/**\n * An interface representing a file system\n *\n * @constructor\n * {DOMString} name the unique name of the file system (readonly)\n * {DirectoryEntry} root directory of the file system (readonly)\n */\nvar FileSystem = function(name, root) {\n    this.name = name || null;\n    if (root) {\n        this.root = new DirectoryEntry(root.name, root.fullPath);\n    }\n};\n\nmodule.exports = FileSystem;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileSystem.js")} catch(e) {console.log("exception: in lib/common/plugin/FileSystem.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/FileTransfer\", function(require, exports, module) {\n\nvar argscheck = require('cordova/argscheck'),\n    exec = require('cordova/exec'),\n    FileTransferError = require('cordova/plugin/FileTransferError'),\n    ProgressEvent = require('cordova/plugin/ProgressEvent');\n\nfunction newProgressEvent(result) {\n    var pe = new ProgressEvent();\n    pe.lengthComputable = result.lengthComputable;\n    pe.loaded = result.loaded;\n    pe.total = result.total;\n    return pe;\n}\n\nfunction getBasicAuthHeader(urlString) {\n    var header =  null;\n\n    if (window.btoa) {\n        // parse the url using the Location object\n        var url = document.createElement('a');\n        url.href = urlString;\n\n        var credentials = null;\n        var protocol = url.protocol + \"//\";\n        var origin = protocol + url.host;\n\n        // check whether there are the username:password credentials in the url\n        if (url.href.indexOf(origin) != 0) { // c
 redentials found\n            var atIndex = url.href.indexOf(\"@\");\n            credentials = url.href.substring(protocol.length, atIndex);\n        }\n\n        if (credentials) {\n            var authHeader = \"Authorization\";\n            var authHeaderValue = \"Basic \" + window.btoa(credentials);\n\n            header = {\n                name : authHeader,\n                value : authHeaderValue\n            };\n        }\n    }\n\n    return header;\n}\n\nvar idCounter = 0;\n\n/**\n * FileTransfer uploads a file to a remote server.\n * @constructor\n */\nvar FileTransfer = function() {\n    this._id = ++idCounter;\n    this.onprogress = null; // optional callback\n};\n\n/**\n* Given an absolute file path, uploads a file on the device to a remote server\n* using a multipart HTTP request.\n* @param filePath {String}           Full path of the file on the device\n* @param server {String}             URL of the server to receive the file\n* @param successCallback (Function}  
 Callback to be invoked when upload has completed\n* @param errorCallback {Function}    Callback to be invoked upon error\n* @param options {FileUploadOptions} Optional parameters such as file name and mimetype\n* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false\n*/\nFileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) {\n    argscheck.checkArgs('ssFFO*', 'FileTransfer.upload', arguments);\n    // check for options\n    var fileKey = null;\n    var fileName = null;\n    var mimeType = null;\n    var params = null;\n    var chunkedMode = true;\n    var headers = null;\n\n    var basicAuthHeader = getBasicAuthHeader(server);\n    if (basicAuthHeader) {\n        if (!options) {\n            options = new FileUploadOptions();\n        }\n        if (!options.headers) {\n            options.headers = {};\n        }\n        options.headers[basicAuthHeader.name] = basicAuthH
 eader.value;\n    }\n\n    if (options) {\n        fileKey = options.fileKey;\n        fileName = options.fileName;\n        mimeType = options.mimeType;\n        headers = options.headers;\n        if (options.chunkedMode !== null || typeof options.chunkedMode != \"undefined\") {\n            chunkedMode = options.chunkedMode;\n        }\n        if (options.params) {\n            params = options.params;\n        }\n        else {\n            params = {};\n        }\n    }\n\n    var fail = errorCallback && function(e) {\n        var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body);\n        errorCallback(error);\n    };\n\n    var self = this;\n    var win = function(result) {\n        if (typeof result.lengthComputable != \"undefined\") {\n            if (self.onprogress) {\n                self.onprogress(newProgressEvent(result));\n            }\n        } else {\n            successCallback && successCallback(result);\n        }\n    };\n    e
 xec(win, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers, this._id]);\n};\n\n/**\n * Downloads a file form a given URL and saves it to the specified directory.\n * @param source {String}          URL of the server to receive the file\n * @param target {String}         Full path of the file on the device\n * @param successCallback (Function}  Callback to be invoked when upload has completed\n * @param errorCallback {Function}    Callback to be invoked upon error\n * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false\n * @param options {FileDownloadOptions} Optional parameters such as headers\n */\nFileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts, options) {\n    argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments);\n    var self = this;\n\n    var basicAuthHeader = getBasicAuthHeader(source
 );\n    if (basicAuthHeader) {\n        if (!options) {\n            options = {};\n        }\n        if (!options.headers) {\n            options.headers = {};\n        }\n        options.headers[basicAuthHeader.name] = basicAuthHeader.value;\n    }\n\n    var headers = null;\n    if (options) {\n        headers = options.headers || null;\n    }\n\n    var win = function(result) {\n        if (typeof result.lengthComputable != \"undefined\") {\n            if (self.onprogress) {\n                return self.onprogress(newProgressEvent(result));\n            }\n        } else if (successCallback) {\n            var entry = null;\n            if (result.isDirectory) {\n                entry = new (require('cordova/plugin/DirectoryEntry'))();\n            }\n            else if (result.isFile) {\n                entry = new (require('cordova/plugin/FileEntry'))();\n            }\n            entry.isDirectory = result.isDirectory;\n            entry.isFile = result.isFile;\n         
    entry.name = result.name;\n            entry.fullPath = result.fullPath;\n            successCallback(entry);\n        }\n    };\n\n    var fail = errorCallback && function(e) {\n        var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body);\n        errorCallback(error);\n    };\n\n    exec(win, fail, 'FileTransfer', 'download', [source, target, trustAllHosts, this._id, headers]);\n};\n\n/**\n * Aborts the ongoing file transfer on this object\n * @param successCallback {Function}  Callback to be invoked upon success\n * @param errorCallback {Function}    Callback to be invoked upon error\n */\nFileTransfer.prototype.abort = function(successCallback, errorCallback) {\n    exec(successCallback, errorCallback, 'FileTransfer', 'abort', [this._id]);\n};\n\nmodule.exports = FileTransfer;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileTransfer.js")} catch(e) {console.log("exception: in lib/common/plugin/FileTransfer.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/plugin/FileTransfer\", function(require, exports, module) {\n\nvar argscheck = require('cordova/argscheck'),\n    exec = require('cordova/exec'),\n    FileTransferError = require('cordova/plugin/FileTransferError'),\n    ProgressEvent = require('cordova/plugin/ProgressEvent');\n\nfunction newProgressEvent(result) {\n    var pe = new ProgressEvent();\n    pe.lengthComputable = result.lengthComputable;\n    pe.loaded = result.loaded;\n    pe.total = result.total;\n    return pe;\n}\n\nfunction getBasicAuthHeader(urlString) {\n    var header =  null;\n\n    if (window.btoa) {\n        // parse the url using the Location object\n        var url = document.createElement('a');\n        url.href = urlString;\n\n        var credentials = null;\n        var protocol = url.protocol + \"//\";\n        var origin = protocol + url.host;\n\n        // check whether there are the username:password credentials in the url\n        if (url.href.indexOf(origin) !== 0) { // 
 credentials found\n            var atIndex = url.href.indexOf(\"@\");\n            credentials = url.href.substring(protocol.length, atIndex);\n        }\n\n        if (credentials) {\n            var authHeader = \"Authorization\";\n            var authHeaderValue = \"Basic \" + window.btoa(credentials);\n\n            header = {\n                name : authHeader,\n                value : authHeaderValue\n            };\n        }\n    }\n\n    return header;\n}\n\nvar idCounter = 0;\n\n/**\n * FileTransfer uploads a file to a remote server.\n * @constructor\n */\nvar FileTransfer = function() {\n    this._id = ++idCounter;\n    this.onprogress = null; // optional callback\n};\n\n/**\n* Given an absolute file path, uploads a file on the device to a remote server\n* using a multipart HTTP request.\n* @param filePath {String}           Full path of the file on the device\n* @param server {String}             URL of the server to receive the file\n* @param successCallback (Function} 
  Callback to be invoked when upload has completed\n* @param errorCallback {Function}    Callback to be invoked upon error\n* @param options {FileUploadOptions} Optional parameters such as file name and mimetype\n* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false\n*/\nFileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) {\n    argscheck.checkArgs('ssFFO*', 'FileTransfer.upload', arguments);\n    // check for options\n    var fileKey = null;\n    var fileName = null;\n    var mimeType = null;\n    var params = null;\n    var chunkedMode = true;\n    var headers = null;\n    var httpMethod = null;\n    var basicAuthHeader = getBasicAuthHeader(server);\n    if (basicAuthHeader) {\n        options = options || {};\n        options.headers = options.headers || {};\n        options.headers[basicAuthHeader.name] = basicAuthHeader.value;\n    }\n\n    if (options) {\n        f
 ileKey = options.fileKey;\n        fileName = options.fileName;\n        mimeType = options.mimeType;\n        headers = options.headers;\n        httpMethod = options.httpMethod || \"POST\";\n        if (httpMethod.toUpperCase() == \"PUT\"){\n            httpMethod = \"PUT\";\n        } else {\n            httpMethod = \"POST\";\n        }\n        if (options.chunkedMode !== null || typeof options.chunkedMode != \"undefined\") {\n            chunkedMode = options.chunkedMode;\n        }\n        if (options.params) {\n            params = options.params;\n        }\n        else {\n            params = {};\n        }\n    }\n\n    var fail = errorCallback && function(e) {\n        var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body);\n        errorCallback(error);\n    };\n\n    var self = this;\n    var win = function(result) {\n        if (typeof result.lengthComputable != \"undefined\") {\n            if (self.onprogress) {\n                self.
 onprogress(newProgressEvent(result));\n            }\n        } else {\n            successCallback && successCallback(result);\n        }\n    };\n    exec(win, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers, this._id, httpMethod]);\n};\n\n/**\n * Downloads a file form a given URL and saves it to the specified directory.\n * @param source {String}          URL of the server to receive the file\n * @param target {String}         Full path of the file on the device\n * @param successCallback (Function}  Callback to be invoked when upload has completed\n * @param errorCallback {Function}    Callback to be invoked upon error\n * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false\n * @param options {FileDownloadOptions} Optional parameters such as headers\n */\nFileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAll
 Hosts, options) {\n    argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments);\n    var self = this;\n\n    var basicAuthHeader = getBasicAuthHeader(source);\n    if (basicAuthHeader) {\n        options = options || {};\n        options.headers = options.headers || {};\n        options.headers[basicAuthHeader.name] = basicAuthHeader.value;\n    }\n\n    var headers = null;\n    if (options) {\n        headers = options.headers || null;\n    }\n\n    var win = function(result) {\n        if (typeof result.lengthComputable != \"undefined\") {\n            if (self.onprogress) {\n                return self.onprogress(newProgressEvent(result));\n            }\n        } else if (successCallback) {\n            var entry = null;\n            if (result.isDirectory) {\n                entry = new (require('cordova/plugin/DirectoryEntry'))();\n            }\n            else if (result.isFile) {\n                entry = new (require('cordova/plugin/FileEntry'))();\n            }
 \n            entry.isDirectory = result.isDirectory;\n            entry.isFile = result.isFile;\n            entry.name = result.name;\n            entry.fullPath = result.fullPath;\n            successCallback(entry);\n        }\n    };\n\n    var fail = errorCallback && function(e) {\n        var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body);\n        errorCallback(error);\n    };\n\n    exec(win, fail, 'FileTransfer', 'download', [source, target, trustAllHosts, this._id, headers]);\n};\n\n/**\n * Aborts the ongoing file transfer on this object. The original error\n * callback for the file transfer will be called if necessary.\n */\nFileTransfer.prototype.abort = function() {\n    exec(null, null, 'FileTransfer', 'abort', [this._id]);\n};\n\nmodule.exports = FileTransfer;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileTransfer.js")} catch(e) {console.log("exception: in lib/common/plugin/FileTransfer.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/FileTransferError\", function(require, exports, module) {\n\n/**\n * FileTransferError\n * @constructor\n */\nvar FileTransferError = function(code, source, target, status, body) {\n    this.code = code || null;\n    this.source = source || null;\n    this.target = target || null;\n    this.http_status = status || null;\n    this.body = body || null;\n};\n\nFileTransferError.FILE_NOT_FOUND_ERR = 1;\nFileTransferError.INVALID_URL_ERR = 2;\nFileTransferError.CONNECTION_ERR = 3;\nFileTransferError.ABORT_ERR = 4;\n\nmodule.exports = FileTransferError;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileTransferError.js")} catch(e) {console.log("exception: in lib/common/plugin/FileTransferError.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/FileUploadOptions\", function(require, exports, module) {\n\n/**\n * Options to customize the HTTP request used to upload files.\n * @constructor\n * @param fileKey {String}   Name of file request parameter.\n * @param fileName {String}  Filename to be used by the server. Defaults to image.jpg.\n * @param mimeType {String}  Mimetype of the uploaded file. Defaults to image/jpeg.\n * @param params {Object}    Object with key: value params to send to the server.\n * @param headers {Object}   Keys are header names, values are header values. Multiple\n *                           headers of the same name are not supported.\n */\nvar FileUploadOptions = function(fileKey, fileName, mimeType, params, headers) {\n    this.fileKey = fileKey || null;\n    this.fileName = fileName || null;\n    this.mimeType = mimeType || null;\n    this.params = params || null;\n    this.headers = headers || null;\n};\n\nmodule.exports = FileUploadOptions;\n\n});\n\n//@ sourc
 eURL=lib/common/plugin/FileUploadOptions.js")} catch(e) {console.log("exception: in lib/common/plugin/FileUploadOptions.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/plugin/FileUploadOptions\", function(require, exports, module) {\n\n/**\n * Options to customize the HTTP request used to upload files.\n * @constructor\n * @param fileKey {String}   Name of file request parameter.\n * @param fileName {String}  Filename to be used by the server. Defaults to image.jpg.\n * @param mimeType {String}  Mimetype of the uploaded file. Defaults to image/jpeg.\n * @param params {Object}    Object with key: value params to send to the server.\n * @param headers {Object}   Keys are header names, values are header values. Multiple\n *                           headers of the same name are not supported.\n */\nvar FileUploadOptions = function(fileKey, fileName, mimeType, params, headers, httpMethod) {\n    this.fileKey = fileKey || null;\n    this.fileName = fileName || null;\n    this.mimeType = mimeType || null;\n    this.params = params || null;\n    this.headers = headers || null;\n    this.httpMethod = httpMethod || null;\n};\n\n
 module.exports = FileUploadOptions;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileUploadOptions.js")} catch(e) {console.log("exception: in lib/common/plugin/FileUploadOptions.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/FileUploadResult\", function(require, exports, module) {\n\n/**\n * FileUploadResult\n * @constructor\n */\nvar FileUploadResult = function() {\n    this.bytesSent = 0;\n    this.responseCode = null;\n    this.response = null;\n};\n\nmodule.exports = FileUploadResult;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileUploadResult.js")} catch(e) {console.log("exception: in lib/common/plugin/FileUploadResult.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/FileWriter\", function(require, exports, module) {\n\nvar exec = require('cordova/exec'),\n    FileError = require('cordova/plugin/FileError'),\n    ProgressEvent = require('cordova/plugin/ProgressEvent');\n\n/**\n * This class writes to the mobile device file system.\n *\n * For Android:\n *      The root directory is the root of the file system.\n *      To write to the SD card, the file name is \"sdcard/my_file.txt\"\n *\n * @constructor\n * @param file {File} File object containing file properties\n * @param append if true write to the end of the file, otherwise overwrite the file\n */\nvar FileWriter = function(file) {\n    this.fileName = \"\";\n    this.length = 0;\n    if (file) {\n        this.fileName = file.fullPath || file;\n        this.length = file.size || 0;\n    }\n    // default is to write at the beginning of the file\n    this.position = 0;\n\n    this.readyState = 0; // EMPTY\n\n    this.result = null;\n\n    // Error\n    this
 .error = null;\n\n    // Event handlers\n    this.onwritestart = null;   // When writing starts\n    this.onprogress = null;     // While writing the file, and reporting partial file data\n    this.onwrite = null;        // When the write has successfully completed.\n    this.onwriteend = null;     // When the request has completed (either in success or failure).\n    this.onabort = null;        // When the write has been aborted. For instance, by invoking the abort() method.\n    this.onerror = null;        // When the write has failed (see errors).\n};\n\n// States\nFileWriter.INIT = 0;\nFileWriter.WRITING = 1;\nFileWriter.DONE = 2;\n\n/**\n * Abort writing file.\n */\nFileWriter.prototype.abort = function() {\n    // check for invalid state\n    if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {\n        throw new FileError(FileError.INVALID_STATE_ERR);\n    }\n\n    // set error\n    this.error = new FileError(FileError.ABORT_ERR);\n\n    this.read
 yState = FileWriter.DONE;\n\n    // If abort callback\n    if (typeof this.onabort === \"function\") {\n        this.onabort(new ProgressEvent(\"abort\", {\"target\":this}));\n    }\n\n    // If write end callback\n    if (typeof this.onwriteend === \"function\") {\n        this.onwriteend(new ProgressEvent(\"writeend\", {\"target\":this}));\n    }\n};\n\n/**\n * Writes data to the file\n *\n * @param text to be written\n */\nFileWriter.prototype.write = function(text) {\n    // Throw an exception if we are already writing a file\n    if (this.readyState === FileWriter.WRITING) {\n        throw new FileError(FileError.INVALID_STATE_ERR);\n    }\n\n    // WRITING state\n    this.readyState = FileWriter.WRITING;\n\n    var me = this;\n\n    // If onwritestart callback\n    if (typeof me.onwritestart === \"function\") {\n        me.onwritestart(new ProgressEvent(\"writestart\", {\"target\":me}));\n    }\n\n    // Write file\n    exec(\n        // Success callback\n        function(r) {
 \n            // If DONE (cancelled), then don't do anything\n            if (me.readyState === FileWriter.DONE) {\n                return;\n            }\n\n            // position always increases by bytes written because file would be extended\n            me.position += r;\n            // The length of the file is now where we are done writing.\n\n            me.length = me.position;\n\n            // DONE state\n            me.readyState = FileWriter.DONE;\n\n            // If onwrite callback\n            if (typeof me.onwrite === \"function\") {\n                me.onwrite(new ProgressEvent(\"write\", {\"target\":me}));\n            }\n\n            // If onwriteend callback\n            if (typeof me.onwriteend === \"function\") {\n                me.onwriteend(new ProgressEvent(\"writeend\", {\"target\":me}));\n            }\n        },\n        // Error callback\n        function(e) {\n            // If DONE (cancelled), then don't do anything\n            if (me.readyStat
 e === FileWriter.DONE) {\n                return;\n            }\n\n            // DONE state\n            me.readyState = FileWriter.DONE;\n\n            // Save error\n            me.error = new FileError(e);\n\n            // If onerror callback\n            if (typeof me.onerror === \"function\") {\n                me.onerror(new ProgressEvent(\"error\", {\"target\":me}));\n            }\n\n            // If onwriteend callback\n            if (typeof me.onwriteend === \"function\") {\n                me.onwriteend(new ProgressEvent(\"writeend\", {\"target\":me}));\n            }\n        }, \"File\", \"write\", [this.fileName, text, this.position]);\n};\n\n/**\n * Moves the file pointer to the location specified.\n *\n * If the offset is a negative number the position of the file\n * pointer is rewound.  If the offset is greater than the file\n * size the position is set to the end of the file.\n *\n * @param offset is the location to move the file pointer to.\n */\nFileWriter.
 prototype.seek = function(offset) {\n    // Throw an exception if we are already writing a file\n    if (this.readyState === FileWriter.WRITING) {\n        throw new FileError(FileError.INVALID_STATE_ERR);\n    }\n\n    if (!offset && offset !== 0) {\n        return;\n    }\n\n    // See back from end of file.\n    if (offset < 0) {\n        this.position = Math.max(offset + this.length, 0);\n    }\n    // Offset is bigger than file size so set position\n    // to the end of the file.\n    else if (offset > this.length) {\n        this.position = this.length;\n    }\n    // Offset is between 0 and file size so set the position\n    // to start writing.\n    else {\n        this.position = offset;\n    }\n};\n\n/**\n * Truncates the file to the size specified.\n *\n * @param size to chop the file at.\n */\nFileWriter.prototype.truncate = function(size) {\n    // Throw an exception if we are already writing a file\n    if (this.readyState === FileWriter.WRITING) {\n        throw new F
 ileError(FileError.INVALID_STATE_ERR);\n    }\n\n    // WRITING state\n    this.readyState = FileWriter.WRITING;\n\n    var me = this;\n\n    // If onwritestart callback\n    if (typeof me.onwritestart === \"function\") {\n        me.onwritestart(new ProgressEvent(\"writestart\", {\"target\":this}));\n    }\n\n    // Write file\n    exec(\n        // Success callback\n        function(r) {\n            // If DONE (cancelled), then don't do anything\n            if (me.readyState === FileWriter.DONE) {\n                return;\n            }\n\n            // DONE state\n            me.readyState = FileWriter.DONE;\n\n            // Update the length of the file\n            me.length = r;\n            me.position = Math.min(me.position, r);\n\n            // If onwrite callback\n            if (typeof me.onwrite === \"function\") {\n                me.onwrite(new ProgressEvent(\"write\", {\"target\":me}));\n            }\n\n            // If onwriteend callback\n            if (type
 of me.onwriteend === \"function\") {\n                me.onwriteend(new ProgressEvent(\"writeend\", {\"target\":me}));\n            }\n        },\n        // Error callback\n        function(e) {\n            // If DONE (cancelled), then don't do anything\n            if (me.readyState === FileWriter.DONE) {\n                return;\n            }\n\n            // DONE state\n            me.readyState = FileWriter.DONE;\n\n            // Save error\n            me.error = new FileError(e);\n\n            // If onerror callback\n            if (typeof me.onerror === \"function\") {\n                me.onerror(new ProgressEvent(\"error\", {\"target\":me}));\n            }\n\n            // If onwriteend callback\n            if (typeof me.onwriteend === \"function\") {\n                me.onwriteend(new ProgressEvent(\"writeend\", {\"target\":me}));\n            }\n        }, \"File\", \"truncate\", [this.fileName, size]);\n};\n\nmodule.exports = FileWriter;\n\n});\n\n//@ sourceURL=l
 ib/common/plugin/FileWriter.js")} catch(e) {console.log("exception: in lib/common/plugin/FileWriter.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/Flags\", function(require, exports, module) {\n\n/**\n * Supplies arguments to methods that lookup or create files and directories.\n *\n * @param create\n *            {boolean} file or directory if it doesn't exist\n * @param exclusive\n *            {boolean} used with create; if true the command will fail if\n *            target path exists\n */\nfunction Flags(create, exclusive) {\n    this.create = create || false;\n    this.exclusive = exclusive || false;\n}\n\nmodule.exports = Flags;\n\n});\n\n//@ sourceURL=lib/common/plugin/Flags.js")} catch(e) {console.log("exception: in lib/common/plugin/Flags.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/GlobalizationError\", function(require, exports, module) {\n\n\n/**\n * Globalization error object\n *\n * @constructor\n * @param code\n * @param message\n */\nvar GlobalizationError = function(code, message) {\n    this.code = code || null;\n    this.message = message || '';\n};\n\n// Globalization error codes\nGlobalizationError.UNKNOWN_ERROR = 0;\nGlobalizationError.FORMATTING_ERROR = 1;\nGlobalizationError.PARSING_ERROR = 2;\nGlobalizationError.PATTERN_ERROR = 3;\n\nmodule.exports = GlobalizationError;\n\n});\n\n//@ sourceURL=lib/common/plugin/GlobalizationError.js")} catch(e) {console.log("exception: in lib/common/plugin/GlobalizationError.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/InAppBrowser\", function(require, exports, module) {\n\nvar exec = require('cordova/exec');\nvar channel = require('cordova/channel');\n\nfunction InAppBrowser() {\n   this.channels = {\n        'loadstart': channel.create('loadstart'),\n        'loadstop' : channel.create('loadstop'),\n        'loaderror' : channel.create('loaderror'),\n        'exit' : channel.create('exit')\n   };\n}\n\nInAppBrowser.prototype = {\n    _eventHandler: function (event) {\n        if (event.type in this.channels) {\n            this.channels[event.type].fire(event);\n        }\n    },\n    close: function (eventname) {\n        exec(null, null, \"InAppBrowser\", \"close\", []);\n    },\n    addEventListener: function (eventname,f) {\n        if (eventname in this.channels) {\n            this.channels[eventname].subscribe(f);\n        }\n    },\n    removeEventListener: function(eventname, f) {\n        if (eventname in this.channels) {\n            this.channels[ev
 entname].unsubscribe(f);\n        }\n    }\n};\n\nmodule.exports = function(strUrl, strWindowName, strWindowFeatures) {\n    var iab = new InAppBrowser();\n    var cb = function(eventname) {\n       iab._eventHandler(eventname);\n    };\n    exec(cb, cb, \"InAppBrowser\", \"open\", [strUrl, strWindowName, strWindowFeatures]);\n    return iab;\n};\n\n\n});\n\n//@ sourceURL=lib/common/plugin/InAppBrowser.js")} catch(e) {console.log("exception: in lib/common/plugin/InAppBrowser.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/plugin/InAppBrowser\", function(require, exports, module) {\n\nvar exec = require('cordova/exec');\nvar channel = require('cordova/channel');\n\nfunction InAppBrowser() {\n   this.channels = {\n        'loadstart': channel.create('loadstart'),\n        'loadstop' : channel.create('loadstop'),\n        'loaderror' : channel.create('loaderror'),\n        'exit' : channel.create('exit')\n   };\n}\n\nInAppBrowser.prototype = {\n    _eventHandler: function (event) {\n        if (event.type in this.channels) {\n            this.channels[event.type].fire(event);\n        }\n    },\n    close: function (eventname) {\n        exec(null, null, \"InAppBrowser\", \"close\", []);\n    },\n    addEventListener: function (eventname,f) {\n        if (eventname in this.channels) {\n            this.channels[eventname].subscribe(f);\n        }\n    },\n    removeEventListener: function(eventname, f) {\n        if (eventname in this.channels) {\n            this.channels[ev
 entname].unsubscribe(f);\n        }\n    },\n    executeScript: function(injectDetails, cb) {\n        var script,\n            sourceString;\n        if (injectDetails.code) {\n            exec(cb, null, \"InAppBrowser\", \"injectScriptCode\", [injectDetails.code]);\n        } else if (injectDetails.file) {\n            sourceString = JSON.stringify(injectDetails.file);\n            script = \"(function(d) { var c = d.createElement('script'); c.src = \" + sourceString + \"; d.body.appendChild(c); })(document)\";\n            exec(cb, null, \"InAppBrowser\", \"injectScriptCode\", [script]);\n        } else {\n            throw new Error('executeScript requires exactly one of code or file to be specified');\n        }\n    },\n    insertCSS: function(injectDetails, cb) {\n        var script,\n            sourceString;\n        if (injectDetails.code) {\n            sourceString = JSON.stringify(injectDetails.code);\n            script = \"(function(d) { var c = d.createElement('style
 '); c.innerHTML = \" + sourceString + \"; d.body.appendChild(c); })(document)\";\n            exec(cb, null, \"InAppBrowser\", \"injectScriptCode\", [script]);\n        } else if (injectDetails.file) {\n            sourceString = JSON.stringify(injectDetails.file);\n            script = \"(function(d) { var c = d.createElement('link'); c.rel='stylesheet', c.type='text/css'; c.href = \" + sourceString + \"; d.body.appendChild(c); })(document)\";\n            exec(cb, null, \"InAppBrowser\", \"injectScriptCode\", [script]);\n        } else {\n            throw new Error('insertCSS requires exactly one of code or file to be specified');\n        }\n    }\n};\n\nmodule.exports = function(strUrl, strWindowName, strWindowFeatures) {\n    var iab = new InAppBrowser();\n    var cb = function(eventname) {\n       iab._eventHandler(eventname);\n    };\n    exec(cb, cb, \"InAppBrowser\", \"open\", [strUrl, strWindowName, strWindowFeatures]);\n    return iab;\n};\n\n\n});\n\n//@ sourceURL=lib/c
 ommon/plugin/InAppBrowser.js")} catch(e) {console.log("exception: in lib/common/plugin/InAppBrowser.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/LocalFileSystem\", function(require, exports, module) {\n\nvar exec = require('cordova/exec');\n\n/**\n * Represents a local file system.\n */\nvar LocalFileSystem = function() {\n\n};\n\nLocalFileSystem.TEMPORARY = 0; //temporary, with no guarantee of persistence\nLocalFileSystem.PERSISTENT = 1; //persistent\n\nmodule.exports = LocalFileSystem;\n\n});\n\n//@ sourceURL=lib/common/plugin/LocalFileSystem.js")} catch(e) {console.log("exception: in lib/common/plugin/LocalFileSystem.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/Media\", function(require, exports, module) {\n\nvar argscheck = require('cordova/argscheck'),\n    utils = require('cordova/utils'),\n    exec = require('cordova/exec');\n\nvar mediaObjects = {};\n\n/**\n * This class provides access to the device media, interfaces to both sound and video\n *\n * @constructor\n * @param src                   The file name or url to play\n * @param successCallback       The callback to be called when the file is done playing or recording.\n *                                  successCallback()\n * @param errorCallback         The callback to be called if there is an error.\n *                                  errorCallback(int errorCode) - OPTIONAL\n * @param statusCallback        The callback to be called when media status has changed.\n *                                  statusCallback(int statusCode) - OPTIONAL\n */\nvar Media = function(src, successCallback, errorCallback, statusCallback) {\n    argscheck.checkA
 rgs('SFFF', 'Media', arguments);\n    this.id = utils.createUUID();\n    mediaObjects[this.id] = this;\n    this.src = src;\n    this.successCallback = successCallback;\n    this.errorCallback = errorCallback;\n    this.statusCallback = statusCallback;\n    this._duration = -1;\n    this._position = -1;\n    exec(null, this.errorCallback, \"Media\", \"create\", [this.id, this.src]);\n};\n\n// Media messages\nMedia.MEDIA_STATE = 1;\nMedia.MEDIA_DURATION = 2;\nMedia.MEDIA_POSITION = 3;\nMedia.MEDIA_ERROR = 9;\n\n// Media states\nMedia.MEDIA_NONE = 0;\nMedia.MEDIA_STARTING = 1;\nMedia.MEDIA_RUNNING = 2;\nMedia.MEDIA_PAUSED = 3;\nMedia.MEDIA_STOPPED = 4;\nMedia.MEDIA_MSG = [\"None\", \"Starting\", \"Running\", \"Paused\", \"Stopped\"];\n\n// \"static\" function to return existing objs.\nMedia.get = function(id) {\n    return mediaObjects[id];\n};\n\n/**\n * Start or resume playing audio file.\n */\nMedia.prototype.play = function(options) {\n    exec(null, null, \"Media\", \"startPlayin
 gAudio\", [this.id, this.src, options]);\n};\n\n/**\n * Stop playing audio file.\n */\nMedia.prototype.stop = function() {\n    var me = this;\n    exec(function() {\n        me._position = 0;\n    }, this.errorCallback, \"Media\", \"stopPlayingAudio\", [this.id]);\n};\n\n/**\n * Seek or jump to a new time in the track..\n */\nMedia.prototype.seekTo = function(milliseconds) {\n    var me = this;\n    exec(function(p) {\n        me._position = p;\n    }, this.errorCallback, \"Media\", \"seekToAudio\", [this.id, milliseconds]);\n};\n\n/**\n * Pause playing audio file.\n */\nMedia.prototype.pause = function() {\n    exec(null, this.errorCallback, \"Media\", \"pausePlayingAudio\", [this.id]);\n};\n\n/**\n * Get duration of an audio file.\n * The duration is only set for audio that is playing, paused or stopped.\n *\n * @return      duration or -1 if not known.\n */\nMedia.prototype.getDuration = function() {\n    return this._duration;\n};\n\n/**\n * Get position of audio.\n */\nMedia.p
 rototype.getCurrentPosition = function(success, fail) {\n    var me = this;\n    exec(function(p) {\n        me._position = p;\n        success(p);\n    }, fail, \"Media\", \"getCurrentPositionAudio\", [this.id]);\n};\n\n/**\n * Start recording audio file.\n */\nMedia.prototype.startRecord = function() {\n    exec(null, this.errorCallback, \"Media\", \"startRecordingAudio\", [this.id, this.src]);\n};\n\n/**\n * Stop recording audio file.\n */\nMedia.prototype.stopRecord = function() {\n    exec(null, this.errorCallback, \"Media\", \"stopRecordingAudio\", [this.id]);\n};\n\n/**\n * Release the resources.\n */\nMedia.prototype.release = function() {\n    exec(null, this.errorCallback, \"Media\", \"release\", [this.id]);\n};\n\n/**\n * Adjust the volume.\n */\nMedia.prototype.setVolume = function(volume) {\n    exec(null, null, \"Media\", \"setVolume\", [this.id, volume]);\n};\n\n/**\n * Audio has status update.\n * PRIVATE\n *\n * @param id            The media object id (string)\n * 
 @param msgType       The 'type' of update this is\n * @param value         Use of value is determined by the msgType\n */\nMedia.onStatus = function(id, msgType, value) {\n\n    var media = mediaObjects[id];\n\n    if(media) {\n        switch(msgType) {\n            case Media.MEDIA_STATE :\n                media.statusCallback && media.statusCallback(value);\n                if(value == Media.MEDIA_STOPPED) {\n                    media.successCallback && media.successCallback();\n                }\n                break;\n            case Media.MEDIA_DURATION :\n                media._duration = value;\n                break;\n            case Media.MEDIA_ERROR :\n                media.errorCallback && media.errorCallback(value);\n                break;\n            case Media.MEDIA_POSITION :\n                media._position = Number(value);\n                break;\n            default :\n                console.error && console.error(\"Unhandled Media.onStatus :: \" + msgType);\n
                 break;\n        }\n    }\n    else {\n         console.error && console.error(\"Received Media.onStatus callback for unknown media :: \" + id);\n    }\n\n};\n\nmodule.exports = Media;\n\n});\n\n//@ sourceURL=lib/common/plugin/Media.js")} catch(e) {console.log("exception: in lib/common/plugin/Media.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/MediaError\", function(require, exports, module) {\n\n/**\n * This class contains information about any Media errors.\n*/\n/*\n According to :: http://dev.w3.org/html5/spec-author-view/video.html#mediaerror\n We should never be creating these objects, we should just implement the interface\n which has 1 property for an instance, 'code'\n\n instead of doing :\n    errorCallbackFunction( new MediaError(3,'msg') );\nwe should simply use a literal :\n    errorCallbackFunction( {'code':3} );\n */\n\n var _MediaError = window.MediaError;\n\n\nif(!_MediaError) {\n    window.MediaError = _MediaError = function(code, msg) {\n        this.code = (typeof code != 'undefined') ? code : null;\n        this.message = msg || \"\"; // message is NON-standard! do not use!\n    };\n}\n\n_MediaError.MEDIA_ERR_NONE_ACTIVE    = _MediaError.MEDIA_ERR_NONE_ACTIVE    || 0;\n_MediaError.MEDIA_ERR_ABORTED        = _MediaError.MEDIA_ERR_ABORTED        || 1;\n_MediaError.MEDIA
 _ERR_NETWORK        = _MediaError.MEDIA_ERR_NETWORK        || 2;\n_MediaError.MEDIA_ERR_DECODE         = _MediaError.MEDIA_ERR_DECODE         || 3;\n_MediaError.MEDIA_ERR_NONE_SUPPORTED = _MediaError.MEDIA_ERR_NONE_SUPPORTED || 4;\n// TODO: MediaError.MEDIA_ERR_NONE_SUPPORTED is legacy, the W3 spec now defines it as below.\n// as defined by http://dev.w3.org/html5/spec-author-view/video.html#error-codes\n_MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = _MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED || 4;\n\nmodule.exports = _MediaError;\n\n});\n\n//@ sourceURL=lib/common/plugin/MediaError.js")} catch(e) {console.log("exception: in lib/common/plugin/MediaError.js: " + e);console.log(e.stack);}
@@ -124,6 +124,6 @@ try {eval("define(\"cordova/utils\", function(require, exports, module) {\n\nvar
 window.cordova = require('cordova');
 
 try {eval("\n(function (context) {\n    // Replace navigator before any modules are required(), to ensure it happens as soon as possible.\n    // We replace it so that properties that can't be clobbered can instead be overridden.\n    function replaceNavigator(origNavigator) {\n        var CordovaNavigator = function() {};\n        CordovaNavigator.prototype = origNavigator;\n        var newNavigator = new CordovaNavigator();\n        // This work-around really only applies to new APIs that are newer than Function.bind.\n        // Without it, APIs such as getGamepads() break.\n        if (CordovaNavigator.bind) {\n            for (var key in origNavigator) {\n                if (typeof origNavigator[key] == 'function') {\n                    newNavigator[key] = origNavigator[key].bind(origNavigator);\n                }\n            }\n        }\n        return newNavigator;\n    }\n    if (context.navigator) {\n        context.navigator = replaceNavigator(context.navigator);\n    }
 \n\n    var channel = require(\"cordova/channel\");\n\n    // _nativeReady is global variable that the native side can set\n    // to signify that the native code is ready. It is a global since\n    // it may be called before any cordova JS is ready.\n    if (window._nativeReady) {\n        channel.onNativeReady.fire();\n    }\n\n    /**\n     * Create all cordova objects once page has fully loaded and native side is ready.\n     */\n    channel.join(function() {\n        var builder = require('cordova/builder'),\n            platform = require('cordova/platform');\n\n        builder.buildIntoButDoNotClobber(platform.defaults, context);\n        builder.buildIntoAndClobber(platform.clobbers, context);\n        builder.buildIntoAndMerge(platform.merges, context);\n\n        // Call the platform-specific initialization\n        platform.initialize();\n\n        // Fire event to notify that all objects are created\n        channel.onCordovaReady.fire();\n\n        // Fire onDeviceReady
  event once all constructors have run and\n        // cordova info has been received from native side.\n        channel.join(function() {\n            require('cordova').fireDocumentEvent('deviceready');\n        }, channel.deviceReadyChannelsArray);\n\n    }, [ channel.onDOMContentLoaded, channel.onNativeReady, channel.onPluginsReady ]);\n\n}(window));\n\n//@ sourceURL=lib/scripts/bootstrap.js")} catch(e) {console.log("exception: in lib/scripts/bootstrap.js: " + e);console.log(e.stack);}
-try {eval("\n// Tries to load all plugins' js-modules.\n// This is an async process, but onDeviceReady is blocked on onPluginsReady.\n// onPluginsReady is fired when there are no plugins to load, or they are all done.\n(function (context) {\n    // To be populated with the handler by handlePluginsObject.\n    var onScriptLoadingComplete;\n\n    var scriptCounter = 0;\n    function scriptLoadedCallback() {\n        scriptCounter--;\n        if (scriptCounter === 0) {\n            onScriptLoadingComplete && onScriptLoadingComplete();\n        }\n    }\n\n    // Helper function to inject a <script> tag.\n    function injectScript(path) {\n        scriptCounter++;\n        var script = document.createElement(\"script\");\n        script.onload = scriptLoadedCallback;\n        script.src = path;\n        document.head.appendChild(script);\n    }\n\n    // Called when:\n    // * There are plugins defined and all plugins are finished loading.\n    // * There are no plugins to load.\n    fu
 nction finishPluginLoading() {\n        context.cordova.require('cordova/channel').onPluginsReady.fire();\n    }\n\n    // Handler for the cordova_plugins.json content.\n    // See plugman's plugin_loader.js for the details of this object.\n    // This function is only called if the really is a plugins array that isn't empty.\n    // Otherwise the XHR response handler will just call finishPluginLoading().\n    function handlePluginsObject(modules) {\n        // First create the callback for when all plugins are loaded.\n        var mapper = context.cordova.require('cordova/modulemapper');\n        onScriptLoadingComplete = function() {\n            // Loop through all the plugins and then through their clobbers and merges.\n            for (var i = 0; i < modules.length; i++) {\n                var module = modules[i];\n                if (!module) continue;\n\n                if (module.clobbers && module.clobbers.length) {\n                    for (var j = 0; j < module.clobbers.l
 ength; j++) {\n                        mapper.clobbers(module.id, module.clobbers[j]);\n                    }\n                }\n\n                if (module.merges && module.merges.length) {\n                    for (var k = 0; k < module.merges.length; k++) {\n                        mapper.merges(module.id, module.merges[k]);\n                    }\n                }\n\n                // Finally, if runs is truthy we want to simply require() the module.\n                // This can be skipped if it had any merges or clobbers, though,\n                // since the mapper will already have required the module.\n                if (module.runs && !(module.clobbers && module.clobbers.length) && !(module.merges && module.merges.length)) {\n                    context.cordova.require(module.id);\n                }\n            }\n\n            finishPluginLoading();\n        };\n\n        // Now inject the scripts.\n        for (var i = 0; i < modules.length; i++) {\n            inje
 ctScript(modules[i].file);\n        }\n    }\n\n    // Try to XHR the cordova_plugins.json file asynchronously.\n    var xhr = new context.XMLHttpRequest();\n    xhr.onreadystatechange = function() {\n        if (this.readyState != 4) { // not DONE\n            return;\n        }\n\n        // If the response is a JSON string which composes an array, call handlePluginsObject.\n        // If the request fails, or the response is not a JSON array, just call finishPluginLoading.\n        if (this.status == 200) {\n            var obj = JSON.parse(this.responseText);\n            if (obj && obj instanceof Array && obj.length > 0) {\n                handlePluginsObject(obj);\n            } else {\n                finishPluginLoading();\n            }\n        } else {\n            finishPluginLoading();\n        }\n    };\n    xhr.open('GET', 'cordova_plugins.json', true); // Async\n    xhr.send();\n}(window));\n\n\n//@ sourceURL=lib/scripts/plugin_loader.js")} catch(e) {console.log("exc
 eption: in lib/scripts/plugin_loader.js: " + e);console.log(e.stack);}
+try {eval("\n// Tries to load all plugins' js-modules.\n// This is an async process, but onDeviceReady is blocked on onPluginsReady.\n// onPluginsReady is fired when there are no plugins to load, or they are all done.\n(function (context) {\n    // To be populated with the handler by handlePluginsObject.\n    var onScriptLoadingComplete;\n\n    var scriptCounter = 0;\n    function scriptLoadedCallback() {\n        scriptCounter--;\n        if (scriptCounter === 0) {\n            onScriptLoadingComplete && onScriptLoadingComplete();\n        }\n    }\n\n    // Helper function to inject a <script> tag.\n    function injectScript(path) {\n        scriptCounter++;\n        var script = document.createElement(\"script\");\n        script.onload = scriptLoadedCallback;\n        script.src = path;\n        document.head.appendChild(script);\n    }\n\n    // Called when:\n    // * There are plugins defined and all plugins are finished loading.\n    // * There are no plugins to load.\n    fu
 nction finishPluginLoading() {\n        context.cordova.require('cordova/channel').onPluginsReady.fire();\n    }\n\n    // Handler for the cordova_plugins.json content.\n    // See plugman's plugin_loader.js for the details of this object.\n    // This function is only called if the really is a plugins array that isn't empty.\n    // Otherwise the XHR response handler will just call finishPluginLoading().\n    function handlePluginsObject(modules) {\n        // First create the callback for when all plugins are loaded.\n        var mapper = context.cordova.require('cordova/modulemapper');\n        onScriptLoadingComplete = function() {\n            // Loop through all the plugins and then through their clobbers and merges.\n            for (var i = 0; i < modules.length; i++) {\n                var module = modules[i];\n                if (!module) continue;\n\n                if (module.clobbers && module.clobbers.length) {\n                    for (var j = 0; j < module.clobbers.l
 ength; j++) {\n                        mapper.clobbers(module.id, module.clobbers[j]);\n                    }\n                }\n\n                if (module.merges && module.merges.length) {\n                    for (var k = 0; k < module.merges.length; k++) {\n                        mapper.merges(module.id, module.merges[k]);\n                    }\n                }\n\n                // Finally, if runs is truthy we want to simply require() the module.\n                // This can be skipped if it had any merges or clobbers, though,\n                // since the mapper will already have required the module.\n                if (module.runs && !(module.clobbers && module.clobbers.length) && !(module.merges && module.merges.length)) {\n                    context.cordova.require(module.id);\n                }\n            }\n\n            finishPluginLoading();\n        };\n\n        // Now inject the scripts.\n        for (var i = 0; i < modules.length; i++) {\n            inje
 ctScript(modules[i].file);\n        }\n    }\n\n\n    // Try to XHR the cordova_plugins.json file asynchronously.\n    try { // we commented we were going to try, so let us actually try and catch \n        var xhr = new context.XMLHttpRequest();\n        xhr.onload = function() {\n            // If the response is a JSON string which composes an array, call handlePluginsObject.\n            // If the request fails, or the response is not a JSON array, just call finishPluginLoading.\n            var obj = JSON.parse(this.responseText);\n            if (obj && obj instanceof Array && obj.length > 0) {\n                handlePluginsObject(obj);\n            } else {\n                finishPluginLoading();\n            }\n        };\n        xhr.onerror = function() {\n            finishPluginLoading();\n        };\n        xhr.open('GET', 'cordova_plugins.json', true); // Async\n        xhr.send();\n    }\n    catch(err){\n        finishPluginLoading();\n    }\n}(window));\n\n\n//@ sou
 rceURL=lib/scripts/plugin_loader.js")} catch(e) {console.log("exception: in lib/scripts/plugin_loader.js: " + e);console.log(e.stack);}
 
 })();
\ No newline at end of file