http://git-wip-us.apache.org/repos/asf/atlas-website/blob/58bb55a6/api/v2/ui/swagger-ui.js
----------------------------------------------------------------------
diff --git a/api/v2/ui/swagger-ui.js b/api/v2/ui/swagger-ui.js
index 34da79d..5219d03 100644
--- a/api/v2/ui/swagger-ui.js
+++ b/api/v2/ui/swagger-ui.js
@@ -1,6 +1,6 @@
 /**
  * swagger-ui - Swagger UI is a dependency-free collection of HTML, 
JavaScript, and CSS assets that dynamically generate beautiful documentation 
from a Swagger-compliant API
- * @version v2.2.5
+ * @version v2.2.10
  * @link http://swagger.io
  * @license Apache-2.0
  */
@@ -218,6 +218,28 @@ templates['main'] = 
template({"1":function(container,depth0,helpers,partials,dat
     + "    </h4>\n    </div>\n</div>\n";
 },"useData":true});
 templates['oauth2'] = 
template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1;
+
+  return "<p>Authorization URL: "
+    + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || 
helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? 
depth0.authorizationUrl : depth0),{"name":"sanitize","hash":{},"data":data})) 
!= null ? stack1 : "")
+    + "</p>";
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1;
+
+  return "<p>Token URL: "
+    + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || 
helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? 
depth0.tokenUrl : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? 
stack1 : "")
+    + "</p>";
+},"5":function(container,depth0,helpers,partials,data) {
+    return "        <p>Please input username and password for password flow 
authorization</p>\n        <fieldset>\n            <div><label>Username: <input 
class=\"oauth-username\" type=\"text\" name=\"username\"></label></div>\n       
     <div><label>Password: <input class=\"oauth-password\" type=\"password\" 
name=\"password\"></label></div>\n        </fieldset>\n";
+},"7":function(container,depth0,helpers,partials,data) {
+    var stack1;
+
+  return "        <p>Setup client authentication."
+    + ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != 
null ? depth0.requireClientAuthenticaiton : 
depth0),{"name":"if","hash":{},"fn":container.program(8, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+    + "</p>\n        <fieldset>\n            <div><label>Type:\n               
 <select class=\"oauth-client-authentication-type\" 
name=\"client-authentication-type\">\n                    <option 
value=\"none\" selected>None or other</option>\n                    <option 
value=\"basic\">Basic auth</option>\n                    <option 
value=\"request-body\">Request body</option>\n                </select>\n       
     </label></div>\n            <div class=\"oauth-client-authentication\" 
hidden>\n                <div><label>ClientId: <input class=\"oauth-client-id\" 
type=\"text\" name=\"client-id\"></label></div>\n                
<div><label>Secret: <input class=\"oauth-client-secret\" type=\"text\" 
name=\"client-secret\"></label></div>\n            </div>\n        
</fieldset>\n";
+},"8":function(container,depth0,helpers,partials,data) {
+    return "(Required)";
+},"10":function(container,depth0,helpers,partials,data) {
     var stack1, alias1=depth0 != null ? depth0 : {}, 
alias2=helpers.helperMissing;
 
   return "            <li>\n                <input class=\"oauth-scope\" 
type=\"checkbox\" data-scope=\""
@@ -229,9 +251,9 @@ templates['oauth2'] = 
template({"1":function(container,depth0,helpers,partials,d
     + "</label><br/>\n                <span class=\"api-scope-desc\">"
     + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || 
alias2).call(alias1,(depth0 != null ? depth0.description : 
depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
     + "\n"
-    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? 
depth0.OAuthSchemeKey : 
depth0),{"name":"if","hash":{},"fn":container.program(2, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? 
depth0.OAuthSchemeKey : 
depth0),{"name":"if","hash":{},"fn":container.program(11, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
     + "                </span>\n            </li>\n";
-},"2":function(container,depth0,helpers,partials,data) {
+},"11":function(container,depth0,helpers,partials,data) {
     var stack1;
 
   return "                        ("
@@ -240,16 +262,21 @@ templates['oauth2'] = 
template({"1":function(container,depth0,helpers,partials,d
 },"compiler":[7,">= 
4.0.0"],"main":function(container,depth0,helpers,partials,data) {
     var stack1, alias1=depth0 != null ? depth0 : {}, 
alias2=helpers.helperMissing;
 
-  return "<div>\n    <h3 class=\"auth__title\">Select OAuth2.0 Scopes</h3>\n   
 <p>"
+  return "<div>\n    <h3 class=\"auth__title\">OAuth2.0</h3>\n    <p>"
     + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || 
alias2).call(alias1,(depth0 != null ? depth0.description : 
depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
-    + "</p>\n    <p>Scopes are used to grant an application different levels 
of access to data on behalf of the end user. Each API may declare one or more 
scopes.\n        <a href=\"#\">Learn how to use</a>\n    </p>\n    <p><strong> "
-    + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || 
alias2).call(alias1,(depth0 != null ? depth0.appName : 
depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
-    + " </strong> API requires the following scopes. Select which ones you 
want to grant to Swagger UI.</p>\n    <p>Authorization URL: "
-    + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || 
alias2).call(alias1,(depth0 != null ? depth0.authorizationUrl : 
depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
-    + "</p>\n    <p>flow: "
+    + "</p>\n    "
+    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? 
depth0.authorizationUrl : 
depth0),{"name":"if","hash":{},"fn":container.program(1, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+    + "\n    "
+    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tokenUrl : 
depth0),{"name":"if","hash":{},"fn":container.program(3, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+    + "\n    <p>flow: "
     + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || 
alias2).call(alias1,(depth0 != null ? depth0.flow : 
depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
-    + "</p>\n    <ul class=\"api-popup-scopes\">\n"
-    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.scopes : 
depth0),{"name":"each","hash":{},"fn":container.program(1, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+    + "</p>\n"
+    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? 
depth0.isPasswordFlow : 
depth0),{"name":"if","hash":{},"fn":container.program(5, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? 
depth0.clientAuthentication : 
depth0),{"name":"if","hash":{},"fn":container.program(7, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+    + "    <p><strong> "
+    + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || 
alias2).call(alias1,(depth0 != null ? depth0.appName : 
depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
+    + " </strong> API requires the following scopes. Select which ones you 
want to grant to Swagger UI.</p>\n    <p>Scopes are used to grant an 
application different levels of access to data on behalf of the end user. Each 
API may declare one or more scopes.\n        <a href=\"#\">Learn how to 
use</a>\n    </p>\n    <ul class=\"api-popup-scopes\">\n"
+    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.scopes : 
depth0),{"name":"each","hash":{},"fn":container.program(10, data, 
0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
     + "    </ul>\n</div>";
 },"useData":true});
 templates['operation'] = 
template({"1":function(container,depth0,helpers,partials,data) {
@@ -591,7 +618,7 @@ templates['param_required'] = 
template({"1":function(container,depth0,helpers,pa
 },"10":function(container,depth0,helpers,partials,data) {
     var stack1, alias1=depth0 != null ? depth0 : {}, 
alias2=helpers.helperMissing;
 
-  return "                     <input class='parameter' class='required' 
type='file' name='"
+  return "                     <input class='parameter required' type='file' 
name='"
     + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || 
alias2).call(alias1,(depth0 != null ? depth0.name : 
depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
     + "' id='"
     + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || 
alias2).call(alias1,(depth0 != null ? depth0.valueId : 
depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
@@ -3048,10 +3075,13 @@ Handlebars.registerHelper('sanitize', function (text) {
     if (text === undefined) { return ''; }
 
     result = sanitizeHtml(text, {
-        allowedTags: [ 'div', 'span', 'b', 'i', 'em', 'strong', 'a' ],
+        allowedTags: [ 'div', 'span', 'b', 'i', 'em', 'strong', 'a', 'br', 
'table', 'tbody', 'tr', 'th', 'td' ],
         allowedAttributes: {
             'div': [ 'class' ],
             'span': [ 'class' ],
+            'table': [ 'class' ],
+            'td': [ 'class' ],
+            'th': [ 'colspan' ],
             'a': [ 'href' ]
         }
     });
@@ -3145,7 +3175,7 @@ 
state.pendingcb++;ret=writeOrBuffer(this,state,chunk,encoding,cb)}return ret};Wr
 
 /**
  * swagger-client - swagger-client is a javascript client for use with 
swaggering APIs.
- * @version v2.1.21
+ * @version v2.1.29
  * @link http://swagger.io
  * @license Apache-2.0
  */
@@ -3208,7 +3238,7 @@ var _ = {
 };
 
 /**
- * SwaggerAuthorizations applys the correct authorization to an operation 
being executed
+ * SwaggerAuthorizations applies the correct authorization to an operation 
being executed
  */
 var SwaggerAuthorizations = module.exports.SwaggerAuthorizations = function 
(authz) {
   this.authz = authz || {};
@@ -3484,6 +3514,7 @@ SwaggerClient.prototype.initialize = function (url, 
options) {
   this.defaultSuccessCallback = options.defaultSuccessCallback || null;
   this.defaultErrorCallback = options.defaultErrorCallback || null;
   this.modelPropertyMacro = options.modelPropertyMacro || null;
+  this.connectionAgent = options.connectionAgent || null;
   this.parameterMacro = options.parameterMacro || null;
   this.usePromise = options.usePromise || null;
 
@@ -3549,6 +3580,8 @@ SwaggerClient.prototype.build = function (mock) {
   var obj = {
     useJQuery: this.useJQuery,
     jqueryAjaxCache: this.jqueryAjaxCache,
+    connectionAgent: this.connectionAgent,
+    enableCookies: this.enableCookies,
     url: this.url,
     method: 'get',
     headers: {
@@ -3635,30 +3668,58 @@ SwaggerClient.prototype.buildFromSpec = function 
(response) {
   this.info = response.info || {};
   this.produces = response.produces;
   this.schemes = response.schemes || [];
-  this.securityDefinitions = response.securityDefinitions;
+  this.securityDefinitions = _.cloneDeep(response.securityDefinitions);
   this.security = response.security;
   this.title = response.title || '';
 
+  var key, definedTags = {}, k, location, self = this, i;
+
   if (response.externalDocs) {
     this.externalDocs = response.externalDocs;
   }
 
   // legacy support
-  this.authSchemes = response.securityDefinitions;
-
-  var definedTags = {};
-  var k;
+  this.authSchemes = this.securityDefinitions;
+
+  if(this.securityDefinitions) {
+    for(key in this.securityDefinitions) {
+      var securityDefinition = this.securityDefinitions[key];
+      securityDefinition.vendorExtensions = {};
+      for(var ext in securityDefinition) {
+        helpers.extractExtensions(ext, securityDefinition);
+        if (ext === 'scopes') {
+          var scopes = securityDefinition[ext];
+          if(typeof scopes === 'object') {
+            scopes.vendorExtensions = {};
+            for (var s in scopes) {
+              helpers.extractExtensions(s, scopes);
+              if(s.indexOf('x-') === 0) {
+                delete scopes[s];
+              }
+            }
+          }
+        }
+      }
+    }
+  }
 
   if (Array.isArray(response.tags)) {
     definedTags = {};
 
     for (k = 0; k < response.tags.length; k++) {
-      var t = response.tags[k];
+      var t = _.cloneDeep(response.tags[k]);
       definedTags[t.name] = t;
+      for(i in t) {
+        if(i === 'externalDocs' && typeof t[i] === 'object') {
+          for(var j in t[i]) {
+            helpers.extractExtensions(j, t[i]);
+          }
+        }
+        helpers.extractExtensions(i, t);
+      }
     }
   }
 
-  var location;
 
   if (typeof this.url === 'string') {
     location = this.parseUri(this.url);
@@ -3670,14 +3731,27 @@ SwaggerClient.prototype.buildFromSpec = function 
(response) {
       else {
         this.scheme = location.scheme || 'http';
       }
-    } else if (typeof this.scheme === 'undefined') {
+    } else if (typeof window !== 'undefined' && 
window.location.protocol.indexOf('chrome-extension') === 0) {
+               // if it is chrome swagger ui extension scheme then let swagger 
doc url scheme decide the protocol
+               this.scheme = location.scheme;
+       } else if (typeof this.scheme === 'undefined') {
       if(typeof window !== 'undefined') {
         var scheme = window.location.protocol.replace(':','');
-        if(this.schemes.indexOf(scheme) !== -1) {
+        if(scheme === 'https' && this.schemes.indexOf(scheme) === -1) {
+          // can't call http from https served page in a browser!
+          helpers.log('Cannot call a http server from https inside a 
browser!');
+          this.scheme = 'http';
+        }
+        else if(this.schemes.indexOf(scheme) !== -1) {
           this.scheme = scheme;
         }
         else {
-          this.scheme = 'http';
+          if(this.schemes.indexOf('https') !== -1) {
+            this.scheme = 'https';
+          }
+          else {
+            this.scheme = 'http';
+          }
         }
       }
       else {
@@ -3704,8 +3778,6 @@ SwaggerClient.prototype.buildFromSpec = function 
(response) {
 
   this.definitions = response.definitions;
 
-  var key;
-
   for (key in this.definitions) {
     var model = new Model(key, this.definitions[key], this.models, 
this.modelPropertyMacro);
 
@@ -3715,7 +3787,6 @@ SwaggerClient.prototype.buildFromSpec = function 
(response) {
   }
 
   // get paths, create functions for each operationId
-  var self = this;
 
   // Bind help to 'client.apis'
   self.apis.help = _.bind(self.help, self);
@@ -3757,6 +3828,20 @@ SwaggerClient.prototype.buildFromSpec = function 
(response) {
         self.models,
         self.clientAuthorizations);
 
+      operationObject.connectionAgent = self.connectionAgent;
+      operationObject.vendorExtensions = {};
+      for(i in operation) {
+        helpers.extractExtensions(i, operationObject, operation[i]);
+      }
+      operationObject.externalDocs = operation.externalDocs;
+      if(operationObject.externalDocs) {
+        operationObject.externalDocs = 
_.cloneDeep(operationObject.externalDocs);
+        operationObject.externalDocs.vendorExtensions = {};
+        for(i in operationObject.externalDocs) {
+          helpers.extractExtensions(i, operationObject.externalDocs);
+        }
+      }
+
       // bind self operation's execute command to the api
       _.forEach(tags, function (tag) {
         var clientProperty = _.indexOf(reservedClientTags, tag) > -1 ? '_' + 
tag : tag;
@@ -3794,6 +3879,7 @@ SwaggerClient.prototype.buildFromSpec = function 
(response) {
           if (!_.isUndefined(tagDef)) {
             operationGroup.description = tagDef.description;
             operationGroup.externalDocs = tagDef.externalDocs;
+            operationGroup.vendorExtensions = tagDef.vendorExtensions;
           }
 
           self[clientProperty].help = _.bind(self.help, operationGroup);
@@ -3998,7 +4084,6 @@ SwaggerClient.prototype.setSchemes = function (schemes) {
   }
 };
 
-
 SwaggerClient.prototype.fail = function (message) {
   if (this.usePromise) {
     this.deferredClient.reject(message);
@@ -4039,7 +4124,7 @@ module.exports.fail = function (message) {
   log(message);
 };
 
-var optionHtml = module.exports.optionHtml = function (label, value) {
+module.exports.optionHtml = function (label, value) {
   return '<tr><td class="optionName">' + label + ':</td><td>' + value + 
'</td></tr>';
 };
 
@@ -4051,7 +4136,7 @@ var resolveSchema = module.exports.resolveSchema = 
function (schema) {
   return schema;
 };
 
-var simpleRef = module.exports.simpleRef = function (name) {
+module.exports.simpleRef = function (name) {
   if (typeof name === 'undefined') {
     return null;
   }
@@ -4063,9 +4148,29 @@ var simpleRef = module.exports.simpleRef = function 
(name) {
   }
 };
 
+/**
+ * helper to remove extensions and add them to an object
+ *
+ * @param keyname
+ * @param obj
+ */
+module.exports.extractExtensions = function (keyname, obj, value) {
+  if(!keyname || !obj) {
+    return;
+  }
 
+  if (typeof keyname === 'string' && keyname.indexOf('x-') === 0) {
+    obj.vendorExtensions = obj.vendorExtensions || {};
+    if(value) {
+      obj.vendorExtensions[keyname] = value;
+    }
+    else {
+      obj.vendorExtensions[keyname] = obj[keyname];
+    }
+  }
+};
 }).call(this,require('_process'))
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHtcbiAgaXNQbGFpbk9iamVjdDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzUGxhaW5PYmplY3QnKSxcbiAgaW5kZXhPZjogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mJylcbn07XG5cbm1vZHVsZS5leHBvcnRzLl9fYmluZCA9IGZ1bmN0aW9uIChmbiwgbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIGZuLmFwcGx5KG1lLCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxudmFyIGxvZyA9IG1vZHVsZS5leHBvcnRzLmxvZyA9IGZ1bmN0aW9uKCkge1xuICAvLyBPbmx5IGxvZyBpZiBhdmFpb
 
GFibGUgYW5kIHdlJ3JlIG5vdCB0ZXN0aW5nXG4gIGlmIChjb25zb2xlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcpIHtcbiAgICBjb25zb2xlLmxvZyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpWzBdKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZmFpbCA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gIGxvZyhtZXNzYWdlKTtcbn07XG5cbnZhciBvcHRpb25IdG1sID0gbW9kdWxlLmV4cG9ydHMub3B0aW9uSHRtbCA9IGZ1bmN0aW9uIChsYWJlbCwgdmFsdWUpIHtcbiAgcmV0dXJuICc8dHI+PHRkIGNsYXNzPVwib3B0aW9uTmFtZVwiPicgKyBsYWJlbCArICc6PC90ZD48dGQ+JyArIHZhbHVlICsgJzwvdGQ+PC90cj4nO1xufTtcblxudmFyIHJlc29sdmVTY2hlbWEgPSBtb2R1bGUuZXhwb3J0cy5yZXNvbHZlU2NoZW1hID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICBpZiAoXy5pc1BsYWluT2JqZWN0KHNjaGVtYS5zY2hlbWEpKSB7XG4gICAgc2NoZW1hID0gcmVzb2x2ZVNjaGVtYShzY2hlbWEuc2NoZW1hKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG52YXIgc2ltcGxlUmVmID0gbW9kdWxlLmV4cG9ydHMuc2ltcGxlUmVmID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKG5hbWUuaW5kZXhPZignIy9kZWZpbml0aW9ucy8nKSA9PT0gMCkge1xuIC
 
AgIHJldHVybiBuYW1lLnN1YnN0cmluZygnIy9kZWZpbml0aW9ucy8nLmxlbmd0aCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cbn07XG5cbiJdfQ==
+
 
},{"_process":12,"lodash-compat/array/indexOf":49,"lodash-compat/lang/isPlainObject":145}],5:[function(require,module,exports){
 (function (Buffer){
 'use strict';
@@ -4108,6 +4213,10 @@ SwaggerHttp.prototype.execute = function (obj, opts) {
   }
   client.opts = opts || {};
 
+  if (opts && opts.requestAgent) {
+    request = opts.requestAgent;
+  }
+
   // legacy support
   var hasJQuery = false;
   if(typeof window !== 'undefined') {
@@ -4139,14 +4248,14 @@ SwaggerHttp.prototype.execute = function (obj, opts) {
 
   var responseInterceptor = function(data) {
     if(opts && opts.responseInterceptor) {
-      data = opts.responseInterceptor.apply(data);
+      data = opts.responseInterceptor.apply(data, [obj]);
     }
     return success(data);
   };
 
   var errorInterceptor = function(data) {
     if(opts && opts.responseInterceptor) {
-      data = opts.responseInterceptor.apply(data);
+      data = opts.responseInterceptor.apply(data, [obj]);
     }
     error(data);
   };
@@ -4156,7 +4265,12 @@ SwaggerHttp.prototype.execute = function (obj, opts) {
   };
 
   obj.on.response = function(data) {
-    responseInterceptor(data);
+    if(data && data.status >= 400) {
+      errorInterceptor(data);
+    }
+    else {
+      responseInterceptor(data);
+    }
   };
 
   if (_.isObject(obj) && _.isObject(obj.body)) {
@@ -4284,8 +4398,13 @@ SuperagentHttpClient.prototype.execute = function (obj) {
     method = 'del';
   }
   var headers = obj.headers || {};
+
   var r = request[method](obj.url);
 
+  if (obj.connectionAgent) {
+    r.agent(obj.connectionAgent);
+  }
+
   if (timeout) {
     r.timeout(timeout);
   }
@@ -4310,33 +4429,7 @@ SuperagentHttpClient.prototype.execute = function (obj) {
       if (contentType.indexOf('multipart/form-data') === 0) {
         delete headers['Content-Type'];
         if({}.toString.apply(obj.body) === '[object FormData]') {
-          var itr = obj.body.keys();
-          var p = [];
-          while(true) {
-            var v = itr.next();
-            if(v.done) {
-              break;
-            }
-            var key = v.value;
-            // only once
-            if(p.indexOf(key) === -1) {
-              p.push(key);
-              var value = obj.body.getAll(key);
-              if({}.toString.apply(value) === '[object File]') {
-                r.attach(key, value);
-              }
-              else {
-                if (Array.isArray(value)) {
-                  for (var t in value) {
-                    r.field(key, value[t]);
-                  }
-                }
-                else {
-                  r.field(key, value);
-                }
-              }
-            }
-          }
+          r.send(obj.body);
         }
         else {
           var keyname, value, v;
@@ -4354,6 +4447,7 @@ SuperagentHttpClient.prototype.execute = function (obj) {
         }
       }
       else if (_.isObject(obj.body)) {
+        // non multipart/form-data
         obj.body = JSON.stringify(obj.body);
         r.send(obj.body);
       }
@@ -4448,11 +4542,13 @@ SuperagentHttpClient.prototype. binaryRequest = 
function (accept) {
   if(!accept) {
     return false;
   }
-  return (/^image/i).test(accept) || (/^application\/pdf/).test(accept);
+  return (/^image/i).test(accept)
+    || (/^application\/pdf/).test(accept)
+    || (/^application\/octet-stream/).test(accept);
 };
 
 }).call(this,require("buffer").Buffer)
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9odHRwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ
 
UNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQT
 
tBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG52YXIgcmVxdWVzdCA9IHJlcXVpcmUoJ3N1cGVyYWdlbnQnKTtcbnZhciBqc3lhbWwgPSByZXF1aXJlKCdqcy15YW1sJyk7XG52YXIgXyA9IHtcbiAgaXNPYmplY3Q6IHJlcXVpcmUoJ2x
 
vZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCcpLFxuICBrZXlzOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L29iamVjdC9rZXlzJylcbn07XG5cbi8qXG4gKiBKUXVlcnlIdHRwQ2xpZW50IGlzIGEgbGlnaHQtd2VpZ2h0LCBub2RlIG9yIGJyb3dzZXIgSFRUUCBjbGllbnRcbiAqL1xudmFyIEpRdWVyeUh0dHBDbGllbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMudHlwZSA9ICdKUXVlcnlIdHRwQ2xpZW50Jztcbn07XG5cbi8qXG4gKiBTdXBlcmFnZW50SHR0cENsaWVudCBpcyBhIGxpZ2h0LXdlaWdodCwgbm9kZSBvciBicm93c2VyIEhUVFAgY2xpZW50XG4gKi9cbnZhciBTdXBlcmFnZW50SHR0cENsaWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy50eXBlID0gJ1N1cGVyYWdlbnRIdHRwQ2xpZW50Jztcbn07XG5cbi8qKlxuICogU3dhZ2dlckh0dHAgaXMgYSB3cmFwcGVyIGZvciBleGVjdXRpbmcgcmVxdWVzdHNcbiAqL1xudmFyIFN3YWdnZXJIdHRwID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7fTtcblxuU3dhZ2dlckh0dHAucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAob2JqLCBvcHRzKSB7XG4gIHZhciBjbGllbnQ7XG5cbiAgaWYob3B0cyAmJiBvcHRzLmNsaWVudCkge1xuICAgIGNsaWVudCA9IG9wdHMuY2xpZW50O1xuICB9XG4gIGVsc2Uge1xuICAgIGNsaWVudCA9IG5ldyBTdXBlcmFnZW50SHR0cENsaWVudChvcHRzKTtcbiAgfVxuICBjbGllbnQub3B0cyA9IG9wdHMgfHwge307XG5c
 
biAgLy8gbGVnYWN5IHN1cHBvcnRcbiAgdmFyIGhhc0pRdWVyeSA9IGZhbHNlO1xuICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmKHR5cGVvZiB3aW5kb3cualF1ZXJ5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaGFzSlF1ZXJ5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgLy8gT1BUSU9OUyBzdXBwb3J0XG4gIGlmKG9iai5tZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gJ29wdGlvbnMnICYmIGNsaWVudC50eXBlID09PSAnU3VwZXJhZ2VudEh0dHBDbGllbnQnKSB7XG4gICAgbG9nKCdmb3JjaW5nIGpRdWVyeSBhcyBPUFRJT05TIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFN1cGVyQWdlbnQnKTtcbiAgICBvYmoudXNlSlF1ZXJ5ID0gdHJ1ZTtcbiAgfVxuICBpZih0aGlzLmlzSW50ZXJuZXRFeHBsb3JlcigpICYmIChvYmoudXNlSlF1ZXJ5ID09PSBmYWxzZSB8fCAhaGFzSlF1ZXJ5ICkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24hIEpRdWVyeSBpcyByZXF1aXJlZCBidXQgbm90IGF2YWlsYWJsZScpO1xuICB9XG4gIGlmICgob2JqICYmIG9iai51c2VKUXVlcnkgPT09IHRydWUpIHx8IHRoaXMuaXNJbnRlcm5ldEV4cGxvcmVyKCkgJiYgaGFzSlF1ZXJ5KSB7XG4gICAgY2xpZW50ID0gbmV3IEpRdWVyeUh0dHBDbGllbnQob3B0cyk7XG4gIH1cblxuICB2YXIgc3VjY2VzcyA9IG9iai5vbi5yZXNwb25zZTtcbiAgdmFyIGVycm9yID0gb2JqLm9uL
 
mVycm9yO1xuXG4gIHZhciByZXF1ZXN0SW50ZXJjZXB0b3IgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgaWYob3B0cyAmJiBvcHRzLnJlcXVlc3RJbnRlcmNlcHRvcikge1xuICAgICAgZGF0YSA9IG9wdHMucmVxdWVzdEludGVyY2VwdG9yLmFwcGx5KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcblxuICB2YXIgcmVzcG9uc2VJbnRlcmNlcHRvciA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBpZihvcHRzICYmIG9wdHMucmVzcG9uc2VJbnRlcmNlcHRvcikge1xuICAgICAgZGF0YSA9IG9wdHMucmVzcG9uc2VJbnRlcmNlcHRvci5hcHBseShkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3MoZGF0YSk7XG4gIH07XG5cbiAgdmFyIGVycm9ySW50ZXJjZXB0b3IgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgaWYob3B0cyAmJiBvcHRzLnJlc3BvbnNlSW50ZXJjZXB0b3IpIHtcbiAgICAgIGRhdGEgPSBvcHRzLnJlc3BvbnNlSW50ZXJjZXB0b3IuYXBwbHkoZGF0YSk7XG4gICAgfVxuICAgIGVycm9yKGRhdGEpO1xuICB9O1xuXG4gIG9iai5vbi5lcnJvciA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBlcnJvckludGVyY2VwdG9yKGRhdGEpO1xuICB9O1xuXG4gIG9iai5vbi5yZXNwb25zZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICByZXNwb25zZUludGVyY2VwdG9yKGRhdGEpO1xuICB9O1xuXG4gIGlmIChfLmlzT2JqZWN0KG9iaikgJiYgXy5pc09iamVjdChvYmouYm9keSkpIHtcbiAgICAvLyBzcG
 
VjaWFsIHByb2Nlc3NpbmcgZm9yIGZpbGUgdXBsb2FkcyB2aWEganF1ZXJ5XG4gICAgaWYgKG9iai5ib2R5LnR5cGUgJiYgb2JqLmJvZHkudHlwZSA9PT0gJ2Zvcm1EYXRhJyl7XG4gICAgICBpZihvcHRzLnVzZUpRdWVyeSkge1xuICAgICAgICBvYmouY29udGVudFR5cGUgPSBmYWxzZTtcbiAgICAgICAgb2JqLnByb2Nlc3NEYXRhID0gZmFsc2U7XG4gICAgICAgIGRlbGV0ZSBvYmouaGVhZGVyc1snQ29udGVudC1UeXBlJ107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb2JqID0gcmVxdWVzdEludGVyY2VwdG9yKG9iaikgfHwgb2JqO1xuICBpZiAob2JqLmJlZm9yZVNlbmQpIHtcbiAgICBvYmouYmVmb3JlU2VuZChmdW5jdGlvbihfb2JqKSB7XG4gICAgICBjbGllbnQuZXhlY3V0ZShfb2JqIHx8IG9iaik7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY2xpZW50LmV4ZWN1dGUob2JqKTtcbiAgfVxuXG4gIHJldHVybiAob2JqLmRlZmVycmVkKSA/IG9iai5kZWZlcnJlZC5wcm9taXNlIDogb2JqO1xufTtcblxuU3dhZ2dlckh0dHAucHJvdG90eXBlLmlzSW50ZXJuZXRFeHBsb3JlciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGRldGVjdGVkSUUgPSBmYWxzZTtcblxuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgIHZhciBuYXYgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAobmF2LmluZGV4T2YoJ21
 
zaWUnKSAhPT0gLTEpIHtcbiAgICAgIHZhciB2ZXJzaW9uID0gcGFyc2VJbnQobmF2LnNwbGl0KCdtc2llJylbMV0pO1xuXG4gICAgICBpZiAodmVyc2lvbiA8PSA4KSB7XG4gICAgICAgIGRldGVjdGVkSUUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXRlY3RlZElFO1xufTtcblxuSlF1ZXJ5SHR0cENsaWVudC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGpxID0gdGhpcy5qUXVlcnkgfHwgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5qUXVlcnkpO1xuICB2YXIgY2IgPSBvYmoub247XG4gIHZhciByZXF1ZXN0ID0gb2JqO1xuXG4gIGlmKHR5cGVvZiBqcSA9PT0gJ3VuZGVmaW5lZCcgfHwganEgPT09IGZhbHNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uISBKUXVlcnkgaXMgcmVxdWlyZWQgYnV0IG5vdCBhdmFpbGFibGUnKTtcbiAgfVxuXG4gIG9iai50eXBlID0gb2JqLm1ldGhvZDtcbiAgb2JqLmNhY2hlID0gb2JqLmpxdWVyeUFqYXhDYWNoZTtcbiAgb2JqLmRhdGEgPSBvYmouYm9keTtcbiAgZGVsZXRlIG9iai5qcXVlcnlBamF4Q2FjaGU7XG4gIGRlbGV0ZSBvYmoudXNlSlF1ZXJ5O1xuICBkZWxldGUgb2JqLmJvZHk7XG5cbiAgb2JqLmNvbXBsZXRlID0gZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgdmFyIGhlYWRlcnMgPSB7fTtcbiAgICB2YXIgaGVhZGVyQXJyYXkg
 
PSByZXNwb25zZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKS5zcGxpdCgnXFxuJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlckFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdG9TcGxpdCA9IGhlYWRlckFycmF5W2ldLnRyaW0oKTtcblxuICAgICAgaWYgKHRvU3BsaXQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VwYXJhdG9yID0gdG9TcGxpdC5pbmRleE9mKCc6Jyk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IC0xKSB7XG4gICAgICAgIC8vIE5hbWUgYnV0IG5vIHZhbHVlIGluIHRoZSBoZWFkZXJcbiAgICAgICAgaGVhZGVyc1t0b1NwbGl0XSA9IG51bGw7XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBuYW1lID0gdG9TcGxpdC5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKS50cmltKCk7XG4gICAgICB2YXIgdmFsdWUgPSB0b1NwbGl0LnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxKS50cmltKCk7XG5cbiAgICAgIGhlYWRlcnNbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB2YXIgb3V0ID0ge1xuICAgICAgdXJsOiByZXF1ZXN0LnVybCxcbiAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICBkYXRhOiByZXNwb25zZS5yZXNwb25zZVRleHQsXG4gICAgI
 
CBoZWFkZXJzOiBoZWFkZXJzXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICB2YXIgcG9zc2libGVPYmogPSAgcmVzcG9uc2UucmVzcG9uc2VKU09OIHx8IGpzeWFtbC5zYWZlTG9hZChyZXNwb25zZS5yZXNwb25zZVRleHQpO1xuICAgICAgb3V0Lm9iaiA9ICh0eXBlb2YgcG9zc2libGVPYmogPT09ICdzdHJpbmcnKSA/IHt9IDogcG9zc2libGVPYmo7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGRvIG5vdCBzZXQgb3V0Lm9ialxuICAgICAgaGVscGVycy5sb2coJ3VuYWJsZSB0byBwYXJzZSBKU09OL1lBTUwgY29udGVudCcpO1xuICAgIH1cblxuICAgIC8vIEkgY2FuIHRocm93LCBvciBwYXJzZSBudWxsP1xuICAgIG91dC5vYmogPSBvdXQub2JqIHx8IG51bGw7XG5cbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDIwMCAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDApIHtcbiAgICAgIGNiLnJlc3BvbnNlKG91dCk7XG4gICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDAgfHwgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDAgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgNTk5KSkge1xuICAgICAgY2IuZXJyb3Iob3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNiLnJlc3BvbnNlKG91dCk7XG4gICAgfVxuICB9O1xuXG4gIGpxLnN1cHBvcnQuY29ycyA9IHRydWU7XG5cbiAgcmV0dXJuIGpxLmFqYXgob2JqKTtcbn07XG5cblN1cGVyYWdlbnRIdHRwQ2xpZW50LnByb3RvdHlwZS5leGVjdXRlID
 
0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgbWV0aG9kID0gb2JqLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB2YXIgdGltZW91dCA9IG9iai50aW1lb3V0O1xuXG4gIGlmIChtZXRob2QgPT09ICdkZWxldGUnKSB7XG4gICAgbWV0aG9kID0gJ2RlbCc7XG4gIH1cbiAgdmFyIGhlYWRlcnMgPSBvYmouaGVhZGVycyB8fCB7fTtcbiAgdmFyIHIgPSByZXF1ZXN0W21ldGhvZF0ob2JqLnVybCk7XG5cbiAgaWYgKHRpbWVvdXQpIHtcbiAgICByLnRpbWVvdXQodGltZW91dCk7XG4gIH1cblxuICBpZiAob2JqLmVuYWJsZUNvb2tpZXMpIHtcbiAgICByLndpdGhDcmVkZW50aWFscygpO1xuICB9XG5cbiAgdmFyIGFjY2VwdCA9IG9iai5oZWFkZXJzLkFjY2VwdDtcblxuICBpZih0aGlzLmJpbmFyeVJlcXVlc3QoYWNjZXB0KSkge1xuICAgIHIub24oJ3JlcXVlc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZih0aGlzLnhocikge1xuICAgICAgICB0aGlzLnhoci5yZXNwb25zZVR5cGUgPSAnYmxvYic7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZihvYmouYm9keSkge1xuICAgIGlmKF8uaXNPYmplY3Qob2JqLmJvZHkpKSB7XG4gICAgICB2YXIgY29udGVudFR5cGUgPSBvYmouaGVhZGVyc1snQ29udGVudC1UeXBlJ10gfHwgJyc7XG4gICAgICBpZiAoY29udGVudFR5cGUuaW5kZXhPZignbXVsdGlwYXJ0L2Zvcm0tZGF0YScpID09PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBoZWFkZXJzWydDb250ZW50LVR5cGUnXTtcbiA
 
gICAgICAgaWYoe30udG9TdHJpbmcuYXBwbHkob2JqLmJvZHkpID09PSAnW29iamVjdCBGb3JtRGF0YV0nKSB7XG4gICAgICAgICAgdmFyIGl0ciA9IG9iai5ib2R5LmtleXMoKTtcbiAgICAgICAgICB2YXIgcCA9IFtdO1xuICAgICAgICAgIHdoaWxlKHRydWUpIHtcbiAgICAgICAgICAgIHZhciB2ID0gaXRyLm5leHQoKTtcbiAgICAgICAgICAgIGlmKHYuZG9uZSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBrZXkgPSB2LnZhbHVlO1xuICAgICAgICAgICAgLy8gb25seSBvbmNlXG4gICAgICAgICAgICBpZihwLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgcC5wdXNoKGtleSk7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9iai5ib2R5LmdldEFsbChrZXkpO1xuICAgICAgICAgICAgICBpZih7fS50b1N0cmluZy5hcHBseSh2YWx1ZSkgPT09ICdbb2JqZWN0IEZpbGVdJykge1xuICAgICAgICAgICAgICAgIHIuYXR0YWNoKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByLmZpZWxkKGtleSwgdmFsdWVbdF0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAg
 
ICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHIuZmllbGQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBrZXluYW1lLCB2YWx1ZSwgdjtcbiAgICAgICAgICBmb3IgKGtleW5hbWUgaW4gb2JqLmJvZHkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gb2JqLmJvZHlba2V5bmFtZV07XG4gICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICBmb3IodiBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHIuZmllbGQoa2V5bmFtZSwgdik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICByLmZpZWxkKGtleW5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKF8uaXNPYmplY3Qob2JqLmJvZHkpKSB7XG4gICAgICAgIG9iai5ib2R5ID0gSlNPTi5zdHJpbmdpZnkob2JqLmJvZHkpO1xuICAgICAgICByLnNlbmQob2JqLmJvZHkpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHIuc2VuZChvYmouYm9keSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIG5hbWU7XG4gIGZvciAobmFtZSBpbiBoZWFkZXJzKSB7XG4gICAgci5zZXQobmFtZSwga
 
GVhZGVyc1tuYW1lXSk7XG4gIH1cblxuICBpZih0eXBlb2Ygci5idWZmZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICByLmJ1ZmZlcigpOyAvLyBmb3JjZSBzdXBlcmFnZW50IHRvIHBvcHVsYXRlIHJlcy50ZXh0IHdpdGggdGhlIHJhdyByZXNwb25zZSBkYXRhXG4gIH1cblxuICByLmVuZChmdW5jdGlvbiAoZXJyLCByZXMpIHtcbiAgICByZXMgPSByZXMgfHwge1xuICAgICAgc3RhdHVzOiAwLFxuICAgICAgaGVhZGVyczoge2Vycm9yOiAnbm8gcmVzcG9uc2UgZnJvbSBzZXJ2ZXInfVxuICAgIH07XG4gICAgdmFyIHJlc3BvbnNlID0ge1xuICAgICAgdXJsOiBvYmoudXJsLFxuICAgICAgbWV0aG9kOiBvYmoubWV0aG9kLFxuICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnNcbiAgICB9O1xuICAgIHZhciBjYjtcblxuICAgIGlmICghZXJyICYmIHJlcy5lcnJvcikge1xuICAgICAgZXJyID0gcmVzLmVycm9yO1xuICAgIH1cblxuICAgIGlmIChlcnIgJiYgb2JqLm9uICYmIG9iai5vbi5lcnJvcikge1xuICAgICAgcmVzcG9uc2UuZXJyT2JqID0gZXJyO1xuICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gcmVzID8gcmVzLnN0YXR1cyA6IDUwMDtcbiAgICAgIHJlc3BvbnNlLnN0YXR1c1RleHQgPSByZXMgPyByZXMudGV4dCA6IGVyci5tZXNzYWdlO1xuICAgICAgaWYgKHJlcy5oZWFkZXJzICYmIHJlcy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgICBpZiAocmVzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddLmluZG
 
V4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA+PSAwKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3BvbnNlLm9iaiA9IEpTT04ucGFyc2UocmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXNwb25zZS5vYmogPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2IgPSBvYmoub24uZXJyb3I7XG4gICAgfSBlbHNlIGlmIChyZXMgJiYgb2JqLm9uICYmIG9iai5vbi5yZXNwb25zZSkge1xuICAgICAgdmFyIHBvc3NpYmxlT2JqO1xuXG4gICAgICAvLyBBbHJlYWR5IHBhcnNlZCBieSBieSBzdXBlcmFnZW50P1xuICAgICAgaWYgKHJlcy5ib2R5ICYmIF8ua2V5cyhyZXMuYm9keSkubGVuZ3RoID4gMCkge1xuICAgICAgICBwb3NzaWJsZU9iaiA9IHJlcy5ib2R5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwb3NzaWJsZU9iaiA9IGpzeWFtbC5zYWZlTG9hZChyZXMudGV4dCk7XG4gICAgICAgICAgLy8gY2FuIHBhcnNlIGludG8gYSBzdHJpbmcuLi4gd2hpY2ggd2UgZG9uJ3QgbmVlZCBydW5uaW5nIGFyb3VuZCBpbiB0aGUgc3lzdGVtXG4gICAgICAgICAgcG9zc2libGVPYmogPSAodHlwZW9mIHBvc3NpYmxlT2JqID09PSAnc3RyaW5nJykgPyBudWxsIDogcG9zc2libGVPYmo7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBoZWxwZXJzLmxvZyg
 
nY2Fubm90IHBhcnNlIEpTT04vWUFNTCBjb250ZW50Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gbnVsbCBtZWFucyB3ZSBjYW4ndCBwYXJzZSBpbnRvIG9iamVjdFxuICAgICAgaWYodHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBCdWZmZXIuaXNCdWZmZXIocG9zc2libGVPYmopKSB7XG4gICAgICAgIHJlc3BvbnNlLmRhdGEgPSBwb3NzaWJsZU9iajtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZXNwb25zZS5vYmogPSAodHlwZW9mIHBvc3NpYmxlT2JqID09PSAnb2JqZWN0JykgPyBwb3NzaWJsZU9iaiA6IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJlc3BvbnNlLnN0YXR1cyA9IHJlcy5zdGF0dXM7XG4gICAgICByZXNwb25zZS5zdGF0dXNUZXh0ID0gcmVzLnRleHQ7XG4gICAgICBjYiA9IG9iai5vbi5yZXNwb25zZTtcbiAgICB9XG4gICAgaWYgKHJlcy54aHIgJiYgcmVzLnhoci5yZXNwb25zZSkge1xuICAgICAgcmVzcG9uc2UuZGF0YSA9IHJlcy54aHIucmVzcG9uc2U7XG4gICAgfVxuICAgIGVsc2UgaWYoIXJlc3BvbnNlLmRhdGEpIHtcbiAgICAgIHJlc3BvbnNlLmRhdGEgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICAgIH1cblxuICAgIGlmIChjYikge1xuICAgICAgY2IocmVzcG9uc2UpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5TdXBlcmFnZW50SHR0cENsaWVudC5wcm90b3R5cGUuIGJpbmFyeVJlcXVlc3QgPSBmdW5jdGlvbiAoYWNjZXB0KSB7XG4gIGlmKCFh
 
Y2NlcHQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuICgvXmltYWdlL2kpLnRlc3QoYWNjZXB0KSB8fCAoL15hcHBsaWNhdGlvblxcL3BkZi8pLnRlc3QoYWNjZXB0KTtcbn07XG4iXX0=
+
 
},{"./helpers":4,"buffer":14,"js-yaml":19,"lodash-compat/lang/isObject":144,"lodash-compat/object/keys":149,"superagent":158}],6:[function(require,module,exports){
 'use strict';
 
@@ -4500,7 +4596,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, 
arg3) {
     callback = arg1;
     scope = arg2;
   }
-  var _root = root;
+  var _root = root, modelName;
   this.scope = (scope || this);
   this.iteration = this.iteration || 0;
 
@@ -4512,7 +4608,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, 
arg3) {
     opts.responseInterceptor = this.scope.options.responseInterceptor;
   }
 
-  var name, path, property, propertyName;
+  var name, path, property, propertyName, parameter, done, counter;
   var processedCalls = 0, resolvedRefs = {}, unresolvedRefs = {};
   var resolutionTable = []; // store objects for dereferencing
 
@@ -4520,7 +4616,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, 
arg3) {
   // definitions
   for (name in spec.definitions) {
     var definition = spec.definitions[name];
-    if(definition['$ref']) {
+    if(definition.$ref) {
       this.resolveInline(root, spec, definition, resolutionTable, 
unresolvedRefs, definition);
     }
     else {
@@ -4543,25 +4639,25 @@ Resolver.prototype.resolve = function (spec, arg1, 
arg2, arg3) {
   // shared parameters
   spec.parameters = spec.parameters || {};
   for(name in spec.parameters) {
-    var parameter = spec.parameters[name];
+    parameter = spec.parameters[name];
     if (parameter.in === 'body' && parameter.schema) {
       if(_.isArray(parameter.schema.allOf)) {
         // move to a definition
-        var modelName = 'inline_model';
-        var name = modelName;
-        var done = false; var counter = 0;
+        modelName = 'inline_model';
+        var _name = modelName;
+        done = false; counter = 0;
         while(!done) {
-          if(typeof spec.definitions[name] === 'undefined') {
+          if(typeof spec.definitions[_name] === 'undefined') {
             done = true;
             break;
           }
-          name = modelName + '_' + counter;
+          _name = modelName + '_' + counter;
           counter ++;
         }
-        spec.definitions[name] = { allOf: parameter.schema.allOf };
+        spec.definitions[_name] = { allOf: parameter.schema.allOf };
         delete parameter.schema.allOf;
-        parameter.schema.$ref = '#/definitions/' + name;
-        this.processAllOf(root, name, spec.definitions[name], resolutionTable, 
unresolvedRefs, spec);
+        parameter.schema.$ref = '#/definitions/' + _name;
+        this.processAllOf(root, _name, spec.definitions[_name], 
resolutionTable, unresolvedRefs, spec);
       }
       else {
         this.resolveTo(root, parameter.schema, resolutionTable, location);
@@ -4579,106 +4675,110 @@ Resolver.prototype.resolve = function (spec, arg1, 
arg2, arg3) {
     var method, operation, responseCode;
     path = spec.paths[name];
 
-    for (method in path) {
-      // operation reference
-      if(method === '$ref') {
-        // location = path[method];
-        location = '/paths' + name;
-        this.resolveInline(root, spec, path, resolutionTable, unresolvedRefs, 
location);
-      }
-      else {
-        operation = path[method];
-        var sharedParameters = path.parameters || [];
-        var parameters = operation.parameters || [];
-
-        for (i in sharedParameters) {
-          var parameter = sharedParameters[i];
-          parameters.unshift(parameter);
-        }
-        if(method !== 'parameters' && _.isObject(operation)) {
-          operation.parameters = operation.parameters || parameters;
-        }
-
-        for (i in parameters) {
-          var parameter = parameters[i];
-          location = '/paths' + name + '/' + method + '/parameters';
-
-          if (parameter.in === 'body' && parameter.schema) {
-            if(_.isArray(parameter.schema.allOf)) {
-              // move to a definition
-              var modelName = 'inline_model';
-              var name = modelName;
-              var done = false; var counter = 0;
-              while(!done) {
-                if(typeof spec.definitions[name] === 'undefined') {
-                  done = true;
-                  break;
-                }
-                name = modelName + '_' + counter;
-                counter ++;
-              }
-              spec.definitions[name] = { allOf: parameter.schema.allOf };
-              delete parameter.schema.allOf;
-              parameter.schema.$ref = '#/definitions/' + name;
-              this.processAllOf(root, name, spec.definitions[name], 
resolutionTable, unresolvedRefs, spec);
-            }
-            else {
-              this.resolveTo(root, parameter.schema, resolutionTable, 
location);
-            }
-          }
+    if(typeof path === 'object') {
+      for (method in path) {
+        // operation reference
+        if (method === '$ref') {
+          // location = path[method];
+          location = '/paths' + name;
+          this.resolveInline(root, spec, path, resolutionTable, 
unresolvedRefs, location);
+        }
+        else {
+          operation = path[method];
+          var sharedParameters = path.parameters || [];
+          var parameters = operation.parameters || [];
 
-          if (parameter.$ref) {
-            // parameter reference
-            this.resolveInline(root, spec, parameter, resolutionTable, 
unresolvedRefs, parameter.$ref);
+          sharedParameters.forEach(function(parameter) {
+            parameters.unshift(parameter);
+          });
+
+          if (method !== 'parameters' && _.isObject(operation)) {
+            operation.parameters = operation.parameters || parameters;
           }
-        }
 
-        for (responseCode in operation.responses) {
-          var response = operation.responses[responseCode];
-          location = '/paths' + name + '/' + method + '/responses/' + 
responseCode;
+          for (i in parameters) {
+            parameter = parameters[i];
+            location = '/paths' + name + '/' + method + '/parameters';
 
-          if(_.isObject(response)) {
-            if(response.$ref) {
-              // response reference
-              this.resolveInline(root, spec, response, resolutionTable, 
unresolvedRefs, location);
-            }
-            if (response.schema) {
-              var responseObj = response;
-              if(_.isArray(responseObj.schema.allOf)) {
+            if (parameter.in === 'body' && parameter.schema) {
+              if (_.isArray(parameter.schema.allOf)) {
                 // move to a definition
-                var modelName = 'inline_model';
-                var name = modelName;
-                var done = false; var counter = 0;
-                while(!done) {
-                  if(typeof spec.definitions[name] === 'undefined') {
+                modelName = 'inline_model';
+                name = modelName;
+                done = false;
+                counter = 0;
+                while (!done) {
+                  if (typeof spec.definitions[name] === 'undefined') {
                     done = true;
                     break;
                   }
                   name = modelName + '_' + counter;
-                  counter ++;
+                  counter++;
                 }
-                spec.definitions[name] = { allOf: responseObj.schema.allOf };
-                delete responseObj.schema.allOf;
-                delete responseObj.schema.type;
-                responseObj.schema.$ref = '#/definitions/' + name;
+                spec.definitions[name] = {allOf: parameter.schema.allOf};
+                delete parameter.schema.allOf;
+                parameter.schema.$ref = '#/definitions/' + name;
                 this.processAllOf(root, name, spec.definitions[name], 
resolutionTable, unresolvedRefs, spec);
               }
-              else if('array' === responseObj.schema.type) {
-                if(responseObj.schema.items && responseObj.schema.items.$ref) {
-                  // response reference
-                  this.resolveInline(root, spec, responseObj.schema.items, 
resolutionTable, unresolvedRefs, location);
-                }
-              }
               else {
-                this.resolveTo(root, response.schema, resolutionTable, 
location);
+                this.resolveTo(root, parameter.schema, resolutionTable, 
location);
+              }
+            }
+
+            if (parameter.$ref) {
+              // parameter reference
+              this.resolveInline(root, spec, parameter, resolutionTable, 
unresolvedRefs, parameter.$ref);
+            }
+          }
+
+          for (responseCode in operation.responses) {
+            var response = operation.responses[responseCode];
+            location = '/paths' + name + '/' + method + '/responses/' + 
responseCode;
+
+            if (_.isObject(response)) {
+              if (response.$ref) {
+                // response reference
+                this.resolveInline(root, spec, response, resolutionTable, 
unresolvedRefs, location);
+              }
+              if (response.schema) {
+                var responseObj = response;
+                if (_.isArray(responseObj.schema.allOf)) {
+                  // move to a definition
+                  modelName = 'inline_model';
+                  name = modelName;
+                  done = false;
+                  counter = 0;
+                  while (!done) {
+                    if (typeof spec.definitions[name] === 'undefined') {
+                      done = true;
+                      break;
+                    }
+                    name = modelName + '_' + counter;
+                    counter++;
+                  }
+                  spec.definitions[name] = {allOf: responseObj.schema.allOf};
+                  delete responseObj.schema.allOf;
+                  delete responseObj.schema.type;
+                  responseObj.schema.$ref = '#/definitions/' + name;
+                  this.processAllOf(root, name, spec.definitions[name], 
resolutionTable, unresolvedRefs, spec);
+                }
+                else if ('array' === responseObj.schema.type) {
+                  if (responseObj.schema.items && 
responseObj.schema.items.$ref) {
+                    // response reference
+                    this.resolveInline(root, spec, responseObj.schema.items, 
resolutionTable, unresolvedRefs, location);
+                  }
+                }
+                else {
+                  this.resolveTo(root, response.schema, resolutionTable, 
location);
+                }
               }
             }
           }
         }
       }
+      // clear them out to avoid multiple resolutions
+      path.parameters = [];
     }
-    // clear them out to avoid multiple resolutions
-    path.parameters = [];
   }
 
   var expectedCalls = 0, toResolve = [];
@@ -4841,7 +4941,7 @@ Resolver.prototype.resolve = function (spec, arg1, arg2, 
arg3) {
             else {
               var cached = self.resolverCache[obj.url];
               if (_.isObject(cached)) {
-                obj.on.response({obj: cached}), 1;
+                obj.on.response({obj: cached});
               }
               else {
                 lock[obj.url] = true;
@@ -4919,7 +5019,7 @@ Resolver.prototype.resolveItem = function(spec, root, 
resolutionTable, resolvedR
 
 Resolver.prototype.finish = function (spec, root, resolutionTable, 
resolvedRefs, unresolvedRefs, callback, localResolve) {
   // walk resolution table and replace with resolved refs
-  var ref;
+  var ref, abs;
   for (ref in resolutionTable) {
     var item = resolutionTable[ref];
 
@@ -4931,7 +5031,7 @@ Resolver.prototype.finish = function (spec, root, 
resolutionTable, resolvedRefs,
         if (localResolve !== true) {
           // don't retain root for local definitions
           for (key in resolvedTo.obj) {
-            var abs = this.retainRoot(key, resolvedTo.obj[key], item.root);
+            abs = this.retainRoot(key, resolvedTo.obj[key], item.root);
             resolvedTo.obj[key] = abs;
           }
         }
@@ -4943,7 +5043,7 @@ Resolver.prototype.finish = function (spec, root, 
resolutionTable, resolvedRefs,
         delete targetObj.$ref;
 
         for (key in resolvedTo.obj) {
-          var abs = resolvedTo.obj[key];
+          abs = resolvedTo.obj[key];
 
           if (localResolve !== true) {
             // don't retain root for local definitions
@@ -5122,7 +5222,7 @@ Resolver.prototype.resolveInline = function (root, spec, 
property, resolutionTab
   var key = property.$ref, ref = property.$ref, i, p, p2, rs;
   var rootTrimmed = false;
 
-  root = root || '' // Guard against .split. @fehguy, you'll need to check if 
this logic fits
+  root = root || ''; // Guard against .split. @fehguy, you'll need to check if 
this logic fits
   // More imporantly is how do we gracefully handle relative urls, when 
provided just a 'spec', not a 'url' ?
 
   if (ref) {
@@ -5262,7 +5362,7 @@ Resolver.prototype.resolveTo = function (root, property, 
resolutionTable, locati
       }
       delete property.title;
       this.spec.definitions[name] = _.cloneDeep(property);
-      property['$ref'] = '#/definitions/' + name;
+      property.$ref = '#/definitions/' + name;
       delete property.type;
       delete property.properties;
     }
@@ -5379,17 +5479,11 @@ var _ = {
   forEach: require('lodash-compat/collection/forEach')
 };
 
-module.exports.optionHtml = optionHtml;
-module.exports.typeFromJsonSchema = typeFromJsonSchema;
-module.exports.getStringSignature = getStringSignature;
-module.exports.schemaToHTML = schemaToHTML;
-module.exports.schemaToJSON = schemaToJSON;
-
-function optionHtml(label, value) {
+var optionHtml = module.exports.optionHtml = function  (label, value) {
   return '<tr><td class="optionName">' + label + ':</td><td>' + value + 
'</td></tr>';
-}
+};
 
-function typeFromJsonSchema(type, format) {
+module.exports.typeFromJsonSchema = function (type, format) {
   var str;
 
   if (type === 'integer' && format === 'int32') {
@@ -5415,9 +5509,9 @@ function typeFromJsonSchema(type, format) {
   }
 
   return str;
-}
+};
 
-function getStringSignature(obj, baseComponent) {
+var getStringSignature = module.exports.getStringSignature = function (obj, 
baseComponent) {
   var str = '';
 
   if (typeof obj.$ref !== 'undefined') {
@@ -5459,9 +5553,9 @@ function getStringSignature(obj, baseComponent) {
   }
 
   return str;
-}
+};
 
-function schemaToJSON(schema, models, modelsToIgnore, modelPropertyMacro) {
+var schemaToJSON = module.exports.schemaToJSON = function (schema, models, 
modelsToIgnore, modelPropertyMacro) {
   // Resolve the schema (Handle nested schemas)
   schema = Helpers.resolveSchema(schema);
 
@@ -5546,10 +5640,9 @@ function schemaToJSON(schema, models, modelsToIgnore, 
modelPropertyMacro) {
   }
 
   return output;
-}
-
-function schemaToHTML(name, schema, models, modelPropertyMacro) {
+};
 
+module.exports.schemaToHTML =function (name, schema, models, 
modelPropertyMacro) {
   var strongOpen = '<span class="strong">';
   var strongClose = '</span>';
 
@@ -5894,8 +5987,7 @@ function schemaToHTML(name, schema, models, 
modelPropertyMacro) {
 
     return html + strongOpen + (isArray ? ']' : '}') + strongClose;
   }
-}
-
+};
 
},{"./helpers":4,"lodash-compat/array/indexOf":49,"lodash-compat/collection/forEach":54,"lodash-compat/collection/map":56,"lodash-compat/lang/cloneDeep":138,"lodash-compat/lang/isArray":140,"lodash-compat/lang/isEmpty":141,"lodash-compat/lang/isObject":144,"lodash-compat/lang/isPlainObject":145,"lodash-compat/lang/isUndefined":148,"lodash-compat/object/keys":149}],8:[function(require,module,exports){
 'use strict';
 
@@ -6456,7 +6548,9 @@ SwaggerSpecConverter.prototype.securityDefinitions = 
function(obj, swagger) {
     var name;
     for(name in obj.authorizations) {
       var isValid = false;
-      var securityDefinition = {};
+      var securityDefinition = {
+        vendorExtensions: {}
+      };
       var definition = obj.authorizations[name];
       if(definition.type === 'apiKey') {
         securityDefinition.type = 'apiKey';
@@ -6619,6 +6713,7 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
     this.client = parent.options.client || null;
     this.requestInterceptor = parent.options.requestInterceptor || null;
     this.responseInterceptor = parent.options.responseInterceptor || null;
+    this.requestAgent = parent.options.requestAgent;
   }
   this.authorizations = args.security;
   this.basePath = parent.basePath || '/';
@@ -6647,6 +6742,8 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
   this.jqueryAjaxCache = parent.jqueryAjaxCache;
   this.enableCookies = parent.enableCookies;
 
+  var key;
+
   if(!this.host) {
     if(typeof window !== 'undefined') {
       this.host = window.location.host;
@@ -6685,8 +6782,6 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
 
   if (definitions) {
     // add to global models
-    var key;
-
     for (key in definitions) {
       model = new Model(key, definitions[key], this.models, 
parent.modelPropertyMacro);
 
@@ -6700,7 +6795,7 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
   }
 
   for (i = 0; i < this.parameters.length; i++) {
-    var param = this.parameters[i];
+    var d, param = this.parameters[i];
 
     // Allow macro to set the default value
     param.default = this.parameterMacro(this, param);
@@ -6708,10 +6803,6 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
     if (param.type === 'array') {
       param.isList = true;
       param.allowMultiple = true;
-      // the enum can be defined at the items level
-      //if (param.items && param.items.enum) {
-      //  param['enum'] = param.items.enum;
-      //}
     }
 
     var innerType = this.getType(param);
@@ -6722,12 +6813,15 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
       param['enum'] = [true, false]; // use actual primitives
     }
 
+    for(key in param) {
+      helpers.extractExtensions(key, param);
+    }
     if(typeof param['x-example'] !== 'undefined') {
-      var d = param['x-example'];
+      d = param['x-example'];
       param.default = d;
     }
     if(param['x-examples']) {
-      var d = param['x-examples'].default;
+      d = param['x-examples'].default;
       if(typeof d !== 'undefined') {
         param.default = d;
       }
@@ -6768,7 +6862,7 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
     param.responseClassSignature = param.signature;
   }
 
-  var defaultResponseCode, response, responses = this.responses;
+  var keyname, defaultResponseCode, response, responses = this.responses;
 
   if (responses['200']) {
     response = responses['200'];
@@ -6796,6 +6890,30 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
     defaultResponseCode = 'default';
   }
 
+  for(keyname in responses) {
+    helpers.extractExtensions(keyname, responses);
+    if(typeof keyname === 'string' && keyname.indexOf('x-') === -1) {
+      var responseObject = responses[keyname];
+      if(typeof responseObject === 'object' && typeof responseObject.headers 
=== 'object') {
+        var headers = responseObject.headers;
+        for(var headerName in headers) {
+          var header = headers[headerName];
+          if(typeof header === 'object') {
+            for(var headerKey in header) {
+              helpers.extractExtensions(headerKey, header);
+            }
+          }
+        }
+      }
+    }
+  }
+
+  if (response) {
+    for(keyname in response) {
+      helpers.extractExtensions(keyname, response);
+    }
+  }
+
   if (response && response.schema) {
     var resolvedModel = this.resolveModel(response.schema, definitions);
     var successResponse;
@@ -6816,6 +6934,7 @@ var Operation = module.exports = function (parent, 
scheme, operationId, httpMeth
     }
 
     if (successResponse) {
+      successResponse.vendorExtensions = response.vendorExtensions;
       // Attach response properties
       if (response.description) {
         successResponse.description = response.description;
@@ -7064,7 +7183,7 @@ Operation.prototype.getHeaderParams = function (args) {
   return headers;
 };
 
-Operation.prototype.urlify = function (args) {
+Operation.prototype.urlify = function (args, maskPasswords) {
   var formParams = {};
   var requestUrl = this.path.replace(/#.*/, ''); // remove URL fragment
   var querystring = ''; // grab params from the args, build the querystring 
along the way
@@ -7073,14 +7192,19 @@ Operation.prototype.urlify = function (args) {
     var param = this.parameters[i];
 
     if (typeof args[param.name] !== 'undefined') {
+      var isPassword;
+      if(param.type === 'string' && param.format === 'password' && 
maskPasswords) {
+        isPassword = true;
+      }
+
       if (param.in === 'path') {
         var reg = new RegExp('\{' + param.name + '\}', 'gi');
         var value = args[param.name];
 
         if (Array.isArray(value)) {
-          value = this.encodePathCollection(param.collectionFormat, 
param.name, value);
+          value = this.encodePathCollection(param.collectionFormat, 
param.name, value, isPassword);
         } else {
-          value = this.encodePathParam(value);
+          value = this.encodePathParam(value, isPassword);
         }
 
         requestUrl = requestUrl.replace(reg, value);
@@ -7095,12 +7219,12 @@ Operation.prototype.urlify = function (args) {
           var qp = args[param.name];
 
           if (Array.isArray(qp)) {
-            querystring += this.encodeQueryCollection(param.collectionFormat, 
param.name, qp);
+            querystring += this.encodeQueryCollection(param.collectionFormat, 
param.name, qp, isPassword);
           } else {
-            querystring += this.encodeQueryKey(param.name) + '=' + 
this.encodeQueryParam(args[param.name]);
+            querystring += this.encodeQueryKey(param.name) + '=' + 
this.encodeQueryParam(args[param.name], isPassword);
           }
         } else {
-          querystring += this.encodeQueryKey(param.name) + '=' + 
this.encodeQueryParam(args[param.name]);
+          querystring += this.encodeQueryKey(param.name) + '=' + 
this.encodeQueryParam(args[param.name], isPassword);
         }
       } else if (param.in === 'formData') {
         formParams[param.name] = args[param.name];
@@ -7133,18 +7257,23 @@ Operation.prototype.getMissingParams = function (args) {
 };
 
 Operation.prototype.getBody = function (headers, args, opts) {
-  var formParams = {}, hasFormParams, body, key, value, hasBody = false;
+  var formParams = {}, hasFormParams, param, body, key, value, hasBody = false;
 
   // look at each param and put form params in an object
   for (var i = 0; i < this.parameters.length; i++) {
-    var param = this.parameters[i];
+    param = this.parameters[i];
     if (typeof args[param.name] !== 'undefined') {
+      var isPassword;
+      if(param.type === 'string' && param.format === 'password') {
+        isPassword = 'password';
+      }
       if (param.in === 'body') {
         body = args[param.name];
       } else if (param.in === 'formData') {
         formParams[param.name] = {
           param: param,
-          value: args[param.name]
+          value: args[param.name],
+          password: isPassword
         };
         hasFormParams = true;
       }
@@ -7174,22 +7303,27 @@ Operation.prototype.getBody = function (headers, args, 
opts) {
     var encoded = '';
 
     for (key in formParams) {
-      var param = formParams[key].param;
+      param = formParams[key].param;
       value = formParams[key].value;
+      var password;
+
+      if(opts && opts.maskPasswords) {
+        password = formParams[key].password;
+      }
 
       if (typeof value !== 'undefined') {
         if (Array.isArray(value)) {
           if (encoded !== '') {
             encoded += '&';
           }
-          encoded += this.encodeQueryCollection(param.collectionFormat, key, 
value);
+          encoded += this.encodeQueryCollection(param.collectionFormat, key, 
value, password);
         }
         else {
           if (encoded !== '') {
             encoded += '&';
           }
 
-          encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);
+          encoded += encodeURIComponent(key) + '=' + 
mask(encodeURIComponent(value), password);
         }
       }
     }
@@ -7203,7 +7337,7 @@ Operation.prototype.getBody = function (headers, args, 
opts) {
       bodyParam.type = 'formData';
 
       for (key in formParams) {
-        var param = formParams[key].param;
+        param = formParams[key].param;
         value = args[key];
 
         if (typeof value !== 'undefined') {
@@ -7341,14 +7475,16 @@ Operation.prototype.execute = function (arg1, arg2, 
arg3, arg4, parent) {
     error = arg4;
   }
 
-  timeout = typeof opts.timeout !== 'undefined'
-    ? opts.timeout
-    : this.timeout;
+  timeout = typeof opts.timeout !== 'undefined' ? opts.timeout : this.timeout;
 
   if(this.client) {
     opts.client = this.client;
   }
 
+  if(this.requestAgent) {
+    opts.requestAgent = this.requestAgent;
+  }
+
   // add the request interceptor from parent, if none sent from client
   if(!opts.requestInterceptor && this.requestInterceptor ) {
     opts.requestInterceptor = this.requestInterceptor ;
@@ -7406,7 +7542,7 @@ Operation.prototype.execute = function (arg1, arg2, arg3, 
arg4, parent) {
   for (attrname in contentTypeHeaders) { headers[attrname] = 
contentTypeHeaders[attrname]; }
 
   var body = this.getBody(contentTypeHeaders, args, opts);
-  var url = this.urlify(args);
+  var url = this.urlify(args, opts.maskPasswords);
 
   if(url.indexOf('.{format}') > 0) {
     if(headers) {
@@ -7430,6 +7566,8 @@ Operation.prototype.execute = function (arg1, arg2, arg3, 
arg4, parent) {
     deferred: deferred,
     headers: headers,
     clientAuthorizations: opts.clientAuthorizations,
+    operation: this,
+    connectionAgent: this.connectionAgent,
     on: {
       response: function (response) {
         if (deferred) {
@@ -7586,7 +7724,7 @@ Operation.prototype.matchesAccept = function(accepts) {
 };
 
 Operation.prototype.asCurl = function (args1, args2) {
-  var opts = {mock: true};
+  var opts = {mock: true, maskPasswords: true};
   if (typeof args2 === 'object') {
     for (var argKey in args2) {
       opts[argKey] = args2[argKey];
@@ -7653,14 +7791,14 @@ Operation.prototype.asCurl = function (args1, args2) {
                 if (Array.isArray(paramValue)) {
                   if(parameter.collectionFormat === 'multi') {
                     for(var v in paramValue) {
-                      body += '-F ' + this.encodeQueryKey(parameter.name) + 
'=' + paramValue[v] + ' ';
+                      body += '-F ' + this.encodeQueryKey(parameter.name) + 
'=' + mask(paramValue[v], parameter.format) + ' ';
                     }
                   }
                   else {
-                    body += '-F ' + 
this.encodeQueryCollection(parameter.collectionFormat, parameter.name, 
paramValue) + ' ';
+                    body += '-F ' + 
this.encodeQueryCollection(parameter.collectionFormat, parameter.name, 
mask(paramValue, parameter.format)) + ' ';
                   }
                 } else {
-                  body += '-F ' + this.encodeQueryKey(parameter.name) + '=' + 
paramValue + ' ';
+                  body += '-F ' + this.encodeQueryKey(parameter.name) + '=' + 
mask(paramValue, parameter.format) + ' ';
                 }
               }
             }
@@ -7691,7 +7829,7 @@ Operation.prototype.asCurl = function (args1, args2) {
   return 'curl ' + (results.join(' ')) + ' \'' + obj.url + '\'';
 };
 
-Operation.prototype.encodePathCollection = function (type, name, value) {
+Operation.prototype.encodePathCollection = function (type, name, value, 
maskPasswords) {
   var encoded = '';
   var i;
   var separator = '';
@@ -7708,16 +7846,16 @@ Operation.prototype.encodePathCollection = function 
(type, name, value) {
 
   for (i = 0; i < value.length; i++) {
     if (i === 0) {
-      encoded = this.encodeQueryParam(value[i]);
+      encoded = this.encodeQueryParam(value[i], maskPasswords);
     } else {
-      encoded += separator + this.encodeQueryParam(value[i]);
+      encoded += separator + this.encodeQueryParam(value[i], maskPasswords);
     }
   }
 
   return encoded;
 };
 
-Operation.prototype.encodeQueryCollection = function (type, name, value) {
+Operation.prototype.encodeQueryCollection = function (type, name, value, 
maskPasswords) {
   var encoded = '';
   var i;
 
@@ -7726,7 +7864,7 @@ Operation.prototype.encodeQueryCollection = function 
(type, name, value) {
     for (i = 0; i < value.length; i++) {
       if (i > 0) {encoded += '&';}
 
-      encoded += this.encodeQueryKey(name) + '=' + 
this.encodeQueryParam(value[i]);
+      encoded += this.encodeQueryKey(name) + '=' + 
mask(this.encodeQueryParam(value[i]), maskPasswords);
     }
   } else {
     var separator = '';
@@ -7744,8 +7882,7 @@ Operation.prototype.encodeQueryCollection = function 
(type, name, value) {
         if (i !== 0) {
           encoded += '&';
         }
-
-        encoded += this.encodeQueryKey(name) + '[]=' + 
this.encodeQueryParam(value[i]);
+        encoded += this.encodeQueryKey(name) + '[]=' + 
mask(this.encodeQueryParam(value[i]), maskPasswords);
       }
     }
 
@@ -7768,17 +7905,26 @@ Operation.prototype.encodeQueryKey = function (arg) {
       .replace('%5B','[').replace('%5D', ']').replace('%24', '$');
 };
 
-Operation.prototype.encodeQueryParam = function (arg) {
+Operation.prototype.encodeQueryParam = function (arg, maskPasswords) {
+  if(maskPasswords) {
+    return "******";
+  }
   return encodeURIComponent(arg);
 };
 
 /**
  * TODO revisit, might not want to leave '/'
  **/
-Operation.prototype.encodePathParam = function (pathParam) {
-  return encodeURIComponent(pathParam);
+Operation.prototype.encodePathParam = function (pathParam, maskPasswords) {
+  return encodeURIComponent(pathParam, maskPasswords);
 };
 
+var mask = function(value, format) {
+  if(typeof format === 'string' && format === 'password') {
+    return '******';
+  }
+  return value;
+}
 
},{"../helpers":4,"../http":5,"./model":9,"lodash-compat/lang/cloneDeep":138,"lodash-compat/lang/isEmpty":141,"lodash-compat/lang/isObject":144,"lodash-compat/lang/isUndefined":148,"q":157}],11:[function(require,module,exports){
 'use strict';
 
@@ -7879,7 +8025,7 @@ process.umask = function() { return 0; };
 }());
 
 }).call(this,require("buffer").Buffer)
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9idG9hL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgZnVuY3Rpb24gYnRvYShzdHIpIHtcbiAgICB2YXIgYnVmZmVyXG4gICAgICA7XG5cbiAgICBpZiAoc3RyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICBidWZmZXIgPSBzdHI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoc3RyLnRvU3RyaW5nKCksICdiaW5hcnknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIG1vZHVsZS5leHBvcnRzID0gYnRvYTtcbn0oKSk7XG4iXX0=
+
 },{"buffer":14}],14:[function(require,module,exports){
 /*!
  * The buffer module from node.js, for the browser.
@@ -15526,7 +15672,7 @@ function bufferClone(buffer) {
 module.exports = bufferClone;
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== 
"undefined" ? self : typeof window !== "undefined" ? window : {})
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2J1ZmZlckNsb25lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgQXJyYXlCdWZmZXIgPSBnbG9iYWwuQXJyYXlCdWZmZXIsXG4gICAgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgZ2l2ZW4gYXJyYXkgYnVmZmVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBidWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgQXJyYXlCdWZmZXIoYnVmZmVyLmJ5dGVMZW5ndGgpLFxuICAgICAgdmlldyA9IG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XG5cbiAgdmlld
 
y5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYnVmZmVyQ2xvbmU7XG4iXX0=
+
 },{}],96:[function(require,module,exports){
 /* Native method references for those with the same name as other `lodash` 
methods. */
 var nativeMax = Math.max;
@@ -15689,7 +15835,7 @@ function createBindWrapper(func, thisArg) {
 module.exports = createBindWrapper;
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== 
"undefined" ? self : typeof window !== "undefined" ? window : {})
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2NyZWF0ZUJpbmRXcmFwcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3JlYXRlQ3RvcldyYXBwZXIgPSByZXF1aXJlKCcuL2NyZWF0ZUN0b3JXcmFwcGVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIGFuZCBpbnZva2VzIGl0IHdpdGggdGhlIGB0aGlzYFxuICogYmluZGluZyBvZiBgdGhpc0FyZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJpbmRXcmFwcGVyKGZ1bmMsIHRoaXNBcmcpIHtcbiAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yV3JhcHBlc
 
ihmdW5jKTtcblxuICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IGdsb2JhbCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCaW5kV3JhcHBlcjtcbiJdfQ==
+
 },{"./createCtorWrapper":101}],101:[function(require,module,exports){
 var baseCreate = require('./baseCreate'),
     isObject = require('../lang/isObject');
@@ -15893,7 +16039,7 @@ function createHybridWrapper(func, bitmask, thisArg, 
partials, holders, partials
 module.exports = createHybridWrapper;
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== 
"undefined" ? self : typeof window !== "undefined" ? window : {})
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2NyZWF0ZUh5YnJpZFdyYXBwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZ
 
VJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlDb3B5ID0gcmVxdWlyZSgnLi9hcnJheUNvcHknKSxcbiAgICBjb21wb3NlQXJncyA9IHJlcXVpcmUoJy4vY29tcG9zZUFyZ3MnKSxcbiAgICBjb21wb3NlQXJnc1JpZ2h0ID0gcmVxdWlyZSgnLi9jb21wb3NlQXJnc1JpZ2h0JyksXG4gICAgY3JlYXRlQ3RvcldyYXBwZXIgPSByZXF1aXJlKCcuL2NyZWF0ZUN0b3JXcmFwcGVyJyksXG4gICAgaXNMYXppYWJsZSA9IHJlcXVpcmUoJy4vaXNMYXppYWJsZScpLFxuICAgIHJlb3JkZXIgPSByZXF1aXJlKCcuL3Jlb3JkZXInKSxcbiAgICByZXBsYWNlSG9sZGVycyA9IHJlcXVpcmUoJy4vcmVwbGFjZUhvbGRlcnMnKSxcbiAgICBzZXREYXRhID0gcmVxdWlyZSgnLi9zZXREYXRhJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHdyYXBwZXIgbWV0YWRhdGEuICovXG52YXIgQklORF9GTEFHID0gMSxcbiAgICBCSU5EX0tFWV9GTEFHID0gMixcbiAgICBDVVJSWV9CT1VORF9GTEFHID0gNCxcbiAgICBDVVJSWV9GTEFHID0gOCxcbiAgICBDVVJSWV9SSUdIVF9GTEFHID0gMTYsXG4gICAgUEFSVElBTF9GTEFHID0gMzIsXG4gICAgUEFSVElBTF9SSUdIVF9GTEFHID0gNjQsXG4gICAgQVJZX0ZMQUcgPSAxMjg7XG5cbi8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTW
 
F4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIGFuZCBpbnZva2VzIGl0IHdpdGggb3B0aW9uYWwgYHRoaXNgXG4gKiBiaW5kaW5nIG9mLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byByZWZlcmVuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBvZiBmbGFncy4gU2VlIGBjcmVhdGVXcmFwcGVyYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNSaWdodF0gVGhlIGBwYXJ0aWFsc1JpZ2h0YCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGh
 
lIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUh5YnJpZFdyYXBwZXIoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gIHZhciBpc0FyeSA9IGJpdG1hc2sgJiBBUllfRkxBRyxcbiAgICAgIGlzQmluZCA9IGJpdG1hc2sgJiBCSU5EX0ZMQUcsXG4gICAgICBpc0JpbmRLZXkgPSBiaXRtYXNrICYgQklORF9LRVlfRkxBRyxcbiAgICAgIGlzQ3VycnkgPSBiaXRtYXNrICYgQ1VSUllfRkxBRyxcbiAgICAgIGlzQ3VycnlCb3VuZCA9IGJpdG1hc2sgJiBDVVJSWV9CT1VORF9GTEFHLFxuICAgICAgaXNDdXJyeVJpZ2h0ID0gYml0bWFzayAmIENVUlJZX1JJR0hUX0ZMQUcsXG4gICAgICBDdG9yID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogY3JlYXRlQ3RvcldyYXBwZXIoZnVuYyk7XG5cbiAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAvLyBBdm9pZCBgYXJndW1lbnRzYCBvYmplY3QgdXNlIGRpc3F1YWxpZnlpbmcgb3B0aW1pemF0aW9ucyBieVxuICAgIC8v
 
IGNvbnZlcnRpbmcgaXQgdG8gYW4gYXJyYXkgYmVmb3JlIHByb3ZpZGluZyBpdCB0byBvdGhlciBmdW5jdGlvbnMuXG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgfVxuICAgIGlmIChwYXJ0aWFscykge1xuICAgICAgYXJncyA9IGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9XG4gICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgIGFyZ3MgPSBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCk7XG4gICAgfVxuICAgIGlmIChpc0N1cnJ5IHx8IGlzQ3VycnlSaWdodCkge1xuICAgICAgdmFyIHBsYWNlaG9sZGVyID0gd3JhcHBlci5wbGFjZWhvbGRlcixcbiAgICAgICAgICBhcmdzSG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgbGVuZ3RoIC09IGFyZ3NIb2xkZXJzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICB2YXIgbmV3QXJnUG9zID0gYXJnUG9zID8gYXJyYXlDb3B5KGFyZ1BvcykgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZXdBcml0eSA9IG5hdGl2ZU1heChhcml0eSAtIGxlbmd0aCwgMCksXG4gICAgICAgI
 
CAgICBuZXdzSG9sZGVycyA9IGlzQ3VycnkgPyBhcmdzSG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5ld0hvbGRlcnNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBhcmdzSG9sZGVycyxcbiAgICAgICAgICAgIG5ld1BhcnRpYWxzID0gaXNDdXJyeSA/IGFyZ3MgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGFyZ3M7XG5cbiAgICAgICAgYml0bWFzayB8PSAoaXNDdXJyeSA/IFBBUlRJQUxfRkxBRyA6IFBBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIGJpdG1hc2sgJj0gfihpc0N1cnJ5ID8gUEFSVElBTF9SSUdIVF9GTEFHIDogUEFSVElBTF9GTEFHKTtcblxuICAgICAgICBpZiAoIWlzQ3VycnlCb3VuZCkge1xuICAgICAgICAgIGJpdG1hc2sgJj0gfihCSU5EX0ZMQUcgfCBCSU5EX0tFWV9GTEFHKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV3RGF0YSA9IFtmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBuZXdQYXJ0aWFscywgbmV3c0hvbGRlcnMsIG5ld1BhcnRpYWxzUmlnaHQsIG5ld0hvbGRlcnNSaWdodCwgbmV3QXJnUG9zLCBhcnksIG5ld0FyaXR5XSxcbiAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUh5YnJpZFdyYXBwZXIuYXBwbHkodW5kZWZpbmVkLCBuZXdEYXRhKTtcblxuICAgICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICAgIHNldERhdGEocmVzdWx0LCBuZXdEYXRhKTtcbiAgIC
 
AgICAgfVxuICAgICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHRoaXNCaW5kaW5nID0gaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsXG4gICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgaWYgKGFyZ1Bvcykge1xuICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICB9XG4gICAgaWYgKGlzQXJ5ICYmIGFyeSA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICB9XG4gICAgaWYgKHRoaXMgJiYgdGhpcyAhPT0gZ2xvYmFsICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICBmbiA9IEN0b3IgfHwgY3JlYXRlQ3RvcldyYXBwZXIoZnVuYyk7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gIH1cbiAgcmV0dXJuIHdyYXBwZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlSHlicmlkV3JhcHBlcjtcbiJdfQ==
+
 
},{"./arrayCopy":62,"./composeArgs":96,"./composeArgsRight":97,"./createCtorWrapper":101,"./isLaziable":124,"./reorder":131,"./replaceHolders":132,"./setData":133}],105:[function(require,module,exports){
 (function (global){
 var createCtorWrapper = require('./createCtorWrapper');
@@ -15941,7 +16087,7 @@ function createPartialWrapper(func, bitmask, thisArg, 
partials) {
 module.exports = createPartialWrapper;
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== 
"undefined" ? self : typeof window !== "undefined" ? window : {})
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2NyZWF0ZVBhcnRpYWxXcmFwcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3JlYXRlQ3RvcldyYXBwZXIgPSByZXF1aXJlKCcuL2NyZWF0ZUN0b3JXcmFwcGVyJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHdyYXBwZXIgbWV0YWRhdGEuICovXG52YXIgQklORF9GTEFHID0gMTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgYW5kIGludm9rZXMgaXQgd2l0aCB0aGUgb3B0aW9uYWwgYHRoaXNgXG4gKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gKiB0aGUgd3JhcHBlc
 
i5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIG9mIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBwZXJgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWxXcmFwcGVyKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgQklORF9GTEFHLFxuICAgICAgQ3RvciA9IGNyZWF0ZUN0b3JXcmFwcGVyKGZ1bmMpO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgLy8gQXZvaWQgYGFyZ3VtZW50c2Agb2JqZWN0IHVzZSBkaXNxdWFsaWZ5aW5nIG9wdGltaXphdGlvbnMgYnlcbiAgICAvLyBjb252ZXJ0aW5nIGl0IHRvIGFuIGFycmF5IGJlZm9yZSBwcm92aWRpbmcgaXQgYGZ1bmNgLlxuICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndG
 
gsXG4gICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsrbGVmdEluZGV4IDwgbGVmdExlbmd0aCkge1xuICAgICAgYXJnc1tsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICB9XG4gICAgd2hpbGUgKGFyZ3NMZW5ndGgtLSkge1xuICAgICAgYXJnc1tsZWZ0SW5kZXgrK10gPSBhcmd1bWVudHNbKythcmdzSW5kZXhdO1xuICAgIH1cbiAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSBnbG9iYWwgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmdzKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVQYXJ0aWFsV3JhcHBlcjtcbiJdfQ==
+
 },{"./createCtorWrapper":101}],106:[function(require,module,exports){
 var baseSetData = require('./baseSetData'),
     createBindWrapper = require('./createBindWrapper'),
@@ -16443,7 +16589,7 @@ function initCloneByTag(object, tag, isDeep) {
 module.exports = initCloneByTag;
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== 
"undefined" ? self : typeof window !== "undefined" ? window : {})
-//# 
sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2luaXRDbG9uZUJ5VGFnLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYnVmZmVyQ2xvbmUgPSByZXF1aXJlKCcuL2J1ZmZlckNsb25lJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhb
 
l0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4vKiogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheTtcblxuLyoqIFVzZW
 
QgdG8gbG9va3VwIGEgdHlwZSBhcnJheSBjb25zdHJ1Y3RvcnMgYnkgYHRvU3RyaW5nVGFnYC4gKi9cbnZhciBjdG9yQnlUYWcgPSB7fTtcbmN0b3JCeVRhZ1tmbG9hdDMyVGFnXSA9IGdsb2JhbC5GbG9hdDMyQXJyYXk7XG5jdG9yQnlUYWdbZmxvYXQ2NFRhZ10gPSBnbG9iYWwuRmxvYXQ2NEFycmF5O1xuY3RvckJ5VGFnW2ludDhUYWddID0gZ2xvYmFsLkludDhBcnJheTtcbmN0b3JCeVRhZ1tpbnQxNlRhZ10gPSBnbG9iYWwuSW50MTZBcnJheTtcbmN0b3JCeVRhZ1tpbnQzMlRhZ10gPSBnbG9iYWwuSW50MzJBcnJheTtcbmN0b3JCeVRhZ1t1aW50OFRhZ10gPSBVaW50OEFycmF5O1xuY3RvckJ5VGFnW3VpbnQ4Q2xhbXBlZFRhZ10gPSBnbG9iYWwuVWludDhDbGFtcGVkQXJyYXk7XG5jdG9yQnlUYWdbdWludDE2VGFnXSA9IGdsb2JhbC5VaW50MTZBcnJheTtcbmN0b3JCeVRhZ1t1aW50MzJUYWddID0gZ2xvYmFsLlVpbnQzMkFycmF5O1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiA
 
qIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGJ1ZmZlckNsb25lKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICAvLyBTYWZhcmkgNSBtb2JpbGUgaW5jb3JyZWN0bHkgaGFzIGBPYmplY3RgIGFzIHRoZSBjb25zdHJ1Y3RvciBvZiB0eXBlZCBhcnJheXMuXG4gICAgICBpZiAoQ3RvciBpbnN0YW5jZW9mIEN0b3IpIHtcbiAgICAgICAgQ3RvciA9IGN0b3JCeVRhZ1t0YWddO1xuICAgICAgfVxuICAgICAgdmFyIGJ1
 
ZmZlciA9IG9iamVjdC5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IEN0b3IoaXNEZWVwID8gYnVmZmVyQ2xvbmUoYnVmZmVyKSA6IGJ1ZmZlciwgb2JqZWN0LmJ5dGVPZmZzZXQsIG9iamVjdC5sZW5ndGgpO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBDdG9yKG9iamVjdC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhvYmplY3QpKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSBvYmplY3QubGFzdEluZGV4O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQnlUYWc7XG4iXX0=
+
 },{"./bufferClone":95}],118:[function(require,module,exports){
 /**
  * Initializes an object clone.
@@ -16774,7 +16920,7 @@ var metaMap = 

<TRUNCATED>

Reply via email to