diff --git a/CHANGELOG.md b/CHANGELOG.md index 3513bda..48ec181 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # changelog +## 6.6.0 - 12 Sep 2017 + +* Add support for deleting current token + ## 6.5.0 - 02 May 2017 * Add support for all product API endpoints. diff --git a/dist/particle.min.js b/dist/particle.min.js index e42d4e8..af368e7 100644 --- a/dist/particle.min.js +++ b/dist/particle.min.js @@ -9,7 +9,7 @@ },{"babel-runtime/core-js/number/is-nan":10,"babel-runtime/core-js/object/assign":11,"babel-runtime/core-js/object/get-prototype-of":15,"babel-runtime/core-js/promise":18,"babel-runtime/helpers/classCallCheck":21,"babel-runtime/helpers/createClass":22,"babel-runtime/helpers/inherits":23,"babel-runtime/helpers/possibleConstructorReturn":24,"events":138,"http":163,"https":163,"url":174}],5:[function(require,module,exports){ "use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var _promise=require("babel-runtime/core-js/promise"),_promise2=_interopRequireDefault(_promise),_assign=require("babel-runtime/core-js/object/assign"),_assign2=_interopRequireDefault(_assign),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_createClass2=require("babel-runtime/helpers/createClass"),_createClass3=_interopRequireDefault(_createClass2),Library=function(){function e(r,t){(0,_classCallCheck3.default)(this,e),Object.defineProperty(this,"client",{value:r}),this._assignAttributes(t),this.downloadUrl=t.links&&t.links.download}return(0,_createClass3.default)(e,[{key:"_assignAttributes",value:function(e){(0,_assign2.default)(this,e.attributes)}},{key:"download",value:function(){return this.downloadUrl?this.client.downloadFile(this.downloadUrl):_promise2.default.reject(new Error("No download URL for this library"))}}]),e}();exports.default=Library,module.exports=exports.default; },{"babel-runtime/core-js/object/assign":11,"babel-runtime/core-js/promise":18,"babel-runtime/helpers/classCallCheck":21,"babel-runtime/helpers/createClass":22}],6:[function(require,module,exports){ -"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var _assign=require("babel-runtime/core-js/object/assign"),_assign2=_interopRequireDefault(_assign),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_createClass2=require("babel-runtime/helpers/createClass"),_createClass3=_interopRequireDefault(_createClass2),_superagent=require("superagent"),_superagent2=_interopRequireDefault(_superagent),_superagentBinaryParser=require("./superagent-binary-parser"),_superagentBinaryParser2=_interopRequireDefault(_superagentBinaryParser),_Defaults=require("./Defaults"),_Defaults2=_interopRequireDefault(_Defaults),_EventStream=require("./EventStream"),_EventStream2=_interopRequireDefault(_EventStream),_Agent=require("./Agent"),_Agent2=_interopRequireDefault(_Agent),_Client=require("./Client"),_Client2=_interopRequireDefault(_Client),Particle=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,_classCallCheck3.default)(this,e),(0,_assign2.default)(this,_Defaults2.default,t),this.context={},this.agent=new _Agent2.default(this.baseUrl)}return(0,_createClass3.default)(e,[{key:"_isValidContext",value:function(e,t){return("tool"===e||"project"===e)&&void 0!==t}},{key:"setContext",value:function(e,t){if(void 0!==t){if(!this._isValidContext(e,t))throw Error("uknown context name or undefined context: "+e);this.context[e]=t}}},{key:"_buildContext",value:function(e){return(0,_assign2.default)(this.context,e)}},{key:"trackingIdentity",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.auth,r=e.full,i=void 0!==r&&r,n=e.context;return this.get("/v1/user/identify",t,i?void 0:{tracking:1},n)}},{key:"login",value:function(e){var t=e.username,r=e.password,i=e.tokenDuration,n=void 0===i?this.tokenDuration:i,u=e.context;return this.request({uri:"/oauth/token",form:{username:t,password:r,grant_type:"password",client_id:this.clientId,client_secret:this.clientSecret,expires_in:n},method:"post",context:u})}},{key:"createUser",value:function(e){var t=e.username,r=e.password,i=e.accountInfo,n=e.context;return this.post("/v1/users",{username:t,password:r,account_info:i},void 0,n)}},{key:"verifyUser",value:function(e){var t=e.token,r=e.context;return this.post("/v1/user/verify",{token:t},void 0,r)}},{key:"resetPassword",value:function(e){var t=e.username,r=e.context;return this.post("/v1/user/password-reset",{username:t},void 0,r)}},{key:"deleteAccessToken",value:function(e){var t=e.username,r=e.password,i=e.token,n=e.context;return this.delete("/v1/access_tokens/"+i,{access_token:i},{username:t,password:r},n)}},{key:"listAccessTokens",value:function(e){var t=e.username,r=e.password,i=e.context;return this.get("/v1/access_tokens",{username:t,password:r},void 0,i)}},{key:"listDevices",value:function(e){var t=e.deviceId,r=e.deviceName,i=e.sortAttr,n=e.sortDir,u=e.page,a=e.perPage,o=e.product,s=e.auth,c=e.context,d=o?"/v1/products/"+o+"/devices":"/v1/devices",v=o?{deviceId:t,deviceName:r,sortAttr:i,sortDir:n,page:u,per_page:a}:void 0;return this.get(d,s,v,c)}},{key:"getDevice",value:function(e){var t=e.deviceId,r=e.product,i=e.auth,n=e.context,u=this.deviceUri({deviceId:t,product:r});return this.get(u,i,void 0,n)}},{key:"claimDevice",value:function(e){var t=e.deviceId,r=e.requestTransfer,i=e.auth,n=e.context;return this.post("/v1/devices",{id:t,request_transfer:!!r},i,n)}},{key:"addDeviceToProduct",value:function(e){var t=e.deviceId,r=e.product,i=e.auth,n=e.context,u="/v1/products/"+r+"/devices";return this.post(u,{id:t},i,n)}},{key:"removeDevice",value:function(e){var t=e.deviceId,r=e.deny,i=e.product,n=e.auth,u=e.context,a=this.deviceUri({deviceId:t,product:i}),o=i?{deny:r}:void 0;return this.delete(a,o,n,u)}},{key:"removeDeviceOwner",value:function(e){var t=e.deviceId,r=(e.deny,e.product),i=e.auth,n=e.context,u="/v1/products/"+r+"/devices/"+t+"/owner";return this.delete(u,void 0,i,n)}},{key:"renameDevice",value:function(e){var t=e.deviceId,r=e.name,i=e.product,n=e.auth,u=e.context;return this.updateDevice({deviceId:t,name:r,product:i,auth:n,context:u})}},{key:"signalDevice",value:function(e){var t=e.deviceId,r=e.signal,i=e.product,n=e.auth,u=e.context;return this.updateDevice({deviceId:t,signal:r,product:i,auth:n,context:u})}},{key:"setDeviceNotes",value:function(e){var t=e.deviceId,r=e.notes,i=e.product,n=e.auth,u=e.context;return this.updateDevice({deviceId:t,notes:r,product:i,auth:n,context:u})}},{key:"markAsDevelopmentDevice",value:function(e){var t=e.deviceId,r=e.development,i=void 0===r||r,n=e.product,u=e.auth,a=e.context;return this.updateDevice({deviceId:t,development:i,product:n,auth:u,context:a})}},{key:"lockDeviceProductFirmware",value:function(e){var t=e.deviceId,r=e.desiredFirmwareVersion,i=e.flash,n=e.product,u=e.auth,a=e.context;return this.updateDevice({deviceId:t,desiredFirmwareVersion:r,flash:i,product:n,auth:u,context:a})}},{key:"unlockDeviceProductFirmware",value:function(e){var t=e.deviceId,r=e.product,i=e.auth,n=e.context;return this.updateDevice({deviceId:t,desiredFirmwareVersion:null,product:r,auth:i,context:n})}},{key:"updateDevice",value:function(e){var t=e.deviceId,r=e.name,i=e.signal,n=e.notes,u=e.development,a=e.desiredFirmwareVersion,o=e.flash,s=e.product,c=e.auth,d=e.context;i=i?"1":"0";var v=this.deviceUri({deviceId:t,product:s}),l=s?{name:r,signal:i,notes:n,development:u,desired_firmware_version:a,flash:o}:{name:r,signal:i,notes:n};return this.put(v,l,c,d)}},{key:"provisionDevice",value:function(e){var t=e.productId,r=e.auth,i=e.context;return this.post("/v1/devices",{product_id:t},r,i)}},{key:"getClaimCode",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/device_claims":"/v1/device_claims";return this.post(u,{iccid:t},i,n)}},{key:"validatePromoCode",value:function(e){var t=e.auth,r=e.promoCode,i=e.context;return this.get("/v1/promo_code/"+r,t,void 0,i)}},{key:"changeProduct",value:function(e){var t=e.deviceId,r=e.productId,i=e.auth,n=e.context;return this.put("/v1/devices/"+t,{product_id:r},i,n)}},{key:"getVariable",value:function(e){var t=e.deviceId,r=e.name,i=e.product,n=e.auth,u=e.context,a=i?"/v1/products/"+i+"/devices/"+t+"/"+r:"/v1/devices/"+t+"/"+r;return this.get(a,n,void 0,u)}},{key:"flashDevice",value:function(e){var t=e.deviceId,r=e.files,i=e.targetVersion,n=e.auth,u=e.context,a={};return i?a.build_target_version=i:a.latest="true",this.request({uri:"/v1/devices/"+t,files:r,auth:n,form:a,context:u,method:"put"})}},{key:"flashTinker",value:function(e){var t=e.deviceId,r=e.auth,i=e.context;return console&&console.warning&&console.warning("Particle.flashTinker is deprecated"),this.put("/v1/devices/"+t,{app:"tinker"},r,i)}},{key:"compileCode",value:function(e){var t=e.files,r=e.platformId,i=e.targetVersion,n=e.auth,u=e.context,a={platform_id:r};return i?a.build_target_version=i:a.latest="true",this.request({uri:"/v1/binaries",files:t,auth:n,form:a,context:u,method:"post"})}},{key:"downloadFirmwareBinary",value:function(e){var t=e.binaryId,r=e.auth,i=(e.context,"/v1/binaries/"+t),n=(0,_superagent2.default)("get",i);return n.use(this.prefix),this.headers(n,r),this.debug&&this.debug(n),n}},{key:"sendPublicKey",value:function(e){var t=e.deviceId,r=e.key,i=e.algorithm,n=e.auth,u=e.context;return this.post("/v1/provisioning/"+t,{deviceID:t,publicKey:"string"==typeof r?r:r.toString(),filename:"particle-api",order:"manual_"+Date.now(),algorithm:i||"rsa"},n,u)}},{key:"callFunction",value:function(e){var t=e.deviceId,r=e.name,i=e.argument,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/devices/"+t+"/"+r:"/v1/devices/"+t+"/"+r;return this.post(o,{args:i},u,a)}},{key:"getEventStream",value:function(e){var t=e.deviceId,r=e.name,i=e.org,n=e.product,u=e.auth,a=(e.context,"/v1/");return i&&(a+="orgs/"+i+"/"),n&&(a+="products/"+n+"/"),t&&(a+="devices/","mine"!==t.toLowerCase()&&(a+=t+"/")),a+="events",r&&(a+="/"+encodeURIComponent(r)),new _EventStream2.default(""+this.baseUrl+a,u,{debug:this.debug}).connect()}},{key:"publishEvent",value:function(e){var t=e.name,r=e.data,i=e.isPrivate,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/events":"/v1/devices/events",s={name:t,data:r,private:i};return this.post(o,s,u,a)}},{key:"createWebhook",value:function(e){var t=e.deviceId,r=e.name,i=e.url,n=e.requestType,u=e.headers,a=e.json,o=e.query,s=e.body,c=e.responseTemplate,d=e.responseTopic,v=e.rejectUnauthorized,l=e.webhookAuth,p=e.noDefaults,h=e.form,f=e.product,m=e.auth,g=e.context;"mine"===t&&(t=void 0);var y=f?"/v1/products/"+f+"/webhooks":"/v1/webhooks",k={event:r,deviceid:t,url:i,requestType:n,headers:u,json:a,query:o,body:s,responseTemplate:c,responseTopic:d,rejectUnauthorized:v,auth:l,noDefaults:p,form:h};return this.post(y,k,m,g)}},{key:"deleteWebhook",value:function(e){var t=e.hookId,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/webhooks/"+t:"/v1/webhooks/"+t;return this.delete(u,void 0,i,n)}},{key:"listWebhooks",value:function(e){var t=e.product,r=e.auth,i=e.context,n=t?"/v1/products/"+t+"/webhooks":"/v1/webhooks";return this.get(n,r,void 0,i)}},{key:"createIntegration",value:function(e){var t=(e.integrationType,e.event),r=e.settings,i=e.deviceId,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/integrations":"/v1/integrations",s=(0,_assign2.default)({event:t,deviceid:i},r);return this.post(o,s,u,a)}},{key:"editIntegration",value:function(e){var t=e.integrationId,r=e.event,i=e.settings,n=e.deviceId,u=e.product,a=e.auth,o=e.context,s=u?"/v1/products/"+u+"/integrations/"+t:"/v1/integrations/"+t,c=(0,_assign2.default)({event:r,deviceid:n},i);return this.put(s,c,a,o)}},{key:"deleteIntegration",value:function(e){var t=e.integrationId,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/integrations/"+t:"/v1/integrations/"+t;return this.delete(u,void 0,i,n)}},{key:"listIntegrations",value:function(e){var t=e.product,r=e.auth,i=e.context,n=t?"/v1/products/"+t+"/integrations":"/v1/integrations";return this.get(n,r,void 0,i)}},{key:"getUserInfo",value:function(e){var t=e.auth,r=e.context;return this.get("/v1/user",t,void 0,r)}},{key:"setUserInfo",value:function(e){var t=e.stripeToken,r=e.accountInfo,i=e.password,n=e.auth,u=e.context,a={};return t&&(a.stripe_token=t),r&&(a.account_info=r),i&&(a.password=i),this.put("/v1/user",a,n,u)}},{key:"listSIMs",value:function(e){var t=e.iccid,r=e.deviceId,i=e.deviceName,n=e.page,u=e.perPage,a=e.product,o=e.auth,s=e.context,c=a?"/v1/products/"+a+"/sims":"/v1/sims",d=a?{iccid:t,deviceId:r,deviceName:i,page:n,per_page:u}:void 0;return this.get(c,o,d,s)}},{key:"getSIMDataUsage",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/sims/"+t+"/data_usage":"/v1/sims/"+t+"/data_usage";return this.get(u,i,void 0,n)}},{key:"getFleetDataUsage",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t+"/sims/data_usage",r,void 0,i)}},{key:"checkSIM",value:function(e){var t=e.iccid,r=e.auth,i=e.context;return this.head("/v1/sims/"+t,r,void 0,i)}},{key:"activateSIM",value:function(e){var t=e.iccid,r=e.iccids,i=e.countryCode,n=e.promoCode,u=e.product,a=e.auth,o=e.context;r=r||[t];var s=u?"/v1/products/"+u+"/sims":"/v1/sims/"+t,c=u?{sims:r,countryCode:i}:{countryCode:i,promoCode:n,action:"activate"},d=u?"post":"put";return this.request({uri:s,method:d,data:c,auth:a,context:o})}},{key:"deactivateSIM",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/sims/"+t:"/v1/sims/"+t,a={action:"deactivate"};return this.put(u,a,i,n)}},{key:"reactivateSIM",value:function(e){var t=e.iccid,r=e.mbLimit,i=e.product,n=e.auth,u=e.context,a=i?"/v1/products/"+i+"/sims/"+t:"/v1/sims/"+t,o={mb_limit:r,action:"reactivate"};return this.put(a,o,n,u)}},{key:"updateSIM",value:function(e){var t=e.iccid,r=e.mbLimit,i=e.product,n=e.auth,u=e.context,a=i?"/v1/products/"+i+"/sims/"+t:"/v1/sims/"+t,o={mb_limit:r};return this.put(a,o,n,u)}},{key:"removeSIM",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/sims/"+t:"/v1/sims/"+t;return this.delete(u,void 0,i,n)}},{key:"listBuildTargets",value:function(e){var t=e.onlyFeatured,r=e.auth,i=e.context,n=void 0;return void 0!==t&&(n={featured:!!t}),this.get("/v1/build_targets",r,n,i)}},{key:"listLibraries",value:function(e){var t=e.page,r=e.limit,i=e.filter,n=e.sort,u=e.architectures,a=e.category,o=e.scope,s=e.excludeScopes,c=e.auth,d=e.context;return this.get("/v1/libraries",c,{page:t,filter:i,limit:r,sort:n,architectures:this._asList(u),category:a,scope:o,excludeScopes:this._asList(s)},d)}},{key:"_asList",value:function(e){return Array.isArray(e)?e.join(","):e}},{key:"getLibrary",value:function(e){var t=e.name,r=e.version,i=e.auth,n=e.context;return this.get("/v1/libraries/"+t,i,{version:r},n)}},{key:"getLibraryVersions",value:function(e){var t=e.name,r=e.page,i=e.limit,n=e.auth,u=e.context;return this.get("/v1/libraries/"+t+"/versions",n,{page:r,limit:i},u)}},{key:"contributeLibrary",value:function(e){var t=e.archive,r=e.auth,i=e.context,n={"archive.tar.gz":t};return this.request({uri:"/v1/libraries",files:n,auth:r,context:i,method:"post"})}},{key:"publishLibrary",value:function(e){var t=e.name,r=e.auth,i=e.context;return this.request({uri:"/v1/libraries/"+t,auth:r,context:i,method:"patch",data:{visibility:"public"}})}},{key:"deleteLibrary",value:function(e){var t=e.name,r=e.force,i=e.auth,n=e.context;return this.delete("/v1/libraries/"+t,{force:r},i,n)}},{key:"downloadFile",value:function(e){var t=e.url,r=_superagent2.default.get(t);return r.buffer?r=r.buffer(!0).parse(_superagentBinaryParser2.default):r.responseType&&(r=r.responseType("arraybuffer").then(function(e){return e.body=e.xhr.response,e})),r.then(function(e){return e.body})}},{key:"listOAuthClients",value:function(e){var t=e.product,r=e.auth,i=e.context,n=t?"/v1/products/"+t+"/clients":"/v1/clients";return this.get(n,r,void 0,i)}},{key:"createOAuthClient",value:function(e){var t=e.name,r=e.type,i=e.redirect_uri,n=e.scope,u=e.product,a=e.auth,o=e.context,s=u?"/v1/products/"+u+"/clients":"/v1/clients",c={name:t,type:r,redirect_uri:i,scope:n};return this.post(s,c,a,o)}},{key:"updateOAuthClient",value:function(e){var t=e.clientId,r=e.name,i=e.scope,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/clients/"+t:"/v1/clients/"+t,s={name:r,scope:i};return this.put(o,s,u,a)}},{key:"deleteOAuthClient",value:function(e){var t=e.clientId,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/clients/"+t:"/v1/clients/"+t;return this.delete(u,void 0,i,n)}},{key:"listProducts",value:function(e){var t=e.auth,r=e.context;return this.get("/v1/products",t,void 0,r)}},{key:"getProduct",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t,r,void 0,i)}},{key:"listProductFirmware",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t+"/firmware",r,void 0,i)}},{key:"uploadProductFirmware",value:function(e){var t=e.file,r=e.version,i=e.title,n=e.description,u=e.product,a=e.auth,o=e.context;return this.request({uri:"/v1/products/"+u+"/firmware",method:"post",files:{"firmware.bin":t},form:{version:r,title:i,description:n},context:o,auth:a})}},{key:"getProductFirmware",value:function(e){var t=e.version,r=e.product,i=e.auth,n=e.context;return this.get("/v1/products/"+r+"/firmware/"+t,i,void 0,n)}},{key:"updateProductFirmware",value:function(e){var t=e.version,r=e.title,i=e.description,n=e.product,u=e.auth,a=e.context,o="/v1/products/"+n+"/firmware/"+t;return this.put(o,{title:r,description:i},u,a)}},{key:"downloadProductFirmware",value:function(e){var t=e.version,r=e.product,i=e.auth,n=(e.context,"/v1/products/"+r+"/firmware/"+t+"/binary"),u=(0,_superagent2.default)("get",n);return u.use(this.prefix),this.headers(u,i),this.debug&&this.debug(u),u}},{key:"releaseProductFirmware",value:function(e){var t=e.version,r=e.product,i=e.auth,n=e.context,u="/v1/products/"+r+"/firmware/release";return this.put(u,{version:t},i,n)}},{key:"listTeamMembers",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t+"/team",r,void 0,i)}},{key:"inviteTeamMember",value:function(e){var t=e.username,r=e.product,i=e.auth,n=e.context;return this.post("/v1/products/"+r+"/team",{username:t},i,n)}},{key:"removeTeamMember",value:function(e){var t=e.username,r=e.product,i=e.auth,n=e.context;return this.delete("/v1/products/"+r+"/team/"+t,void 0,i,n)}},{key:"deviceUri",value:function(e){var t=e.deviceId,r=e.product;return r?"/v1/products/"+r+"/devices/"+t:"/v1/devices/"+t}},{key:"get",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.get(e,t,r,i)}},{key:"head",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.head(e,t,r,i)}},{key:"post",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.post(e,t,r,i)}},{key:"put",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.put(e,t,r,i)}},{key:"delete",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.delete(e,t,r,i)}},{key:"request",value:function(e){return e.context=this._buildContext(e.context),this.agent.request(e)}},{key:"client",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new _Client2.default((0,_assign2.default)({api:this},e))}}]),e}();Particle.prototype.removeAccessToken=Particle.prototype.deleteAccessToken,exports.default=Particle,module.exports=exports.default; +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var _assign=require("babel-runtime/core-js/object/assign"),_assign2=_interopRequireDefault(_assign),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_createClass2=require("babel-runtime/helpers/createClass"),_createClass3=_interopRequireDefault(_createClass2),_superagent=require("superagent"),_superagent2=_interopRequireDefault(_superagent),_superagentBinaryParser=require("./superagent-binary-parser"),_superagentBinaryParser2=_interopRequireDefault(_superagentBinaryParser),_Defaults=require("./Defaults"),_Defaults2=_interopRequireDefault(_Defaults),_EventStream=require("./EventStream"),_EventStream2=_interopRequireDefault(_EventStream),_Agent=require("./Agent"),_Agent2=_interopRequireDefault(_Agent),_Client=require("./Client"),_Client2=_interopRequireDefault(_Client),Particle=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,_classCallCheck3.default)(this,e),(0,_assign2.default)(this,_Defaults2.default,t),this.context={},this.agent=new _Agent2.default(this.baseUrl)}return(0,_createClass3.default)(e,[{key:"_isValidContext",value:function(e,t){return("tool"===e||"project"===e)&&void 0!==t}},{key:"setContext",value:function(e,t){if(void 0!==t){if(!this._isValidContext(e,t))throw Error("uknown context name or undefined context: "+e);this.context[e]=t}}},{key:"_buildContext",value:function(e){return(0,_assign2.default)(this.context,e)}},{key:"login",value:function(e){var t=e.username,r=e.password,i=e.tokenDuration,n=void 0===i?this.tokenDuration:i,u=e.context;return this.request({uri:"/oauth/token",form:{username:t,password:r,grant_type:"password",client_id:this.clientId,client_secret:this.clientSecret,expires_in:n},method:"post",context:u})}},{key:"createUser",value:function(e){var t=e.username,r=e.password,i=e.accountInfo,n=e.context;return this.post("/v1/users",{username:t,password:r,account_info:i},void 0,n)}},{key:"verifyUser",value:function(e){var t=e.token,r=e.context;return this.post("/v1/user/verify",{token:t},void 0,r)}},{key:"resetPassword",value:function(e){var t=e.username,r=e.context;return this.post("/v1/user/password-reset",{username:t},void 0,r)}},{key:"deleteAccessToken",value:function(e){var t=e.username,r=e.password,i=e.token,n=e.context;return this.delete("/v1/access_tokens/"+i,{access_token:i},{username:t,password:r},n)}},{key:"deleteCurrentAccessToken",value:function(e){var t=e.auth,r=e.context;return this.delete("/v1/access_tokens/current",void 0,t,r)}},{key:"listAccessTokens",value:function(e){var t=e.username,r=e.password,i=e.context;return this.get("/v1/access_tokens",{username:t,password:r},void 0,i)}},{key:"trackingIdentity",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.auth,r=e.full,i=void 0!==r&&r,n=e.context;return this.get("/v1/user/identify",t,i?void 0:{tracking:1},n)}},{key:"listDevices",value:function(e){var t=e.deviceId,r=e.deviceName,i=e.sortAttr,n=e.sortDir,u=e.page,a=e.perPage,o=e.product,s=e.auth,c=e.context,d=o?"/v1/products/"+o+"/devices":"/v1/devices",v=o?{deviceId:t,deviceName:r,sortAttr:i,sortDir:n,page:u,per_page:a}:void 0;return this.get(d,s,v,c)}},{key:"getDevice",value:function(e){var t=e.deviceId,r=e.product,i=e.auth,n=e.context,u=this.deviceUri({deviceId:t,product:r});return this.get(u,i,void 0,n)}},{key:"claimDevice",value:function(e){var t=e.deviceId,r=e.requestTransfer,i=e.auth,n=e.context;return this.post("/v1/devices",{id:t,request_transfer:!!r},i,n)}},{key:"addDeviceToProduct",value:function(e){var t=e.deviceId,r=e.product,i=e.auth,n=e.context,u="/v1/products/"+r+"/devices";return this.post(u,{id:t},i,n)}},{key:"removeDevice",value:function(e){var t=e.deviceId,r=e.deny,i=e.product,n=e.auth,u=e.context,a=this.deviceUri({deviceId:t,product:i}),o=i?{deny:r}:void 0;return this.delete(a,o,n,u)}},{key:"removeDeviceOwner",value:function(e){var t=e.deviceId,r=(e.deny,e.product),i=e.auth,n=e.context,u="/v1/products/"+r+"/devices/"+t+"/owner";return this.delete(u,void 0,i,n)}},{key:"renameDevice",value:function(e){var t=e.deviceId,r=e.name,i=e.product,n=e.auth,u=e.context;return this.updateDevice({deviceId:t,name:r,product:i,auth:n,context:u})}},{key:"signalDevice",value:function(e){var t=e.deviceId,r=e.signal,i=e.product,n=e.auth,u=e.context;return this.updateDevice({deviceId:t,signal:r,product:i,auth:n,context:u})}},{key:"setDeviceNotes",value:function(e){var t=e.deviceId,r=e.notes,i=e.product,n=e.auth,u=e.context;return this.updateDevice({deviceId:t,notes:r,product:i,auth:n,context:u})}},{key:"markAsDevelopmentDevice",value:function(e){var t=e.deviceId,r=e.development,i=void 0===r||r,n=e.product,u=e.auth,a=e.context;return this.updateDevice({deviceId:t,development:i,product:n,auth:u,context:a})}},{key:"lockDeviceProductFirmware",value:function(e){var t=e.deviceId,r=e.desiredFirmwareVersion,i=e.flash,n=e.product,u=e.auth,a=e.context;return this.updateDevice({deviceId:t,desiredFirmwareVersion:r,flash:i,product:n,auth:u,context:a})}},{key:"unlockDeviceProductFirmware",value:function(e){var t=e.deviceId,r=e.product,i=e.auth,n=e.context;return this.updateDevice({deviceId:t,desiredFirmwareVersion:null,product:r,auth:i,context:n})}},{key:"updateDevice",value:function(e){var t=e.deviceId,r=e.name,i=e.signal,n=e.notes,u=e.development,a=e.desiredFirmwareVersion,o=e.flash,s=e.product,c=e.auth,d=e.context;i=i?"1":"0";var v=this.deviceUri({deviceId:t,product:s}),l=s?{name:r,signal:i,notes:n,development:u,desired_firmware_version:a,flash:o}:{name:r,signal:i,notes:n};return this.put(v,l,c,d)}},{key:"provisionDevice",value:function(e){var t=e.productId,r=e.auth,i=e.context;return this.post("/v1/devices",{product_id:t},r,i)}},{key:"getClaimCode",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/device_claims":"/v1/device_claims";return this.post(u,{iccid:t},i,n)}},{key:"validatePromoCode",value:function(e){var t=e.auth,r=e.promoCode,i=e.context;return this.get("/v1/promo_code/"+r,t,void 0,i)}},{key:"changeProduct",value:function(e){var t=e.deviceId,r=e.productId,i=e.auth,n=e.context;return this.put("/v1/devices/"+t,{product_id:r},i,n)}},{key:"getVariable",value:function(e){var t=e.deviceId,r=e.name,i=e.product,n=e.auth,u=e.context,a=i?"/v1/products/"+i+"/devices/"+t+"/"+r:"/v1/devices/"+t+"/"+r;return this.get(a,n,void 0,u)}},{key:"flashDevice",value:function(e){var t=e.deviceId,r=e.files,i=e.targetVersion,n=e.auth,u=e.context,a={};return i?a.build_target_version=i:a.latest="true",this.request({uri:"/v1/devices/"+t,files:r,auth:n,form:a,context:u,method:"put"})}},{key:"flashTinker",value:function(e){var t=e.deviceId,r=e.auth,i=e.context;return console&&console.warning&&console.warning("Particle.flashTinker is deprecated"),this.put("/v1/devices/"+t,{app:"tinker"},r,i)}},{key:"compileCode",value:function(e){var t=e.files,r=e.platformId,i=e.targetVersion,n=e.auth,u=e.context,a={platform_id:r};return i?a.build_target_version=i:a.latest="true",this.request({uri:"/v1/binaries",files:t,auth:n,form:a,context:u,method:"post"})}},{key:"downloadFirmwareBinary",value:function(e){var t=e.binaryId,r=e.auth,i=(e.context,"/v1/binaries/"+t),n=(0,_superagent2.default)("get",i);return n.use(this.prefix),this.headers(n,r),this.debug&&this.debug(n),n}},{key:"sendPublicKey",value:function(e){var t=e.deviceId,r=e.key,i=e.algorithm,n=e.auth,u=e.context;return this.post("/v1/provisioning/"+t,{deviceID:t,publicKey:"string"==typeof r?r:r.toString(),filename:"particle-api",order:"manual_"+Date.now(),algorithm:i||"rsa"},n,u)}},{key:"callFunction",value:function(e){var t=e.deviceId,r=e.name,i=e.argument,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/devices/"+t+"/"+r:"/v1/devices/"+t+"/"+r;return this.post(o,{args:i},u,a)}},{key:"getEventStream",value:function(e){var t=e.deviceId,r=e.name,i=e.org,n=e.product,u=e.auth,a=(e.context,"/v1/");return i&&(a+="orgs/"+i+"/"),n&&(a+="products/"+n+"/"),t&&(a+="devices/","mine"!==t.toLowerCase()&&(a+=t+"/")),a+="events",r&&(a+="/"+encodeURIComponent(r)),new _EventStream2.default(""+this.baseUrl+a,u,{debug:this.debug}).connect()}},{key:"publishEvent",value:function(e){var t=e.name,r=e.data,i=e.isPrivate,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/events":"/v1/devices/events",s={name:t,data:r,private:i};return this.post(o,s,u,a)}},{key:"createWebhook",value:function(e){var t=e.deviceId,r=e.name,i=e.url,n=e.requestType,u=e.headers,a=e.json,o=e.query,s=e.body,c=e.responseTemplate,d=e.responseTopic,v=e.rejectUnauthorized,l=e.webhookAuth,p=e.noDefaults,h=e.form,f=e.product,m=e.auth,g=e.context;"mine"===t&&(t=void 0);var y=f?"/v1/products/"+f+"/webhooks":"/v1/webhooks",k={event:r,deviceid:t,url:i,requestType:n,headers:u,json:a,query:o,body:s,responseTemplate:c,responseTopic:d,rejectUnauthorized:v,auth:l,noDefaults:p,form:h};return this.post(y,k,m,g)}},{key:"deleteWebhook",value:function(e){var t=e.hookId,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/webhooks/"+t:"/v1/webhooks/"+t;return this.delete(u,void 0,i,n)}},{key:"listWebhooks",value:function(e){var t=e.product,r=e.auth,i=e.context,n=t?"/v1/products/"+t+"/webhooks":"/v1/webhooks";return this.get(n,r,void 0,i)}},{key:"createIntegration",value:function(e){var t=(e.integrationType,e.event),r=e.settings,i=e.deviceId,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/integrations":"/v1/integrations",s=(0,_assign2.default)({event:t,deviceid:i},r);return this.post(o,s,u,a)}},{key:"editIntegration",value:function(e){var t=e.integrationId,r=e.event,i=e.settings,n=e.deviceId,u=e.product,a=e.auth,o=e.context,s=u?"/v1/products/"+u+"/integrations/"+t:"/v1/integrations/"+t,c=(0,_assign2.default)({event:r,deviceid:n},i);return this.put(s,c,a,o)}},{key:"deleteIntegration",value:function(e){var t=e.integrationId,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/integrations/"+t:"/v1/integrations/"+t;return this.delete(u,void 0,i,n)}},{key:"listIntegrations",value:function(e){var t=e.product,r=e.auth,i=e.context,n=t?"/v1/products/"+t+"/integrations":"/v1/integrations";return this.get(n,r,void 0,i)}},{key:"getUserInfo",value:function(e){var t=e.auth,r=e.context;return this.get("/v1/user",t,void 0,r)}},{key:"setUserInfo",value:function(e){var t=e.stripeToken,r=e.accountInfo,i=e.password,n=e.auth,u=e.context,a={};return t&&(a.stripe_token=t),r&&(a.account_info=r),i&&(a.password=i),this.put("/v1/user",a,n,u)}},{key:"listSIMs",value:function(e){var t=e.iccid,r=e.deviceId,i=e.deviceName,n=e.page,u=e.perPage,a=e.product,o=e.auth,s=e.context,c=a?"/v1/products/"+a+"/sims":"/v1/sims",d=a?{iccid:t,deviceId:r,deviceName:i,page:n,per_page:u}:void 0;return this.get(c,o,d,s)}},{key:"getSIMDataUsage",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/sims/"+t+"/data_usage":"/v1/sims/"+t+"/data_usage";return this.get(u,i,void 0,n)}},{key:"getFleetDataUsage",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t+"/sims/data_usage",r,void 0,i)}},{key:"checkSIM",value:function(e){var t=e.iccid,r=e.auth,i=e.context;return this.head("/v1/sims/"+t,r,void 0,i)}},{key:"activateSIM",value:function(e){var t=e.iccid,r=e.iccids,i=e.countryCode,n=e.promoCode,u=e.product,a=e.auth,o=e.context;r=r||[t];var s=u?"/v1/products/"+u+"/sims":"/v1/sims/"+t,c=u?{sims:r,countryCode:i}:{countryCode:i,promoCode:n,action:"activate"},d=u?"post":"put";return this.request({uri:s,method:d,data:c,auth:a,context:o})}},{key:"deactivateSIM",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/sims/"+t:"/v1/sims/"+t,a={action:"deactivate"};return this.put(u,a,i,n)}},{key:"reactivateSIM",value:function(e){var t=e.iccid,r=e.mbLimit,i=e.product,n=e.auth,u=e.context,a=i?"/v1/products/"+i+"/sims/"+t:"/v1/sims/"+t,o={mb_limit:r,action:"reactivate"};return this.put(a,o,n,u)}},{key:"updateSIM",value:function(e){var t=e.iccid,r=e.mbLimit,i=e.product,n=e.auth,u=e.context,a=i?"/v1/products/"+i+"/sims/"+t:"/v1/sims/"+t,o={mb_limit:r};return this.put(a,o,n,u)}},{key:"removeSIM",value:function(e){var t=e.iccid,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/sims/"+t:"/v1/sims/"+t;return this.delete(u,void 0,i,n)}},{key:"listBuildTargets",value:function(e){var t=e.onlyFeatured,r=e.auth,i=e.context,n=void 0;return void 0!==t&&(n={featured:!!t}),this.get("/v1/build_targets",r,n,i)}},{key:"listLibraries",value:function(e){var t=e.page,r=e.limit,i=e.filter,n=e.sort,u=e.architectures,a=e.category,o=e.scope,s=e.excludeScopes,c=e.auth,d=e.context;return this.get("/v1/libraries",c,{page:t,filter:i,limit:r,sort:n,architectures:this._asList(u),category:a,scope:o,excludeScopes:this._asList(s)},d)}},{key:"_asList",value:function(e){return Array.isArray(e)?e.join(","):e}},{key:"getLibrary",value:function(e){var t=e.name,r=e.version,i=e.auth,n=e.context;return this.get("/v1/libraries/"+t,i,{version:r},n)}},{key:"getLibraryVersions",value:function(e){var t=e.name,r=e.page,i=e.limit,n=e.auth,u=e.context;return this.get("/v1/libraries/"+t+"/versions",n,{page:r,limit:i},u)}},{key:"contributeLibrary",value:function(e){var t=e.archive,r=e.auth,i=e.context,n={"archive.tar.gz":t};return this.request({uri:"/v1/libraries",files:n,auth:r,context:i,method:"post"})}},{key:"publishLibrary",value:function(e){var t=e.name,r=e.auth,i=e.context;return this.request({uri:"/v1/libraries/"+t,auth:r,context:i,method:"patch",data:{visibility:"public"}})}},{key:"deleteLibrary",value:function(e){var t=e.name,r=e.force,i=e.auth,n=e.context;return this.delete("/v1/libraries/"+t,{force:r},i,n)}},{key:"downloadFile",value:function(e){var t=e.url,r=_superagent2.default.get(t);return r.buffer?r=r.buffer(!0).parse(_superagentBinaryParser2.default):r.responseType&&(r=r.responseType("arraybuffer").then(function(e){return e.body=e.xhr.response,e})),r.then(function(e){return e.body})}},{key:"listOAuthClients",value:function(e){var t=e.product,r=e.auth,i=e.context,n=t?"/v1/products/"+t+"/clients":"/v1/clients";return this.get(n,r,void 0,i)}},{key:"createOAuthClient",value:function(e){var t=e.name,r=e.type,i=e.redirect_uri,n=e.scope,u=e.product,a=e.auth,o=e.context,s=u?"/v1/products/"+u+"/clients":"/v1/clients",c={name:t,type:r,redirect_uri:i,scope:n};return this.post(s,c,a,o)}},{key:"updateOAuthClient",value:function(e){var t=e.clientId,r=e.name,i=e.scope,n=e.product,u=e.auth,a=e.context,o=n?"/v1/products/"+n+"/clients/"+t:"/v1/clients/"+t,s={name:r,scope:i};return this.put(o,s,u,a)}},{key:"deleteOAuthClient",value:function(e){var t=e.clientId,r=e.product,i=e.auth,n=e.context,u=r?"/v1/products/"+r+"/clients/"+t:"/v1/clients/"+t;return this.delete(u,void 0,i,n)}},{key:"listProducts",value:function(e){var t=e.auth,r=e.context;return this.get("/v1/products",t,void 0,r)}},{key:"getProduct",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t,r,void 0,i)}},{key:"listProductFirmware",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t+"/firmware",r,void 0,i)}},{key:"uploadProductFirmware",value:function(e){var t=e.file,r=e.version,i=e.title,n=e.description,u=e.product,a=e.auth,o=e.context;return this.request({uri:"/v1/products/"+u+"/firmware",method:"post",files:{"firmware.bin":t},form:{version:r,title:i,description:n},context:o,auth:a})}},{key:"getProductFirmware",value:function(e){var t=e.version,r=e.product,i=e.auth,n=e.context;return this.get("/v1/products/"+r+"/firmware/"+t,i,void 0,n)}},{key:"updateProductFirmware",value:function(e){var t=e.version,r=e.title,i=e.description,n=e.product,u=e.auth,a=e.context,o="/v1/products/"+n+"/firmware/"+t;return this.put(o,{title:r,description:i},u,a)}},{key:"downloadProductFirmware",value:function(e){var t=e.version,r=e.product,i=e.auth,n=(e.context,"/v1/products/"+r+"/firmware/"+t+"/binary"),u=(0,_superagent2.default)("get",n);return u.use(this.prefix),this.headers(u,i),this.debug&&this.debug(u),u}},{key:"releaseProductFirmware",value:function(e){var t=e.version,r=e.product,i=e.auth,n=e.context,u="/v1/products/"+r+"/firmware/release";return this.put(u,{version:t},i,n)}},{key:"listTeamMembers",value:function(e){var t=e.product,r=e.auth,i=e.context;return this.get("/v1/products/"+t+"/team",r,void 0,i)}},{key:"inviteTeamMember",value:function(e){var t=e.username,r=e.product,i=e.auth,n=e.context;return this.post("/v1/products/"+r+"/team",{username:t},i,n)}},{key:"removeTeamMember",value:function(e){var t=e.username,r=e.product,i=e.auth,n=e.context;return this.delete("/v1/products/"+r+"/team/"+t,void 0,i,n)}},{key:"deviceUri",value:function(e){var t=e.deviceId,r=e.product;return r?"/v1/products/"+r+"/devices/"+t:"/v1/devices/"+t}},{key:"get",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.get(e,t,r,i)}},{key:"head",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.head(e,t,r,i)}},{key:"post",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.post(e,t,r,i)}},{key:"put",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.put(e,t,r,i)}},{key:"delete",value:function(e,t,r,i){return i=this._buildContext(i),this.agent.delete(e,t,r,i)}},{key:"request",value:function(e){return e.context=this._buildContext(e.context),this.agent.request(e)}},{key:"client",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new _Client2.default((0,_assign2.default)({api:this},e))}}]),e}();Particle.prototype.removeAccessToken=Particle.prototype.deleteAccessToken,exports.default=Particle,module.exports=exports.default; },{"./Agent":1,"./Client":2,"./Defaults":3,"./EventStream":4,"./superagent-binary-parser":7,"babel-runtime/core-js/object/assign":11,"babel-runtime/helpers/classCallCheck":21,"babel-runtime/helpers/createClass":22,"superagent":169}],7:[function(require,module,exports){ (function (Buffer){ "use strict";function binaryParser(e,r){var t=[];e.on("data",function(e){return t.push(e)}),e.on("end",function(){return r(null,Buffer.concat(t))})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=binaryParser,module.exports=exports.default; diff --git a/dist/particle.min.js.map b/dist/particle.min.js.map index 5a072a4..e6813a1 100644 --- a/dist/particle.min.js.map +++ b/dist/particle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/Agent.js","lib/Client.js","lib/Defaults.js","lib/EventStream.js","lib/Library.js","lib/Particle.js","lib/superagent-binary-parser.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/babel-runtime/core-js/number/is-nan.js","node_modules/babel-runtime/core-js/object/assign.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/babel-runtime/core-js/object/entries.js","node_modules/babel-runtime/core-js/object/get-prototype-of.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/babel-runtime/core-js/object/set-prototype-of.js","node_modules/babel-runtime/core-js/promise.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/babel-runtime/helpers/inherits.js","node_modules/babel-runtime/helpers/possibleConstructorReturn.js","node_modules/babel-runtime/helpers/slicedToArray.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/base64-js/index.js","node_modules/buffer-shims/index.js","node_modules/buffer/index.js","node_modules/builtin-status-codes/browser.js","node_modules/component-emitter/index.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/fn/number/is-nan.js","node_modules/core-js/library/fn/object/assign.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/fn/object/entries.js","node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/core-js/library/fn/promise.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/core-js/library/modules/_an-instance.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_for-of.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_invoke.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_is-array.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_keyof.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/_meta.js","node_modules/core-js/library/modules/_microtask.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_object-to-array.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_redefine-all.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_set-proto.js","node_modules/core-js/library/modules/_set-species.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_species-constructor.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_task.js","node_modules/core-js/library/modules/_to-index.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/es6.number.is-nan.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/core-js/library/modules/es6.promise.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/es7.object.entries.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/core-util-is/lib/util.js","node_modules/events/events.js","node_modules/ieee754/index.js","node_modules/inherits/inherits_browser.js","node_modules/is-buffer/index.js","node_modules/isarray/index.js","node_modules/path-browserify/index.js","node_modules/process-nextick-args/index.js","node_modules/process/browser.js","node_modules/punycode/punycode.js","node_modules/querystring-es3/decode.js","node_modules/querystring-es3/encode.js","node_modules/querystring-es3/index.js","node_modules/readable-stream/duplex-browser.js","node_modules/readable-stream/lib/_stream_duplex.js","node_modules/readable-stream/lib/_stream_passthrough.js","node_modules/readable-stream/lib/_stream_readable.js","node_modules/readable-stream/lib/_stream_transform.js","node_modules/readable-stream/lib/_stream_writable.js","node_modules/readable-stream/lib/internal/streams/BufferList.js","node_modules/readable-stream/lib/internal/streams/stream-browser.js","node_modules/readable-stream/passthrough.js","node_modules/readable-stream/readable-browser.js","node_modules/readable-stream/transform.js","node_modules/readable-stream/writable-browser.js","node_modules/stream-browserify/index.js","node_modules/stream-http/index.js","node_modules/stream-http/lib/capability.js","node_modules/stream-http/lib/request.js","node_modules/stream-http/lib/response.js","node_modules/string_decoder/lib/string_decoder.js","node_modules/superagent-prefix/index.js","node_modules/superagent/lib/client.js","node_modules/superagent/lib/is-object.js","node_modules/superagent/lib/request-base.js","node_modules/superagent/lib/request.js","node_modules/to-arraybuffer/index.js","node_modules/url/url.js","node_modules/url/util.js","node_modules/util-deprecate/browser.js","node_modules/xtend/immutable.js"],"names":["_interopRequireDefault","obj","__esModule","default","Object","defineProperty","exports","value","_keys","require","_keys2","_slicedToArray2","_slicedToArray3","_entries","_entries2","_getIterator2","_getIterator3","_assign","_assign2","_promise","_promise2","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_superagent","_superagent2","_superagentPrefix","_superagentPrefix2","_path","_path2","Agent","baseUrl","this","prefix","key","uri","auth","query","context","request","method","data","_ref","_ref$data","undefined","_ref$query","_ref$form","form","_ref$files","files","_ref$context","requestFiles","_sanitizeFiles","_request","_ref2","req","_buildRequest","_promiseResponse","_this","fulfill","reject","_sendRequest","end","error","res","body","url","statusCode","status","errorDescription","shortErrorDescription","error_description","reason","Error","_ref3","_ref3$makerequest","makerequest","use","_authorizationHeader","_applyContext","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","_step$value","name","file","_getFormData","append","filename","path","relativePath","dirname","err","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_step2$value","field","type","send","tool","_addToolContext","project","_addProjectContext","_toolIdent","components","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","component","set","_nameAtVersion","version","_buildSemicolonSeparatedProperties","primaryProperty","prop","hasOwnProperty","username","password","Authorization","forEach","k","i","module","_Particle","_Particle2","_Library","_Library2","Client","_ref$api","api","Boolean","arguments","length","listLibraries","then","payload","map","l","_this2","getLibrary","library","_this3","getLibraryVersions","archive","_this4","contributeLibrary","_throwError","_this5","publishLibrary","_this6","force","deleteLibrary","errors","errorMessages","e","message","join","downloadFile","platformId","targetVersion","compileCode","signal","deviceId","signalDevice","listDevices","listBuildTargets","onlyFeatured","targets","target","platforms","platform","push","prerelease","prereleases","indexOf","firmware_vendor","_ref4","_ref4$full","full","trackingIdentity","clientSecret","clientId","tokenDuration","_isNan","_isNan2","_getPrototypeOf","_getPrototypeOf2","_possibleConstructorReturn2","_possibleConstructorReturn3","_inherits2","_inherits3","_http","_http2","_https","_https2","_url","_url2","_events","EventStream","_EventEmitter","token","options","__proto__","call","reconnectInterval","resolve","_url$parse","parse","hostname","protocol","port","origin","isSecure","requestor","avoidFetch","mode","debug","on","chunk","JSON","emit","buf","eventName","lastEventId","bind","once","abort","removeAllListeners","setTimeout","connect","catch","pos","discardTrailingNewline","lineLength","fieldLength","c","parseEventStreamLine","slice","event","step","valueLength","retry","parseInt","EventEmitter","Library","client","_assignAttributes","downloadUrl","links","download","attributes","_superagentBinaryParser","_superagentBinaryParser2","_Defaults","_Defaults2","_EventStream","_EventStream2","_Agent","_Agent2","_Client","_Client2","Particle","agent","_isValidContext","_ref$full","get","tracking","_ref2$tokenDuration","grant_type","client_id","client_secret","expires_in","accountInfo","post","account_info","_ref5","_ref6","delete","access_token","_ref7","_ref8","deviceName","sortAttr","sortDir","page","perPage","product","per_page","_ref9","deviceUri","_ref10","requestTransfer","id","request_transfer","_ref11","_ref12","deny","_ref13","_ref14","updateDevice","_ref15","_ref16","notes","_ref17","_ref17$development","development","_ref18","desiredFirmwareVersion","flash","_ref19","_ref20","desired_firmware_version","put","_ref21","productId","product_id","_ref22","iccid","_ref23","promoCode","_ref24","_ref25","_ref26","build_target_version","latest","_ref27","console","warning","app","_ref28","platform_id","_ref29","binaryId","headers","_ref30","algorithm","deviceID","publicKey","toString","order","Date","now","_ref31","argument","args","_ref32","org","toLowerCase","encodeURIComponent","_ref33","isPrivate","postData","private","_ref34","requestType","json","responseTemplate","responseTopic","rejectUnauthorized","webhookAuth","noDefaults","deviceid","_ref35","hookId","_ref36","_ref37","integrationType","settings","_ref38","integrationId","_ref39","_ref40","_ref41","_ref42","stripeToken","bodyObj","stripe_token","_ref43","_ref44","_ref45","_ref46","head","_ref47","iccids","countryCode","sims","action","_ref48","_ref49","mbLimit","mb_limit","_ref50","_ref51","_ref52","featured","_ref53","limit","filter","sort","architectures","category","scope","excludeScopes","_asList","Array","isArray","_ref54","_ref55","_ref56","archive.tar.gz","_ref57","visibility","_ref58","_ref59","buffer","responseType","xhr","response","_ref60","_ref61","redirect_uri","_ref62","_ref63","_ref64","_ref65","_ref66","_ref67","title","description","firmware.bin","_ref68","_ref69","_ref70","_ref71","_ref72","_ref73","_ref74","_ref75","_buildContext","prototype","removeAccessToken","deleteAccessToken","binaryParser","fn","Buffer","concat","instance","Constructor","TypeError","_defineProperty","_defineProperty2","defineProperties","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","_setPrototypeOf","_setPrototypeOf2","_create","_create2","_typeof2","_typeof3","subClass","superClass","constructor","self","ReferenceError","_isIterable2","_isIterable3","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","_symbol","_symbol2","_typeof","placeHoldersCount","b64","len","byteLength","toByteArray","j","tmp","placeHolders","Arr","L","revLookup","charCodeAt","tripletToBase64","num","lookup","encodeChunk","uint8","start","output","fromByteArray","extraBytes","parts","len2","Uint8Array","code","SlowBuffer","MAX_LEN","kMaxLength","alloc","size","fill","encoding","RangeError","enc","_fill","fillBuf","flen","allocUnsafe","from","encodingOrOffset","global","ArrayBuffer","offset","isBuffer","out","copy","allocUnsafeSlow","typedArraySupport","foo","subarray","TYPED_ARRAY_SUPPORT","createBuffer","that","arg","fromArrayBuffer","fromString","fromObject","assertSize","checked","string","isEncoding","actual","write","fromArrayLike","array","byteOffset","isnan","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","val","dir","isNaN","arrayIndexOf","lastIndexOf","read","indexSize","readUInt16BE","arrLength","valLength","String","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","base64","Math","min","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","ret","toHex","bytes","checkOffset","ext","checkInt","max","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","str","stringtrim","replace","INVALID_BASE64_RE","trim","units","Infinity","leadSurrogate","byteArray","hi","lo","src","dst","INSPECT_MAX_BYTES","poolSize","_augment","Symbol","species","_isBuffer","compare","a","x","y","list","swap16","swap32","swap64","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","100","101","102","200","201","202","203","204","205","206","207","208","226","300","301","302","303","304","305","307","308","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","421","422","423","424","425","426","428","429","431","500","501","502","503","504","505","506","507","508","509","510","511","Emitter","mixin","addEventListener","_callbacks","off","removeListener","removeEventListener","callbacks","cb","splice","listeners","hasListeners","assign","$Object","P","D","create","it","desc","entries","getPrototypeOf","keys","setPrototypeOf","Promise","f","forbiddenField","isObject","toIObject","toLength","toIndex","IS_INCLUDES","$this","el","fromIndex","O","index","cof","TAG","ARG","tryGet","T","B","callee","core","__e","aFunction","document","is","createElement","split","getKeys","gOPS","pIE","result","getSymbols","symbols","isEnum","ctx","hide","PROTOTYPE","$export","source","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","C","Function","virtual","R","U","exec","isArrayIter","anObject","getIterFn","BREAK","RETURN","iterable","ITERATOR","iterator","iterFn","window","__g","dP","createDesc","object","documentElement","un","propertyIsEnumerable","Iterators","ArrayProto","setToStringTag","IteratorPrototype","NAME","LIBRARY","redefine","has","$iterCreate","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","SAFE_CLOSING","riter","skipClosing","safe","iter","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","KEY","macrotask","Observer","MutationObserver","WebKitMutationObserver","process","isNode","last","notify","flush","parent","domain","exit","enter","nextTick","toggle","node","createTextNode","observe","characterData","promise","task","toObject","IObject","$assign","A","K","aLen","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","contentWindow","open","lt","close","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","names","fails","exp","isEntries","bitmap","check","test","buggy","DESCRIPTORS","SPECIES","def","tag","stat","shared","uid","SHARED","store","toInteger","defined","TO_STRING","s","charAt","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","queue","ONREADYSTATECHANGE","defer","channel","run","listener","port2","port1","onmessage","postMessage","importScripts","removeChild","clear","ceil","valueOf","px","random","wksExt","$Symbol","USE_SYMBOL","$exports","classof","getIteratorMethod","getIterator","isIterable","addToUnscopables","iterated","_t","_k","Arguments","number","$getPrototypeOf","anInstance","forOf","speciesConstructor","microtask","PROMISE","$Promise","empty","Internal","GenericPromiseCapability","Wrapper","USE_NATIVE","FakePromise","PromiseRejectionEvent","sameConstructor","isThenable","newPromiseCapability","PromiseCapability","$$resolve","$$reject","perform","isReject","chain","_c","_v","ok","reaction","handler","fail","_h","onHandleUnhandled","onUnhandled","abrupt","isUnhandled","onunhandledrejection","_a","onrejectionhandled","$reject","_w","$resolve","wrapper","executor","onFulfilled","onRejected","r","capability","all","$index","alreadyCalled","race","$at","point","$fails","wks","wksDefine","keyOf","enumKeys","gOPNExt","$GOPD","$DP","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","for","keyFor","useSetter","useSimple","replacer","$replacer","TO_STRING_TAG","collections","Collection","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isUndefined","isRegExp","re","isDate","d","isError","isFunction","isPrimitive","o","_maxListeners","defaultMaxListeners","setMaxListeners","er","addListener","newListener","warned","trace","g","fired","position","listenerCount","evlistener","emitter","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","log","LN2","ctor","superCtor","super_","TempCtor","isSlowBuffer","normalizeArray","allowAboveRoot","up","unshift","xs","splitPathRe","splitPath","resolvedPath","resolvedAbsolute","cwd","p","normalize","isAbsolute","trailingSlash","paths","relative","to","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","root","basename","extname","arg1","arg2","arg3","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","timeout","Item","noop","browser","env","argv","versions","prependListener","prependOnceListener","binding","chdir","umask","mapDomain","regexSeparators","ucs2decode","extra","ucs2encode","stringFromCharCode","basicToDigit","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","decode","input","basic","oldi","t","baseMinusT","inputLength","initialN","bias","initialBias","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","punycode","overflow","not-basic","invalid-input","ucs2","define","amd","qs","eq","maxKeys","kstr","vstr","v","idx","decodeURIComponent","stringifyPrimitive","objectKeys","ks","Duplex","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","processNextTick","onEndNT","util","inherits","PassThrough","Transform","_transform","ReadableState","stream","objectMode","readableObjectMode","hwm","highWaterMark","defaultHwm","BufferList","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","ranOut","awaitDrain","readingMore","decoder","StringDecoder","_readableState","_read","Stream","readableAddChunk","state","addToFront","chunkInvalid","onEofChunk","skipAdd","emitReadable","maybeReadMore","needMoreData","computeNewHighWaterMark","MAX_HWM","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","EElistenerCount","nReadingNextTick","resume","resume_","fromList","shift","fromListPartial","hasStrings","copyFromBufferString","copyFromBuffer","nb","tail","bufferShim","endReadable","endReadableNT","EE","debugUtil","debuglog","kProxyEvents","isPaused","setEncoding","nOrig","doRead","pipe","dest","pipeOpts","onunpipe","cleanup","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","needDrain","increasedAwaitDrain","pause","unpipe","doEnd","stdout","stderr","endFn","dests","ev","paused","_fromList","TransformState","afterTransform","needTransform","transforming","writecb","writechunk","writeencoding","ts","_transformState","rs","transform","_flush","ws","_write","nop","WriteReq","callback","WritableState","writableObjectMode","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","CorkedRequest","realHasInstance","writev","_writev","writeAfterEnd","validChunk","valid","decodeChunk","writeOrBuffer","isBuf","doWrite","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","asyncWrite","afterWrite","onwriteDrain","finishMaybe","entry","holder","count","finish","prefinish","need","endWritable","internalUtil","deprecate","getBuffer","current","_","hasInstance","cork","uncork","setDefaultEncoding","didOnEnd","destroy","_isStdio","ClientRequest","extend","statusCodes","http","opts","defaultProtocol","location","search","host","toUpperCase","defaultMaxSockets","STATUS_CODES","METHODS","checkTypeSupport","fetch","ReadableByteStream","blobConstructor","Blob","XMLHttpRequest","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","vbArray","VBArray","decideMode","preferBinary","statusValid","toArrayBuffer","IncomingMessage","rStates","readyStates","_opts","_body","_headers","setHeader","_mode","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","credentials","withCredentials","_fetchResponse","_connect","_xhr","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","reader","rawHeaders","trailers","rawTrailers","statusMessage","statusText","header","_it","getReader","_pos","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","responseBody","toArray","responseText","newData","MSStreamReader","onload","readAsArrayBuffer","_normalizeEncoding","retried","normalizeEncoding","nenc","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","repeat","utf8Text","total","utf8End","serialize","pairs","pushEncodedKeyValuePair","subkey","parseString","pair","parseHeader","line","lines","fields","pop","isJSON","mime","params","reduce","Response","_setStatusProperties","getResponseHeader","_setHeaderProperties","_parseBody","Request","_query","_header","original","rawResponse","new_err","del","warn","requestBase","getXHR","ActiveXObject","serializeObject","types","xml","urlencoded","form-data","application/x-www-form-urlencoded","application/json","ct","statusType","info","clientError","serverError","toError","accepted","noContent","badRequest","unauthorized","notAcceptable","notFound","forbidden","msg","_responseType","accept","user","pass","btoa","attach","_formData","FormData","_callback","crossDomainError","crossDomain","_timeoutError","_timeout","_appendQueryString","_data","timedout","_aborted","handleProgress","direction","percent","loaded","upload","_timer","_withCredentials","_isHost","contentType","_serializer","patch","_parser","ms","_fullfilledPromise","innerResolve","innerReject","unset","redirects","_maxRedirects","RequestConstructor","arrayCopy","Url","slashes","hash","pathname","href","urlParse","parseQueryString","slashesDenoteHost","u","urlFormat","format","urlResolve","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","https","ftp","gopher","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","deprecated","config","localStorage"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o.\n ******************************************************************************\n */\n\nexports.default = Agent;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Agent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Particle = require('./Particle');\n\nvar _Particle2 = _interopRequireDefault(_Particle);\n\nvar _Library = require('./Library');\n\nvar _Library2 = _interopRequireDefault(_Library);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Client = function () {\n\tfunction Client(_ref) {\n\t\tvar auth = _ref.auth,\n\t\t _ref$api = _ref.api,\n\t\t api = _ref$api === undefined ? new _Particle2.default() : _ref$api;\n\t\t(0, _classCallCheck3.default)(this, Client);\n\n\t\t(0, _assign2.default)(this, { auth: auth, api: api });\n\t}\n\n\t(0, _createClass3.default)(Client, [{\n\t\tkey: 'ready',\n\t\tvalue: function ready() {\n\t\t\treturn Boolean(this.auth);\n\t\t}\n\n\t\t/**\n * Get firmware library objects\n * @param {Object} query The query parameters for libraries. See Particle.listLibraries\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'libraries',\n\t\tvalue: function libraries() {\n\t\t\tvar _this = this;\n\n\t\t\tvar query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t\treturn this.api.listLibraries((0, _assign2.default)({}, query, { auth: this.auth })).then(function (payload) {\n\t\t\t\tvar libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(function (l) {\n\t\t\t\t\treturn new _Library2.default(_this, l);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Get one firmware library object\n * @param {String} name Name of the library to fetch\n * @param {Object} query The query parameters for libraries. See Particle.getLibrary\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'library',\n\t\tvalue: function library(name) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\treturn this.api.getLibrary((0, _assign2.default)({}, query, { name: name, auth: this.auth })).then(function (payload) {\n\t\t\t\tvar library = payload.body.data || {};\n\t\t\t\treturn new _Library2.default(_this2, library);\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Get list of library versions\n * @param {String} name Name of the library to fetch\n * @param {Object} query The query parameters for versions. See Particle.getLibraryVersions\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'libraryVersions',\n\t\tvalue: function libraryVersions(name) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\treturn this.api.getLibraryVersions((0, _assign2.default)({}, query, { name: name, auth: this.auth })).then(function (payload) {\n\t\t\t\tvar libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(function (l) {\n\t\t\t\t\treturn new _Library2.default(_this3, l);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Contribute a new library version\n * @param {Buffer} archive The compressed archive with the library source\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'contributeLibrary',\n\t\tvalue: function contributeLibrary(archive) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn this.api.contributeLibrary({ archive: archive, auth: this.auth }).then(function (payload) {\n\t\t\t\tvar library = payload.body.data || {};\n\t\t\t\treturn new _Library2.default(_this4, library);\n\t\t\t}, function (error) {\n\t\t\t\t_this4._throwError(error);\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Make the the most recent private library version public\n * @param {string} name The name of the library to publish\n * @return {Promise} To publish the library\n */\n\n\t}, {\n\t\tkey: 'publishLibrary',\n\t\tvalue: function publishLibrary(name) {\n\t\t\tvar _this5 = this;\n\n\t\t\treturn this.api.publishLibrary({ name: name, auth: this.auth }).then(function (payload) {\n\t\t\t\tvar library = payload.body.data || {};\n\t\t\t\treturn new _Library2.default(_this5, library);\n\t\t\t}, function (error) {\n\t\t\t\t_this5._throwError(error);\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Delete an entire published library\n * @param {String} $0.name Name of the library to delete\n * @param {String} $0.force Key to force deleting a public library\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteLibrary',\n\t\tvalue: function deleteLibrary(_ref2) {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar name = _ref2.name,\n\t\t\t version = _ref2.version,\n\t\t\t force = _ref2.force;\n\n\t\t\treturn this.api.deleteLibrary({ name: name, force: force, auth: this.auth }).then(function (payload) {\n\t\t\t\treturn true;\n\t\t\t}, function (error) {\n\t\t\t\t_this6._throwError(error);\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: '_throwError',\n\t\tvalue: function _throwError(error) {\n\t\t\tif (error.body && error.body.errors) {\n\t\t\t\tvar errorMessages = error.body.errors.map(function (e) {\n\t\t\t\t\treturn e.message;\n\t\t\t\t}).join('\\n');\n\t\t\t\tthrow new Error(errorMessages);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}, {\n\t\tkey: 'downloadFile',\n\t\tvalue: function downloadFile(url) {\n\t\t\treturn this.api.downloadFile({ url: url });\n\t\t}\n\n\t\t/**\n * @param {Object} files Object containing files to be compiled\n * @param {Number} platformId Platform id number of the device you are compiling for\n * @param {String} targetVersion System firmware version to compile against\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'compileCode',\n\t\tvalue: function compileCode(files, platformId, targetVersion) {\n\t\t\treturn this.api.compileCode({ files: files, platformId: platformId, targetVersion: targetVersion, auth: this.auth });\n\t\t}\n\n\t\t/**\n * @param {String} $0.deviceId Device ID or Name\n * @param {Boolean} $0.signal Signal on or off\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'signalDevice',\n\t\tvalue: function signalDevice(_ref3) {\n\t\t\tvar signal = _ref3.signal,\n\t\t\t deviceId = _ref3.deviceId;\n\n\t\t\treturn this.api.signalDevice({ signal: signal, deviceId: deviceId, auth: this.auth });\n\t\t}\n\n\t\t/**\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'listDevices',\n\t\tvalue: function listDevices() {\n\t\t\treturn this.api.listDevices({ auth: this.auth });\n\t\t}\n\n\t\t/**\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'listBuildTargets',\n\t\tvalue: function listBuildTargets() {\n\t\t\treturn this.api.listBuildTargets({ onlyFeatured: true, auth: this.auth }).then(function (payload) {\n\t\t\t\tvar targets = [];\n\t\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\t\tvar _didIteratorError = false;\n\t\t\t\tvar _iteratorError = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator = (0, _getIterator3.default)(payload.body.targets), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\t\tvar target = _step.value;\n\t\t\t\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\t\t\t\tvar _didIteratorError2 = false;\n\t\t\t\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tfor (var _iterator2 = (0, _getIterator3.default)(target.platforms), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\t\t\t\tvar platform = _step2.value;\n\n\t\t\t\t\t\t\t\ttargets.push({\n\t\t\t\t\t\t\t\t\tversion: target.version,\n\t\t\t\t\t\t\t\t\tplatform: platform,\n\t\t\t\t\t\t\t\t\tprerelease: target.prereleases.indexOf(platform) > -1,\n\t\t\t\t\t\t\t\t\tfirmware_vendor: target.firmware_vendor\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t\t\t\t_iteratorError2 = err;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError = true;\n\t\t\t\t\t_iteratorError = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn targets;\n\t\t\t}, function (error) {});\n\t\t}\n\t}, {\n\t\tkey: 'trackingIdentity',\n\t\tvalue: function trackingIdentity() {\n\t\t\tvar _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n\t\t\t _ref4$full = _ref4.full,\n\t\t\t full = _ref4$full === undefined ? false : _ref4$full,\n\t\t\t context = _ref4.context;\n\n\t\t\treturn this.api.trackingIdentity({ full: full, context: context, auth: this.auth }).then(function (payload) {\n\t\t\t\treturn payload.body;\n\t\t\t});\n\t\t}\n\t}]);\n\treturn Client;\n}();\n\nexports.default = Client;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Client.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = {\n\tbaseUrl: 'https://api.particle.io',\n\tclientSecret: 'particle-api',\n\tclientId: 'particle-api',\n\ttokenDuration: 7776000 // 90 days\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Defaults.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _isNan = require('babel-runtime/core-js/number/is-nan');\n\nvar _isNan2 = _interopRequireDefault(_isNan);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _http = require('http');\n\nvar _http2 = _interopRequireDefault(_http);\n\nvar _https = require('https');\n\nvar _https2 = _interopRequireDefault(_https);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _events = require('events');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint max-depth: 0 */\nvar EventStream = function (_EventEmitter) {\n\t(0, _inherits3.default)(EventStream, _EventEmitter);\n\n\tfunction EventStream(uri, token, options) {\n\t\t(0, _classCallCheck3.default)(this, EventStream);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, (EventStream.__proto__ || (0, _getPrototypeOf2.default)(EventStream)).call(this));\n\n\t\t_this.uri = uri;\n\t\t_this.token = token;\n\t\t_this.reconnectInterval = 2000;\n\t\t(0, _assign2.default)(_this, options);\n\t\treturn _this;\n\t}\n\n\t(0, _createClass3.default)(EventStream, [{\n\t\tkey: 'connect',\n\t\tvalue: function connect() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn new _promise2.default(function (resolve, reject) {\n\t\t\t\tvar _url$parse = _url2.default.parse(_this2.uri),\n\t\t\t\t hostname = _url$parse.hostname,\n\t\t\t\t protocol = _url$parse.protocol,\n\t\t\t\t port = _url$parse.port,\n\t\t\t\t path = _url$parse.path;\n\n\t\t\t\t_this2.origin = protocol + '//' + hostname + (port ? ':' + port : '');\n\n\t\t\t\tvar isSecure = protocol === 'https:';\n\t\t\t\tvar requestor = isSecure ? _https2.default : _http2.default;\n\t\t\t\tvar req = requestor.request({\n\t\t\t\t\thostname: hostname,\n\t\t\t\t\tprotocol: protocol,\n\t\t\t\t\tpath: path + '?history_limit=30&access_token=' + _this2.token,\n\t\t\t\t\tmethod: 'get',\n\t\t\t\t\tport: port || (isSecure ? 443 : 80),\n\t\t\t\t\tavoidFetch: true,\n\t\t\t\t\tmode: 'prefer-streaming'\n\t\t\t\t});\n\n\t\t\t\t_this2.req = req;\n\t\t\t\tif (_this2.debug) {\n\t\t\t\t\t_this2.debug(_this2);\n\t\t\t\t}\n\n\t\t\t\treq.on('error', function (e) {\n\t\t\t\t\treject({ error: e, errorDescription: 'Network error from ' + _this2.uri });\n\t\t\t\t});\n\n\t\t\t\treq.on('response', function (res) {\n\t\t\t\t\tvar statusCode = res.statusCode;\n\t\t\t\t\tif (statusCode !== 200) {\n\t\t\t\t\t\tvar body = '';\n\t\t\t\t\t\tres.on('data', function (chunk) {\n\t\t\t\t\t\t\treturn body += chunk;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tres.on('end', function () {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbody = JSON.parse(body);\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t_this2.emit('response', {\n\t\t\t\t\t\t\t\t\tstatusCode: statusCode,\n\t\t\t\t\t\t\t\t\tbody: body\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tvar errorDescription = 'HTTP error ' + statusCode + ' from ' + _this2.uri;\n\t\t\t\t\t\t\t\tif (body && body.error_description) {\n\t\t\t\t\t\t\t\t\terrorDescription += ' - ' + body.error_description;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treject({ statusCode: statusCode, errorDescription: errorDescription, body: body });\n\t\t\t\t\t\t\t\t_this2.req = undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this2.data = '';\n\t\t\t\t\t_this2.buf = '';\n\t\t\t\t\t_this2.eventName;\n\t\t\t\t\t_this2.lastEventId;\n\n\t\t\t\t\tres.on('data', _this2.parse.bind(_this2));\n\t\t\t\t\tres.once('end', _this2.end.bind(_this2));\n\t\t\t\t\tresolve(_this2);\n\t\t\t\t});\n\t\t\t\treq.end();\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'abort',\n\t\tvalue: function abort() {\n\t\t\tif (this.req) {\n\t\t\t\tthis.req.abort();\n\t\t\t\tthis.req = undefined;\n\t\t\t}\n\t\t\tthis.removeAllListeners();\n\t\t}\n\t}, {\n\t\tkey: 'end',\n\t\tvalue: function end() {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis.req = undefined;\n\t\t\tsetTimeout(function () {\n\t\t\t\t_this3.connect().catch(function (err) {\n\t\t\t\t\t_this3.emit('error', err);\n\t\t\t\t\t_this3.removeAllListeners();\n\t\t\t\t});\n\t\t\t}, this.reconnectInterval);\n\t\t}\n\t}, {\n\t\tkey: 'parse',\n\t\tvalue: function parse(chunk) {\n\t\t\tthis.buf += chunk;\n\t\t\tvar pos = 0;\n\t\t\tvar length = this.buf.length;\n\t\t\tvar discardTrailingNewline = false;\n\n\t\t\twhile (pos < length) {\n\t\t\t\tif (discardTrailingNewline) {\n\t\t\t\t\tif (this.buf[pos] === '\\n') {\n\t\t\t\t\t\t++pos;\n\t\t\t\t\t}\n\t\t\t\t\tdiscardTrailingNewline = false;\n\t\t\t\t}\n\n\t\t\t\tvar lineLength = -1;\n\t\t\t\tvar fieldLength = -1;\n\n\t\t\t\tfor (var i = pos; lineLength < 0 && i < length; ++i) {\n\t\t\t\t\tvar c = this.buf[i];\n\t\t\t\t\tif (c === ':') {\n\t\t\t\t\t\tif (fieldLength < 0) {\n\t\t\t\t\t\t\tfieldLength = i - pos;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (c === '\\r') {\n\t\t\t\t\t\tdiscardTrailingNewline = true;\n\t\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t\t} else if (c === '\\n') {\n\t\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (lineLength < 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis.parseEventStreamLine(pos, fieldLength, lineLength);\n\n\t\t\t\tpos += lineLength + 1;\n\t\t\t}\n\n\t\t\tif (pos === length) {\n\t\t\t\tthis.buf = '';\n\t\t\t} else if (pos > 0) {\n\t\t\t\tthis.buf = this.buf.slice(pos);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'parseEventStreamLine',\n\t\tvalue: function parseEventStreamLine(pos, fieldLength, lineLength) {\n\t\t\tif (lineLength === 0) {\n\t\t\t\ttry {\n\t\t\t\t\tif (this.data.length > 0 && this.event) {\n\t\t\t\t\t\tvar event = JSON.parse(this.data);\n\t\t\t\t\t\tevent.name = this.eventName || '';\n\t\t\t\t\t\tif (this.eventName !== 'event') {\n\t\t\t\t\t\t\tthis.emit(this.eventName, event);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.emit('event', event);\n\t\t\t\t\t\tthis.data = '';\n\t\t\t\t\t}\n\t\t\t\t\tthis.eventName = undefined;\n\t\t\t\t\tthis.event = false;\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// do nothing if JSON.parse fails\n\t\t\t\t}\n\t\t\t} else if (fieldLength > 0) {\n\t\t\t\tvar field = this.buf.slice(pos, pos + fieldLength);\n\t\t\t\tvar step = 0;\n\n\t\t\t\tif (this.buf[pos + fieldLength + 1] !== ' ') {\n\t\t\t\t\tstep = fieldLength + 1;\n\t\t\t\t} else {\n\t\t\t\t\tstep = fieldLength + 2;\n\t\t\t\t}\n\t\t\t\tpos += step;\n\t\t\t\tvar valueLength = lineLength - step;\n\t\t\t\tvar value = this.buf.slice(pos, pos + valueLength);\n\n\t\t\t\tif (field === 'data') {\n\t\t\t\t\tthis.data += value + '\\n';\n\t\t\t\t} else if (field === 'event') {\n\t\t\t\t\tthis.eventName = value;\n\t\t\t\t\tthis.event = true;\n\t\t\t\t} else if (field === 'id') {\n\t\t\t\t\tthis.lastEventId = value;\n\t\t\t\t} else if (field === 'retry') {\n\t\t\t\t\tvar retry = parseInt(value, 10);\n\t\t\t\t\tif (!(0, _isNan2.default)(retry)) {\n\t\t\t\t\t\tthis.reconnectInterval = retry;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}]);\n\treturn EventStream;\n}(_events.EventEmitter);\n\nexports.default = EventStream;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EventStream.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* Library\n * Represents a version of a library contributed in the cloud.\n */\n\nvar Library = function () {\n\tfunction Library(client, data) {\n\t\t(0, _classCallCheck3.default)(this, Library);\n\n\t\t// Make client non-enumerable so it doesn't show up in Object.keys, JSON.stringify, etc\n\t\tObject.defineProperty(this, 'client', { value: client });\n\t\tthis._assignAttributes(data);\n\t\tthis.downloadUrl = data.links && data.links.download;\n\t}\n\n\t(0, _createClass3.default)(Library, [{\n\t\tkey: '_assignAttributes',\n\t\tvalue: function _assignAttributes(data) {\n\t\t\t(0, _assign2.default)(this, data.attributes);\n\t\t}\n\n\t\t/**\n * Download the compressed file containing the source code for this library version.\n * @return {Promise} Resolves to the .tar.gz compressed source code\n */\n\n\t}, {\n\t\tkey: 'download',\n\t\tvalue: function download() {\n\t\t\tif (!this.downloadUrl) {\n\t\t\t\treturn _promise2.default.reject(new Error('No download URL for this library'));\n\t\t\t}\n\t\t\treturn this.client.downloadFile(this.downloadUrl);\n\t\t}\n\n\t\t/* TODO: add a versions() method to fetch an array of library objects */\n\n\t}]);\n\treturn Library;\n}();\n\nexports.default = Library;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Library.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _superagent = require('superagent');\n\nvar _superagent2 = _interopRequireDefault(_superagent);\n\nvar _superagentBinaryParser = require('./superagent-binary-parser');\n\nvar _superagentBinaryParser2 = _interopRequireDefault(_superagentBinaryParser);\n\nvar _Defaults = require('./Defaults');\n\nvar _Defaults2 = _interopRequireDefault(_Defaults);\n\nvar _EventStream = require('./EventStream');\n\nvar _EventStream2 = _interopRequireDefault(_EventStream);\n\nvar _Agent = require('./Agent');\n\nvar _Agent2 = _interopRequireDefault(_Agent);\n\nvar _Client = require('./Client');\n\nvar _Client2 = _interopRequireDefault(_Client);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Particle Cloud API wrapper.\n *\n * See for examples\n * of using the `Particle` class.\n *\n * Most Particle methods take a single unnamed argument object documented as\n * `options` with key/value pairs for each option.\n */\nvar Particle = function () {\n\t/**\n * Contructor for the Cloud API wrapper.\n *\n * Create a new Particle object and call methods below on it.\n *\n * @param {Object} options Options for this API call Options to be used for all requests (see [Defaults](../src/Defaults.js))\n */\n\tfunction Particle() {\n\t\tvar options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\t(0, _classCallCheck3.default)(this, Particle);\n\n\t\t// todo - this seems a bit dangerous - would be better to put all options/context in a contained object\n\t\t(0, _assign2.default)(this, _Defaults2.default, options);\n\t\tthis.context = {};\n\t\tthis.agent = new _Agent2.default(this.baseUrl);\n\t}\n\n\t(0, _createClass3.default)(Particle, [{\n\t\tkey: '_isValidContext',\n\t\tvalue: function _isValidContext(name, context) {\n\t\t\treturn (name === 'tool' || name === 'project') && context !== undefined;\n\t\t}\n\t}, {\n\t\tkey: 'setContext',\n\t\tvalue: function setContext(name, context) {\n\t\t\tif (context !== undefined) {\n\t\t\t\tif (this._isValidContext(name, context)) {\n\t\t\t\t\tthis.context[name] = context;\n\t\t\t\t} else {\n\t\t\t\t\tthrow Error('uknown context name or undefined context: ' + name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Builds the final context from the context parameter and the context items in the api.\n * @param {Object} context The invocation context, this takes precedence over the local context.\n * @return {Object} The context to use.\n * @private\n */\n\n\t}, {\n\t\tkey: '_buildContext',\n\t\tvalue: function _buildContext(context) {\n\t\t\treturn (0, _assign2.default)(this.context, context);\n\t\t}\n\n\t\t/**\n * Retrieves the information that is used to identify the current login for tracking.\n * @param {Object} options Options for this API call\n * @param {String} options.auth The access token\n * @param {Boolean} options.full When true, retrieve all information for registering a user with the tracking API. When false,\n * retrieve only the unique tracking ID for the current login.\n * @param {Object} context Context information.\n * @returns {Promise} Resolve the tracking identify of the current login\n */\n\n\t}, {\n\t\tkey: 'trackingIdentity',\n\t\tvalue: function trackingIdentity() {\n\t\t\tvar _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n\t\t\t auth = _ref.auth,\n\t\t\t _ref$full = _ref.full,\n\t\t\t full = _ref$full === undefined ? false : _ref$full,\n\t\t\t context = _ref.context;\n\n\t\t\treturn this.get('/v1/user/identify', auth, full ? undefined : { tracking: 1 }, context);\n\t\t}\n\n\t\t/**\n * Login to Particle Cloud using an existing Particle acccount.\n * @param {Object} options Options for this API call\n * @param {String} options.username Username for the Particle account\n * @param {String} options.password Password for the Particle account\n * @param {Number} options.tokenDuration How long the access token should last in seconds\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'login',\n\t\tvalue: function login(_ref2) {\n\t\t\tvar username = _ref2.username,\n\t\t\t password = _ref2.password,\n\t\t\t _ref2$tokenDuration = _ref2.tokenDuration,\n\t\t\t tokenDuration = _ref2$tokenDuration === undefined ? this.tokenDuration : _ref2$tokenDuration,\n\t\t\t context = _ref2.context;\n\n\t\t\treturn this.request({ uri: '/oauth/token', form: {\n\t\t\t\t\tusername: username,\n\t\t\t\t\tpassword: password,\n\t\t\t\t\tgrant_type: 'password',\n\t\t\t\t\tclient_id: this.clientId,\n\t\t\t\t\tclient_secret: this.clientSecret,\n\t\t\t\t\texpires_in: tokenDuration\n\t\t\t\t}, method: 'post', context: context });\n\t\t}\n\n\t\t/**\n * Create a user account for the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {String} options.username Email of the new user\n * @param {String} options.password Password\n * @param {String} options.accountInfo Object that contains account information fields such as user real name, company name, business account flag etc\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createUser',\n\t\tvalue: function createUser(_ref3) {\n\t\t\tvar username = _ref3.username,\n\t\t\t password = _ref3.password,\n\t\t\t accountInfo = _ref3.accountInfo,\n\t\t\t context = _ref3.context;\n\n\t\t\treturn this.post('/v1/users', {\n\t\t\t\tusername: username,\n\t\t\t\tpassword: password,\n\t\t\t\taccount_info: accountInfo\n\t\t\t}, undefined, context);\n\t\t}\n\n\t\t/**\n * Verify new user account via verification email\n * @param {Object} options Options for this API call\n * @param {String} options.token the string token sent in the verification email\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'verifyUser',\n\t\tvalue: function verifyUser(_ref4) {\n\t\t\tvar token = _ref4.token,\n\t\t\t context = _ref4.context;\n\n\t\t\treturn this.post('/v1/user/verify', {\n\t\t\t\ttoken: token\n\t\t\t}, undefined, context);\n\t\t}\n\n\t\t/**\n * Send reset password email for a Particle Cloud user account\n * @param {Object} options Options for this API call\n * @param {String} options.username Email of the user\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'resetPassword',\n\t\tvalue: function resetPassword(_ref5) {\n\t\t\tvar username = _ref5.username,\n\t\t\t context = _ref5.context;\n\n\t\t\treturn this.post('/v1/user/password-reset', { username: username }, undefined, context);\n\t\t}\n\n\t\t/**\n * Revoke an access token\n * @param {Object} options Options for this API call\n * @param {String} options.username Username of the Particle cloud account that the token belongs to.\n * @param {String} options.password Password for the account\n * @param {String} options.token Access token you wish to revoke\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteAccessToken',\n\t\tvalue: function deleteAccessToken(_ref6) {\n\t\t\tvar username = _ref6.username,\n\t\t\t password = _ref6.password,\n\t\t\t token = _ref6.token,\n\t\t\t context = _ref6.context;\n\n\t\t\treturn this.delete('/v1/access_tokens/' + token, {\n\t\t\t\taccess_token: token\n\t\t\t}, { username: username, password: password }, context);\n\t\t}\n\n\t\t/**\n * List all valid access tokens for a Particle Cloud account\n * @param {Object} options Options for this API call\n * @param {String} options.username Username\n * @param {String} options.password Password\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listAccessTokens',\n\t\tvalue: function listAccessTokens(_ref7) {\n\t\t\tvar username = _ref7.username,\n\t\t\t password = _ref7.password,\n\t\t\t context = _ref7.context;\n\n\t\t\treturn this.get('/v1/access_tokens', { username: username, password: password }, undefined, context);\n\t\t}\n\n\t\t/**\n * List devices claimed to the account or product\n * @param {Object} options Options for this API call\n * @param {String} [options.deviceId] (Product only) Filter results to devices with this ID (partial matching)\n * @param {String} [options.deviceName] (Product only) Filter results to devices with this name (partial matching)\n * @param {String} [options.sortAttr] (Product only) The attribute by which to sort results. See API docs for options.\n * @param {String} [options.sortDir] (Product only) The direction of sorting. See API docs for options.\n * @param {Number} [options.page] (Product only) Current page of results\n * @param {Number} [options.perPage] (Product only) Records per page\n * @param {String} [options.product] List devices in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listDevices',\n\t\tvalue: function listDevices(_ref8) {\n\t\t\tvar deviceId = _ref8.deviceId,\n\t\t\t deviceName = _ref8.deviceName,\n\t\t\t sortAttr = _ref8.sortAttr,\n\t\t\t sortDir = _ref8.sortDir,\n\t\t\t page = _ref8.page,\n\t\t\t perPage = _ref8.perPage,\n\t\t\t product = _ref8.product,\n\t\t\t auth = _ref8.auth,\n\t\t\t context = _ref8.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/devices' : '/v1/devices';\n\t\t\tvar query = product ? { deviceId: deviceId, deviceName: deviceName, sortAttr: sortAttr, sortDir: sortDir, page: page, per_page: perPage } : undefined;\n\t\t\treturn this.get(uri, auth, query, context);\n\t\t}\n\n\t\t/**\n * Get detailed informationa about a device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getDevice',\n\t\tvalue: function getDevice(_ref9) {\n\t\t\tvar deviceId = _ref9.deviceId,\n\t\t\t product = _ref9.product,\n\t\t\t auth = _ref9.auth,\n\t\t\t context = _ref9.context;\n\n\t\t\tvar uri = this.deviceUri({ deviceId: deviceId, product: product });\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Claim a device to the account. The device must be online and unclaimed.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'claimDevice',\n\t\tvalue: function claimDevice(_ref10) {\n\t\t\tvar deviceId = _ref10.deviceId,\n\t\t\t requestTransfer = _ref10.requestTransfer,\n\t\t\t auth = _ref10.auth,\n\t\t\t context = _ref10.context;\n\n\t\t\treturn this.post('/v1/devices', {\n\t\t\t\tid: deviceId,\n\t\t\t\trequest_transfer: !!requestTransfer\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Add a device to a product or move device out of quarantine.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID\n * @param {String} options.product Add to this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'addDeviceToProduct',\n\t\tvalue: function addDeviceToProduct(_ref11) {\n\t\t\tvar deviceId = _ref11.deviceId,\n\t\t\t product = _ref11.product,\n\t\t\t auth = _ref11.auth,\n\t\t\t context = _ref11.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/devices';\n\t\t\treturn this.post(uri, {\n\t\t\t\tid: deviceId\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Unclaim / Remove a device from your account or product, or deny quarantine\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Boolean} [options.deny] (Product only) Deny this quarantined device, instead of removing an already approved device\n * @param {String} options.product Remove from this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeDevice',\n\t\tvalue: function removeDevice(_ref12) {\n\t\t\tvar deviceId = _ref12.deviceId,\n\t\t\t deny = _ref12.deny,\n\t\t\t product = _ref12.product,\n\t\t\t auth = _ref12.auth,\n\t\t\t context = _ref12.context;\n\n\t\t\tvar uri = this.deviceUri({ deviceId: deviceId, product: product });\n\t\t\tvar data = product ? { deny: deny } : undefined;\n\t\t\treturn this.delete(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Unclaim a product device its the owner, but keep it in the product\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.product Remove from this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeDeviceOwner',\n\t\tvalue: function removeDeviceOwner(_ref13) {\n\t\t\tvar deviceId = _ref13.deviceId,\n\t\t\t deny = _ref13.deny,\n\t\t\t product = _ref13.product,\n\t\t\t auth = _ref13.auth,\n\t\t\t context = _ref13.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/devices/' + deviceId + '/owner';\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * Rename a device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.name Desired Name\n * @param {String} [options.product] Rename device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'renameDevice',\n\t\tvalue: function renameDevice(_ref14) {\n\t\t\tvar deviceId = _ref14.deviceId,\n\t\t\t name = _ref14.name,\n\t\t\t product = _ref14.product,\n\t\t\t auth = _ref14.auth,\n\t\t\t context = _ref14.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, name: name, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Instruct the device to turn on/off the LED in a rainbow pattern\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Boolean} options.signal Signal on or off\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'signalDevice',\n\t\tvalue: function signalDevice(_ref15) {\n\t\t\tvar deviceId = _ref15.deviceId,\n\t\t\t signal = _ref15.signal,\n\t\t\t product = _ref15.product,\n\t\t\t auth = _ref15.auth,\n\t\t\t context = _ref15.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, signal: signal, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Store some notes about device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @params {String} options.notes Your notes about this device\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'setDeviceNotes',\n\t\tvalue: function setDeviceNotes(_ref16) {\n\t\t\tvar deviceId = _ref16.deviceId,\n\t\t\t notes = _ref16.notes,\n\t\t\t product = _ref16.product,\n\t\t\t auth = _ref16.auth,\n\t\t\t context = _ref16.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, notes: notes, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Mark device as being used in development of a product so it opts out of automatic firmware updates\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Boolean} options.development Set to true to mark as development, false to return to product fleet\n * @param {String} options.product Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'markAsDevelopmentDevice',\n\t\tvalue: function markAsDevelopmentDevice(_ref17) {\n\t\t\tvar deviceId = _ref17.deviceId,\n\t\t\t _ref17$development = _ref17.development,\n\t\t\t development = _ref17$development === undefined ? true : _ref17$development,\n\t\t\t product = _ref17.product,\n\t\t\t auth = _ref17.auth,\n\t\t\t context = _ref17.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, development: development, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Mark device as being used in development of a product so it opts out of automatic firmware updates\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @params {Number} options.desiredFirmwareVersion Lock the product device to run this firmware version.\n * @params {Boolean} [options.flash] Immediately flash firmware indicated by desiredFirmwareVersion\n * @param {String} options.product Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'lockDeviceProductFirmware',\n\t\tvalue: function lockDeviceProductFirmware(_ref18) {\n\t\t\tvar deviceId = _ref18.deviceId,\n\t\t\t desiredFirmwareVersion = _ref18.desiredFirmwareVersion,\n\t\t\t flash = _ref18.flash,\n\t\t\t product = _ref18.product,\n\t\t\t auth = _ref18.auth,\n\t\t\t context = _ref18.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, desiredFirmwareVersion: desiredFirmwareVersion, flash: flash, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Mark device as receiving automatic firmware updates\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.product Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'unlockDeviceProductFirmware',\n\t\tvalue: function unlockDeviceProductFirmware(_ref19) {\n\t\t\tvar deviceId = _ref19.deviceId,\n\t\t\t product = _ref19.product,\n\t\t\t auth = _ref19.auth,\n\t\t\t context = _ref19.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, desiredFirmwareVersion: null, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Update multiple device attributes at the same time\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} [options.name] Desired Name\n * @param {Boolean} options.signal Signal device on or off\n * @params {String} [options.notes] Your notes about this device\n * @param {Boolean} [options.development] (Product only) Set to true to mark as development, false to return to product fleet\n * @params {Number} [options.desiredFirmwareVersion] (Product only) Lock the product device to run this firmware version.\n * Pass `null` to unlock firmware and go back to released firmware.\n * @params {Boolean} [options.flash] (Product only) Immediately flash firmware indicated by desiredFirmwareVersion\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateDevice',\n\t\tvalue: function updateDevice(_ref20) {\n\t\t\tvar deviceId = _ref20.deviceId,\n\t\t\t name = _ref20.name,\n\t\t\t signal = _ref20.signal,\n\t\t\t notes = _ref20.notes,\n\t\t\t development = _ref20.development,\n\t\t\t desiredFirmwareVersion = _ref20.desiredFirmwareVersion,\n\t\t\t flash = _ref20.flash,\n\t\t\t product = _ref20.product,\n\t\t\t auth = _ref20.auth,\n\t\t\t context = _ref20.context;\n\n\t\t\tsignal = signal ? '1' : '0';\n\t\t\tvar uri = this.deviceUri({ deviceId: deviceId, product: product });\n\t\t\tvar data = product ? { name: name, signal: signal, notes: notes, development: development, desired_firmware_version: desiredFirmwareVersion, flash: flash } : { name: name, signal: signal, notes: notes };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Provision a new device for products that allow self-provisioning\n * @param {Object} options Options for this API call\n * @param {String} options.productId Product ID where to create this device\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'provisionDevice',\n\t\tvalue: function provisionDevice(_ref21) {\n\t\t\tvar productId = _ref21.productId,\n\t\t\t auth = _ref21.auth,\n\t\t\t context = _ref21.context;\n\n\t\t\treturn this.post('/v1/devices', { product_id: productId }, auth, context);\n\t\t}\n\n\t\t/**\n * Generate a claim code to use in the device claiming process.\n * To generate a claim code for a product, the access token MUST belong to a\n * customer of the product.\n * @param {Object} options Options for this API call\n * @param {String} [options.iccid] ICCID of the SIM card used in the Electron\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getClaimCode',\n\t\tvalue: function getClaimCode(_ref22) {\n\t\t\tvar iccid = _ref22.iccid,\n\t\t\t product = _ref22.product,\n\t\t\t auth = _ref22.auth,\n\t\t\t context = _ref22.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/device_claims' : '/v1/device_claims';\n\t\t\treturn this.post(uri, { iccid: iccid }, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'validatePromoCode',\n\t\tvalue: function validatePromoCode(_ref23) {\n\t\t\tvar auth = _ref23.auth,\n\t\t\t promoCode = _ref23.promoCode,\n\t\t\t context = _ref23.context;\n\n\t\t\treturn this.get('/v1/promo_code/' + promoCode, auth, undefined, context);\n\t\t}\n\t}, {\n\t\tkey: 'changeProduct',\n\t\tvalue: function changeProduct(_ref24) {\n\t\t\tvar deviceId = _ref24.deviceId,\n\t\t\t productId = _ref24.productId,\n\t\t\t auth = _ref24.auth,\n\t\t\t context = _ref24.context;\n\n\t\t\treturn this.put('/v1/devices/' + deviceId, {\n\t\t\t\tproduct_id: productId\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Get the value of a device variable\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.name Variable name\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getVariable',\n\t\tvalue: function getVariable(_ref25) {\n\t\t\tvar deviceId = _ref25.deviceId,\n\t\t\t name = _ref25.name,\n\t\t\t product = _ref25.product,\n\t\t\t auth = _ref25.auth,\n\t\t\t context = _ref25.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/devices/' + deviceId + '/' + name : '/v1/devices/' + deviceId + '/' + name;\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Compile and flash application firmware to a device. Pass a pre-compiled binary to flash it directly to the device.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Object} options.files Object containing files to be compiled and flashed. Keys should be the filenames, and the values should be a path or Buffer of the file contents.\n * @param {String} [options.targetVersion=latest] System firmware version to compile against\n * @param {String} options.auth String\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'flashDevice',\n\t\tvalue: function flashDevice(_ref26) {\n\t\t\tvar deviceId = _ref26.deviceId,\n\t\t\t files = _ref26.files,\n\t\t\t targetVersion = _ref26.targetVersion,\n\t\t\t auth = _ref26.auth,\n\t\t\t context = _ref26.context;\n\n\t\t\tvar form = {};\n\t\t\tif (targetVersion) {\n\t\t\t\tform.build_target_version = targetVersion;\n\t\t\t} else {\n\t\t\t\tform.latest = 'true';\n\t\t\t}\n\t\t\treturn this.request({ uri: '/v1/devices/' + deviceId,\n\t\t\t\tfiles: files, auth: auth, form: form, context: context, method: 'put' });\n\t\t}\n\n\t\t/**\n * DEPRECATED: Flash the Tinker application to a device. Instead compile and flash the Tinker source code.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'flashTinker',\n\t\tvalue: function flashTinker(_ref27) {\n\t\t\tvar deviceId = _ref27.deviceId,\n\t\t\t auth = _ref27.auth,\n\t\t\t context = _ref27.context;\n\n\t\t\t/* eslint-disable no-console */\n\t\t\tif (console && console.warning) {\n\t\t\t\tconsole.warning('Particle.flashTinker is deprecated');\n\t\t\t}\n\t\t\t/* eslint-enable no-console */\n\t\t\treturn this.put('/v1/devices/' + deviceId, {\n\t\t\t\tapp: 'tinker'\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Compile firmware using the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {Object} options.files Object containing files to be compiled. Keys should be the filenames, and the values should be a path or Buffer of the file contents.\n * @param {Number} [options.platformId] Platform id number of the device you are compiling for. Common values are 0=Core, 6=Photon, 10=Electron.\n * @param {String} [options.targetVersion=latest] System firmware version to compile against\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'compileCode',\n\t\tvalue: function compileCode(_ref28) {\n\t\t\tvar files = _ref28.files,\n\t\t\t platformId = _ref28.platformId,\n\t\t\t targetVersion = _ref28.targetVersion,\n\t\t\t auth = _ref28.auth,\n\t\t\t context = _ref28.context;\n\n\t\t\tvar form = { platform_id: platformId };\n\t\t\tif (targetVersion) {\n\t\t\t\tform.build_target_version = targetVersion;\n\t\t\t} else {\n\t\t\t\tform.latest = 'true';\n\t\t\t}\n\t\t\treturn this.request({ uri: '/v1/binaries',\n\t\t\t\tfiles: files, auth: auth, form: form, context: context, method: 'post' });\n\t\t}\n\n\t\t/**\n * Download a firmware binary\n * @param {Object} options Options for this API call\n * @param {String} options.binaryId Binary ID received from a successful compile call\n * @param {String} options.auth Access Token\n * @return {Request}\n */\n\n\t}, {\n\t\tkey: 'downloadFirmwareBinary',\n\t\tvalue: function downloadFirmwareBinary(_ref29) {\n\t\t\tvar binaryId = _ref29.binaryId,\n\t\t\t auth = _ref29.auth,\n\t\t\t context = _ref29.context;\n\n\t\t\tvar uri = '/v1/binaries/' + binaryId;\n\t\t\tvar req = (0, _superagent2.default)('get', uri);\n\t\t\treq.use(this.prefix);\n\t\t\tthis.headers(req, auth);\n\t\t\tif (this.debug) {\n\t\t\t\tthis.debug(req);\n\t\t\t}\n\t\t\treturn req;\n\t\t}\n\n\t\t/**\n * Send a new device public key to the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {(String|Buffer)} options.key Public key contents\n * @param {String} [options.algorithm=rsa] Algorithm used to generate the public key. Valid values are `rsa` or `ecc`.\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'sendPublicKey',\n\t\tvalue: function sendPublicKey(_ref30) {\n\t\t\tvar deviceId = _ref30.deviceId,\n\t\t\t key = _ref30.key,\n\t\t\t algorithm = _ref30.algorithm,\n\t\t\t auth = _ref30.auth,\n\t\t\t context = _ref30.context;\n\n\t\t\treturn this.post('/v1/provisioning/' + deviceId, {\n\t\t\t\tdeviceID: deviceId,\n\t\t\t\tpublicKey: typeof key === 'string' ? key : key.toString(),\n\t\t\t\tfilename: 'particle-api',\n\t\t\t\torder: 'manual_' + Date.now(),\n\t\t\t\talgorithm: algorithm || 'rsa'\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Call a device function\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.name Function name\n * @param {String} options.argument Function argument\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'callFunction',\n\t\tvalue: function callFunction(_ref31) {\n\t\t\tvar deviceId = _ref31.deviceId,\n\t\t\t name = _ref31.name,\n\t\t\t argument = _ref31.argument,\n\t\t\t product = _ref31.product,\n\t\t\t auth = _ref31.auth,\n\t\t\t context = _ref31.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/devices/' + deviceId + '/' + name : '/v1/devices/' + deviceId + '/' + name;\n\t\t\treturn this.post(uri, { args: argument }, auth, context);\n\t\t}\n\n\t\t/**\n * Get a stream of events\n * @param {Object} options Options for this API call\n * @param {String} [options.deviceId] Device ID or Name, or `mine` to indicate only your devices.\n * @param {String} [options.name] Event Name\n * @param {String} [options.org] Organization Slug\n * @param {String} [options.product] Events for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise} If the promise resolves, the resolution value will be an EventStream object that will\n * emit 'event' events, as well as the specific named event.\n */\n\n\t}, {\n\t\tkey: 'getEventStream',\n\t\tvalue: function getEventStream(_ref32) {\n\t\t\tvar deviceId = _ref32.deviceId,\n\t\t\t name = _ref32.name,\n\t\t\t org = _ref32.org,\n\t\t\t product = _ref32.product,\n\t\t\t auth = _ref32.auth,\n\t\t\t context = _ref32.context;\n\n\t\t\tvar uri = '/v1/';\n\t\t\tif (org) {\n\t\t\t\turi += 'orgs/' + org + '/';\n\t\t\t}\n\n\t\t\tif (product) {\n\t\t\t\turi += 'products/' + product + '/';\n\t\t\t}\n\n\t\t\tif (deviceId) {\n\t\t\t\turi += 'devices/';\n\t\t\t\tif (!(deviceId.toLowerCase() === 'mine')) {\n\t\t\t\t\turi += deviceId + '/';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\turi += 'events';\n\n\t\t\tif (name) {\n\t\t\t\turi += '/' + encodeURIComponent(name);\n\t\t\t}\n\n\t\t\treturn new _EventStream2.default('' + this.baseUrl + uri, auth, { debug: this.debug }).connect();\n\t\t}\n\n\t\t/**\n * Publish a event to the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {String} options.name Event name\n * @param {String} options.data Event data\n * @param {Boolean} options.isPrivate Should the event be publicly available?\n * @param {String} [options.product] Event for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'publishEvent',\n\t\tvalue: function publishEvent(_ref33) {\n\t\t\tvar name = _ref33.name,\n\t\t\t data = _ref33.data,\n\t\t\t isPrivate = _ref33.isPrivate,\n\t\t\t product = _ref33.product,\n\t\t\t auth = _ref33.auth,\n\t\t\t context = _ref33.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/events' : '/v1/devices/events';\n\t\t\tvar postData = { name: name, data: data, private: isPrivate };\n\t\t\treturn this.post(uri, postData, auth, context);\n\t\t}\n\n\t\t/**\n * Create a webhook\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Trigger webhook only for this device ID or Name\n * @param {String} options.name Webhook name\n * @param {String} options.url URL the webhook should hit\n * @param {String} [options.requestType=POST] HTTP method to use\n * @param {Object} [options.headers] Additional headers to add to the webhook\n * @param {Object} [options.json] JSON data\n * @param {Object} [options.query] Query string data\n * @param {String} [options.body] Custom webhook request body\n * @param {Object} [options.responseTemplate] Webhook response template\n * @param {Object} [options.responseTopic] Webhook response topic\n * @param {Boolean} [options.rejectUnauthorized] Reject invalid HTTPS certificates\n * @params {Boolean} [options.noDefaults] Don't include default event data in the webhook request\n * @param {Object} [options.webhookAuth] HTTP Basic Auth information\n * @param {Object} [options.form] Form data\n * @param {String} [options.product] Webhook for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createWebhook',\n\t\tvalue: function createWebhook(_ref34) {\n\t\t\tvar deviceId = _ref34.deviceId,\n\t\t\t name = _ref34.name,\n\t\t\t url = _ref34.url,\n\t\t\t requestType = _ref34.requestType,\n\t\t\t headers = _ref34.headers,\n\t\t\t json = _ref34.json,\n\t\t\t query = _ref34.query,\n\t\t\t body = _ref34.body,\n\t\t\t responseTemplate = _ref34.responseTemplate,\n\t\t\t responseTopic = _ref34.responseTopic,\n\t\t\t rejectUnauthorized = _ref34.rejectUnauthorized,\n\t\t\t webhookAuth = _ref34.webhookAuth,\n\t\t\t noDefaults = _ref34.noDefaults,\n\t\t\t form = _ref34.form,\n\t\t\t product = _ref34.product,\n\t\t\t auth = _ref34.auth,\n\t\t\t context = _ref34.context;\n\n\t\t\t// deviceId: 'mine' is deprecated since webhooks only trigger on your device anyways\n\t\t\tif (deviceId === 'mine') {\n\t\t\t\tdeviceId = undefined;\n\t\t\t}\n\t\t\tvar uri = product ? '/v1/products/' + product + '/webhooks' : '/v1/webhooks';\n\t\t\tvar data = { event: name, deviceid: deviceId, url: url, requestType: requestType, headers: headers, json: json, query: query, body: body, responseTemplate: responseTemplate, responseTopic: responseTopic, rejectUnauthorized: rejectUnauthorized, auth: webhookAuth, noDefaults: noDefaults, form: form };\n\t\t\treturn this.post(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Delete a webhook\n * @param {Object} options Options for this API call\n * @param {String} options.hookId Webhook ID\n * @param {String} [options.product] Webhook for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteWebhook',\n\t\tvalue: function deleteWebhook(_ref35) {\n\t\t\tvar hookId = _ref35.hookId,\n\t\t\t product = _ref35.product,\n\t\t\t auth = _ref35.auth,\n\t\t\t context = _ref35.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/webhooks/' + hookId : '/v1/webhooks/' + hookId;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List all webhooks owned by the account or product\n * @param {Object} options Options for this API call\n * @param {String} [options.product] Webhooks for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listWebhooks',\n\t\tvalue: function listWebhooks(_ref36) {\n\t\t\tvar product = _ref36.product,\n\t\t\t auth = _ref36.auth,\n\t\t\t context = _ref36.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/webhooks' : '/v1/webhooks';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Create an integration to send events to an external service\n *\n * See the API docs for details https://docs.particle.io/reference/api/#integrations-webhooks-\n *\n * @param {Object} options Options for this API call\n * @param {String} options.integrationType The kind of external integration. One of Webhook, AzureIotHub, GoogleCloudPubSub, GoogleMaps\n * @param {String} options.event Event that triggers the integration\n * @params {Object} options.settings Settings specific to that integration type\n * @param {String} [options.deviceId] Trigger integration only for this device ID or Name\n * @param {String} [options.product] Integration for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createIntegration',\n\t\tvalue: function createIntegration(_ref37) {\n\t\t\tvar integrationType = _ref37.integrationType,\n\t\t\t event = _ref37.event,\n\t\t\t settings = _ref37.settings,\n\t\t\t deviceId = _ref37.deviceId,\n\t\t\t product = _ref37.product,\n\t\t\t auth = _ref37.auth,\n\t\t\t context = _ref37.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations' : '/v1/integrations';\n\t\t\tvar data = (0, _assign2.default)({ event: event, deviceid: deviceId }, settings);\n\t\t\treturn this.post(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Edit an integration to send events to an external service\n *\n * See the API docs for details https://docs.particle.io/reference/api/#integrations-webhooks-\n *\n * @param {Object} options Options for this API call\n * @param {String} options.integrationId The integration to edit\n * @param {String} [options.event] Change the event that triggers the integration\n * @params {Object} [options.settings] Change the settings specific to that integration type\n * @param {String} [options.deviceId] Trigger integration only for this device ID or Name\n * @param {String} [options.product] Integration for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'editIntegration',\n\t\tvalue: function editIntegration(_ref38) {\n\t\t\tvar integrationId = _ref38.integrationId,\n\t\t\t event = _ref38.event,\n\t\t\t settings = _ref38.settings,\n\t\t\t deviceId = _ref38.deviceId,\n\t\t\t product = _ref38.product,\n\t\t\t auth = _ref38.auth,\n\t\t\t context = _ref38.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations/' + integrationId : '/v1/integrations/' + integrationId;\n\t\t\tvar data = (0, _assign2.default)({ event: event, deviceid: deviceId }, settings);\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Delete an integration to send events to an external service\n *\n * @param {Object} options Options for this API call\n * @param {String} options.integrationId The integration to remove\n * @param {String} [options.product] Integration for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteIntegration',\n\t\tvalue: function deleteIntegration(_ref39) {\n\t\t\tvar integrationId = _ref39.integrationId,\n\t\t\t product = _ref39.product,\n\t\t\t auth = _ref39.auth,\n\t\t\t context = _ref39.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations/' + integrationId : '/v1/integrations/' + integrationId;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List all integrations owned by the account or product\n * @param {Object} options Options for this API call\n * @param {String} [options.product] Integrations for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listIntegrations',\n\t\tvalue: function listIntegrations(_ref40) {\n\t\t\tvar product = _ref40.product,\n\t\t\t auth = _ref40.auth,\n\t\t\t context = _ref40.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations' : '/v1/integrations';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Get details about the current user\n * @param {Object} options Options for this API call\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getUserInfo',\n\t\tvalue: function getUserInfo(_ref41) {\n\t\t\tvar auth = _ref41.auth,\n\t\t\t context = _ref41.context;\n\n\t\t\treturn this.get('/v1/user', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Set details on the current user\n * @param {Object} options Options for this API call\n * @param {String} options.auth Access Token\n * @param {String} options.stripeToken Set user's stripe token for payment\n * @param {String} options.accountInfo Set user's extended info fields (name, business account, company name, etc)\n * @param {String} options.password Change authenticated user password\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'setUserInfo',\n\t\tvalue: function setUserInfo(_ref42) {\n\t\t\tvar stripeToken = _ref42.stripeToken,\n\t\t\t accountInfo = _ref42.accountInfo,\n\t\t\t password = _ref42.password,\n\t\t\t auth = _ref42.auth,\n\t\t\t context = _ref42.context;\n\n\t\t\tvar bodyObj = {};\n\n\t\t\tstripeToken ? bodyObj.stripe_token = stripeToken : null;\n\t\t\taccountInfo ? bodyObj.account_info = accountInfo : null;\n\t\t\tpassword ? bodyObj.password = password : null;\n\n\t\t\treturn this.put('/v1/user', bodyObj, auth, context);\n\t\t}\n\n\t\t/**\n * List SIM cards owned by a user or product\n * @param {Object} options Options for this API call\n * @param {String} [options.iccid] (Product only) Filter to SIM cards matching this ICCID\n * @param {String} [options.deviceId] (Product only) Filter to SIM cards matching this device ID\n * @param {String} [options.deviceName] (Product only) Filter to SIM cards matching this device name\n * @param {Number} [options.page] (Product only) Current page of results\n * @param {Number} [options.perPage] (Product only) Records per page\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listSIMs',\n\t\tvalue: function listSIMs(_ref43) {\n\t\t\tvar iccid = _ref43.iccid,\n\t\t\t deviceId = _ref43.deviceId,\n\t\t\t deviceName = _ref43.deviceName,\n\t\t\t page = _ref43.page,\n\t\t\t perPage = _ref43.perPage,\n\t\t\t product = _ref43.product,\n\t\t\t auth = _ref43.auth,\n\t\t\t context = _ref43.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims' : '/v1/sims';\n\t\t\tvar query = product ? { iccid: iccid, deviceId: deviceId, deviceName: deviceName, page: page, per_page: perPage } : undefined;\n\t\t\treturn this.get(uri, auth, query, context);\n\t\t}\n\n\t\t/**\n * Get data usage for one SIM card for the current billing period\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {String} [options.product] SIM card for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getSIMDataUsage',\n\t\tvalue: function getSIMDataUsage(_ref44) {\n\t\t\tvar iccid = _ref44.iccid,\n\t\t\t product = _ref44.product,\n\t\t\t auth = _ref44.auth,\n\t\t\t context = _ref44.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid + '/data_usage' : '/v1/sims/' + iccid + '/data_usage';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Get data usage for all SIM cards in a product the current billing period\n * @param {Object} options Options for this API call\n * @param {String} options.product SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getFleetDataUsage',\n\t\tvalue: function getFleetDataUsage(_ref45) {\n\t\t\tvar product = _ref45.product,\n\t\t\t auth = _ref45.auth,\n\t\t\t context = _ref45.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/sims/data_usage', auth, undefined, context);\n\t\t}\n\t}, {\n\t\tkey: 'checkSIM',\n\t\tvalue: function checkSIM(_ref46) {\n\t\t\tvar iccid = _ref46.iccid,\n\t\t\t auth = _ref46.auth,\n\t\t\t context = _ref46.context;\n\n\t\t\treturn this.head('/v1/sims/' + iccid, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Activate and add SIM cards to an account or product\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {Array} options.iccids (Product only) ICCID of multiple SIM cards to import\n * @param {String} options.countryCode The ISO country code for the SIM cards\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'activateSIM',\n\t\tvalue: function activateSIM(_ref47) {\n\t\t\tvar iccid = _ref47.iccid,\n\t\t\t iccids = _ref47.iccids,\n\t\t\t countryCode = _ref47.countryCode,\n\t\t\t promoCode = _ref47.promoCode,\n\t\t\t product = _ref47.product,\n\t\t\t auth = _ref47.auth,\n\t\t\t context = _ref47.context;\n\n\t\t\t// promoCode is deprecated\n\t\t\ticcids = iccids || [iccid];\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims' : '/v1/sims/' + iccid;\n\t\t\tvar data = product ? { sims: iccids, countryCode: countryCode } : { countryCode: countryCode, promoCode: promoCode, action: 'activate' };\n\t\t\tvar method = product ? 'post' : 'put';\n\n\t\t\treturn this.request({ uri: uri, method: method, data: data, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Deactivate a SIM card so it doesn't incur data usage in future months.\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deactivateSIM',\n\t\tvalue: function deactivateSIM(_ref48) {\n\t\t\tvar iccid = _ref48.iccid,\n\t\t\t product = _ref48.product,\n\t\t\t auth = _ref48.auth,\n\t\t\t context = _ref48.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\tvar data = { action: 'deactivate' };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Reactivate a SIM card the was deactivated or unpause a SIM card that was automatically paused\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {Number} [options.mbLimit] New monthly data limit. Necessary if unpausing a SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'reactivateSIM',\n\t\tvalue: function reactivateSIM(_ref49) {\n\t\t\tvar iccid = _ref49.iccid,\n\t\t\t mbLimit = _ref49.mbLimit,\n\t\t\t product = _ref49.product,\n\t\t\t auth = _ref49.auth,\n\t\t\t context = _ref49.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\tvar data = { mb_limit: mbLimit, action: 'reactivate' };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Update SIM card data limit\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {Array} options.mbLimit Data limit in megabyte for the SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateSIM',\n\t\tvalue: function updateSIM(_ref50) {\n\t\t\tvar iccid = _ref50.iccid,\n\t\t\t mbLimit = _ref50.mbLimit,\n\t\t\t product = _ref50.product,\n\t\t\t auth = _ref50.auth,\n\t\t\t context = _ref50.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\tvar data = { mb_limit: mbLimit };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Remove a SIM card from an account so it can be activated by a different account\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeSIM',\n\t\tvalue: function removeSIM(_ref51) {\n\t\t\tvar iccid = _ref51.iccid,\n\t\t\t product = _ref51.product,\n\t\t\t auth = _ref51.auth,\n\t\t\t context = _ref51.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List valid build targets to be used for compiling\n * @param {Object} options Options for this API call\n * @param {Boolean} [options.onlyFeatured=false] Only list featured build targets\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listBuildTargets',\n\t\tvalue: function listBuildTargets(_ref52) {\n\t\t\tvar onlyFeatured = _ref52.onlyFeatured,\n\t\t\t auth = _ref52.auth,\n\t\t\t context = _ref52.context;\n\n\t\t\tvar query = void 0;\n\t\t\tif (onlyFeatured !== undefined) {\n\t\t\t\tquery = { featured: !!onlyFeatured };\n\t\t\t}\n\t\t\treturn this.get('/v1/build_targets', auth, query, context);\n\t\t}\n\n\t\t/**\n * List firmware libraries\n * @param {Object} options Options for this API call\n * @param {Number} options.page Page index (default, first page)\n * @param {Number} options.limit Number of items per page\n * @param {String} options.filter Search term for the libraries\n * @param {String} options.sort Ordering key for the library list\n * @param {Array} options.architectures List of architectures to filter\n * @param {String} options.category Category to filter\n * @param {String} options.scope The library scope to list. Default is 'all'. Other values are\n * - 'all' - list public libraries and my private libraries\n * - 'public' - list only public libraries\n * - 'private' - list only my private libraries\n * - 'mine' - list my libraries (public and private)\n * - 'official' - list only official libraries\n * - 'verified' - list only verified libraries\n * - 'featured' - list only featured libraries\n * @param {String} options.excludeScopes list of scopes to exclude\n * @param {String} options.category Category to filter\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listLibraries',\n\t\tvalue: function listLibraries(_ref53) {\n\t\t\tvar page = _ref53.page,\n\t\t\t limit = _ref53.limit,\n\t\t\t filter = _ref53.filter,\n\t\t\t sort = _ref53.sort,\n\t\t\t architectures = _ref53.architectures,\n\t\t\t category = _ref53.category,\n\t\t\t scope = _ref53.scope,\n\t\t\t excludeScopes = _ref53.excludeScopes,\n\t\t\t auth = _ref53.auth,\n\t\t\t context = _ref53.context;\n\n\t\t\treturn this.get('/v1/libraries', auth, {\n\t\t\t\tpage: page,\n\t\t\t\tfilter: filter,\n\t\t\t\tlimit: limit,\n\t\t\t\tsort: sort,\n\t\t\t\tarchitectures: this._asList(architectures),\n\t\t\t\tcategory: category,\n\t\t\t\tscope: scope,\n\t\t\t\texcludeScopes: this._asList(excludeScopes)\n\t\t\t}, context);\n\t\t}\n\t}, {\n\t\tkey: '_asList',\n\t\tvalue: function _asList(value) {\n\t\t\treturn Array.isArray(value) ? value.join(',') : value;\n\t\t}\n\n\t\t/**\n * Get firmware library details\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to fetch\n * @param {String} options.version Version of the library to fetch (default: latest)\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getLibrary',\n\t\tvalue: function getLibrary(_ref54) {\n\t\t\tvar name = _ref54.name,\n\t\t\t version = _ref54.version,\n\t\t\t auth = _ref54.auth,\n\t\t\t context = _ref54.context;\n\n\t\t\treturn this.get('/v1/libraries/' + name, auth, { version: version }, context);\n\t\t}\n\n\t\t/**\n * Firmware library details for each version\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to fetch\n * @param {Number} options.page Page index (default, first page)\n * @param {Number} options.limit Number of items per page\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getLibraryVersions',\n\t\tvalue: function getLibraryVersions(_ref55) {\n\t\t\tvar name = _ref55.name,\n\t\t\t page = _ref55.page,\n\t\t\t limit = _ref55.limit,\n\t\t\t auth = _ref55.auth,\n\t\t\t context = _ref55.context;\n\n\t\t\treturn this.get('/v1/libraries/' + name + '/versions', auth, {\n\t\t\t\tpage: page,\n\t\t\t\tlimit: limit\n\t\t\t}, context);\n\t\t}\n\n\t\t/**\n * Contribute a new library version from a compressed archive\n * @param {Object} options Options for this API call\n * @param {String} options.archive Compressed archive file containing the library sources\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'contributeLibrary',\n\t\tvalue: function contributeLibrary(_ref56) {\n\t\t\tvar archive = _ref56.archive,\n\t\t\t auth = _ref56.auth,\n\t\t\t context = _ref56.context;\n\n\t\t\tvar files = {\n\t\t\t\t'archive.tar.gz': archive\n\t\t\t};\n\n\t\t\treturn this.request({ uri: '/v1/libraries',\n\t\t\t\tfiles: files, auth: auth, context: context, method: 'post' });\n\t\t}\n\n\t\t/**\n * Publish the latest version of a library to the public\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to publish\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'publishLibrary',\n\t\tvalue: function publishLibrary(_ref57) {\n\t\t\tvar name = _ref57.name,\n\t\t\t auth = _ref57.auth,\n\t\t\t context = _ref57.context;\n\n\t\t\treturn this.request({ uri: '/v1/libraries/' + name,\n\t\t\t\tauth: auth, context: context, method: 'patch', data: { visibility: 'public' } });\n\t\t}\n\n\t\t/**\n * Delete one version of a library or an entire private library\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to remove\n * @param {String} options.force Key to force deleting a public library\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteLibrary',\n\t\tvalue: function deleteLibrary(_ref58) {\n\t\t\tvar name = _ref58.name,\n\t\t\t force = _ref58.force,\n\t\t\t auth = _ref58.auth,\n\t\t\t context = _ref58.context;\n\n\t\t\treturn this.delete('/v1/libraries/' + name, { force: force }, auth, context);\n\t\t}\n\n\t\t/**\n * Download an external file that may not be on the API\n * @param {Object} options Options for this API call\n * @param {String} options.url URL of the file.\n * @return {Promise} Resolves to a buffer with the file data\n */\n\n\t}, {\n\t\tkey: 'downloadFile',\n\t\tvalue: function downloadFile(_ref59) {\n\t\t\tvar url = _ref59.url;\n\n\t\t\tvar req = _superagent2.default.get(url);\n\t\t\tif (req.buffer) {\n\t\t\t\treq = req.buffer(true).parse(_superagentBinaryParser2.default);\n\t\t\t} else if (req.responseType) {\n\t\t\t\treq = req.responseType('arraybuffer').then(function (res) {\n\t\t\t\t\tres.body = res.xhr.response;\n\t\t\t\t\treturn res;\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn req.then(function (res) {\n\t\t\t\treturn res.body;\n\t\t\t});\n\t\t}\n\n\t\t/**\n * List OAuth client created by the account\n * @param {Object} options Options for this API call\n * @param {String} [options.product] List clients for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listOAuthClients',\n\t\tvalue: function listOAuthClients(_ref60) {\n\t\t\tvar product = _ref60.product,\n\t\t\t auth = _ref60.auth,\n\t\t\t context = _ref60.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients' : '/v1/clients';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Create an OAuth client\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the OAuth client\n * @param {String} options.type web, installed or web\n * @param {String} [options.redirect_uri] URL to redirect after OAuth flow. Only for type web.\n * @param {Object} [options.scope] Limits what the access tokens created by this client can do.\n * @param {String} [options.product] Create client for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createOAuthClient',\n\t\tvalue: function createOAuthClient(_ref61) {\n\t\t\tvar name = _ref61.name,\n\t\t\t type = _ref61.type,\n\t\t\t redirect_uri = _ref61.redirect_uri,\n\t\t\t scope = _ref61.scope,\n\t\t\t product = _ref61.product,\n\t\t\t auth = _ref61.auth,\n\t\t\t context = _ref61.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients' : '/v1/clients';\n\t\t\tvar data = { name: name, type: type, redirect_uri: redirect_uri, scope: scope };\n\t\t\treturn this.post(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Update an OAuth client\n * @param {Object} options Options for this API call\n * @param {String} options.clientId The OAuth client to update\n * @param {String} [options.name] New Name of the OAuth client\n * @param {Object} [options.scope] New scope of the OAuth client\n * @param {String} [options.product] Update client linked to this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateOAuthClient',\n\t\tvalue: function updateOAuthClient(_ref62) {\n\t\t\tvar clientId = _ref62.clientId,\n\t\t\t name = _ref62.name,\n\t\t\t scope = _ref62.scope,\n\t\t\t product = _ref62.product,\n\t\t\t auth = _ref62.auth,\n\t\t\t context = _ref62.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients/' + clientId : '/v1/clients/' + clientId;\n\t\t\tvar data = { name: name, scope: scope };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Delete an OAuth client\n * @param {Object} options Options for this API call\n * @param {String} options.clientId The OAuth client to update\n * @param {String} [options.product] OAuth client linked to this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteOAuthClient',\n\t\tvalue: function deleteOAuthClient(_ref63) {\n\t\t\tvar clientId = _ref63.clientId,\n\t\t\t product = _ref63.product,\n\t\t\t auth = _ref63.auth,\n\t\t\t context = _ref63.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients/' + clientId : '/v1/clients/' + clientId;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List products the account has access to\n * @param {Object} options Options for this API call\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listProducts',\n\t\tvalue: function listProducts(_ref64) {\n\t\t\tvar auth = _ref64.auth,\n\t\t\t context = _ref64.context;\n\n\t\t\treturn this.get('/v1/products', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Get detailed information about a product\n * @param {Object} options Options for this API call\n * @param {String} options.product Product ID or slug\n * @param {String} options.auth Access token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getProduct',\n\t\tvalue: function getProduct(_ref65) {\n\t\t\tvar product = _ref65.product,\n\t\t\t auth = _ref65.auth,\n\t\t\t context = _ref65.context;\n\n\t\t\treturn this.get('/v1/products/' + product, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * List product firmware versions\n * @param {Object} options Options for this API call\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listProductFirmware',\n\t\tvalue: function listProductFirmware(_ref66) {\n\t\t\tvar product = _ref66.product,\n\t\t\t auth = _ref66.auth,\n\t\t\t context = _ref66.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/firmware', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * List product firmware versions\n * @param {Object} options Options for this API call\n * @param {Object} options.file Path or Buffer of the new firmware file\n * @param {Number} options.version Version number of new firmware\n * @param {String} options.title Short identifier for the new firmware\n * @param {String} [options.description] Longer description for the new firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'uploadProductFirmware',\n\t\tvalue: function uploadProductFirmware(_ref67) {\n\t\t\tvar file = _ref67.file,\n\t\t\t version = _ref67.version,\n\t\t\t title = _ref67.title,\n\t\t\t description = _ref67.description,\n\t\t\t product = _ref67.product,\n\t\t\t auth = _ref67.auth,\n\t\t\t context = _ref67.context;\n\n\t\t\treturn this.request({\n\t\t\t\turi: '/v1/products/' + product + '/firmware',\n\t\t\t\tmethod: 'post',\n\t\t\t\tfiles: {\n\t\t\t\t\t'firmware.bin': file\n\t\t\t\t},\n\t\t\t\tform: {\n\t\t\t\t\tversion: version,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\tdescription: description\n\t\t\t\t},\n\t\t\t\tcontext: context,\n\t\t\t\tauth: auth\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Get information about a product firmware version\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getProductFirmware',\n\t\tvalue: function getProductFirmware(_ref68) {\n\t\t\tvar version = _ref68.version,\n\t\t\t product = _ref68.product,\n\t\t\t auth = _ref68.auth,\n\t\t\t context = _ref68.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/firmware/' + version, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Update information for a product firmware version\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of new firmware\n * @param {String} [options.title] New title\n * @param {String} [options.description] New description\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateProductFirmware',\n\t\tvalue: function updateProductFirmware(_ref69) {\n\t\t\tvar version = _ref69.version,\n\t\t\t title = _ref69.title,\n\t\t\t description = _ref69.description,\n\t\t\t product = _ref69.product,\n\t\t\t auth = _ref69.auth,\n\t\t\t context = _ref69.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/firmware/' + version;\n\t\t\treturn this.put(uri, { title: title, description: description }, auth, context);\n\t\t}\n\n\t\t/**\n * Download a product firmware binary\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of new firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Request}\n */\n\n\t}, {\n\t\tkey: 'downloadProductFirmware',\n\t\tvalue: function downloadProductFirmware(_ref70) {\n\t\t\tvar version = _ref70.version,\n\t\t\t product = _ref70.product,\n\t\t\t auth = _ref70.auth,\n\t\t\t context = _ref70.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/firmware/' + version + '/binary';\n\t\t\tvar req = (0, _superagent2.default)('get', uri);\n\t\t\treq.use(this.prefix);\n\t\t\tthis.headers(req, auth);\n\t\t\tif (this.debug) {\n\t\t\t\tthis.debug(req);\n\t\t\t}\n\t\t\treturn req;\n\t\t}\n\n\t\t/**\n * Release a product firmware version as the default version\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of new firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'releaseProductFirmware',\n\t\tvalue: function releaseProductFirmware(_ref71) {\n\t\t\tvar version = _ref71.version,\n\t\t\t product = _ref71.product,\n\t\t\t auth = _ref71.auth,\n\t\t\t context = _ref71.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/firmware/release';\n\t\t\treturn this.put(uri, { version: version }, auth, context);\n\t\t}\n\n\t\t/**\n * List product team members\n * @param {Object} options Options for this API call\n * @param {String} options.product Team for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listTeamMembers',\n\t\tvalue: function listTeamMembers(_ref72) {\n\t\t\tvar product = _ref72.product,\n\t\t\t auth = _ref72.auth,\n\t\t\t context = _ref72.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/team', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Invite Particle user to a product team\n * @param {Object} options Options for this API call\n * @param {String} options.username Username for the Particle account\n * @param {String} options.product Team for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'inviteTeamMember',\n\t\tvalue: function inviteTeamMember(_ref73) {\n\t\t\tvar username = _ref73.username,\n\t\t\t product = _ref73.product,\n\t\t\t auth = _ref73.auth,\n\t\t\t context = _ref73.context;\n\n\t\t\treturn this.post('/v1/products/' + product + '/team', { username: username }, auth, context);\n\t\t}\n\n\t\t/**\n * Remove Particle user to a product team\n * @param {Object} options Options for this API call\n * @param {String} options.username Username for the Particle account\n * @param {String} options.product Team for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeTeamMember',\n\t\tvalue: function removeTeamMember(_ref74) {\n\t\t\tvar username = _ref74.username,\n\t\t\t product = _ref74.product,\n\t\t\t auth = _ref74.auth,\n\t\t\t context = _ref74.context;\n\n\t\t\treturn this.delete('/v1/products/' + product + '/team/' + username, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * API URI to access a device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID to access\n * @param {String} [options.product] Device only in this product ID or slug\n * @private\n * @returns {string}\n */\n\n\t}, {\n\t\tkey: 'deviceUri',\n\t\tvalue: function deviceUri(_ref75) {\n\t\t\tvar deviceId = _ref75.deviceId,\n\t\t\t product = _ref75.product;\n\n\t\t\treturn product ? '/v1/products/' + product + '/devices/' + deviceId : '/v1/devices/' + deviceId;\n\t\t}\n\t}, {\n\t\tkey: 'get',\n\t\tvalue: function get(uri, auth, query, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.get(uri, auth, query, context);\n\t\t}\n\t}, {\n\t\tkey: 'head',\n\t\tvalue: function head(uri, auth, query, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.head(uri, auth, query, context);\n\t\t}\n\t}, {\n\t\tkey: 'post',\n\t\tvalue: function post(uri, data, auth, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.post(uri, data, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'put',\n\t\tvalue: function put(uri, data, auth, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.put(uri, data, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'delete',\n\t\tvalue: function _delete(uri, data, auth, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.delete(uri, data, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'request',\n\t\tvalue: function request(args) {\n\t\t\targs.context = this._buildContext(args.context);\n\t\t\treturn this.agent.request(args);\n\t\t}\n\t}, {\n\t\tkey: 'client',\n\t\tvalue: function client() {\n\t\t\tvar options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t\treturn new _Client2.default((0, _assign2.default)({ api: this }, options));\n\t\t}\n\t}]);\n\treturn Particle;\n}();\n\n// Aliases for backwards compatibility\n\n\nParticle.prototype.removeAccessToken = Particle.prototype.deleteAccessToken;\n\nexports.default = Particle;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Particle.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = binaryParser;\n// Binary parser for superagent\n\nfunction binaryParser(res, fn) {\n\t/* global Buffer */\n\tvar data = [];\n\tres.on('data', function (chunk) {\n\t\treturn data.push(chunk);\n\t});\n\tres.on('end', function () {\n\t\treturn fn(null, Buffer.concat(data));\n\t});\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=superagent-binary-parser.js.map","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/number/is-nan\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","'use strict';\n\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\nvar SlowBuffer = buffer.SlowBuffer;\nvar MAX_LEN = buffer.kMaxLength || 2147483647;\nexports.alloc = function alloc(size, fill, encoding) {\n if (typeof Buffer.alloc === 'function') {\n return Buffer.alloc(size, fill, encoding);\n }\n if (typeof encoding === 'number') {\n throw new TypeError('encoding must not be number');\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n var enc = encoding;\n var _fill = fill;\n if (_fill === undefined) {\n enc = undefined;\n _fill = 0;\n }\n var buf = new Buffer(size);\n if (typeof _fill === 'string') {\n var fillBuf = new Buffer(_fill, enc);\n var flen = fillBuf.length;\n var i = -1;\n while (++i < size) {\n buf[i] = fillBuf[i % flen];\n }\n } else {\n buf.fill(_fill);\n }\n return buf;\n}\nexports.allocUnsafe = function allocUnsafe(size) {\n if (typeof Buffer.allocUnsafe === 'function') {\n return Buffer.allocUnsafe(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new Buffer(size);\n}\nexports.from = function from(value, encodingOrOffset, length) {\n if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {\n return Buffer.from(value, encodingOrOffset, length);\n }\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof value === 'string') {\n return new Buffer(value, encodingOrOffset);\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n var offset = encodingOrOffset;\n if (arguments.length === 1) {\n return new Buffer(value);\n }\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n var len = length;\n if (typeof len === 'undefined') {\n len = value.byteLength - offset;\n }\n if (offset >= value.byteLength) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n if (len > value.byteLength - offset) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n return new Buffer(value.slice(offset, offset + len));\n }\n if (Buffer.isBuffer(value)) {\n var out = new Buffer(value.length);\n value.copy(out, 0, 0, value.length);\n return out;\n }\n if (value) {\n if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {\n return new Buffer(value);\n }\n if (value.type === 'Buffer' && Array.isArray(value.data)) {\n return new Buffer(value.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');\n}\nexports.allocUnsafeSlow = function allocUnsafeSlow(size) {\n if (typeof Buffer.allocUnsafeSlow === 'function') {\n return Buffer.allocUnsafeSlow(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size >= MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new SlowBuffer(size);\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D){\n return $Object.create(P, D);\n};","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc){\n return $Object.defineProperty(it, key, desc);\n};","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nmodule.exports = require('../modules/_core').Promise;","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};","module.exports = function(){ /* empty */ };","module.exports = function(it, Constructor, name, forbiddenField){\n if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof')\n , TAG = require('./_wks')('toStringTag')\n // ES3 wrong here\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n try {\n return it[key];\n } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie');\nmodule.exports = function(it){\n var result = getKeys(it)\n , getSymbols = gOPS.f;\n if(getSymbols){\n var symbols = getSymbols(it)\n , isEnum = pIE.f\n , i = 0\n , key;\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n } return result;\n};","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};","var ctx = require('./_ctx')\n , call = require('./_iter-call')\n , isArrayIter = require('./_is-array-iter')\n , anObject = require('./_an-object')\n , toLength = require('./_to-length')\n , getIterFn = require('./core.get-iterator-method')\n , BREAK = {}\n , RETURN = {};\nvar exports = module.exports = function(iterable, entries, fn, that, ITERATOR){\n var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)\n , f = ctx(fn, that, entries ? 2 : 1)\n , index = 0\n , length, step, iterator, result;\n if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if(result === BREAK || result === RETURN)return result;\n } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){\n result = call(iterator, f, step.value, entries);\n if(result === BREAK || result === RETURN)return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};","module.exports = require('./_global').document && document.documentElement;","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function(fn, args, that){\n var un = that === undefined;\n switch(args.length){\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};","// check on default Array iterator\nvar Iterators = require('./_iterators')\n , ITERATOR = require('./_wks')('iterator')\n , ArrayProto = Array.prototype;\n\nmodule.exports = function(it){\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function(iterator, fn, value, entries){\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch(e){\n var ret = iterator['return'];\n if(ret !== undefined)anObject(ret.call(iterator));\n throw e;\n }\n};","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};","var ITERATOR = require('./_wks')('iterator')\n , SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function(){ SAFE_CLOSING = true; };\n Array.from(riter, function(){ throw 2; });\n} catch(e){ /* empty */ }\n\nmodule.exports = function(exec, skipClosing){\n if(!skipClosing && !SAFE_CLOSING)return false;\n var safe = false;\n try {\n var arr = [7]\n , iter = arr[ITERATOR]();\n iter.next = function(){ return {done: safe = true}; };\n arr[ITERATOR] = function(){ return iter; };\n exec(arr);\n } catch(e){ /* empty */ }\n return safe;\n};","module.exports = function(done, value){\n return {value: value, done: !!done};\n};","module.exports = {};","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject');\nmodule.exports = function(object, el){\n var O = toIObject(object)\n , keys = getKeys(O)\n , length = keys.length\n , index = 0\n , key;\n while(length > index)if(O[key = keys[index++]] === el)return key;\n};","module.exports = true;","var META = require('./_uid')('meta')\n , isObject = require('./_is-object')\n , has = require('./_has')\n , setDesc = require('./_object-dp').f\n , id = 0;\nvar isExtensible = Object.isExtensible || function(){\n return true;\n};\nvar FREEZE = !require('./_fails')(function(){\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function(it){\n setDesc(it, META, {value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n }});\n};\nvar fastKey = function(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add metadata\n if(!create)return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function(it, create){\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return true;\n // not necessary to add metadata\n if(!create)return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function(it){\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};","var global = require('./_global')\n , macrotask = require('./_task').set\n , Observer = global.MutationObserver || global.WebKitMutationObserver\n , process = global.process\n , Promise = global.Promise\n , isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function(){\n var head, last, notify;\n\n var flush = function(){\n var parent, fn;\n if(isNode && (parent = process.domain))parent.exit();\n while(head){\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch(e){\n if(head)notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if(parent)parent.enter();\n };\n\n // Node.js\n if(isNode){\n notify = function(){\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if(Observer){\n var toggle = true\n , node = document.createTextNode('');\n new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new\n notify = function(){\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if(Promise && Promise.resolve){\n var promise = Promise.resolve();\n notify = function(){\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function(){\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function(fn){\n var task = {fn: fn, next: undefined};\n if(last)last.next = task;\n if(!head){\n head = task;\n notify();\n } last = task;\n };\n};","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};","var pIE = require('./_object-pie')\n , createDesc = require('./_property-desc')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , has = require('./_has')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){\n O = toIObject(O);\n P = toPrimitive(P, true);\n if(IE8_DOM_DEFINE)try {\n return gOPD(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n};","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject')\n , gOPN = require('./_object-gopn').f\n , toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function(it){\n try {\n return gOPN(it);\n } catch(e){\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it){\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal')\n , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};","exports.f = Object.getOwnPropertySymbols;","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};","exports.f = {}.propertyIsEnumerable;","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export')\n , core = require('./_core')\n , fails = require('./_fails');\nmodule.exports = function(KEY, exec){\n var fn = (core.Object || {})[KEY] || Object[KEY]\n , exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject')\n , isEnum = require('./_object-pie').f;\nmodule.exports = function(isEntries){\n return function(it){\n var O = toIObject(it)\n , keys = getKeys(O)\n , length = keys.length\n , i = 0\n , result = []\n , key;\n while(length > i)if(isEnum.call(O, key = keys[i++])){\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};","var hide = require('./_hide');\nmodule.exports = function(target, src, safe){\n for(var key in src){\n if(safe && target[key])target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};","module.exports = require('./_hide');","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object')\n , anObject = require('./_an-object');\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};","'use strict';\nvar global = require('./_global')\n , core = require('./_core')\n , dP = require('./_object-dp')\n , DESCRIPTORS = require('./_descriptors')\n , SPECIES = require('./_wks')('species');\n\nmodule.exports = function(KEY){\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {\n configurable: true,\n get: function(){ return this; }\n });\n};","var def = require('./_object-dp').f\n , has = require('./_has')\n , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object')\n , aFunction = require('./_a-function')\n , SPECIES = require('./_wks')('species');\nmodule.exports = function(O, D){\n var C = anObject(O).constructor, S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};","var toInteger = require('./_to-integer')\n , defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String(defined(that))\n , i = toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};","var ctx = require('./_ctx')\n , invoke = require('./_invoke')\n , html = require('./_html')\n , cel = require('./_dom-create')\n , global = require('./_global')\n , process = global.process\n , setTask = global.setImmediate\n , clearTask = global.clearImmediate\n , MessageChannel = global.MessageChannel\n , counter = 0\n , queue = {}\n , ONREADYSTATECHANGE = 'onreadystatechange'\n , defer, channel, port;\nvar run = function(){\n var id = +this;\n if(queue.hasOwnProperty(id)){\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function(event){\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif(!setTask || !clearTask){\n setTask = function setImmediate(fn){\n var args = [], i = 1;\n while(arguments.length > i)args.push(arguments[i++]);\n queue[++counter] = function(){\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id){\n delete queue[id];\n };\n // Node.js 0.8-\n if(require('./_cof')(process) == 'process'){\n defer = function(id){\n process.nextTick(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if(MessageChannel){\n channel = new MessageChannel;\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){\n defer = function(id){\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if(ONREADYSTATECHANGE in cel('script')){\n defer = function(id){\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function(id){\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};","var global = require('./_global')\n , core = require('./_core')\n , LIBRARY = require('./_library')\n , wksExt = require('./_wks-ext')\n , defineProperty = require('./_object-dp').f;\nmodule.exports = function(name){\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\n};","exports.f = require('./_wks');","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function(it){\n if(it != undefined)return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};","var anObject = require('./_an-object')\n , get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function(it){\n var iterFn = get(it);\n if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function(it){\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n || Iterators.hasOwnProperty(classof(O));\n};","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n , step = require('./_iter-step')\n , Iterators = require('./_iterators')\n , toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , kind = this._k\n , index = this._i++;\n if(!O || index >= O.length){\n this._t = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number){\n return number != number;\n }\n});","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});","var $export = require('./_export')\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', {create: require('./_object-create')});","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object')\n , $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function(){\n return function getPrototypeOf(it){\n return $getPrototypeOf(toObject(it));\n };\n});","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object')\n , $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function(){\n return function keys(it){\n return $keys(toObject(it));\n };\n});","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});","'use strict';\nvar LIBRARY = require('./_library')\n , global = require('./_global')\n , ctx = require('./_ctx')\n , classof = require('./_classof')\n , $export = require('./_export')\n , isObject = require('./_is-object')\n , aFunction = require('./_a-function')\n , anInstance = require('./_an-instance')\n , forOf = require('./_for-of')\n , speciesConstructor = require('./_species-constructor')\n , task = require('./_task').set\n , microtask = require('./_microtask')()\n , PROMISE = 'Promise'\n , TypeError = global.TypeError\n , process = global.process\n , $Promise = global[PROMISE]\n , process = global.process\n , isNode = classof(process) == 'process'\n , empty = function(){ /* empty */ }\n , Internal, GenericPromiseCapability, Wrapper;\n\nvar USE_NATIVE = !!function(){\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1)\n , FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function(exec){ exec(empty, empty); };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch(e){ /* empty */ }\n}();\n\n// helpers\nvar sameConstructor = function(a, b){\n // with library wrapper special case\n return a === b || a === $Promise && b === Wrapper;\n};\nvar isThenable = function(it){\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar newPromiseCapability = function(C){\n return sameConstructor($Promise, C)\n ? new PromiseCapability(C)\n : new GenericPromiseCapability(C);\n};\nvar PromiseCapability = GenericPromiseCapability = function(C){\n var resolve, reject;\n this.promise = new C(function($$resolve, $$reject){\n if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\nvar perform = function(exec){\n try {\n exec();\n } catch(e){\n return {error: e};\n }\n};\nvar notify = function(promise, isReject){\n if(promise._n)return;\n promise._n = true;\n var chain = promise._c;\n microtask(function(){\n var value = promise._v\n , ok = promise._s == 1\n , i = 0;\n var run = function(reaction){\n var handler = ok ? reaction.ok : reaction.fail\n , resolve = reaction.resolve\n , reject = reaction.reject\n , domain = reaction.domain\n , result, then;\n try {\n if(handler){\n if(!ok){\n if(promise._h == 2)onHandleUnhandled(promise);\n promise._h = 1;\n }\n if(handler === true)result = value;\n else {\n if(domain)domain.enter();\n result = handler(value);\n if(domain)domain.exit();\n }\n if(result === reaction.promise){\n reject(TypeError('Promise-chain cycle'));\n } else if(then = isThenable(result)){\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch(e){\n reject(e);\n }\n };\n while(chain.length > i)run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if(isReject && !promise._h)onUnhandled(promise);\n });\n};\nvar onUnhandled = function(promise){\n task.call(global, function(){\n var value = promise._v\n , abrupt, handler, console;\n if(isUnhandled(promise)){\n abrupt = perform(function(){\n if(isNode){\n process.emit('unhandledRejection', value, promise);\n } else if(handler = global.onunhandledrejection){\n handler({promise: promise, reason: value});\n } else if((console = global.console) && console.error){\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if(abrupt)throw abrupt.error;\n });\n};\nvar isUnhandled = function(promise){\n if(promise._h == 1)return false;\n var chain = promise._a || promise._c\n , i = 0\n , reaction;\n while(chain.length > i){\n reaction = chain[i++];\n if(reaction.fail || !isUnhandled(reaction.promise))return false;\n } return true;\n};\nvar onHandleUnhandled = function(promise){\n task.call(global, function(){\n var handler;\n if(isNode){\n process.emit('rejectionHandled', promise);\n } else if(handler = global.onrejectionhandled){\n handler({promise: promise, reason: promise._v});\n }\n });\n};\nvar $reject = function(value){\n var promise = this;\n if(promise._d)return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if(!promise._a)promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function(value){\n var promise = this\n , then;\n if(promise._d)return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if(promise === value)throw TypeError(\"Promise can't be resolved itself\");\n if(then = isThenable(value)){\n microtask(function(){\n var wrapper = {_w: promise, _d: false}; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch(e){\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch(e){\n $reject.call({_w: promise, _d: false}, e); // wrap\n }\n};\n\n// constructor polyfill\nif(!USE_NATIVE){\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor){\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch(err){\n $reject.call(this, err);\n }\n };\n Internal = function Promise(executor){\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected){\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if(this._a)this._a.push(reaction);\n if(this._s)notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function(onRejected){\n return this.then(undefined, onRejected);\n }\n });\n PromiseCapability = function(){\n var promise = new Internal;\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r){\n var capability = newPromiseCapability(this)\n , $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x){\n // instanceof instead of internal slot check because we should fix it without replacement native Promise core\n if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;\n var capability = newPromiseCapability(this)\n , $$resolve = capability.resolve;\n $$resolve(x);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function(iter){\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable){\n var C = this\n , capability = newPromiseCapability(C)\n , resolve = capability.resolve\n , reject = capability.reject;\n var abrupt = perform(function(){\n var values = []\n , index = 0\n , remaining = 1;\n forOf(iterable, false, function(promise){\n var $index = index++\n , alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function(value){\n if(alreadyCalled)return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if(abrupt)reject(abrupt.error);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable){\n var C = this\n , capability = newPromiseCapability(C)\n , reject = capability.reject;\n var abrupt = perform(function(){\n forOf(iterable, false, function(promise){\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if(abrupt)reject(abrupt.error);\n return capability.promise;\n }\n});","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function(iterated){\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , index = this._i\n , point;\n if(index >= O.length)return {value: undefined, done: true};\n point = $at(O, index);\n this._i += point.length;\n return {value: point, done: false};\n});","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global')\n , has = require('./_has')\n , DESCRIPTORS = require('./_descriptors')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , META = require('./_meta').KEY\n , $fails = require('./_fails')\n , shared = require('./_shared')\n , setToStringTag = require('./_set-to-string-tag')\n , uid = require('./_uid')\n , wks = require('./_wks')\n , wksExt = require('./_wks-ext')\n , wksDefine = require('./_wks-define')\n , keyOf = require('./_keyof')\n , enumKeys = require('./_enum-keys')\n , isArray = require('./_is-array')\n , anObject = require('./_an-object')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , createDesc = require('./_property-desc')\n , _create = require('./_object-create')\n , gOPNExt = require('./_object-gopn-ext')\n , $GOPD = require('./_object-gopd')\n , $DP = require('./_object-dp')\n , $keys = require('./_object-keys')\n , gOPD = $GOPD.f\n , dP = $DP.f\n , gOPN = gOPNExt.f\n , $Symbol = global.Symbol\n , $JSON = global.JSON\n , _stringify = $JSON && $JSON.stringify\n , PROTOTYPE = 'prototype'\n , HIDDEN = wks('_hidden')\n , TO_PRIMITIVE = wks('toPrimitive')\n , isEnum = {}.propertyIsEnumerable\n , SymbolRegistry = shared('symbol-registry')\n , AllSymbols = shared('symbols')\n , OPSymbols = shared('op-symbols')\n , ObjectProto = Object[PROTOTYPE]\n , USE_NATIVE = typeof $Symbol == 'function'\n , QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n return _create(dP({}, 'a', {\n get: function(){ return dP(this, 'a', {value: 7}).a; }\n })).a != 7;\n}) ? function(it, key, D){\n var protoDesc = gOPD(ObjectProto, key);\n if(protoDesc)delete ObjectProto[key];\n dP(it, key, D);\n if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function(tag){\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n return typeof it == 'symbol';\n} : function(it){\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D){\n if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if(has(AllSymbols, key)){\n if(!D.enumerable){\n if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n D = _create(D, {enumerable: createDesc(0, false)});\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P){\n anObject(it);\n var keys = enumKeys(P = toIObject(P))\n , i = 0\n , l = keys.length\n , key;\n while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P){\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n it = toIObject(it);\n key = toPrimitive(key, true);\n if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\n var D = gOPD(it, key);\n if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n var names = gOPN(toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n var IS_OP = it === ObjectProto\n , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif(!USE_NATIVE){\n $Symbol = function Symbol(){\n if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function(value){\n if(this === ObjectProto)$set.call(OPSymbols, value);\n if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if(DESCRIPTORS && !require('./_library')){\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function(name){\n return wrap(wks(name));\n }\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\nfor(var symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key){\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key){\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\n },\n useSetter: function(){ setter = true; },\n useSimple: function(){ setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it){\n if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n var args = [it]\n , i = 1\n , replacer, $replacer;\n while(arguments.length > i)args.push(arguments[i++]);\n replacer = args[1];\n if(typeof replacer == 'function')$replacer = replacer;\n if($replacer || !isArray(replacer))replacer = function(key, value){\n if($replacer)value = $replacer.call(this, key, value);\n if(!isSymbol(value))return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export')\n , $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it){\n return $entries(it);\n }\n});","require('./_wks-define')('asyncIterator');","require('./_wks-define')('observable');","require('./es6.array.iterator');\nvar global = require('./_global')\n , hide = require('./_hide')\n , Iterators = require('./_iterators')\n , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = nextTick;\n} else {\n module.exports = process.nextTick;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","module.exports = require('./lib/_stream_duplex.js');\n","// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nvar keys = objectKeys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n processNextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}","// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/**/\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options && typeof options.read === 'function') this._read = options.read;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n\n if (!state.objectMode && typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = bufferShim.from(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var _e = new Error('stream.unshift() after end event');\n stream.emit('error', _e);\n } else {\n var skipAdd;\n if (state.decoder && !addToFront && !encoding) {\n chunk = state.decoder.write(chunk);\n skipAdd = !state.objectMode && chunk.length === 0;\n }\n\n if (!addToFront) state.reading = false;\n\n // Don't add to the buffer if we've decoded to an empty string chunk and\n // we're not in object mode\n if (!skipAdd) {\n // if we want the data now, just emit it.\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = bufferShim.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er, data) {\n done(stream, er, data);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data !== null && data !== undefined) stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/**/\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/**/\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n processNextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = Buffer.isBuffer(chunk);\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = bufferShim.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) processNextTick(cb, er);else cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n while (entry) {\n buffer[count] = entry;\n entry = entry.next;\n count += 1;\n }\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else {\n prefinish(stream, state);\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function (err) {\n var entry = _this.entry;\n _this.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = _this;\n } else {\n state.corkedRequestsFree = _this;\n }\n };\n}","'use strict';\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/**/\n\nmodule.exports = BufferList;\n\nfunction BufferList() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n}\n\nBufferList.prototype.push = function (v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n};\n\nBufferList.prototype.unshift = function (v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n};\n\nBufferList.prototype.shift = function () {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n};\n\nBufferList.prototype.clear = function () {\n this.head = this.tail = null;\n this.length = 0;\n};\n\nBufferList.prototype.join = function (s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n};\n\nBufferList.prototype.concat = function (n) {\n if (this.length === 0) return bufferShim.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = bufferShim.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n p.data.copy(ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n};","module.exports = require('events').EventEmitter;\n","module.exports = require('./readable').PassThrough\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./lib/_stream_writable.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var ClientRequest = require('./lib/request')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableByteStream)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\nvar xhr = new global.XMLHttpRequest()\n// If location.host is empty, e.g. if this page/worker was loaded\n// from a Blob, then use example.com to avoid an error\nxhr.open('GET', global.location.host ? '/' : 'https://example.com')\n\nfunction checkTypeSupport (type) {\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\nexports.arraybuffer = haveArrayBuffer && checkTypeSupport('arraybuffer')\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\nexports.overrideMimeType = isFunction(xhr.overrideMimeType)\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n return typeof value === 'function'\n}\n\nxhr = null // Help gc\n","// var Base64 = require('Base64')\nvar capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, avoidFetch) {\n\tif (capability.fetch && !avoidFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tif (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, opts.avoidFetch)\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar self = this\n\treturn self._headers[name.toLowerCase()].value\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body\n\tif (opts.method === 'POST' || opts.method === 'PUT' || opts.method === 'PATCH') {\n\t\tif (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\tif (self._mode === 'fetch') {\n\t\tvar headers = Object.keys(headersObj).map(function (name) {\n\t\t\treturn [headersObj[name].name, headersObj[name].value]\n\t\t})\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headers,\n\t\t\tbody: body,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin'\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tObject.keys(headersObj).forEach(function (name) {\n\t\t\txhr.setRequestHeader(headersObj[name].name, headersObj[name].value)\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode)\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\t// Currently, there isn't a way to truly abort a fetch.\n\t// If you like bikeshedding, see https://github.com/whatwg/fetch/issues/27\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'user-agent',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t// backwards compatible version of for ( of ):\n\t\t// for (var ,_i,_it = [Symbol.iterator](); = (_i = _it.next()).value,!_i.done;)\n\t\tfor (var header, _i, _it = response.headers[Symbol.iterator](); header = (_i = _it.next()).value, !_i.done;) {\n\t\t\tself.headers[header[0].toLowerCase()] = header[1]\n\t\t\tself.rawHeaders.push(header[0], header[1])\n\t\t}\n\n\t\t// TODO: this doesn't respect backpressure. Once WritableStream is available, this can be fixed\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\tread()\n\t\t\t})\n\t\t}\n\t\tread()\n\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {}\n\nIncomingMessage.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text:vbarray': // For IE9\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\ttry {\n\t\t\t\t// This fails in IE8\n\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t} catch (e) {}\n\t\t\tif (response !== null) {\n\t\t\t\tself.push(new Buffer(response))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Falls through in IE8\t\n\t\tcase 'text':\n\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\tresponse = xhr.responseText\n\t\t\t} catch (e) {\n\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar bufferShim = require('buffer-shims');\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = bufferShim.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return -1;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// UTF-8 replacement characters ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd'.repeat(p);\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd'.repeat(p + 1);\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd'.repeat(p + 2);\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character for each buffered byte of a (partial)\n// character needs to be added to the output.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd'.repeat(this.lastTotal - this.lastNeed);\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","module.exports = function (prefix) {\n return function (request) {\n if (request.url[0] === '/') {\n request.url = prefix + request.url;\n }\n\n return request;\n };\n}","/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n console.warn(\"Using browser-only version of superagent in non-browser environment\");\n root = this;\n}\n\nvar Emitter = require('emitter');\nvar requestBase = require('./request-base');\nvar isObject = require('./is-object');\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Expose `request`.\n */\n\nvar request = module.exports = require('./request').bind(null, Request);\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n throw Error(\"Browser-only verison of superagent could not find XHR\");\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (val != null) {\n if (Array.isArray(val)) {\n val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n } else if (isObject(val)) {\n for(var subkey in val) {\n pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]);\n }\n } else {\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n }\n } else if (val === null) {\n pairs.push(encodeURIComponent(key));\n }\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var pair;\n var pos;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n if (pos == -1) {\n obj[decodeURIComponent(pair)] = '';\n } else {\n obj[decodeURIComponent(pair.slice(0, pos))] =\n decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return str.split(/ *; */).reduce(function(obj, str){\n var parts = str.split(/ *= */),\n key = parts.shift(),\n val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this._setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this._setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this._parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype._setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function(str){\n var parse = request.parse[this.type];\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype._setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n // issue #876: return the http status code if the response parsing fails\n err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n var new_err;\n try {\n if (res.status < 200 || res.status >= 300) {\n new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n }\n } catch(e) {\n new_err = e; // #985 touching res may cause INVALID_STATE_ERR on old Android\n }\n\n // #1000 don't catch errors from the callback to avoid double calling it\n if (new_err) {\n self.callback(new_err, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n\n/**\n * Mixin `Emitter` and `requestBase`.\n */\n\nEmitter(Request.prototype);\nfor (var key in requestBase) {\n Request.prototype[key] = requestBase[key];\n}\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set responseType to `val`. Presently valid responseTypes are 'blob' and\n * 'arraybuffer'.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.responseType = function(val){\n this._responseType = val;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n if (!options) {\n options = {\n type: 'basic'\n }\n }\n\n switch (options.type) {\n case 'basic':\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n }\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n this._getFormData().append(field, file, filename || file.name);\n return this;\n};\n\nRequest.prototype._getFormData = function(){\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype._timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\nRequest.prototype._appendQueryString = function(){\n var query = this._query.join('&');\n if (query) {\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self._timeoutError();\n if (self._aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(direction, e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = direction;\n self.emit('progress', e);\n }\n if (this.hasListeners('progress')) {\n try {\n xhr.onprogress = handleProgress.bind(null, 'download');\n if (xhr.upload) {\n xhr.upload.onprogress = handleProgress.bind(null, 'upload');\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n this._appendQueryString();\n\n // initiate request\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = function(url, data, fn){\n var req = request('OPTIONS', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n","/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return null !== obj && 'object' === typeof obj;\n}\n\nmodule.exports = isObject;\n","/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = require('./is-object');\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nexports.clearTimeout = function _clearTimeout(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nexports.parse = function parse(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nexports.serialize = function serialize(fn){\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nexports.timeout = function timeout(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} reject\n * @return {Request}\n */\n\nexports.then = function then(resolve, reject) {\n if (!this._fullfilledPromise) {\n var self = this;\n this._fullfilledPromise = new Promise(function(innerResolve, innerReject){\n self.end(function(err, res){\n if (err) innerReject(err); else innerResolve(res);\n });\n });\n }\n return this._fullfilledPromise.then(resolve, reject);\n}\n\nexports.catch = function(cb) {\n return this.then(undefined, cb);\n};\n\n/**\n * Allow for extension\n */\n\nexports.use = function use(fn) {\n fn(this);\n return this;\n}\n\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nexports.get = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nexports.getHeader = exports.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nexports.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n */\nexports.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nexports.field = function(name, val) {\n\n // name should be either a string or an object.\n if (null === name || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (isObject(name)) {\n for (var key in name) {\n this.field(key, name[key]);\n }\n return this;\n }\n\n // val should be defined now\n if (null === val || undefined === val) {\n throw new Error('.field(name, val) val can not be empty');\n }\n this._getFormData().append(name, val);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\nexports.abort = function(){\n if (this._aborted) {\n return this;\n }\n this._aborted = true;\n this.xhr && this.xhr.abort(); // browser\n this.req && this.req.abort(); // node\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nexports.withCredentials = function(){\n // This is browser-only functionality. Node side is no-op.\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does noting in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nexports.redirects = function(n){\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nexports.toJSON = function(){\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nexports._isHost = function _isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nexports.send = function(data){\n var obj = isObject(data);\n var type = this._header['content-type'];\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || this._isHost(data)) return this;\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n","// The node and browser modules expose versions of this with the\n// appropriate constructor function bound as first argument\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(RequestConstructor, method, url) {\n // callback\n if ('function' == typeof url) {\n return new RequestConstructor('GET', method).end(url);\n }\n\n // url first\n if (2 == arguments.length) {\n return new RequestConstructor('GET', method);\n }\n\n return new RequestConstructor(method, url);\n}\n\nmodule.exports = request;\n","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n"]} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/Agent.js","lib/Client.js","lib/Defaults.js","lib/EventStream.js","lib/Library.js","lib/Particle.js","lib/superagent-binary-parser.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/babel-runtime/core-js/number/is-nan.js","node_modules/babel-runtime/core-js/object/assign.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/babel-runtime/core-js/object/entries.js","node_modules/babel-runtime/core-js/object/get-prototype-of.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/babel-runtime/core-js/object/set-prototype-of.js","node_modules/babel-runtime/core-js/promise.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/babel-runtime/helpers/inherits.js","node_modules/babel-runtime/helpers/possibleConstructorReturn.js","node_modules/babel-runtime/helpers/slicedToArray.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/base64-js/index.js","node_modules/buffer-shims/index.js","node_modules/buffer/index.js","node_modules/builtin-status-codes/browser.js","node_modules/component-emitter/index.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/fn/number/is-nan.js","node_modules/core-js/library/fn/object/assign.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/fn/object/entries.js","node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/core-js/library/fn/promise.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/core-js/library/modules/_an-instance.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_for-of.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_invoke.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_is-array.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_keyof.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/_meta.js","node_modules/core-js/library/modules/_microtask.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_object-to-array.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_redefine-all.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_set-proto.js","node_modules/core-js/library/modules/_set-species.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_species-constructor.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_task.js","node_modules/core-js/library/modules/_to-index.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/es6.number.is-nan.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/core-js/library/modules/es6.promise.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/es7.object.entries.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/core-util-is/lib/util.js","node_modules/events/events.js","node_modules/ieee754/index.js","node_modules/inherits/inherits_browser.js","node_modules/is-buffer/index.js","node_modules/isarray/index.js","node_modules/path-browserify/index.js","node_modules/process-nextick-args/index.js","node_modules/process/browser.js","node_modules/punycode/punycode.js","node_modules/querystring-es3/decode.js","node_modules/querystring-es3/encode.js","node_modules/querystring-es3/index.js","node_modules/readable-stream/duplex-browser.js","node_modules/readable-stream/lib/_stream_duplex.js","node_modules/readable-stream/lib/_stream_passthrough.js","node_modules/readable-stream/lib/_stream_readable.js","node_modules/readable-stream/lib/_stream_transform.js","node_modules/readable-stream/lib/_stream_writable.js","node_modules/readable-stream/lib/internal/streams/BufferList.js","node_modules/readable-stream/lib/internal/streams/stream-browser.js","node_modules/readable-stream/passthrough.js","node_modules/readable-stream/readable-browser.js","node_modules/readable-stream/transform.js","node_modules/readable-stream/writable-browser.js","node_modules/stream-browserify/index.js","node_modules/stream-http/index.js","node_modules/stream-http/lib/capability.js","node_modules/stream-http/lib/request.js","node_modules/stream-http/lib/response.js","node_modules/string_decoder/lib/string_decoder.js","node_modules/superagent-prefix/index.js","node_modules/superagent/lib/client.js","node_modules/superagent/lib/is-object.js","node_modules/superagent/lib/request-base.js","node_modules/superagent/lib/request.js","node_modules/to-arraybuffer/index.js","node_modules/url/url.js","node_modules/url/util.js","node_modules/util-deprecate/browser.js","node_modules/xtend/immutable.js"],"names":["_interopRequireDefault","obj","__esModule","default","Object","defineProperty","exports","value","_keys","require","_keys2","_slicedToArray2","_slicedToArray3","_entries","_entries2","_getIterator2","_getIterator3","_assign","_assign2","_promise","_promise2","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_superagent","_superagent2","_superagentPrefix","_superagentPrefix2","_path","_path2","Agent","baseUrl","this","prefix","key","uri","auth","query","context","request","method","data","_ref","_ref$data","undefined","_ref$query","_ref$form","form","_ref$files","files","_ref$context","requestFiles","_sanitizeFiles","_request","_ref2","req","_buildRequest","_promiseResponse","_this","fulfill","reject","_sendRequest","end","error","res","body","url","statusCode","status","errorDescription","shortErrorDescription","error_description","reason","Error","_ref3","_ref3$makerequest","makerequest","use","_authorizationHeader","_applyContext","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","_step$value","name","file","_getFormData","append","filename","path","relativePath","dirname","err","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_step2$value","field","type","send","tool","_addToolContext","project","_addProjectContext","_toolIdent","components","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","component","set","_nameAtVersion","version","_buildSemicolonSeparatedProperties","primaryProperty","prop","hasOwnProperty","username","password","Authorization","forEach","k","i","module","_Particle","_Particle2","_Library","_Library2","Client","_ref$api","api","Boolean","arguments","length","listLibraries","then","payload","map","l","_this2","getLibrary","library","_this3","getLibraryVersions","archive","_this4","contributeLibrary","_throwError","_this5","publishLibrary","_this6","force","deleteLibrary","errors","errorMessages","e","message","join","downloadFile","platformId","targetVersion","compileCode","signal","deviceId","signalDevice","listDevices","listBuildTargets","onlyFeatured","targets","target","platforms","platform","push","prerelease","prereleases","indexOf","firmware_vendor","_ref4","_ref4$full","full","trackingIdentity","clientSecret","clientId","tokenDuration","_isNan","_isNan2","_getPrototypeOf","_getPrototypeOf2","_possibleConstructorReturn2","_possibleConstructorReturn3","_inherits2","_inherits3","_http","_http2","_https","_https2","_url","_url2","_events","EventStream","_EventEmitter","token","options","__proto__","call","reconnectInterval","resolve","_url$parse","parse","hostname","protocol","port","origin","isSecure","requestor","avoidFetch","mode","debug","on","chunk","JSON","emit","buf","eventName","lastEventId","bind","once","abort","removeAllListeners","setTimeout","connect","catch","pos","discardTrailingNewline","lineLength","fieldLength","c","parseEventStreamLine","slice","event","step","valueLength","retry","parseInt","EventEmitter","Library","client","_assignAttributes","downloadUrl","links","download","attributes","_superagentBinaryParser","_superagentBinaryParser2","_Defaults","_Defaults2","_EventStream","_EventStream2","_Agent","_Agent2","_Client","_Client2","Particle","agent","_isValidContext","_ref$tokenDuration","grant_type","client_id","client_secret","expires_in","accountInfo","post","account_info","_ref5","delete","access_token","_ref6","_ref7","get","_ref8","_ref8$full","tracking","_ref9","deviceName","sortAttr","sortDir","page","perPage","product","per_page","_ref10","deviceUri","_ref11","requestTransfer","id","request_transfer","_ref12","_ref13","deny","_ref14","_ref15","updateDevice","_ref16","_ref17","notes","_ref18","_ref18$development","development","_ref19","desiredFirmwareVersion","flash","_ref20","_ref21","desired_firmware_version","put","_ref22","productId","product_id","_ref23","iccid","_ref24","promoCode","_ref25","_ref26","_ref27","build_target_version","latest","_ref28","console","warning","app","_ref29","platform_id","_ref30","binaryId","headers","_ref31","algorithm","deviceID","publicKey","toString","order","Date","now","_ref32","argument","args","_ref33","org","toLowerCase","encodeURIComponent","_ref34","isPrivate","postData","private","_ref35","requestType","json","responseTemplate","responseTopic","rejectUnauthorized","webhookAuth","noDefaults","deviceid","_ref36","hookId","_ref37","_ref38","integrationType","settings","_ref39","integrationId","_ref40","_ref41","_ref42","_ref43","stripeToken","bodyObj","stripe_token","_ref44","_ref45","_ref46","_ref47","head","_ref48","iccids","countryCode","sims","action","_ref49","_ref50","mbLimit","mb_limit","_ref51","_ref52","_ref53","featured","_ref54","limit","filter","sort","architectures","category","scope","excludeScopes","_asList","Array","isArray","_ref55","_ref56","_ref57","archive.tar.gz","_ref58","visibility","_ref59","_ref60","buffer","responseType","xhr","response","_ref61","_ref62","redirect_uri","_ref63","_ref64","_ref65","_ref66","_ref67","_ref68","title","description","firmware.bin","_ref69","_ref70","_ref71","_ref72","_ref73","_ref74","_ref75","_ref76","_buildContext","prototype","removeAccessToken","deleteAccessToken","binaryParser","fn","Buffer","concat","instance","Constructor","TypeError","_defineProperty","_defineProperty2","defineProperties","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","_setPrototypeOf","_setPrototypeOf2","_create","_create2","_typeof2","_typeof3","subClass","superClass","constructor","self","ReferenceError","_isIterable2","_isIterable3","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","_symbol","_symbol2","_typeof","placeHoldersCount","b64","len","byteLength","toByteArray","j","tmp","placeHolders","Arr","L","revLookup","charCodeAt","tripletToBase64","num","lookup","encodeChunk","uint8","start","output","fromByteArray","extraBytes","parts","len2","Uint8Array","code","SlowBuffer","MAX_LEN","kMaxLength","alloc","size","fill","encoding","RangeError","enc","_fill","fillBuf","flen","allocUnsafe","from","encodingOrOffset","global","ArrayBuffer","offset","isBuffer","out","copy","allocUnsafeSlow","typedArraySupport","foo","subarray","TYPED_ARRAY_SUPPORT","createBuffer","that","arg","fromArrayBuffer","fromString","fromObject","assertSize","checked","string","isEncoding","actual","write","fromArrayLike","array","byteOffset","isnan","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","val","dir","isNaN","arrayIndexOf","lastIndexOf","read","indexSize","readUInt16BE","arrLength","valLength","String","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","base64","Math","min","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","ret","toHex","bytes","checkOffset","ext","checkInt","max","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","str","stringtrim","replace","INVALID_BASE64_RE","trim","units","Infinity","leadSurrogate","byteArray","hi","lo","src","dst","INSPECT_MAX_BYTES","poolSize","_augment","Symbol","species","_isBuffer","compare","a","x","y","list","swap16","swap32","swap64","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","100","101","102","200","201","202","203","204","205","206","207","208","226","300","301","302","303","304","305","307","308","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","421","422","423","424","425","426","428","429","431","500","501","502","503","504","505","506","507","508","509","510","511","Emitter","mixin","addEventListener","_callbacks","off","removeListener","removeEventListener","callbacks","cb","splice","listeners","hasListeners","assign","$Object","P","D","create","it","desc","entries","getPrototypeOf","keys","setPrototypeOf","Promise","f","forbiddenField","isObject","toIObject","toLength","toIndex","IS_INCLUDES","$this","el","fromIndex","O","index","cof","TAG","ARG","tryGet","T","B","callee","core","__e","aFunction","document","is","createElement","split","getKeys","gOPS","pIE","result","getSymbols","symbols","isEnum","ctx","hide","PROTOTYPE","$export","source","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","C","Function","virtual","R","U","exec","isArrayIter","anObject","getIterFn","BREAK","RETURN","iterable","ITERATOR","iterator","iterFn","window","__g","dP","createDesc","object","documentElement","un","propertyIsEnumerable","Iterators","ArrayProto","setToStringTag","IteratorPrototype","NAME","LIBRARY","redefine","has","$iterCreate","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","SAFE_CLOSING","riter","skipClosing","safe","iter","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","KEY","macrotask","Observer","MutationObserver","WebKitMutationObserver","process","isNode","last","notify","flush","parent","domain","exit","enter","nextTick","toggle","node","createTextNode","observe","characterData","promise","task","toObject","IObject","$assign","A","K","aLen","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","contentWindow","open","lt","close","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","names","fails","exp","isEntries","bitmap","check","test","buggy","DESCRIPTORS","SPECIES","def","tag","stat","shared","uid","SHARED","store","toInteger","defined","TO_STRING","s","charAt","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","queue","ONREADYSTATECHANGE","defer","channel","run","listener","port2","port1","onmessage","postMessage","importScripts","removeChild","clear","ceil","valueOf","px","random","wksExt","$Symbol","USE_SYMBOL","$exports","classof","getIteratorMethod","getIterator","isIterable","addToUnscopables","iterated","_t","_k","Arguments","number","$getPrototypeOf","anInstance","forOf","speciesConstructor","microtask","PROMISE","$Promise","empty","Internal","GenericPromiseCapability","Wrapper","USE_NATIVE","FakePromise","PromiseRejectionEvent","sameConstructor","isThenable","newPromiseCapability","PromiseCapability","$$resolve","$$reject","perform","isReject","chain","_c","_v","ok","reaction","handler","fail","_h","onHandleUnhandled","onUnhandled","abrupt","isUnhandled","onunhandledrejection","_a","onrejectionhandled","$reject","_w","$resolve","wrapper","executor","onFulfilled","onRejected","r","capability","all","$index","alreadyCalled","race","$at","point","$fails","wks","wksDefine","keyOf","enumKeys","gOPNExt","$GOPD","$DP","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","for","keyFor","useSetter","useSimple","replacer","$replacer","TO_STRING_TAG","collections","Collection","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isUndefined","isRegExp","re","isDate","d","isError","isFunction","isPrimitive","o","_maxListeners","defaultMaxListeners","setMaxListeners","er","addListener","newListener","warned","trace","g","fired","position","listenerCount","evlistener","emitter","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","log","LN2","ctor","superCtor","super_","TempCtor","isSlowBuffer","normalizeArray","allowAboveRoot","up","unshift","xs","splitPathRe","splitPath","resolvedPath","resolvedAbsolute","cwd","p","normalize","isAbsolute","trailingSlash","paths","relative","to","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","root","basename","extname","arg1","arg2","arg3","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","timeout","Item","noop","browser","env","argv","versions","prependListener","prependOnceListener","binding","chdir","umask","mapDomain","regexSeparators","ucs2decode","extra","ucs2encode","stringFromCharCode","basicToDigit","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","decode","input","basic","oldi","t","baseMinusT","inputLength","initialN","bias","initialBias","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","punycode","overflow","not-basic","invalid-input","ucs2","define","amd","qs","eq","maxKeys","kstr","vstr","v","idx","decodeURIComponent","stringifyPrimitive","objectKeys","ks","Duplex","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","processNextTick","onEndNT","util","inherits","PassThrough","Transform","_transform","ReadableState","stream","objectMode","readableObjectMode","hwm","highWaterMark","defaultHwm","BufferList","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","ranOut","awaitDrain","readingMore","decoder","StringDecoder","_readableState","_read","Stream","readableAddChunk","state","addToFront","chunkInvalid","onEofChunk","skipAdd","emitReadable","maybeReadMore","needMoreData","computeNewHighWaterMark","MAX_HWM","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","EElistenerCount","nReadingNextTick","resume","resume_","fromList","shift","fromListPartial","hasStrings","copyFromBufferString","copyFromBuffer","nb","tail","bufferShim","endReadable","endReadableNT","EE","debugUtil","debuglog","kProxyEvents","isPaused","setEncoding","nOrig","doRead","pipe","dest","pipeOpts","onunpipe","cleanup","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","needDrain","increasedAwaitDrain","pause","unpipe","doEnd","stdout","stderr","endFn","dests","ev","paused","_fromList","TransformState","afterTransform","needTransform","transforming","writecb","writechunk","writeencoding","ts","_transformState","rs","transform","_flush","ws","_write","nop","WriteReq","callback","WritableState","writableObjectMode","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","CorkedRequest","realHasInstance","writev","_writev","writeAfterEnd","validChunk","valid","decodeChunk","writeOrBuffer","isBuf","doWrite","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","asyncWrite","afterWrite","onwriteDrain","finishMaybe","entry","holder","count","finish","prefinish","need","endWritable","internalUtil","deprecate","getBuffer","current","_","hasInstance","cork","uncork","setDefaultEncoding","didOnEnd","destroy","_isStdio","ClientRequest","extend","statusCodes","http","opts","defaultProtocol","location","search","host","toUpperCase","defaultMaxSockets","STATUS_CODES","METHODS","checkTypeSupport","fetch","ReadableByteStream","blobConstructor","Blob","XMLHttpRequest","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","vbArray","VBArray","decideMode","preferBinary","statusValid","toArrayBuffer","IncomingMessage","rStates","readyStates","_opts","_body","_headers","setHeader","_mode","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","credentials","withCredentials","_fetchResponse","_connect","_xhr","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","reader","rawHeaders","trailers","rawTrailers","statusMessage","statusText","header","_it","getReader","_pos","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","responseBody","toArray","responseText","newData","MSStreamReader","onload","readAsArrayBuffer","_normalizeEncoding","retried","normalizeEncoding","nenc","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","repeat","utf8Text","total","utf8End","serialize","pairs","pushEncodedKeyValuePair","subkey","parseString","pair","parseHeader","line","lines","fields","pop","isJSON","mime","params","reduce","Response","_setStatusProperties","getResponseHeader","_setHeaderProperties","_parseBody","Request","_query","_header","original","rawResponse","new_err","del","warn","requestBase","getXHR","ActiveXObject","serializeObject","types","xml","urlencoded","form-data","application/x-www-form-urlencoded","application/json","ct","statusType","info","clientError","serverError","toError","accepted","noContent","badRequest","unauthorized","notAcceptable","notFound","forbidden","msg","_responseType","accept","user","pass","btoa","attach","_formData","FormData","_callback","crossDomainError","crossDomain","_timeoutError","_timeout","_appendQueryString","_data","timedout","_aborted","handleProgress","direction","percent","loaded","upload","_timer","_withCredentials","_isHost","contentType","_serializer","patch","_parser","ms","_fullfilledPromise","innerResolve","innerReject","unset","redirects","_maxRedirects","RequestConstructor","arrayCopy","Url","slashes","hash","pathname","href","urlParse","parseQueryString","slashesDenoteHost","u","urlFormat","format","urlResolve","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","https","ftp","gopher","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","deprecated","config","localStorage"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o.\n ******************************************************************************\n */\n\nexports.default = Agent;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Agent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Particle = require('./Particle');\n\nvar _Particle2 = _interopRequireDefault(_Particle);\n\nvar _Library = require('./Library');\n\nvar _Library2 = _interopRequireDefault(_Library);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Client = function () {\n\tfunction Client(_ref) {\n\t\tvar auth = _ref.auth,\n\t\t _ref$api = _ref.api,\n\t\t api = _ref$api === undefined ? new _Particle2.default() : _ref$api;\n\t\t(0, _classCallCheck3.default)(this, Client);\n\n\t\t(0, _assign2.default)(this, { auth: auth, api: api });\n\t}\n\n\t(0, _createClass3.default)(Client, [{\n\t\tkey: 'ready',\n\t\tvalue: function ready() {\n\t\t\treturn Boolean(this.auth);\n\t\t}\n\n\t\t/**\n * Get firmware library objects\n * @param {Object} query The query parameters for libraries. See Particle.listLibraries\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'libraries',\n\t\tvalue: function libraries() {\n\t\t\tvar _this = this;\n\n\t\t\tvar query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t\treturn this.api.listLibraries((0, _assign2.default)({}, query, { auth: this.auth })).then(function (payload) {\n\t\t\t\tvar libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(function (l) {\n\t\t\t\t\treturn new _Library2.default(_this, l);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Get one firmware library object\n * @param {String} name Name of the library to fetch\n * @param {Object} query The query parameters for libraries. See Particle.getLibrary\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'library',\n\t\tvalue: function library(name) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\treturn this.api.getLibrary((0, _assign2.default)({}, query, { name: name, auth: this.auth })).then(function (payload) {\n\t\t\t\tvar library = payload.body.data || {};\n\t\t\t\treturn new _Library2.default(_this2, library);\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Get list of library versions\n * @param {String} name Name of the library to fetch\n * @param {Object} query The query parameters for versions. See Particle.getLibraryVersions\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'libraryVersions',\n\t\tvalue: function libraryVersions(name) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\treturn this.api.getLibraryVersions((0, _assign2.default)({}, query, { name: name, auth: this.auth })).then(function (payload) {\n\t\t\t\tvar libraries = payload.body.data || [];\n\t\t\t\treturn libraries.map(function (l) {\n\t\t\t\t\treturn new _Library2.default(_this3, l);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Contribute a new library version\n * @param {Buffer} archive The compressed archive with the library source\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'contributeLibrary',\n\t\tvalue: function contributeLibrary(archive) {\n\t\t\tvar _this4 = this;\n\n\t\t\treturn this.api.contributeLibrary({ archive: archive, auth: this.auth }).then(function (payload) {\n\t\t\t\tvar library = payload.body.data || {};\n\t\t\t\treturn new _Library2.default(_this4, library);\n\t\t\t}, function (error) {\n\t\t\t\t_this4._throwError(error);\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Make the the most recent private library version public\n * @param {string} name The name of the library to publish\n * @return {Promise} To publish the library\n */\n\n\t}, {\n\t\tkey: 'publishLibrary',\n\t\tvalue: function publishLibrary(name) {\n\t\t\tvar _this5 = this;\n\n\t\t\treturn this.api.publishLibrary({ name: name, auth: this.auth }).then(function (payload) {\n\t\t\t\tvar library = payload.body.data || {};\n\t\t\t\treturn new _Library2.default(_this5, library);\n\t\t\t}, function (error) {\n\t\t\t\t_this5._throwError(error);\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Delete an entire published library\n * @param {String} $0.name Name of the library to delete\n * @param {String} $0.force Key to force deleting a public library\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteLibrary',\n\t\tvalue: function deleteLibrary(_ref2) {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar name = _ref2.name,\n\t\t\t version = _ref2.version,\n\t\t\t force = _ref2.force;\n\n\t\t\treturn this.api.deleteLibrary({ name: name, force: force, auth: this.auth }).then(function (payload) {\n\t\t\t\treturn true;\n\t\t\t}, function (error) {\n\t\t\t\t_this6._throwError(error);\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: '_throwError',\n\t\tvalue: function _throwError(error) {\n\t\t\tif (error.body && error.body.errors) {\n\t\t\t\tvar errorMessages = error.body.errors.map(function (e) {\n\t\t\t\t\treturn e.message;\n\t\t\t\t}).join('\\n');\n\t\t\t\tthrow new Error(errorMessages);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}, {\n\t\tkey: 'downloadFile',\n\t\tvalue: function downloadFile(url) {\n\t\t\treturn this.api.downloadFile({ url: url });\n\t\t}\n\n\t\t/**\n * @param {Object} files Object containing files to be compiled\n * @param {Number} platformId Platform id number of the device you are compiling for\n * @param {String} targetVersion System firmware version to compile against\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'compileCode',\n\t\tvalue: function compileCode(files, platformId, targetVersion) {\n\t\t\treturn this.api.compileCode({ files: files, platformId: platformId, targetVersion: targetVersion, auth: this.auth });\n\t\t}\n\n\t\t/**\n * @param {String} $0.deviceId Device ID or Name\n * @param {Boolean} $0.signal Signal on or off\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'signalDevice',\n\t\tvalue: function signalDevice(_ref3) {\n\t\t\tvar signal = _ref3.signal,\n\t\t\t deviceId = _ref3.deviceId;\n\n\t\t\treturn this.api.signalDevice({ signal: signal, deviceId: deviceId, auth: this.auth });\n\t\t}\n\n\t\t/**\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'listDevices',\n\t\tvalue: function listDevices() {\n\t\t\treturn this.api.listDevices({ auth: this.auth });\n\t\t}\n\n\t\t/**\n * @return {Promise}\n * @deprecated Will be removed in 6.5\n */\n\n\t}, {\n\t\tkey: 'listBuildTargets',\n\t\tvalue: function listBuildTargets() {\n\t\t\treturn this.api.listBuildTargets({ onlyFeatured: true, auth: this.auth }).then(function (payload) {\n\t\t\t\tvar targets = [];\n\t\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\t\tvar _didIteratorError = false;\n\t\t\t\tvar _iteratorError = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator = (0, _getIterator3.default)(payload.body.targets), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\t\tvar target = _step.value;\n\t\t\t\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\t\t\t\tvar _didIteratorError2 = false;\n\t\t\t\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tfor (var _iterator2 = (0, _getIterator3.default)(target.platforms), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\t\t\t\tvar platform = _step2.value;\n\n\t\t\t\t\t\t\t\ttargets.push({\n\t\t\t\t\t\t\t\t\tversion: target.version,\n\t\t\t\t\t\t\t\t\tplatform: platform,\n\t\t\t\t\t\t\t\t\tprerelease: target.prereleases.indexOf(platform) > -1,\n\t\t\t\t\t\t\t\t\tfirmware_vendor: target.firmware_vendor\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t\t\t\t_iteratorError2 = err;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError = true;\n\t\t\t\t\t_iteratorError = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn targets;\n\t\t\t}, function (error) {});\n\t\t}\n\t}, {\n\t\tkey: 'trackingIdentity',\n\t\tvalue: function trackingIdentity() {\n\t\t\tvar _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n\t\t\t _ref4$full = _ref4.full,\n\t\t\t full = _ref4$full === undefined ? false : _ref4$full,\n\t\t\t context = _ref4.context;\n\n\t\t\treturn this.api.trackingIdentity({ full: full, context: context, auth: this.auth }).then(function (payload) {\n\t\t\t\treturn payload.body;\n\t\t\t});\n\t\t}\n\t}]);\n\treturn Client;\n}();\n\nexports.default = Client;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Client.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = {\n\tbaseUrl: 'https://api.particle.io',\n\tclientSecret: 'particle-api',\n\tclientId: 'particle-api',\n\ttokenDuration: 7776000 // 90 days\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Defaults.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _isNan = require('babel-runtime/core-js/number/is-nan');\n\nvar _isNan2 = _interopRequireDefault(_isNan);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _http = require('http');\n\nvar _http2 = _interopRequireDefault(_http);\n\nvar _https = require('https');\n\nvar _https2 = _interopRequireDefault(_https);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _events = require('events');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint max-depth: 0 */\nvar EventStream = function (_EventEmitter) {\n\t(0, _inherits3.default)(EventStream, _EventEmitter);\n\n\tfunction EventStream(uri, token, options) {\n\t\t(0, _classCallCheck3.default)(this, EventStream);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, (EventStream.__proto__ || (0, _getPrototypeOf2.default)(EventStream)).call(this));\n\n\t\t_this.uri = uri;\n\t\t_this.token = token;\n\t\t_this.reconnectInterval = 2000;\n\t\t(0, _assign2.default)(_this, options);\n\t\treturn _this;\n\t}\n\n\t(0, _createClass3.default)(EventStream, [{\n\t\tkey: 'connect',\n\t\tvalue: function connect() {\n\t\t\tvar _this2 = this;\n\n\t\t\treturn new _promise2.default(function (resolve, reject) {\n\t\t\t\tvar _url$parse = _url2.default.parse(_this2.uri),\n\t\t\t\t hostname = _url$parse.hostname,\n\t\t\t\t protocol = _url$parse.protocol,\n\t\t\t\t port = _url$parse.port,\n\t\t\t\t path = _url$parse.path;\n\n\t\t\t\t_this2.origin = protocol + '//' + hostname + (port ? ':' + port : '');\n\n\t\t\t\tvar isSecure = protocol === 'https:';\n\t\t\t\tvar requestor = isSecure ? _https2.default : _http2.default;\n\t\t\t\tvar req = requestor.request({\n\t\t\t\t\thostname: hostname,\n\t\t\t\t\tprotocol: protocol,\n\t\t\t\t\tpath: path + '?history_limit=30&access_token=' + _this2.token,\n\t\t\t\t\tmethod: 'get',\n\t\t\t\t\tport: port || (isSecure ? 443 : 80),\n\t\t\t\t\tavoidFetch: true,\n\t\t\t\t\tmode: 'prefer-streaming'\n\t\t\t\t});\n\n\t\t\t\t_this2.req = req;\n\t\t\t\tif (_this2.debug) {\n\t\t\t\t\t_this2.debug(_this2);\n\t\t\t\t}\n\n\t\t\t\treq.on('error', function (e) {\n\t\t\t\t\treject({ error: e, errorDescription: 'Network error from ' + _this2.uri });\n\t\t\t\t});\n\n\t\t\t\treq.on('response', function (res) {\n\t\t\t\t\tvar statusCode = res.statusCode;\n\t\t\t\t\tif (statusCode !== 200) {\n\t\t\t\t\t\tvar body = '';\n\t\t\t\t\t\tres.on('data', function (chunk) {\n\t\t\t\t\t\t\treturn body += chunk;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tres.on('end', function () {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbody = JSON.parse(body);\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t_this2.emit('response', {\n\t\t\t\t\t\t\t\t\tstatusCode: statusCode,\n\t\t\t\t\t\t\t\t\tbody: body\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tvar errorDescription = 'HTTP error ' + statusCode + ' from ' + _this2.uri;\n\t\t\t\t\t\t\t\tif (body && body.error_description) {\n\t\t\t\t\t\t\t\t\terrorDescription += ' - ' + body.error_description;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treject({ statusCode: statusCode, errorDescription: errorDescription, body: body });\n\t\t\t\t\t\t\t\t_this2.req = undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this2.data = '';\n\t\t\t\t\t_this2.buf = '';\n\t\t\t\t\t_this2.eventName;\n\t\t\t\t\t_this2.lastEventId;\n\n\t\t\t\t\tres.on('data', _this2.parse.bind(_this2));\n\t\t\t\t\tres.once('end', _this2.end.bind(_this2));\n\t\t\t\t\tresolve(_this2);\n\t\t\t\t});\n\t\t\t\treq.end();\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'abort',\n\t\tvalue: function abort() {\n\t\t\tif (this.req) {\n\t\t\t\tthis.req.abort();\n\t\t\t\tthis.req = undefined;\n\t\t\t}\n\t\t\tthis.removeAllListeners();\n\t\t}\n\t}, {\n\t\tkey: 'end',\n\t\tvalue: function end() {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis.req = undefined;\n\t\t\tsetTimeout(function () {\n\t\t\t\t_this3.connect().catch(function (err) {\n\t\t\t\t\t_this3.emit('error', err);\n\t\t\t\t\t_this3.removeAllListeners();\n\t\t\t\t});\n\t\t\t}, this.reconnectInterval);\n\t\t}\n\t}, {\n\t\tkey: 'parse',\n\t\tvalue: function parse(chunk) {\n\t\t\tthis.buf += chunk;\n\t\t\tvar pos = 0;\n\t\t\tvar length = this.buf.length;\n\t\t\tvar discardTrailingNewline = false;\n\n\t\t\twhile (pos < length) {\n\t\t\t\tif (discardTrailingNewline) {\n\t\t\t\t\tif (this.buf[pos] === '\\n') {\n\t\t\t\t\t\t++pos;\n\t\t\t\t\t}\n\t\t\t\t\tdiscardTrailingNewline = false;\n\t\t\t\t}\n\n\t\t\t\tvar lineLength = -1;\n\t\t\t\tvar fieldLength = -1;\n\n\t\t\t\tfor (var i = pos; lineLength < 0 && i < length; ++i) {\n\t\t\t\t\tvar c = this.buf[i];\n\t\t\t\t\tif (c === ':') {\n\t\t\t\t\t\tif (fieldLength < 0) {\n\t\t\t\t\t\t\tfieldLength = i - pos;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (c === '\\r') {\n\t\t\t\t\t\tdiscardTrailingNewline = true;\n\t\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t\t} else if (c === '\\n') {\n\t\t\t\t\t\tlineLength = i - pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (lineLength < 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis.parseEventStreamLine(pos, fieldLength, lineLength);\n\n\t\t\t\tpos += lineLength + 1;\n\t\t\t}\n\n\t\t\tif (pos === length) {\n\t\t\t\tthis.buf = '';\n\t\t\t} else if (pos > 0) {\n\t\t\t\tthis.buf = this.buf.slice(pos);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'parseEventStreamLine',\n\t\tvalue: function parseEventStreamLine(pos, fieldLength, lineLength) {\n\t\t\tif (lineLength === 0) {\n\t\t\t\ttry {\n\t\t\t\t\tif (this.data.length > 0 && this.event) {\n\t\t\t\t\t\tvar event = JSON.parse(this.data);\n\t\t\t\t\t\tevent.name = this.eventName || '';\n\t\t\t\t\t\tif (this.eventName !== 'event') {\n\t\t\t\t\t\t\tthis.emit(this.eventName, event);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.emit('event', event);\n\t\t\t\t\t\tthis.data = '';\n\t\t\t\t\t}\n\t\t\t\t\tthis.eventName = undefined;\n\t\t\t\t\tthis.event = false;\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// do nothing if JSON.parse fails\n\t\t\t\t}\n\t\t\t} else if (fieldLength > 0) {\n\t\t\t\tvar field = this.buf.slice(pos, pos + fieldLength);\n\t\t\t\tvar step = 0;\n\n\t\t\t\tif (this.buf[pos + fieldLength + 1] !== ' ') {\n\t\t\t\t\tstep = fieldLength + 1;\n\t\t\t\t} else {\n\t\t\t\t\tstep = fieldLength + 2;\n\t\t\t\t}\n\t\t\t\tpos += step;\n\t\t\t\tvar valueLength = lineLength - step;\n\t\t\t\tvar value = this.buf.slice(pos, pos + valueLength);\n\n\t\t\t\tif (field === 'data') {\n\t\t\t\t\tthis.data += value + '\\n';\n\t\t\t\t} else if (field === 'event') {\n\t\t\t\t\tthis.eventName = value;\n\t\t\t\t\tthis.event = true;\n\t\t\t\t} else if (field === 'id') {\n\t\t\t\t\tthis.lastEventId = value;\n\t\t\t\t} else if (field === 'retry') {\n\t\t\t\t\tvar retry = parseInt(value, 10);\n\t\t\t\t\tif (!(0, _isNan2.default)(retry)) {\n\t\t\t\t\t\tthis.reconnectInterval = retry;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}]);\n\treturn EventStream;\n}(_events.EventEmitter);\n\nexports.default = EventStream;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EventStream.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* Library\n * Represents a version of a library contributed in the cloud.\n */\n\nvar Library = function () {\n\tfunction Library(client, data) {\n\t\t(0, _classCallCheck3.default)(this, Library);\n\n\t\t// Make client non-enumerable so it doesn't show up in Object.keys, JSON.stringify, etc\n\t\tObject.defineProperty(this, 'client', { value: client });\n\t\tthis._assignAttributes(data);\n\t\tthis.downloadUrl = data.links && data.links.download;\n\t}\n\n\t(0, _createClass3.default)(Library, [{\n\t\tkey: '_assignAttributes',\n\t\tvalue: function _assignAttributes(data) {\n\t\t\t(0, _assign2.default)(this, data.attributes);\n\t\t}\n\n\t\t/**\n * Download the compressed file containing the source code for this library version.\n * @return {Promise} Resolves to the .tar.gz compressed source code\n */\n\n\t}, {\n\t\tkey: 'download',\n\t\tvalue: function download() {\n\t\t\tif (!this.downloadUrl) {\n\t\t\t\treturn _promise2.default.reject(new Error('No download URL for this library'));\n\t\t\t}\n\t\t\treturn this.client.downloadFile(this.downloadUrl);\n\t\t}\n\n\t\t/* TODO: add a versions() method to fetch an array of library objects */\n\n\t}]);\n\treturn Library;\n}();\n\nexports.default = Library;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Library.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _superagent = require('superagent');\n\nvar _superagent2 = _interopRequireDefault(_superagent);\n\nvar _superagentBinaryParser = require('./superagent-binary-parser');\n\nvar _superagentBinaryParser2 = _interopRequireDefault(_superagentBinaryParser);\n\nvar _Defaults = require('./Defaults');\n\nvar _Defaults2 = _interopRequireDefault(_Defaults);\n\nvar _EventStream = require('./EventStream');\n\nvar _EventStream2 = _interopRequireDefault(_EventStream);\n\nvar _Agent = require('./Agent');\n\nvar _Agent2 = _interopRequireDefault(_Agent);\n\nvar _Client = require('./Client');\n\nvar _Client2 = _interopRequireDefault(_Client);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Particle Cloud API wrapper.\n *\n * See for examples\n * of using the `Particle` class.\n *\n * Most Particle methods take a single unnamed argument object documented as\n * `options` with key/value pairs for each option.\n */\nvar Particle = function () {\n\t/**\n * Contructor for the Cloud API wrapper.\n *\n * Create a new Particle object and call methods below on it.\n *\n * @param {Object} options Options for this API call Options to be used for all requests (see [Defaults](../src/Defaults.js))\n */\n\tfunction Particle() {\n\t\tvar options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\t(0, _classCallCheck3.default)(this, Particle);\n\n\t\t// todo - this seems a bit dangerous - would be better to put all options/context in a contained object\n\t\t(0, _assign2.default)(this, _Defaults2.default, options);\n\t\tthis.context = {};\n\t\tthis.agent = new _Agent2.default(this.baseUrl);\n\t}\n\n\t(0, _createClass3.default)(Particle, [{\n\t\tkey: '_isValidContext',\n\t\tvalue: function _isValidContext(name, context) {\n\t\t\treturn (name === 'tool' || name === 'project') && context !== undefined;\n\t\t}\n\t}, {\n\t\tkey: 'setContext',\n\t\tvalue: function setContext(name, context) {\n\t\t\tif (context !== undefined) {\n\t\t\t\tif (this._isValidContext(name, context)) {\n\t\t\t\t\tthis.context[name] = context;\n\t\t\t\t} else {\n\t\t\t\t\tthrow Error('uknown context name or undefined context: ' + name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n * Builds the final context from the context parameter and the context items in the api.\n * @param {Object} context The invocation context, this takes precedence over the local context.\n * @return {Object} The context to use.\n * @private\n */\n\n\t}, {\n\t\tkey: '_buildContext',\n\t\tvalue: function _buildContext(context) {\n\t\t\treturn (0, _assign2.default)(this.context, context);\n\t\t}\n\n\t\t/**\n * Login to Particle Cloud using an existing Particle acccount.\n * @param {Object} options Options for this API call\n * @param {String} options.username Username for the Particle account\n * @param {String} options.password Password for the Particle account\n * @param {Number} options.tokenDuration How long the access token should last in seconds\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'login',\n\t\tvalue: function login(_ref) {\n\t\t\tvar username = _ref.username,\n\t\t\t password = _ref.password,\n\t\t\t _ref$tokenDuration = _ref.tokenDuration,\n\t\t\t tokenDuration = _ref$tokenDuration === undefined ? this.tokenDuration : _ref$tokenDuration,\n\t\t\t context = _ref.context;\n\n\t\t\treturn this.request({ uri: '/oauth/token', form: {\n\t\t\t\t\tusername: username,\n\t\t\t\t\tpassword: password,\n\t\t\t\t\tgrant_type: 'password',\n\t\t\t\t\tclient_id: this.clientId,\n\t\t\t\t\tclient_secret: this.clientSecret,\n\t\t\t\t\texpires_in: tokenDuration\n\t\t\t\t}, method: 'post', context: context });\n\t\t}\n\n\t\t/**\n * Create a user account for the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {String} options.username Email of the new user\n * @param {String} options.password Password\n * @param {String} options.accountInfo Object that contains account information fields such as user real name, company name, business account flag etc\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createUser',\n\t\tvalue: function createUser(_ref2) {\n\t\t\tvar username = _ref2.username,\n\t\t\t password = _ref2.password,\n\t\t\t accountInfo = _ref2.accountInfo,\n\t\t\t context = _ref2.context;\n\n\t\t\treturn this.post('/v1/users', {\n\t\t\t\tusername: username,\n\t\t\t\tpassword: password,\n\t\t\t\taccount_info: accountInfo\n\t\t\t}, undefined, context);\n\t\t}\n\n\t\t/**\n * Verify new user account via verification email\n * @param {Object} options Options for this API call\n * @param {String} options.token the string token sent in the verification email\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'verifyUser',\n\t\tvalue: function verifyUser(_ref3) {\n\t\t\tvar token = _ref3.token,\n\t\t\t context = _ref3.context;\n\n\t\t\treturn this.post('/v1/user/verify', {\n\t\t\t\ttoken: token\n\t\t\t}, undefined, context);\n\t\t}\n\n\t\t/**\n * Send reset password email for a Particle Cloud user account\n * @param {Object} options Options for this API call\n * @param {String} options.username Email of the user\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'resetPassword',\n\t\tvalue: function resetPassword(_ref4) {\n\t\t\tvar username = _ref4.username,\n\t\t\t context = _ref4.context;\n\n\t\t\treturn this.post('/v1/user/password-reset', { username: username }, undefined, context);\n\t\t}\n\n\t\t/**\n * Revoke an access token\n * @param {Object} options Options for this API call\n * @param {String} options.username Username of the Particle cloud account that the token belongs to.\n * @param {String} options.password Password for the account\n * @param {String} options.token Access token you wish to revoke\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteAccessToken',\n\t\tvalue: function deleteAccessToken(_ref5) {\n\t\t\tvar username = _ref5.username,\n\t\t\t password = _ref5.password,\n\t\t\t token = _ref5.token,\n\t\t\t context = _ref5.context;\n\n\t\t\treturn this.delete('/v1/access_tokens/' + token, {\n\t\t\t\taccess_token: token\n\t\t\t}, { username: username, password: password }, context);\n\t\t}\n\n\t\t/**\n * Revoke the current session access token\n * @param {Object} options Options for this API call\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteCurrentAccessToken',\n\t\tvalue: function deleteCurrentAccessToken(_ref6) {\n\t\t\tvar auth = _ref6.auth,\n\t\t\t context = _ref6.context;\n\n\t\t\treturn this.delete('/v1/access_tokens/current', undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List all valid access tokens for a Particle Cloud account\n * @param {Object} options Options for this API call\n * @param {String} options.username Username\n * @param {String} options.password Password\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listAccessTokens',\n\t\tvalue: function listAccessTokens(_ref7) {\n\t\t\tvar username = _ref7.username,\n\t\t\t password = _ref7.password,\n\t\t\t context = _ref7.context;\n\n\t\t\treturn this.get('/v1/access_tokens', { username: username, password: password }, undefined, context);\n\t\t}\n\n\t\t/**\n * Retrieves the information that is used to identify the current login for tracking.\n * @param {Object} options Options for this API call\n * @param {String} options.auth The access token\n * @param {Boolean} options.full When true, retrieve all information for registering a user with the tracking API. When false,\n * retrieve only the unique tracking ID for the current login.\n * @param {Object} options.context Context information.\n * @returns {Promise} Resolve the tracking identify of the current login\n */\n\n\t}, {\n\t\tkey: 'trackingIdentity',\n\t\tvalue: function trackingIdentity() {\n\t\t\tvar _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n\t\t\t auth = _ref8.auth,\n\t\t\t _ref8$full = _ref8.full,\n\t\t\t full = _ref8$full === undefined ? false : _ref8$full,\n\t\t\t context = _ref8.context;\n\n\t\t\treturn this.get('/v1/user/identify', auth, full ? undefined : { tracking: 1 }, context);\n\t\t}\n\n\t\t/**\n * List devices claimed to the account or product\n * @param {Object} options Options for this API call\n * @param {String} [options.deviceId] (Product only) Filter results to devices with this ID (partial matching)\n * @param {String} [options.deviceName] (Product only) Filter results to devices with this name (partial matching)\n * @param {String} [options.sortAttr] (Product only) The attribute by which to sort results. See API docs for options.\n * @param {String} [options.sortDir] (Product only) The direction of sorting. See API docs for options.\n * @param {Number} [options.page] (Product only) Current page of results\n * @param {Number} [options.perPage] (Product only) Records per page\n * @param {String} [options.product] List devices in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listDevices',\n\t\tvalue: function listDevices(_ref9) {\n\t\t\tvar deviceId = _ref9.deviceId,\n\t\t\t deviceName = _ref9.deviceName,\n\t\t\t sortAttr = _ref9.sortAttr,\n\t\t\t sortDir = _ref9.sortDir,\n\t\t\t page = _ref9.page,\n\t\t\t perPage = _ref9.perPage,\n\t\t\t product = _ref9.product,\n\t\t\t auth = _ref9.auth,\n\t\t\t context = _ref9.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/devices' : '/v1/devices';\n\t\t\tvar query = product ? { deviceId: deviceId, deviceName: deviceName, sortAttr: sortAttr, sortDir: sortDir, page: page, per_page: perPage } : undefined;\n\t\t\treturn this.get(uri, auth, query, context);\n\t\t}\n\n\t\t/**\n * Get detailed informationa about a device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getDevice',\n\t\tvalue: function getDevice(_ref10) {\n\t\t\tvar deviceId = _ref10.deviceId,\n\t\t\t product = _ref10.product,\n\t\t\t auth = _ref10.auth,\n\t\t\t context = _ref10.context;\n\n\t\t\tvar uri = this.deviceUri({ deviceId: deviceId, product: product });\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Claim a device to the account. The device must be online and unclaimed.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'claimDevice',\n\t\tvalue: function claimDevice(_ref11) {\n\t\t\tvar deviceId = _ref11.deviceId,\n\t\t\t requestTransfer = _ref11.requestTransfer,\n\t\t\t auth = _ref11.auth,\n\t\t\t context = _ref11.context;\n\n\t\t\treturn this.post('/v1/devices', {\n\t\t\t\tid: deviceId,\n\t\t\t\trequest_transfer: !!requestTransfer\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Add a device to a product or move device out of quarantine.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID\n * @param {String} options.product Add to this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'addDeviceToProduct',\n\t\tvalue: function addDeviceToProduct(_ref12) {\n\t\t\tvar deviceId = _ref12.deviceId,\n\t\t\t product = _ref12.product,\n\t\t\t auth = _ref12.auth,\n\t\t\t context = _ref12.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/devices';\n\t\t\treturn this.post(uri, {\n\t\t\t\tid: deviceId\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Unclaim / Remove a device from your account or product, or deny quarantine\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Boolean} [options.deny] (Product only) Deny this quarantined device, instead of removing an already approved device\n * @param {String} options.product Remove from this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeDevice',\n\t\tvalue: function removeDevice(_ref13) {\n\t\t\tvar deviceId = _ref13.deviceId,\n\t\t\t deny = _ref13.deny,\n\t\t\t product = _ref13.product,\n\t\t\t auth = _ref13.auth,\n\t\t\t context = _ref13.context;\n\n\t\t\tvar uri = this.deviceUri({ deviceId: deviceId, product: product });\n\t\t\tvar data = product ? { deny: deny } : undefined;\n\t\t\treturn this.delete(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Unclaim a product device its the owner, but keep it in the product\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.product Remove from this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeDeviceOwner',\n\t\tvalue: function removeDeviceOwner(_ref14) {\n\t\t\tvar deviceId = _ref14.deviceId,\n\t\t\t deny = _ref14.deny,\n\t\t\t product = _ref14.product,\n\t\t\t auth = _ref14.auth,\n\t\t\t context = _ref14.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/devices/' + deviceId + '/owner';\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * Rename a device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.name Desired Name\n * @param {String} [options.product] Rename device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'renameDevice',\n\t\tvalue: function renameDevice(_ref15) {\n\t\t\tvar deviceId = _ref15.deviceId,\n\t\t\t name = _ref15.name,\n\t\t\t product = _ref15.product,\n\t\t\t auth = _ref15.auth,\n\t\t\t context = _ref15.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, name: name, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Instruct the device to turn on/off the LED in a rainbow pattern\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Boolean} options.signal Signal on or off\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'signalDevice',\n\t\tvalue: function signalDevice(_ref16) {\n\t\t\tvar deviceId = _ref16.deviceId,\n\t\t\t signal = _ref16.signal,\n\t\t\t product = _ref16.product,\n\t\t\t auth = _ref16.auth,\n\t\t\t context = _ref16.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, signal: signal, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Store some notes about device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @params {String} options.notes Your notes about this device\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'setDeviceNotes',\n\t\tvalue: function setDeviceNotes(_ref17) {\n\t\t\tvar deviceId = _ref17.deviceId,\n\t\t\t notes = _ref17.notes,\n\t\t\t product = _ref17.product,\n\t\t\t auth = _ref17.auth,\n\t\t\t context = _ref17.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, notes: notes, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Mark device as being used in development of a product so it opts out of automatic firmware updates\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Boolean} options.development Set to true to mark as development, false to return to product fleet\n * @param {String} options.product Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'markAsDevelopmentDevice',\n\t\tvalue: function markAsDevelopmentDevice(_ref18) {\n\t\t\tvar deviceId = _ref18.deviceId,\n\t\t\t _ref18$development = _ref18.development,\n\t\t\t development = _ref18$development === undefined ? true : _ref18$development,\n\t\t\t product = _ref18.product,\n\t\t\t auth = _ref18.auth,\n\t\t\t context = _ref18.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, development: development, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Mark device as being used in development of a product so it opts out of automatic firmware updates\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @params {Number} options.desiredFirmwareVersion Lock the product device to run this firmware version.\n * @params {Boolean} [options.flash] Immediately flash firmware indicated by desiredFirmwareVersion\n * @param {String} options.product Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'lockDeviceProductFirmware',\n\t\tvalue: function lockDeviceProductFirmware(_ref19) {\n\t\t\tvar deviceId = _ref19.deviceId,\n\t\t\t desiredFirmwareVersion = _ref19.desiredFirmwareVersion,\n\t\t\t flash = _ref19.flash,\n\t\t\t product = _ref19.product,\n\t\t\t auth = _ref19.auth,\n\t\t\t context = _ref19.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, desiredFirmwareVersion: desiredFirmwareVersion, flash: flash, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Mark device as receiving automatic firmware updates\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.product Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'unlockDeviceProductFirmware',\n\t\tvalue: function unlockDeviceProductFirmware(_ref20) {\n\t\t\tvar deviceId = _ref20.deviceId,\n\t\t\t product = _ref20.product,\n\t\t\t auth = _ref20.auth,\n\t\t\t context = _ref20.context;\n\n\t\t\treturn this.updateDevice({ deviceId: deviceId, desiredFirmwareVersion: null, product: product, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Update multiple device attributes at the same time\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} [options.name] Desired Name\n * @param {Boolean} options.signal Signal device on or off\n * @params {String} [options.notes] Your notes about this device\n * @param {Boolean} [options.development] (Product only) Set to true to mark as development, false to return to product fleet\n * @params {Number} [options.desiredFirmwareVersion] (Product only) Lock the product device to run this firmware version.\n * Pass `null` to unlock firmware and go back to released firmware.\n * @params {Boolean} [options.flash] (Product only) Immediately flash firmware indicated by desiredFirmwareVersion\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateDevice',\n\t\tvalue: function updateDevice(_ref21) {\n\t\t\tvar deviceId = _ref21.deviceId,\n\t\t\t name = _ref21.name,\n\t\t\t signal = _ref21.signal,\n\t\t\t notes = _ref21.notes,\n\t\t\t development = _ref21.development,\n\t\t\t desiredFirmwareVersion = _ref21.desiredFirmwareVersion,\n\t\t\t flash = _ref21.flash,\n\t\t\t product = _ref21.product,\n\t\t\t auth = _ref21.auth,\n\t\t\t context = _ref21.context;\n\n\t\t\tsignal = signal ? '1' : '0';\n\t\t\tvar uri = this.deviceUri({ deviceId: deviceId, product: product });\n\t\t\tvar data = product ? { name: name, signal: signal, notes: notes, development: development, desired_firmware_version: desiredFirmwareVersion, flash: flash } : { name: name, signal: signal, notes: notes };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Provision a new device for products that allow self-provisioning\n * @param {Object} options Options for this API call\n * @param {String} options.productId Product ID where to create this device\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'provisionDevice',\n\t\tvalue: function provisionDevice(_ref22) {\n\t\t\tvar productId = _ref22.productId,\n\t\t\t auth = _ref22.auth,\n\t\t\t context = _ref22.context;\n\n\t\t\treturn this.post('/v1/devices', { product_id: productId }, auth, context);\n\t\t}\n\n\t\t/**\n * Generate a claim code to use in the device claiming process.\n * To generate a claim code for a product, the access token MUST belong to a\n * customer of the product.\n * @param {Object} options Options for this API call\n * @param {String} [options.iccid] ICCID of the SIM card used in the Electron\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getClaimCode',\n\t\tvalue: function getClaimCode(_ref23) {\n\t\t\tvar iccid = _ref23.iccid,\n\t\t\t product = _ref23.product,\n\t\t\t auth = _ref23.auth,\n\t\t\t context = _ref23.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/device_claims' : '/v1/device_claims';\n\t\t\treturn this.post(uri, { iccid: iccid }, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'validatePromoCode',\n\t\tvalue: function validatePromoCode(_ref24) {\n\t\t\tvar auth = _ref24.auth,\n\t\t\t promoCode = _ref24.promoCode,\n\t\t\t context = _ref24.context;\n\n\t\t\treturn this.get('/v1/promo_code/' + promoCode, auth, undefined, context);\n\t\t}\n\t}, {\n\t\tkey: 'changeProduct',\n\t\tvalue: function changeProduct(_ref25) {\n\t\t\tvar deviceId = _ref25.deviceId,\n\t\t\t productId = _ref25.productId,\n\t\t\t auth = _ref25.auth,\n\t\t\t context = _ref25.context;\n\n\t\t\treturn this.put('/v1/devices/' + deviceId, {\n\t\t\t\tproduct_id: productId\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Get the value of a device variable\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.name Variable name\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getVariable',\n\t\tvalue: function getVariable(_ref26) {\n\t\t\tvar deviceId = _ref26.deviceId,\n\t\t\t name = _ref26.name,\n\t\t\t product = _ref26.product,\n\t\t\t auth = _ref26.auth,\n\t\t\t context = _ref26.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/devices/' + deviceId + '/' + name : '/v1/devices/' + deviceId + '/' + name;\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Compile and flash application firmware to a device. Pass a pre-compiled binary to flash it directly to the device.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {Object} options.files Object containing files to be compiled and flashed. Keys should be the filenames, and the values should be a path or Buffer of the file contents.\n * @param {String} [options.targetVersion=latest] System firmware version to compile against\n * @param {String} options.auth String\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'flashDevice',\n\t\tvalue: function flashDevice(_ref27) {\n\t\t\tvar deviceId = _ref27.deviceId,\n\t\t\t files = _ref27.files,\n\t\t\t targetVersion = _ref27.targetVersion,\n\t\t\t auth = _ref27.auth,\n\t\t\t context = _ref27.context;\n\n\t\t\tvar form = {};\n\t\t\tif (targetVersion) {\n\t\t\t\tform.build_target_version = targetVersion;\n\t\t\t} else {\n\t\t\t\tform.latest = 'true';\n\t\t\t}\n\t\t\treturn this.request({ uri: '/v1/devices/' + deviceId,\n\t\t\t\tfiles: files, auth: auth, form: form, context: context, method: 'put' });\n\t\t}\n\n\t\t/**\n * DEPRECATED: Flash the Tinker application to a device. Instead compile and flash the Tinker source code.\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'flashTinker',\n\t\tvalue: function flashTinker(_ref28) {\n\t\t\tvar deviceId = _ref28.deviceId,\n\t\t\t auth = _ref28.auth,\n\t\t\t context = _ref28.context;\n\n\t\t\t/* eslint-disable no-console */\n\t\t\tif (console && console.warning) {\n\t\t\t\tconsole.warning('Particle.flashTinker is deprecated');\n\t\t\t}\n\t\t\t/* eslint-enable no-console */\n\t\t\treturn this.put('/v1/devices/' + deviceId, {\n\t\t\t\tapp: 'tinker'\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Compile firmware using the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {Object} options.files Object containing files to be compiled. Keys should be the filenames, and the values should be a path or Buffer of the file contents.\n * @param {Number} [options.platformId] Platform id number of the device you are compiling for. Common values are 0=Core, 6=Photon, 10=Electron.\n * @param {String} [options.targetVersion=latest] System firmware version to compile against\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'compileCode',\n\t\tvalue: function compileCode(_ref29) {\n\t\t\tvar files = _ref29.files,\n\t\t\t platformId = _ref29.platformId,\n\t\t\t targetVersion = _ref29.targetVersion,\n\t\t\t auth = _ref29.auth,\n\t\t\t context = _ref29.context;\n\n\t\t\tvar form = { platform_id: platformId };\n\t\t\tif (targetVersion) {\n\t\t\t\tform.build_target_version = targetVersion;\n\t\t\t} else {\n\t\t\t\tform.latest = 'true';\n\t\t\t}\n\t\t\treturn this.request({ uri: '/v1/binaries',\n\t\t\t\tfiles: files, auth: auth, form: form, context: context, method: 'post' });\n\t\t}\n\n\t\t/**\n * Download a firmware binary\n * @param {Object} options Options for this API call\n * @param {String} options.binaryId Binary ID received from a successful compile call\n * @param {String} options.auth Access Token\n * @return {Request}\n */\n\n\t}, {\n\t\tkey: 'downloadFirmwareBinary',\n\t\tvalue: function downloadFirmwareBinary(_ref30) {\n\t\t\tvar binaryId = _ref30.binaryId,\n\t\t\t auth = _ref30.auth,\n\t\t\t context = _ref30.context;\n\n\t\t\tvar uri = '/v1/binaries/' + binaryId;\n\t\t\tvar req = (0, _superagent2.default)('get', uri);\n\t\t\treq.use(this.prefix);\n\t\t\tthis.headers(req, auth);\n\t\t\tif (this.debug) {\n\t\t\t\tthis.debug(req);\n\t\t\t}\n\t\t\treturn req;\n\t\t}\n\n\t\t/**\n * Send a new device public key to the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {(String|Buffer)} options.key Public key contents\n * @param {String} [options.algorithm=rsa] Algorithm used to generate the public key. Valid values are `rsa` or `ecc`.\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'sendPublicKey',\n\t\tvalue: function sendPublicKey(_ref31) {\n\t\t\tvar deviceId = _ref31.deviceId,\n\t\t\t key = _ref31.key,\n\t\t\t algorithm = _ref31.algorithm,\n\t\t\t auth = _ref31.auth,\n\t\t\t context = _ref31.context;\n\n\t\t\treturn this.post('/v1/provisioning/' + deviceId, {\n\t\t\t\tdeviceID: deviceId,\n\t\t\t\tpublicKey: typeof key === 'string' ? key : key.toString(),\n\t\t\t\tfilename: 'particle-api',\n\t\t\t\torder: 'manual_' + Date.now(),\n\t\t\t\talgorithm: algorithm || 'rsa'\n\t\t\t}, auth, context);\n\t\t}\n\n\t\t/**\n * Call a device function\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID or Name\n * @param {String} options.name Function name\n * @param {String} options.argument Function argument\n * @param {String} [options.product] Device in this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'callFunction',\n\t\tvalue: function callFunction(_ref32) {\n\t\t\tvar deviceId = _ref32.deviceId,\n\t\t\t name = _ref32.name,\n\t\t\t argument = _ref32.argument,\n\t\t\t product = _ref32.product,\n\t\t\t auth = _ref32.auth,\n\t\t\t context = _ref32.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/devices/' + deviceId + '/' + name : '/v1/devices/' + deviceId + '/' + name;\n\t\t\treturn this.post(uri, { args: argument }, auth, context);\n\t\t}\n\n\t\t/**\n * Get a stream of events\n * @param {Object} options Options for this API call\n * @param {String} [options.deviceId] Device ID or Name, or `mine` to indicate only your devices.\n * @param {String} [options.name] Event Name\n * @param {String} [options.org] Organization Slug\n * @param {String} [options.product] Events for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise} If the promise resolves, the resolution value will be an EventStream object that will\n * emit 'event' events, as well as the specific named event.\n */\n\n\t}, {\n\t\tkey: 'getEventStream',\n\t\tvalue: function getEventStream(_ref33) {\n\t\t\tvar deviceId = _ref33.deviceId,\n\t\t\t name = _ref33.name,\n\t\t\t org = _ref33.org,\n\t\t\t product = _ref33.product,\n\t\t\t auth = _ref33.auth,\n\t\t\t context = _ref33.context;\n\n\t\t\tvar uri = '/v1/';\n\t\t\tif (org) {\n\t\t\t\turi += 'orgs/' + org + '/';\n\t\t\t}\n\n\t\t\tif (product) {\n\t\t\t\turi += 'products/' + product + '/';\n\t\t\t}\n\n\t\t\tif (deviceId) {\n\t\t\t\turi += 'devices/';\n\t\t\t\tif (!(deviceId.toLowerCase() === 'mine')) {\n\t\t\t\t\turi += deviceId + '/';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\turi += 'events';\n\n\t\t\tif (name) {\n\t\t\t\turi += '/' + encodeURIComponent(name);\n\t\t\t}\n\n\t\t\treturn new _EventStream2.default('' + this.baseUrl + uri, auth, { debug: this.debug }).connect();\n\t\t}\n\n\t\t/**\n * Publish a event to the Particle Cloud\n * @param {Object} options Options for this API call\n * @param {String} options.name Event name\n * @param {String} options.data Event data\n * @param {Boolean} options.isPrivate Should the event be publicly available?\n * @param {String} [options.product] Event for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'publishEvent',\n\t\tvalue: function publishEvent(_ref34) {\n\t\t\tvar name = _ref34.name,\n\t\t\t data = _ref34.data,\n\t\t\t isPrivate = _ref34.isPrivate,\n\t\t\t product = _ref34.product,\n\t\t\t auth = _ref34.auth,\n\t\t\t context = _ref34.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/events' : '/v1/devices/events';\n\t\t\tvar postData = { name: name, data: data, private: isPrivate };\n\t\t\treturn this.post(uri, postData, auth, context);\n\t\t}\n\n\t\t/**\n * Create a webhook\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Trigger webhook only for this device ID or Name\n * @param {String} options.name Webhook name\n * @param {String} options.url URL the webhook should hit\n * @param {String} [options.requestType=POST] HTTP method to use\n * @param {Object} [options.headers] Additional headers to add to the webhook\n * @param {Object} [options.json] JSON data\n * @param {Object} [options.query] Query string data\n * @param {String} [options.body] Custom webhook request body\n * @param {Object} [options.responseTemplate] Webhook response template\n * @param {Object} [options.responseTopic] Webhook response topic\n * @param {Boolean} [options.rejectUnauthorized] Reject invalid HTTPS certificates\n * @params {Boolean} [options.noDefaults] Don't include default event data in the webhook request\n * @param {Object} [options.webhookAuth] HTTP Basic Auth information\n * @param {Object} [options.form] Form data\n * @param {String} [options.product] Webhook for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createWebhook',\n\t\tvalue: function createWebhook(_ref35) {\n\t\t\tvar deviceId = _ref35.deviceId,\n\t\t\t name = _ref35.name,\n\t\t\t url = _ref35.url,\n\t\t\t requestType = _ref35.requestType,\n\t\t\t headers = _ref35.headers,\n\t\t\t json = _ref35.json,\n\t\t\t query = _ref35.query,\n\t\t\t body = _ref35.body,\n\t\t\t responseTemplate = _ref35.responseTemplate,\n\t\t\t responseTopic = _ref35.responseTopic,\n\t\t\t rejectUnauthorized = _ref35.rejectUnauthorized,\n\t\t\t webhookAuth = _ref35.webhookAuth,\n\t\t\t noDefaults = _ref35.noDefaults,\n\t\t\t form = _ref35.form,\n\t\t\t product = _ref35.product,\n\t\t\t auth = _ref35.auth,\n\t\t\t context = _ref35.context;\n\n\t\t\t// deviceId: 'mine' is deprecated since webhooks only trigger on your device anyways\n\t\t\tif (deviceId === 'mine') {\n\t\t\t\tdeviceId = undefined;\n\t\t\t}\n\t\t\tvar uri = product ? '/v1/products/' + product + '/webhooks' : '/v1/webhooks';\n\t\t\tvar data = { event: name, deviceid: deviceId, url: url, requestType: requestType, headers: headers, json: json, query: query, body: body, responseTemplate: responseTemplate, responseTopic: responseTopic, rejectUnauthorized: rejectUnauthorized, auth: webhookAuth, noDefaults: noDefaults, form: form };\n\t\t\treturn this.post(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Delete a webhook\n * @param {Object} options Options for this API call\n * @param {String} options.hookId Webhook ID\n * @param {String} [options.product] Webhook for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteWebhook',\n\t\tvalue: function deleteWebhook(_ref36) {\n\t\t\tvar hookId = _ref36.hookId,\n\t\t\t product = _ref36.product,\n\t\t\t auth = _ref36.auth,\n\t\t\t context = _ref36.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/webhooks/' + hookId : '/v1/webhooks/' + hookId;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List all webhooks owned by the account or product\n * @param {Object} options Options for this API call\n * @param {String} [options.product] Webhooks for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listWebhooks',\n\t\tvalue: function listWebhooks(_ref37) {\n\t\t\tvar product = _ref37.product,\n\t\t\t auth = _ref37.auth,\n\t\t\t context = _ref37.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/webhooks' : '/v1/webhooks';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Create an integration to send events to an external service\n *\n * See the API docs for details https://docs.particle.io/reference/api/#integrations-webhooks-\n *\n * @param {Object} options Options for this API call\n * @param {String} options.integrationType The kind of external integration. One of Webhook, AzureIotHub, GoogleCloudPubSub, GoogleMaps\n * @param {String} options.event Event that triggers the integration\n * @params {Object} options.settings Settings specific to that integration type\n * @param {String} [options.deviceId] Trigger integration only for this device ID or Name\n * @param {String} [options.product] Integration for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createIntegration',\n\t\tvalue: function createIntegration(_ref38) {\n\t\t\tvar integrationType = _ref38.integrationType,\n\t\t\t event = _ref38.event,\n\t\t\t settings = _ref38.settings,\n\t\t\t deviceId = _ref38.deviceId,\n\t\t\t product = _ref38.product,\n\t\t\t auth = _ref38.auth,\n\t\t\t context = _ref38.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations' : '/v1/integrations';\n\t\t\tvar data = (0, _assign2.default)({ event: event, deviceid: deviceId }, settings);\n\t\t\treturn this.post(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Edit an integration to send events to an external service\n *\n * See the API docs for details https://docs.particle.io/reference/api/#integrations-webhooks-\n *\n * @param {Object} options Options for this API call\n * @param {String} options.integrationId The integration to edit\n * @param {String} [options.event] Change the event that triggers the integration\n * @params {Object} [options.settings] Change the settings specific to that integration type\n * @param {String} [options.deviceId] Trigger integration only for this device ID or Name\n * @param {String} [options.product] Integration for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'editIntegration',\n\t\tvalue: function editIntegration(_ref39) {\n\t\t\tvar integrationId = _ref39.integrationId,\n\t\t\t event = _ref39.event,\n\t\t\t settings = _ref39.settings,\n\t\t\t deviceId = _ref39.deviceId,\n\t\t\t product = _ref39.product,\n\t\t\t auth = _ref39.auth,\n\t\t\t context = _ref39.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations/' + integrationId : '/v1/integrations/' + integrationId;\n\t\t\tvar data = (0, _assign2.default)({ event: event, deviceid: deviceId }, settings);\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Delete an integration to send events to an external service\n *\n * @param {Object} options Options for this API call\n * @param {String} options.integrationId The integration to remove\n * @param {String} [options.product] Integration for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteIntegration',\n\t\tvalue: function deleteIntegration(_ref40) {\n\t\t\tvar integrationId = _ref40.integrationId,\n\t\t\t product = _ref40.product,\n\t\t\t auth = _ref40.auth,\n\t\t\t context = _ref40.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations/' + integrationId : '/v1/integrations/' + integrationId;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List all integrations owned by the account or product\n * @param {Object} options Options for this API call\n * @param {String} [options.product] Integrations for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listIntegrations',\n\t\tvalue: function listIntegrations(_ref41) {\n\t\t\tvar product = _ref41.product,\n\t\t\t auth = _ref41.auth,\n\t\t\t context = _ref41.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/integrations' : '/v1/integrations';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Get details about the current user\n * @param {Object} options Options for this API call\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getUserInfo',\n\t\tvalue: function getUserInfo(_ref42) {\n\t\t\tvar auth = _ref42.auth,\n\t\t\t context = _ref42.context;\n\n\t\t\treturn this.get('/v1/user', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Set details on the current user\n * @param {Object} options Options for this API call\n * @param {String} options.auth Access Token\n * @param {String} options.stripeToken Set user's stripe token for payment\n * @param {String} options.accountInfo Set user's extended info fields (name, business account, company name, etc)\n * @param {String} options.password Change authenticated user password\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'setUserInfo',\n\t\tvalue: function setUserInfo(_ref43) {\n\t\t\tvar stripeToken = _ref43.stripeToken,\n\t\t\t accountInfo = _ref43.accountInfo,\n\t\t\t password = _ref43.password,\n\t\t\t auth = _ref43.auth,\n\t\t\t context = _ref43.context;\n\n\t\t\tvar bodyObj = {};\n\n\t\t\tstripeToken ? bodyObj.stripe_token = stripeToken : null;\n\t\t\taccountInfo ? bodyObj.account_info = accountInfo : null;\n\t\t\tpassword ? bodyObj.password = password : null;\n\n\t\t\treturn this.put('/v1/user', bodyObj, auth, context);\n\t\t}\n\n\t\t/**\n * List SIM cards owned by a user or product\n * @param {Object} options Options for this API call\n * @param {String} [options.iccid] (Product only) Filter to SIM cards matching this ICCID\n * @param {String} [options.deviceId] (Product only) Filter to SIM cards matching this device ID\n * @param {String} [options.deviceName] (Product only) Filter to SIM cards matching this device name\n * @param {Number} [options.page] (Product only) Current page of results\n * @param {Number} [options.perPage] (Product only) Records per page\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listSIMs',\n\t\tvalue: function listSIMs(_ref44) {\n\t\t\tvar iccid = _ref44.iccid,\n\t\t\t deviceId = _ref44.deviceId,\n\t\t\t deviceName = _ref44.deviceName,\n\t\t\t page = _ref44.page,\n\t\t\t perPage = _ref44.perPage,\n\t\t\t product = _ref44.product,\n\t\t\t auth = _ref44.auth,\n\t\t\t context = _ref44.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims' : '/v1/sims';\n\t\t\tvar query = product ? { iccid: iccid, deviceId: deviceId, deviceName: deviceName, page: page, per_page: perPage } : undefined;\n\t\t\treturn this.get(uri, auth, query, context);\n\t\t}\n\n\t\t/**\n * Get data usage for one SIM card for the current billing period\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {String} [options.product] SIM card for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getSIMDataUsage',\n\t\tvalue: function getSIMDataUsage(_ref45) {\n\t\t\tvar iccid = _ref45.iccid,\n\t\t\t product = _ref45.product,\n\t\t\t auth = _ref45.auth,\n\t\t\t context = _ref45.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid + '/data_usage' : '/v1/sims/' + iccid + '/data_usage';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Get data usage for all SIM cards in a product the current billing period\n * @param {Object} options Options for this API call\n * @param {String} options.product SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getFleetDataUsage',\n\t\tvalue: function getFleetDataUsage(_ref46) {\n\t\t\tvar product = _ref46.product,\n\t\t\t auth = _ref46.auth,\n\t\t\t context = _ref46.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/sims/data_usage', auth, undefined, context);\n\t\t}\n\t}, {\n\t\tkey: 'checkSIM',\n\t\tvalue: function checkSIM(_ref47) {\n\t\t\tvar iccid = _ref47.iccid,\n\t\t\t auth = _ref47.auth,\n\t\t\t context = _ref47.context;\n\n\t\t\treturn this.head('/v1/sims/' + iccid, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Activate and add SIM cards to an account or product\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {Array} options.iccids (Product only) ICCID of multiple SIM cards to import\n * @param {String} options.countryCode The ISO country code for the SIM cards\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'activateSIM',\n\t\tvalue: function activateSIM(_ref48) {\n\t\t\tvar iccid = _ref48.iccid,\n\t\t\t iccids = _ref48.iccids,\n\t\t\t countryCode = _ref48.countryCode,\n\t\t\t promoCode = _ref48.promoCode,\n\t\t\t product = _ref48.product,\n\t\t\t auth = _ref48.auth,\n\t\t\t context = _ref48.context;\n\n\t\t\t// promoCode is deprecated\n\t\t\ticcids = iccids || [iccid];\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims' : '/v1/sims/' + iccid;\n\t\t\tvar data = product ? { sims: iccids, countryCode: countryCode } : { countryCode: countryCode, promoCode: promoCode, action: 'activate' };\n\t\t\tvar method = product ? 'post' : 'put';\n\n\t\t\treturn this.request({ uri: uri, method: method, data: data, auth: auth, context: context });\n\t\t}\n\n\t\t/**\n * Deactivate a SIM card so it doesn't incur data usage in future months.\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deactivateSIM',\n\t\tvalue: function deactivateSIM(_ref49) {\n\t\t\tvar iccid = _ref49.iccid,\n\t\t\t product = _ref49.product,\n\t\t\t auth = _ref49.auth,\n\t\t\t context = _ref49.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\tvar data = { action: 'deactivate' };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Reactivate a SIM card the was deactivated or unpause a SIM card that was automatically paused\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {Number} [options.mbLimit] New monthly data limit. Necessary if unpausing a SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'reactivateSIM',\n\t\tvalue: function reactivateSIM(_ref50) {\n\t\t\tvar iccid = _ref50.iccid,\n\t\t\t mbLimit = _ref50.mbLimit,\n\t\t\t product = _ref50.product,\n\t\t\t auth = _ref50.auth,\n\t\t\t context = _ref50.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\tvar data = { mb_limit: mbLimit, action: 'reactivate' };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Update SIM card data limit\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {Array} options.mbLimit Data limit in megabyte for the SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateSIM',\n\t\tvalue: function updateSIM(_ref51) {\n\t\t\tvar iccid = _ref51.iccid,\n\t\t\t mbLimit = _ref51.mbLimit,\n\t\t\t product = _ref51.product,\n\t\t\t auth = _ref51.auth,\n\t\t\t context = _ref51.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\tvar data = { mb_limit: mbLimit };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Remove a SIM card from an account so it can be activated by a different account\n * @param {Object} options Options for this API call\n * @param {String} options.iccid ICCID of the SIM card\n * @param {String} [options.product] SIM cards for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeSIM',\n\t\tvalue: function removeSIM(_ref52) {\n\t\t\tvar iccid = _ref52.iccid,\n\t\t\t product = _ref52.product,\n\t\t\t auth = _ref52.auth,\n\t\t\t context = _ref52.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/sims/' + iccid : '/v1/sims/' + iccid;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List valid build targets to be used for compiling\n * @param {Object} options Options for this API call\n * @param {Boolean} [options.onlyFeatured=false] Only list featured build targets\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listBuildTargets',\n\t\tvalue: function listBuildTargets(_ref53) {\n\t\t\tvar onlyFeatured = _ref53.onlyFeatured,\n\t\t\t auth = _ref53.auth,\n\t\t\t context = _ref53.context;\n\n\t\t\tvar query = void 0;\n\t\t\tif (onlyFeatured !== undefined) {\n\t\t\t\tquery = { featured: !!onlyFeatured };\n\t\t\t}\n\t\t\treturn this.get('/v1/build_targets', auth, query, context);\n\t\t}\n\n\t\t/**\n * List firmware libraries\n * @param {Object} options Options for this API call\n * @param {Number} options.page Page index (default, first page)\n * @param {Number} options.limit Number of items per page\n * @param {String} options.filter Search term for the libraries\n * @param {String} options.sort Ordering key for the library list\n * @param {Array} options.architectures List of architectures to filter\n * @param {String} options.category Category to filter\n * @param {String} options.scope The library scope to list. Default is 'all'. Other values are\n * - 'all' - list public libraries and my private libraries\n * - 'public' - list only public libraries\n * - 'private' - list only my private libraries\n * - 'mine' - list my libraries (public and private)\n * - 'official' - list only official libraries\n * - 'verified' - list only verified libraries\n * - 'featured' - list only featured libraries\n * @param {String} options.excludeScopes list of scopes to exclude\n * @param {String} options.category Category to filter\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listLibraries',\n\t\tvalue: function listLibraries(_ref54) {\n\t\t\tvar page = _ref54.page,\n\t\t\t limit = _ref54.limit,\n\t\t\t filter = _ref54.filter,\n\t\t\t sort = _ref54.sort,\n\t\t\t architectures = _ref54.architectures,\n\t\t\t category = _ref54.category,\n\t\t\t scope = _ref54.scope,\n\t\t\t excludeScopes = _ref54.excludeScopes,\n\t\t\t auth = _ref54.auth,\n\t\t\t context = _ref54.context;\n\n\t\t\treturn this.get('/v1/libraries', auth, {\n\t\t\t\tpage: page,\n\t\t\t\tfilter: filter,\n\t\t\t\tlimit: limit,\n\t\t\t\tsort: sort,\n\t\t\t\tarchitectures: this._asList(architectures),\n\t\t\t\tcategory: category,\n\t\t\t\tscope: scope,\n\t\t\t\texcludeScopes: this._asList(excludeScopes)\n\t\t\t}, context);\n\t\t}\n\t}, {\n\t\tkey: '_asList',\n\t\tvalue: function _asList(value) {\n\t\t\treturn Array.isArray(value) ? value.join(',') : value;\n\t\t}\n\n\t\t/**\n * Get firmware library details\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to fetch\n * @param {String} options.version Version of the library to fetch (default: latest)\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getLibrary',\n\t\tvalue: function getLibrary(_ref55) {\n\t\t\tvar name = _ref55.name,\n\t\t\t version = _ref55.version,\n\t\t\t auth = _ref55.auth,\n\t\t\t context = _ref55.context;\n\n\t\t\treturn this.get('/v1/libraries/' + name, auth, { version: version }, context);\n\t\t}\n\n\t\t/**\n * Firmware library details for each version\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to fetch\n * @param {Number} options.page Page index (default, first page)\n * @param {Number} options.limit Number of items per page\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getLibraryVersions',\n\t\tvalue: function getLibraryVersions(_ref56) {\n\t\t\tvar name = _ref56.name,\n\t\t\t page = _ref56.page,\n\t\t\t limit = _ref56.limit,\n\t\t\t auth = _ref56.auth,\n\t\t\t context = _ref56.context;\n\n\t\t\treturn this.get('/v1/libraries/' + name + '/versions', auth, {\n\t\t\t\tpage: page,\n\t\t\t\tlimit: limit\n\t\t\t}, context);\n\t\t}\n\n\t\t/**\n * Contribute a new library version from a compressed archive\n * @param {Object} options Options for this API call\n * @param {String} options.archive Compressed archive file containing the library sources\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'contributeLibrary',\n\t\tvalue: function contributeLibrary(_ref57) {\n\t\t\tvar archive = _ref57.archive,\n\t\t\t auth = _ref57.auth,\n\t\t\t context = _ref57.context;\n\n\t\t\tvar files = {\n\t\t\t\t'archive.tar.gz': archive\n\t\t\t};\n\n\t\t\treturn this.request({ uri: '/v1/libraries',\n\t\t\t\tfiles: files, auth: auth, context: context, method: 'post' });\n\t\t}\n\n\t\t/**\n * Publish the latest version of a library to the public\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to publish\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'publishLibrary',\n\t\tvalue: function publishLibrary(_ref58) {\n\t\t\tvar name = _ref58.name,\n\t\t\t auth = _ref58.auth,\n\t\t\t context = _ref58.context;\n\n\t\t\treturn this.request({ uri: '/v1/libraries/' + name,\n\t\t\t\tauth: auth, context: context, method: 'patch', data: { visibility: 'public' } });\n\t\t}\n\n\t\t/**\n * Delete one version of a library or an entire private library\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the library to remove\n * @param {String} options.force Key to force deleting a public library\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteLibrary',\n\t\tvalue: function deleteLibrary(_ref59) {\n\t\t\tvar name = _ref59.name,\n\t\t\t force = _ref59.force,\n\t\t\t auth = _ref59.auth,\n\t\t\t context = _ref59.context;\n\n\t\t\treturn this.delete('/v1/libraries/' + name, { force: force }, auth, context);\n\t\t}\n\n\t\t/**\n * Download an external file that may not be on the API\n * @param {Object} options Options for this API call\n * @param {String} options.url URL of the file.\n * @return {Promise} Resolves to a buffer with the file data\n */\n\n\t}, {\n\t\tkey: 'downloadFile',\n\t\tvalue: function downloadFile(_ref60) {\n\t\t\tvar url = _ref60.url;\n\n\t\t\tvar req = _superagent2.default.get(url);\n\t\t\tif (req.buffer) {\n\t\t\t\treq = req.buffer(true).parse(_superagentBinaryParser2.default);\n\t\t\t} else if (req.responseType) {\n\t\t\t\treq = req.responseType('arraybuffer').then(function (res) {\n\t\t\t\t\tres.body = res.xhr.response;\n\t\t\t\t\treturn res;\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn req.then(function (res) {\n\t\t\t\treturn res.body;\n\t\t\t});\n\t\t}\n\n\t\t/**\n * List OAuth client created by the account\n * @param {Object} options Options for this API call\n * @param {String} [options.product] List clients for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listOAuthClients',\n\t\tvalue: function listOAuthClients(_ref61) {\n\t\t\tvar product = _ref61.product,\n\t\t\t auth = _ref61.auth,\n\t\t\t context = _ref61.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients' : '/v1/clients';\n\t\t\treturn this.get(uri, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Create an OAuth client\n * @param {Object} options Options for this API call\n * @param {String} options.name Name of the OAuth client\n * @param {String} options.type web, installed or web\n * @param {String} [options.redirect_uri] URL to redirect after OAuth flow. Only for type web.\n * @param {Object} [options.scope] Limits what the access tokens created by this client can do.\n * @param {String} [options.product] Create client for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'createOAuthClient',\n\t\tvalue: function createOAuthClient(_ref62) {\n\t\t\tvar name = _ref62.name,\n\t\t\t type = _ref62.type,\n\t\t\t redirect_uri = _ref62.redirect_uri,\n\t\t\t scope = _ref62.scope,\n\t\t\t product = _ref62.product,\n\t\t\t auth = _ref62.auth,\n\t\t\t context = _ref62.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients' : '/v1/clients';\n\t\t\tvar data = { name: name, type: type, redirect_uri: redirect_uri, scope: scope };\n\t\t\treturn this.post(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Update an OAuth client\n * @param {Object} options Options for this API call\n * @param {String} options.clientId The OAuth client to update\n * @param {String} [options.name] New Name of the OAuth client\n * @param {Object} [options.scope] New scope of the OAuth client\n * @param {String} [options.product] Update client linked to this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateOAuthClient',\n\t\tvalue: function updateOAuthClient(_ref63) {\n\t\t\tvar clientId = _ref63.clientId,\n\t\t\t name = _ref63.name,\n\t\t\t scope = _ref63.scope,\n\t\t\t product = _ref63.product,\n\t\t\t auth = _ref63.auth,\n\t\t\t context = _ref63.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients/' + clientId : '/v1/clients/' + clientId;\n\t\t\tvar data = { name: name, scope: scope };\n\t\t\treturn this.put(uri, data, auth, context);\n\t\t}\n\n\t\t/**\n * Delete an OAuth client\n * @param {Object} options Options for this API call\n * @param {String} options.clientId The OAuth client to update\n * @param {String} [options.product] OAuth client linked to this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'deleteOAuthClient',\n\t\tvalue: function deleteOAuthClient(_ref64) {\n\t\t\tvar clientId = _ref64.clientId,\n\t\t\t product = _ref64.product,\n\t\t\t auth = _ref64.auth,\n\t\t\t context = _ref64.context;\n\n\t\t\tvar uri = product ? '/v1/products/' + product + '/clients/' + clientId : '/v1/clients/' + clientId;\n\t\t\treturn this.delete(uri, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * List products the account has access to\n * @param {Object} options Options for this API call\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listProducts',\n\t\tvalue: function listProducts(_ref65) {\n\t\t\tvar auth = _ref65.auth,\n\t\t\t context = _ref65.context;\n\n\t\t\treturn this.get('/v1/products', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Get detailed information about a product\n * @param {Object} options Options for this API call\n * @param {String} options.product Product ID or slug\n * @param {String} options.auth Access token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getProduct',\n\t\tvalue: function getProduct(_ref66) {\n\t\t\tvar product = _ref66.product,\n\t\t\t auth = _ref66.auth,\n\t\t\t context = _ref66.context;\n\n\t\t\treturn this.get('/v1/products/' + product, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * List product firmware versions\n * @param {Object} options Options for this API call\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listProductFirmware',\n\t\tvalue: function listProductFirmware(_ref67) {\n\t\t\tvar product = _ref67.product,\n\t\t\t auth = _ref67.auth,\n\t\t\t context = _ref67.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/firmware', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * List product firmware versions\n * @param {Object} options Options for this API call\n * @param {Object} options.file Path or Buffer of the new firmware file\n * @param {Number} options.version Version number of new firmware\n * @param {String} options.title Short identifier for the new firmware\n * @param {String} [options.description] Longer description for the new firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'uploadProductFirmware',\n\t\tvalue: function uploadProductFirmware(_ref68) {\n\t\t\tvar file = _ref68.file,\n\t\t\t version = _ref68.version,\n\t\t\t title = _ref68.title,\n\t\t\t description = _ref68.description,\n\t\t\t product = _ref68.product,\n\t\t\t auth = _ref68.auth,\n\t\t\t context = _ref68.context;\n\n\t\t\treturn this.request({\n\t\t\t\turi: '/v1/products/' + product + '/firmware',\n\t\t\t\tmethod: 'post',\n\t\t\t\tfiles: {\n\t\t\t\t\t'firmware.bin': file\n\t\t\t\t},\n\t\t\t\tform: {\n\t\t\t\t\tversion: version,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\tdescription: description\n\t\t\t\t},\n\t\t\t\tcontext: context,\n\t\t\t\tauth: auth\n\t\t\t});\n\t\t}\n\n\t\t/**\n * Get information about a product firmware version\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'getProductFirmware',\n\t\tvalue: function getProductFirmware(_ref69) {\n\t\t\tvar version = _ref69.version,\n\t\t\t product = _ref69.product,\n\t\t\t auth = _ref69.auth,\n\t\t\t context = _ref69.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/firmware/' + version, auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Update information for a product firmware version\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of new firmware\n * @param {String} [options.title] New title\n * @param {String} [options.description] New description\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'updateProductFirmware',\n\t\tvalue: function updateProductFirmware(_ref70) {\n\t\t\tvar version = _ref70.version,\n\t\t\t title = _ref70.title,\n\t\t\t description = _ref70.description,\n\t\t\t product = _ref70.product,\n\t\t\t auth = _ref70.auth,\n\t\t\t context = _ref70.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/firmware/' + version;\n\t\t\treturn this.put(uri, { title: title, description: description }, auth, context);\n\t\t}\n\n\t\t/**\n * Download a product firmware binary\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of new firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Request}\n */\n\n\t}, {\n\t\tkey: 'downloadProductFirmware',\n\t\tvalue: function downloadProductFirmware(_ref71) {\n\t\t\tvar version = _ref71.version,\n\t\t\t product = _ref71.product,\n\t\t\t auth = _ref71.auth,\n\t\t\t context = _ref71.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/firmware/' + version + '/binary';\n\t\t\tvar req = (0, _superagent2.default)('get', uri);\n\t\t\treq.use(this.prefix);\n\t\t\tthis.headers(req, auth);\n\t\t\tif (this.debug) {\n\t\t\t\tthis.debug(req);\n\t\t\t}\n\t\t\treturn req;\n\t\t}\n\n\t\t/**\n * Release a product firmware version as the default version\n * @param {Object} options Options for this API call\n * @param {Number} options.version Version number of new firmware\n * @param {String} options.product Firmware for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'releaseProductFirmware',\n\t\tvalue: function releaseProductFirmware(_ref72) {\n\t\t\tvar version = _ref72.version,\n\t\t\t product = _ref72.product,\n\t\t\t auth = _ref72.auth,\n\t\t\t context = _ref72.context;\n\n\t\t\tvar uri = '/v1/products/' + product + '/firmware/release';\n\t\t\treturn this.put(uri, { version: version }, auth, context);\n\t\t}\n\n\t\t/**\n * List product team members\n * @param {Object} options Options for this API call\n * @param {String} options.product Team for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'listTeamMembers',\n\t\tvalue: function listTeamMembers(_ref73) {\n\t\t\tvar product = _ref73.product,\n\t\t\t auth = _ref73.auth,\n\t\t\t context = _ref73.context;\n\n\t\t\treturn this.get('/v1/products/' + product + '/team', auth, undefined, context);\n\t\t}\n\n\t\t/**\n * Invite Particle user to a product team\n * @param {Object} options Options for this API call\n * @param {String} options.username Username for the Particle account\n * @param {String} options.product Team for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'inviteTeamMember',\n\t\tvalue: function inviteTeamMember(_ref74) {\n\t\t\tvar username = _ref74.username,\n\t\t\t product = _ref74.product,\n\t\t\t auth = _ref74.auth,\n\t\t\t context = _ref74.context;\n\n\t\t\treturn this.post('/v1/products/' + product + '/team', { username: username }, auth, context);\n\t\t}\n\n\t\t/**\n * Remove Particle user to a product team\n * @param {Object} options Options for this API call\n * @param {String} options.username Username for the Particle account\n * @param {String} options.product Team for this product ID or slug\n * @param {String} options.auth Access Token\n * @return {Promise}\n */\n\n\t}, {\n\t\tkey: 'removeTeamMember',\n\t\tvalue: function removeTeamMember(_ref75) {\n\t\t\tvar username = _ref75.username,\n\t\t\t product = _ref75.product,\n\t\t\t auth = _ref75.auth,\n\t\t\t context = _ref75.context;\n\n\t\t\treturn this.delete('/v1/products/' + product + '/team/' + username, undefined, auth, context);\n\t\t}\n\n\t\t/**\n * API URI to access a device\n * @param {Object} options Options for this API call\n * @param {String} options.deviceId Device ID to access\n * @param {String} [options.product] Device only in this product ID or slug\n * @private\n * @returns {string}\n */\n\n\t}, {\n\t\tkey: 'deviceUri',\n\t\tvalue: function deviceUri(_ref76) {\n\t\t\tvar deviceId = _ref76.deviceId,\n\t\t\t product = _ref76.product;\n\n\t\t\treturn product ? '/v1/products/' + product + '/devices/' + deviceId : '/v1/devices/' + deviceId;\n\t\t}\n\t}, {\n\t\tkey: 'get',\n\t\tvalue: function get(uri, auth, query, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.get(uri, auth, query, context);\n\t\t}\n\t}, {\n\t\tkey: 'head',\n\t\tvalue: function head(uri, auth, query, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.head(uri, auth, query, context);\n\t\t}\n\t}, {\n\t\tkey: 'post',\n\t\tvalue: function post(uri, data, auth, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.post(uri, data, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'put',\n\t\tvalue: function put(uri, data, auth, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.put(uri, data, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'delete',\n\t\tvalue: function _delete(uri, data, auth, context) {\n\t\t\tcontext = this._buildContext(context);\n\t\t\treturn this.agent.delete(uri, data, auth, context);\n\t\t}\n\t}, {\n\t\tkey: 'request',\n\t\tvalue: function request(args) {\n\t\t\targs.context = this._buildContext(args.context);\n\t\t\treturn this.agent.request(args);\n\t\t}\n\t}, {\n\t\tkey: 'client',\n\t\tvalue: function client() {\n\t\t\tvar options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\t\treturn new _Client2.default((0, _assign2.default)({ api: this }, options));\n\t\t}\n\t}]);\n\treturn Particle;\n}();\n\n// Aliases for backwards compatibility\n\n\nParticle.prototype.removeAccessToken = Particle.prototype.deleteAccessToken;\n\nexports.default = Particle;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Particle.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = binaryParser;\n// Binary parser for superagent\n\nfunction binaryParser(res, fn) {\n\t/* global Buffer */\n\tvar data = [];\n\tres.on('data', function (chunk) {\n\t\treturn data.push(chunk);\n\t});\n\tres.on('end', function () {\n\t\treturn fn(null, Buffer.concat(data));\n\t});\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=superagent-binary-parser.js.map","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/number/is-nan\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","'use strict';\n\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\nvar SlowBuffer = buffer.SlowBuffer;\nvar MAX_LEN = buffer.kMaxLength || 2147483647;\nexports.alloc = function alloc(size, fill, encoding) {\n if (typeof Buffer.alloc === 'function') {\n return Buffer.alloc(size, fill, encoding);\n }\n if (typeof encoding === 'number') {\n throw new TypeError('encoding must not be number');\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n var enc = encoding;\n var _fill = fill;\n if (_fill === undefined) {\n enc = undefined;\n _fill = 0;\n }\n var buf = new Buffer(size);\n if (typeof _fill === 'string') {\n var fillBuf = new Buffer(_fill, enc);\n var flen = fillBuf.length;\n var i = -1;\n while (++i < size) {\n buf[i] = fillBuf[i % flen];\n }\n } else {\n buf.fill(_fill);\n }\n return buf;\n}\nexports.allocUnsafe = function allocUnsafe(size) {\n if (typeof Buffer.allocUnsafe === 'function') {\n return Buffer.allocUnsafe(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new Buffer(size);\n}\nexports.from = function from(value, encodingOrOffset, length) {\n if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {\n return Buffer.from(value, encodingOrOffset, length);\n }\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof value === 'string') {\n return new Buffer(value, encodingOrOffset);\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n var offset = encodingOrOffset;\n if (arguments.length === 1) {\n return new Buffer(value);\n }\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n var len = length;\n if (typeof len === 'undefined') {\n len = value.byteLength - offset;\n }\n if (offset >= value.byteLength) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n if (len > value.byteLength - offset) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n return new Buffer(value.slice(offset, offset + len));\n }\n if (Buffer.isBuffer(value)) {\n var out = new Buffer(value.length);\n value.copy(out, 0, 0, value.length);\n return out;\n }\n if (value) {\n if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {\n return new Buffer(value);\n }\n if (value.type === 'Buffer' && Array.isArray(value.data)) {\n return new Buffer(value.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');\n}\nexports.allocUnsafeSlow = function allocUnsafeSlow(size) {\n if (typeof Buffer.allocUnsafeSlow === 'function') {\n return Buffer.allocUnsafeSlow(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size >= MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new SlowBuffer(size);\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D){\n return $Object.create(P, D);\n};","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc){\n return $Object.defineProperty(it, key, desc);\n};","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nmodule.exports = require('../modules/_core').Promise;","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};","module.exports = function(){ /* empty */ };","module.exports = function(it, Constructor, name, forbiddenField){\n if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof')\n , TAG = require('./_wks')('toStringTag')\n // ES3 wrong here\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n try {\n return it[key];\n } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie');\nmodule.exports = function(it){\n var result = getKeys(it)\n , getSymbols = gOPS.f;\n if(getSymbols){\n var symbols = getSymbols(it)\n , isEnum = pIE.f\n , i = 0\n , key;\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n } return result;\n};","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};","var ctx = require('./_ctx')\n , call = require('./_iter-call')\n , isArrayIter = require('./_is-array-iter')\n , anObject = require('./_an-object')\n , toLength = require('./_to-length')\n , getIterFn = require('./core.get-iterator-method')\n , BREAK = {}\n , RETURN = {};\nvar exports = module.exports = function(iterable, entries, fn, that, ITERATOR){\n var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)\n , f = ctx(fn, that, entries ? 2 : 1)\n , index = 0\n , length, step, iterator, result;\n if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if(result === BREAK || result === RETURN)return result;\n } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){\n result = call(iterator, f, step.value, entries);\n if(result === BREAK || result === RETURN)return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};","module.exports = require('./_global').document && document.documentElement;","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function(fn, args, that){\n var un = that === undefined;\n switch(args.length){\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};","// check on default Array iterator\nvar Iterators = require('./_iterators')\n , ITERATOR = require('./_wks')('iterator')\n , ArrayProto = Array.prototype;\n\nmodule.exports = function(it){\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function(iterator, fn, value, entries){\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch(e){\n var ret = iterator['return'];\n if(ret !== undefined)anObject(ret.call(iterator));\n throw e;\n }\n};","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};","var ITERATOR = require('./_wks')('iterator')\n , SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function(){ SAFE_CLOSING = true; };\n Array.from(riter, function(){ throw 2; });\n} catch(e){ /* empty */ }\n\nmodule.exports = function(exec, skipClosing){\n if(!skipClosing && !SAFE_CLOSING)return false;\n var safe = false;\n try {\n var arr = [7]\n , iter = arr[ITERATOR]();\n iter.next = function(){ return {done: safe = true}; };\n arr[ITERATOR] = function(){ return iter; };\n exec(arr);\n } catch(e){ /* empty */ }\n return safe;\n};","module.exports = function(done, value){\n return {value: value, done: !!done};\n};","module.exports = {};","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject');\nmodule.exports = function(object, el){\n var O = toIObject(object)\n , keys = getKeys(O)\n , length = keys.length\n , index = 0\n , key;\n while(length > index)if(O[key = keys[index++]] === el)return key;\n};","module.exports = true;","var META = require('./_uid')('meta')\n , isObject = require('./_is-object')\n , has = require('./_has')\n , setDesc = require('./_object-dp').f\n , id = 0;\nvar isExtensible = Object.isExtensible || function(){\n return true;\n};\nvar FREEZE = !require('./_fails')(function(){\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function(it){\n setDesc(it, META, {value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n }});\n};\nvar fastKey = function(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add metadata\n if(!create)return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function(it, create){\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return true;\n // not necessary to add metadata\n if(!create)return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function(it){\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};","var global = require('./_global')\n , macrotask = require('./_task').set\n , Observer = global.MutationObserver || global.WebKitMutationObserver\n , process = global.process\n , Promise = global.Promise\n , isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function(){\n var head, last, notify;\n\n var flush = function(){\n var parent, fn;\n if(isNode && (parent = process.domain))parent.exit();\n while(head){\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch(e){\n if(head)notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if(parent)parent.enter();\n };\n\n // Node.js\n if(isNode){\n notify = function(){\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if(Observer){\n var toggle = true\n , node = document.createTextNode('');\n new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new\n notify = function(){\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if(Promise && Promise.resolve){\n var promise = Promise.resolve();\n notify = function(){\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function(){\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function(fn){\n var task = {fn: fn, next: undefined};\n if(last)last.next = task;\n if(!head){\n head = task;\n notify();\n } last = task;\n };\n};","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};","var pIE = require('./_object-pie')\n , createDesc = require('./_property-desc')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , has = require('./_has')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){\n O = toIObject(O);\n P = toPrimitive(P, true);\n if(IE8_DOM_DEFINE)try {\n return gOPD(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n};","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject')\n , gOPN = require('./_object-gopn').f\n , toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function(it){\n try {\n return gOPN(it);\n } catch(e){\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it){\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal')\n , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};","exports.f = Object.getOwnPropertySymbols;","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};","exports.f = {}.propertyIsEnumerable;","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export')\n , core = require('./_core')\n , fails = require('./_fails');\nmodule.exports = function(KEY, exec){\n var fn = (core.Object || {})[KEY] || Object[KEY]\n , exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject')\n , isEnum = require('./_object-pie').f;\nmodule.exports = function(isEntries){\n return function(it){\n var O = toIObject(it)\n , keys = getKeys(O)\n , length = keys.length\n , i = 0\n , result = []\n , key;\n while(length > i)if(isEnum.call(O, key = keys[i++])){\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};","var hide = require('./_hide');\nmodule.exports = function(target, src, safe){\n for(var key in src){\n if(safe && target[key])target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};","module.exports = require('./_hide');","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object')\n , anObject = require('./_an-object');\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};","'use strict';\nvar global = require('./_global')\n , core = require('./_core')\n , dP = require('./_object-dp')\n , DESCRIPTORS = require('./_descriptors')\n , SPECIES = require('./_wks')('species');\n\nmodule.exports = function(KEY){\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {\n configurable: true,\n get: function(){ return this; }\n });\n};","var def = require('./_object-dp').f\n , has = require('./_has')\n , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object')\n , aFunction = require('./_a-function')\n , SPECIES = require('./_wks')('species');\nmodule.exports = function(O, D){\n var C = anObject(O).constructor, S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};","var toInteger = require('./_to-integer')\n , defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String(defined(that))\n , i = toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};","var ctx = require('./_ctx')\n , invoke = require('./_invoke')\n , html = require('./_html')\n , cel = require('./_dom-create')\n , global = require('./_global')\n , process = global.process\n , setTask = global.setImmediate\n , clearTask = global.clearImmediate\n , MessageChannel = global.MessageChannel\n , counter = 0\n , queue = {}\n , ONREADYSTATECHANGE = 'onreadystatechange'\n , defer, channel, port;\nvar run = function(){\n var id = +this;\n if(queue.hasOwnProperty(id)){\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function(event){\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif(!setTask || !clearTask){\n setTask = function setImmediate(fn){\n var args = [], i = 1;\n while(arguments.length > i)args.push(arguments[i++]);\n queue[++counter] = function(){\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id){\n delete queue[id];\n };\n // Node.js 0.8-\n if(require('./_cof')(process) == 'process'){\n defer = function(id){\n process.nextTick(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if(MessageChannel){\n channel = new MessageChannel;\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){\n defer = function(id){\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if(ONREADYSTATECHANGE in cel('script')){\n defer = function(id){\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function(id){\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};","var global = require('./_global')\n , core = require('./_core')\n , LIBRARY = require('./_library')\n , wksExt = require('./_wks-ext')\n , defineProperty = require('./_object-dp').f;\nmodule.exports = function(name){\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\n};","exports.f = require('./_wks');","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function(it){\n if(it != undefined)return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};","var anObject = require('./_an-object')\n , get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function(it){\n var iterFn = get(it);\n if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function(it){\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n || Iterators.hasOwnProperty(classof(O));\n};","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n , step = require('./_iter-step')\n , Iterators = require('./_iterators')\n , toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , kind = this._k\n , index = this._i++;\n if(!O || index >= O.length){\n this._t = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number){\n return number != number;\n }\n});","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});","var $export = require('./_export')\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', {create: require('./_object-create')});","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object')\n , $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function(){\n return function getPrototypeOf(it){\n return $getPrototypeOf(toObject(it));\n };\n});","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object')\n , $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function(){\n return function keys(it){\n return $keys(toObject(it));\n };\n});","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});","'use strict';\nvar LIBRARY = require('./_library')\n , global = require('./_global')\n , ctx = require('./_ctx')\n , classof = require('./_classof')\n , $export = require('./_export')\n , isObject = require('./_is-object')\n , aFunction = require('./_a-function')\n , anInstance = require('./_an-instance')\n , forOf = require('./_for-of')\n , speciesConstructor = require('./_species-constructor')\n , task = require('./_task').set\n , microtask = require('./_microtask')()\n , PROMISE = 'Promise'\n , TypeError = global.TypeError\n , process = global.process\n , $Promise = global[PROMISE]\n , process = global.process\n , isNode = classof(process) == 'process'\n , empty = function(){ /* empty */ }\n , Internal, GenericPromiseCapability, Wrapper;\n\nvar USE_NATIVE = !!function(){\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1)\n , FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function(exec){ exec(empty, empty); };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch(e){ /* empty */ }\n}();\n\n// helpers\nvar sameConstructor = function(a, b){\n // with library wrapper special case\n return a === b || a === $Promise && b === Wrapper;\n};\nvar isThenable = function(it){\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar newPromiseCapability = function(C){\n return sameConstructor($Promise, C)\n ? new PromiseCapability(C)\n : new GenericPromiseCapability(C);\n};\nvar PromiseCapability = GenericPromiseCapability = function(C){\n var resolve, reject;\n this.promise = new C(function($$resolve, $$reject){\n if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\nvar perform = function(exec){\n try {\n exec();\n } catch(e){\n return {error: e};\n }\n};\nvar notify = function(promise, isReject){\n if(promise._n)return;\n promise._n = true;\n var chain = promise._c;\n microtask(function(){\n var value = promise._v\n , ok = promise._s == 1\n , i = 0;\n var run = function(reaction){\n var handler = ok ? reaction.ok : reaction.fail\n , resolve = reaction.resolve\n , reject = reaction.reject\n , domain = reaction.domain\n , result, then;\n try {\n if(handler){\n if(!ok){\n if(promise._h == 2)onHandleUnhandled(promise);\n promise._h = 1;\n }\n if(handler === true)result = value;\n else {\n if(domain)domain.enter();\n result = handler(value);\n if(domain)domain.exit();\n }\n if(result === reaction.promise){\n reject(TypeError('Promise-chain cycle'));\n } else if(then = isThenable(result)){\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch(e){\n reject(e);\n }\n };\n while(chain.length > i)run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if(isReject && !promise._h)onUnhandled(promise);\n });\n};\nvar onUnhandled = function(promise){\n task.call(global, function(){\n var value = promise._v\n , abrupt, handler, console;\n if(isUnhandled(promise)){\n abrupt = perform(function(){\n if(isNode){\n process.emit('unhandledRejection', value, promise);\n } else if(handler = global.onunhandledrejection){\n handler({promise: promise, reason: value});\n } else if((console = global.console) && console.error){\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if(abrupt)throw abrupt.error;\n });\n};\nvar isUnhandled = function(promise){\n if(promise._h == 1)return false;\n var chain = promise._a || promise._c\n , i = 0\n , reaction;\n while(chain.length > i){\n reaction = chain[i++];\n if(reaction.fail || !isUnhandled(reaction.promise))return false;\n } return true;\n};\nvar onHandleUnhandled = function(promise){\n task.call(global, function(){\n var handler;\n if(isNode){\n process.emit('rejectionHandled', promise);\n } else if(handler = global.onrejectionhandled){\n handler({promise: promise, reason: promise._v});\n }\n });\n};\nvar $reject = function(value){\n var promise = this;\n if(promise._d)return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if(!promise._a)promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function(value){\n var promise = this\n , then;\n if(promise._d)return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if(promise === value)throw TypeError(\"Promise can't be resolved itself\");\n if(then = isThenable(value)){\n microtask(function(){\n var wrapper = {_w: promise, _d: false}; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch(e){\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch(e){\n $reject.call({_w: promise, _d: false}, e); // wrap\n }\n};\n\n// constructor polyfill\nif(!USE_NATIVE){\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor){\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch(err){\n $reject.call(this, err);\n }\n };\n Internal = function Promise(executor){\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected){\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if(this._a)this._a.push(reaction);\n if(this._s)notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function(onRejected){\n return this.then(undefined, onRejected);\n }\n });\n PromiseCapability = function(){\n var promise = new Internal;\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r){\n var capability = newPromiseCapability(this)\n , $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x){\n // instanceof instead of internal slot check because we should fix it without replacement native Promise core\n if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;\n var capability = newPromiseCapability(this)\n , $$resolve = capability.resolve;\n $$resolve(x);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function(iter){\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable){\n var C = this\n , capability = newPromiseCapability(C)\n , resolve = capability.resolve\n , reject = capability.reject;\n var abrupt = perform(function(){\n var values = []\n , index = 0\n , remaining = 1;\n forOf(iterable, false, function(promise){\n var $index = index++\n , alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function(value){\n if(alreadyCalled)return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if(abrupt)reject(abrupt.error);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable){\n var C = this\n , capability = newPromiseCapability(C)\n , reject = capability.reject;\n var abrupt = perform(function(){\n forOf(iterable, false, function(promise){\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if(abrupt)reject(abrupt.error);\n return capability.promise;\n }\n});","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function(iterated){\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , index = this._i\n , point;\n if(index >= O.length)return {value: undefined, done: true};\n point = $at(O, index);\n this._i += point.length;\n return {value: point, done: false};\n});","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global')\n , has = require('./_has')\n , DESCRIPTORS = require('./_descriptors')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , META = require('./_meta').KEY\n , $fails = require('./_fails')\n , shared = require('./_shared')\n , setToStringTag = require('./_set-to-string-tag')\n , uid = require('./_uid')\n , wks = require('./_wks')\n , wksExt = require('./_wks-ext')\n , wksDefine = require('./_wks-define')\n , keyOf = require('./_keyof')\n , enumKeys = require('./_enum-keys')\n , isArray = require('./_is-array')\n , anObject = require('./_an-object')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , createDesc = require('./_property-desc')\n , _create = require('./_object-create')\n , gOPNExt = require('./_object-gopn-ext')\n , $GOPD = require('./_object-gopd')\n , $DP = require('./_object-dp')\n , $keys = require('./_object-keys')\n , gOPD = $GOPD.f\n , dP = $DP.f\n , gOPN = gOPNExt.f\n , $Symbol = global.Symbol\n , $JSON = global.JSON\n , _stringify = $JSON && $JSON.stringify\n , PROTOTYPE = 'prototype'\n , HIDDEN = wks('_hidden')\n , TO_PRIMITIVE = wks('toPrimitive')\n , isEnum = {}.propertyIsEnumerable\n , SymbolRegistry = shared('symbol-registry')\n , AllSymbols = shared('symbols')\n , OPSymbols = shared('op-symbols')\n , ObjectProto = Object[PROTOTYPE]\n , USE_NATIVE = typeof $Symbol == 'function'\n , QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n return _create(dP({}, 'a', {\n get: function(){ return dP(this, 'a', {value: 7}).a; }\n })).a != 7;\n}) ? function(it, key, D){\n var protoDesc = gOPD(ObjectProto, key);\n if(protoDesc)delete ObjectProto[key];\n dP(it, key, D);\n if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function(tag){\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n return typeof it == 'symbol';\n} : function(it){\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D){\n if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if(has(AllSymbols, key)){\n if(!D.enumerable){\n if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n D = _create(D, {enumerable: createDesc(0, false)});\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P){\n anObject(it);\n var keys = enumKeys(P = toIObject(P))\n , i = 0\n , l = keys.length\n , key;\n while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P){\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n it = toIObject(it);\n key = toPrimitive(key, true);\n if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\n var D = gOPD(it, key);\n if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n var names = gOPN(toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n var IS_OP = it === ObjectProto\n , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif(!USE_NATIVE){\n $Symbol = function Symbol(){\n if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function(value){\n if(this === ObjectProto)$set.call(OPSymbols, value);\n if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if(DESCRIPTORS && !require('./_library')){\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function(name){\n return wrap(wks(name));\n }\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\nfor(var symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key){\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key){\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\n },\n useSetter: function(){ setter = true; },\n useSimple: function(){ setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it){\n if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n var args = [it]\n , i = 1\n , replacer, $replacer;\n while(arguments.length > i)args.push(arguments[i++]);\n replacer = args[1];\n if(typeof replacer == 'function')$replacer = replacer;\n if($replacer || !isArray(replacer))replacer = function(key, value){\n if($replacer)value = $replacer.call(this, key, value);\n if(!isSymbol(value))return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export')\n , $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it){\n return $entries(it);\n }\n});","require('./_wks-define')('asyncIterator');","require('./_wks-define')('observable');","require('./es6.array.iterator');\nvar global = require('./_global')\n , hide = require('./_hide')\n , Iterators = require('./_iterators')\n , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = nextTick;\n} else {\n module.exports = process.nextTick;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","module.exports = require('./lib/_stream_duplex.js');\n","// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nvar keys = objectKeys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n processNextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}","// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/**/\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options && typeof options.read === 'function') this._read = options.read;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n\n if (!state.objectMode && typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = bufferShim.from(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var _e = new Error('stream.unshift() after end event');\n stream.emit('error', _e);\n } else {\n var skipAdd;\n if (state.decoder && !addToFront && !encoding) {\n chunk = state.decoder.write(chunk);\n skipAdd = !state.objectMode && chunk.length === 0;\n }\n\n if (!addToFront) state.reading = false;\n\n // Don't add to the buffer if we've decoded to an empty string chunk and\n // we're not in object mode\n if (!skipAdd) {\n // if we want the data now, just emit it.\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = bufferShim.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er, data) {\n done(stream, er, data);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data !== null && data !== undefined) stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/**/\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/**/\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n processNextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = Buffer.isBuffer(chunk);\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = bufferShim.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) processNextTick(cb, er);else cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n while (entry) {\n buffer[count] = entry;\n entry = entry.next;\n count += 1;\n }\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else {\n prefinish(stream, state);\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function (err) {\n var entry = _this.entry;\n _this.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = _this;\n } else {\n state.corkedRequestsFree = _this;\n }\n };\n}","'use strict';\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/**/\n\nmodule.exports = BufferList;\n\nfunction BufferList() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n}\n\nBufferList.prototype.push = function (v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n};\n\nBufferList.prototype.unshift = function (v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n};\n\nBufferList.prototype.shift = function () {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n};\n\nBufferList.prototype.clear = function () {\n this.head = this.tail = null;\n this.length = 0;\n};\n\nBufferList.prototype.join = function (s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n};\n\nBufferList.prototype.concat = function (n) {\n if (this.length === 0) return bufferShim.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = bufferShim.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n p.data.copy(ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n};","module.exports = require('events').EventEmitter;\n","module.exports = require('./readable').PassThrough\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./lib/_stream_writable.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var ClientRequest = require('./lib/request')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableByteStream)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\nvar xhr = new global.XMLHttpRequest()\n// If location.host is empty, e.g. if this page/worker was loaded\n// from a Blob, then use example.com to avoid an error\nxhr.open('GET', global.location.host ? '/' : 'https://example.com')\n\nfunction checkTypeSupport (type) {\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\nexports.arraybuffer = haveArrayBuffer && checkTypeSupport('arraybuffer')\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\nexports.overrideMimeType = isFunction(xhr.overrideMimeType)\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n return typeof value === 'function'\n}\n\nxhr = null // Help gc\n","// var Base64 = require('Base64')\nvar capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, avoidFetch) {\n\tif (capability.fetch && !avoidFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tif (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, opts.avoidFetch)\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar self = this\n\treturn self._headers[name.toLowerCase()].value\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body\n\tif (opts.method === 'POST' || opts.method === 'PUT' || opts.method === 'PATCH') {\n\t\tif (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\tif (self._mode === 'fetch') {\n\t\tvar headers = Object.keys(headersObj).map(function (name) {\n\t\t\treturn [headersObj[name].name, headersObj[name].value]\n\t\t})\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headers,\n\t\t\tbody: body,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin'\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tObject.keys(headersObj).forEach(function (name) {\n\t\t\txhr.setRequestHeader(headersObj[name].name, headersObj[name].value)\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode)\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\t// Currently, there isn't a way to truly abort a fetch.\n\t// If you like bikeshedding, see https://github.com/whatwg/fetch/issues/27\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'user-agent',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t// backwards compatible version of for ( of ):\n\t\t// for (var ,_i,_it = [Symbol.iterator](); = (_i = _it.next()).value,!_i.done;)\n\t\tfor (var header, _i, _it = response.headers[Symbol.iterator](); header = (_i = _it.next()).value, !_i.done;) {\n\t\t\tself.headers[header[0].toLowerCase()] = header[1]\n\t\t\tself.rawHeaders.push(header[0], header[1])\n\t\t}\n\n\t\t// TODO: this doesn't respect backpressure. Once WritableStream is available, this can be fixed\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\tread()\n\t\t\t})\n\t\t}\n\t\tread()\n\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {}\n\nIncomingMessage.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text:vbarray': // For IE9\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\ttry {\n\t\t\t\t// This fails in IE8\n\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t} catch (e) {}\n\t\t\tif (response !== null) {\n\t\t\t\tself.push(new Buffer(response))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Falls through in IE8\t\n\t\tcase 'text':\n\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\tresponse = xhr.responseText\n\t\t\t} catch (e) {\n\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar bufferShim = require('buffer-shims');\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = bufferShim.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return -1;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// UTF-8 replacement characters ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd'.repeat(p);\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd'.repeat(p + 1);\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd'.repeat(p + 2);\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character for each buffered byte of a (partial)\n// character needs to be added to the output.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd'.repeat(this.lastTotal - this.lastNeed);\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","module.exports = function (prefix) {\n return function (request) {\n if (request.url[0] === '/') {\n request.url = prefix + request.url;\n }\n\n return request;\n };\n}","/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n console.warn(\"Using browser-only version of superagent in non-browser environment\");\n root = this;\n}\n\nvar Emitter = require('emitter');\nvar requestBase = require('./request-base');\nvar isObject = require('./is-object');\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Expose `request`.\n */\n\nvar request = module.exports = require('./request').bind(null, Request);\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n throw Error(\"Browser-only verison of superagent could not find XHR\");\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (val != null) {\n if (Array.isArray(val)) {\n val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n } else if (isObject(val)) {\n for(var subkey in val) {\n pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]);\n }\n } else {\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n }\n } else if (val === null) {\n pairs.push(encodeURIComponent(key));\n }\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var pair;\n var pos;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n if (pos == -1) {\n obj[decodeURIComponent(pair)] = '';\n } else {\n obj[decodeURIComponent(pair.slice(0, pos))] =\n decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return str.split(/ *; */).reduce(function(obj, str){\n var parts = str.split(/ *= */),\n key = parts.shift(),\n val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this._setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this._setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this._parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype._setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function(str){\n var parse = request.parse[this.type];\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype._setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n // issue #876: return the http status code if the response parsing fails\n err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n var new_err;\n try {\n if (res.status < 200 || res.status >= 300) {\n new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n }\n } catch(e) {\n new_err = e; // #985 touching res may cause INVALID_STATE_ERR on old Android\n }\n\n // #1000 don't catch errors from the callback to avoid double calling it\n if (new_err) {\n self.callback(new_err, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n\n/**\n * Mixin `Emitter` and `requestBase`.\n */\n\nEmitter(Request.prototype);\nfor (var key in requestBase) {\n Request.prototype[key] = requestBase[key];\n}\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set responseType to `val`. Presently valid responseTypes are 'blob' and\n * 'arraybuffer'.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.responseType = function(val){\n this._responseType = val;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n if (!options) {\n options = {\n type: 'basic'\n }\n }\n\n switch (options.type) {\n case 'basic':\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n }\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n this._getFormData().append(field, file, filename || file.name);\n return this;\n};\n\nRequest.prototype._getFormData = function(){\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype._timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\nRequest.prototype._appendQueryString = function(){\n var query = this._query.join('&');\n if (query) {\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self._timeoutError();\n if (self._aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(direction, e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = direction;\n self.emit('progress', e);\n }\n if (this.hasListeners('progress')) {\n try {\n xhr.onprogress = handleProgress.bind(null, 'download');\n if (xhr.upload) {\n xhr.upload.onprogress = handleProgress.bind(null, 'upload');\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n this._appendQueryString();\n\n // initiate request\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = function(url, data, fn){\n var req = request('OPTIONS', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n","/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return null !== obj && 'object' === typeof obj;\n}\n\nmodule.exports = isObject;\n","/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = require('./is-object');\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nexports.clearTimeout = function _clearTimeout(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nexports.parse = function parse(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nexports.serialize = function serialize(fn){\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nexports.timeout = function timeout(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} reject\n * @return {Request}\n */\n\nexports.then = function then(resolve, reject) {\n if (!this._fullfilledPromise) {\n var self = this;\n this._fullfilledPromise = new Promise(function(innerResolve, innerReject){\n self.end(function(err, res){\n if (err) innerReject(err); else innerResolve(res);\n });\n });\n }\n return this._fullfilledPromise.then(resolve, reject);\n}\n\nexports.catch = function(cb) {\n return this.then(undefined, cb);\n};\n\n/**\n * Allow for extension\n */\n\nexports.use = function use(fn) {\n fn(this);\n return this;\n}\n\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nexports.get = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nexports.getHeader = exports.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nexports.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n */\nexports.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nexports.field = function(name, val) {\n\n // name should be either a string or an object.\n if (null === name || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (isObject(name)) {\n for (var key in name) {\n this.field(key, name[key]);\n }\n return this;\n }\n\n // val should be defined now\n if (null === val || undefined === val) {\n throw new Error('.field(name, val) val can not be empty');\n }\n this._getFormData().append(name, val);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\nexports.abort = function(){\n if (this._aborted) {\n return this;\n }\n this._aborted = true;\n this.xhr && this.xhr.abort(); // browser\n this.req && this.req.abort(); // node\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nexports.withCredentials = function(){\n // This is browser-only functionality. Node side is no-op.\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does noting in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nexports.redirects = function(n){\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nexports.toJSON = function(){\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nexports._isHost = function _isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nexports.send = function(data){\n var obj = isObject(data);\n var type = this._header['content-type'];\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || this._isHost(data)) return this;\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n","// The node and browser modules expose versions of this with the\n// appropriate constructor function bound as first argument\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(RequestConstructor, method, url) {\n // callback\n if ('function' == typeof url) {\n return new RequestConstructor('GET', method).end(url);\n }\n\n // url first\n if (2 == arguments.length) {\n return new RequestConstructor('GET', method);\n }\n\n return new RequestConstructor(method, url);\n}\n\nmodule.exports = request;\n","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n"]} \ No newline at end of file diff --git a/docs/api.md b/docs/api.md index 55fe54c..04e0ef2 100644 --- a/docs/api.md +++ b/docs/api.md @@ -9,6 +9,7 @@ - [verifyUser](#verifyuser) - [resetPassword](#resetpassword) - [deleteAccessToken](#deleteaccesstoken) + - [deleteCurrentAccessToken](#deletecurrentaccesstoken) - [listAccessTokens](#listaccesstokens) - [trackingIdentity](#trackingidentity) - [listDevices](#listdevices) @@ -78,7 +79,7 @@ ## Particle -[src/Particle.js:17-1235](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L17-L1235 "Source code on GitHub") +[src/Particle.js:17-1245](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L17-L1245 "Source code on GitHub") Particle Cloud API wrapper. @@ -94,7 +95,7 @@ Most Particle methods take a single unnamed argument object documented as ### constructor -[src/Particle.js:25-30](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L25-L30 "Source code on GitHub") +[src/Particle.js:25-30](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L25-L30 "Source code on GitHub") Contructor for the Cloud API wrapper. @@ -106,7 +107,7 @@ Create a new Particle object and call methods below on it. ### login -[src/Particle.js:64-73](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L64-L73 "Source code on GitHub") +[src/Particle.js:64-73](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L64-L73 "Source code on GitHub") Login to Particle Cloud using an existing Particle acccount. @@ -122,7 +123,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### createUser -[src/Particle.js:83-89](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L83-L89 "Source code on GitHub") +[src/Particle.js:83-89](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L83-L89 "Source code on GitHub") Create a user account for the Particle Cloud @@ -138,7 +139,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### verifyUser -[src/Particle.js:97-101](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L97-L101 "Source code on GitHub") +[src/Particle.js:97-101](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L97-L101 "Source code on GitHub") Verify new user account via verification email @@ -152,7 +153,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### resetPassword -[src/Particle.js:109-111](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L109-L111 "Source code on GitHub") +[src/Particle.js:109-111](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L109-L111 "Source code on GitHub") Send reset password email for a Particle Cloud user account @@ -166,7 +167,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### deleteAccessToken -[src/Particle.js:121-125](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L121-L125 "Source code on GitHub") +[src/Particle.js:121-125](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L121-L125 "Source code on GitHub") Revoke an access token @@ -180,9 +181,23 @@ Revoke an access token Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)** +### deleteCurrentAccessToken + +[src/Particle.js:133-135](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L133-L135 "Source code on GitHub") + +Revoke the current session access token + +**Parameters** + +- `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** Options for this API call + - `options.auth` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Access Token + - `options.context` + +Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)** + ### listAccessTokens -[src/Particle.js:134-136](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L134-L136 "Source code on GitHub") +[src/Particle.js:144-146](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L144-L146 "Source code on GitHub") List all valid access tokens for a Particle Cloud account @@ -197,7 +212,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### trackingIdentity -[src/Particle.js:147-149](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L147-L149 "Source code on GitHub") +[src/Particle.js:157-159](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L157-L159 "Source code on GitHub") Retrieves the information that is used to identify the current login for tracking. @@ -213,7 +228,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listDevices -[src/Particle.js:164-168](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L164-L168 "Source code on GitHub") +[src/Particle.js:174-178](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L174-L178 "Source code on GitHub") List devices claimed to the account or product @@ -234,7 +249,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getDevice -[src/Particle.js:178-181](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L178-L181 "Source code on GitHub") +[src/Particle.js:188-191](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L188-L191 "Source code on GitHub") Get detailed informationa about a device @@ -250,7 +265,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### claimDevice -[src/Particle.js:190-195](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L190-L195 "Source code on GitHub") +[src/Particle.js:200-205](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L200-L205 "Source code on GitHub") Claim a device to the account. The device must be online and unclaimed. @@ -266,7 +281,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### addDeviceToProduct -[src/Particle.js:205-210](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L205-L210 "Source code on GitHub") +[src/Particle.js:215-220](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L215-L220 "Source code on GitHub") Add a device to a product or move device out of quarantine. @@ -282,7 +297,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### removeDevice -[src/Particle.js:221-225](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L221-L225 "Source code on GitHub") +[src/Particle.js:231-235](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L231-L235 "Source code on GitHub") Unclaim / Remove a device from your account or product, or deny quarantine @@ -299,7 +314,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### removeDeviceOwner -[src/Particle.js:235-238](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L235-L238 "Source code on GitHub") +[src/Particle.js:245-248](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L245-L248 "Source code on GitHub") Unclaim a product device its the owner, but keep it in the product @@ -316,7 +331,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### renameDevice -[src/Particle.js:249-251](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L249-L251 "Source code on GitHub") +[src/Particle.js:259-261](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L259-L261 "Source code on GitHub") Rename a device @@ -333,7 +348,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### signalDevice -[src/Particle.js:262-264](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L262-L264 "Source code on GitHub") +[src/Particle.js:272-274](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L272-L274 "Source code on GitHub") Instruct the device to turn on/off the LED in a rainbow pattern @@ -350,7 +365,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### setDeviceNotes -[src/Particle.js:275-277](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L275-L277 "Source code on GitHub") +[src/Particle.js:285-287](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L285-L287 "Source code on GitHub") Store some notes about device @@ -367,7 +382,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### markAsDevelopmentDevice -[src/Particle.js:288-290](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L288-L290 "Source code on GitHub") +[src/Particle.js:298-300](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L298-L300 "Source code on GitHub") Mark device as being used in development of a product so it opts out of automatic firmware updates @@ -384,7 +399,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### lockDeviceProductFirmware -[src/Particle.js:302-304](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L302-L304 "Source code on GitHub") +[src/Particle.js:312-314](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L312-L314 "Source code on GitHub") Mark device as being used in development of a product so it opts out of automatic firmware updates @@ -402,7 +417,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### unlockDeviceProductFirmware -[src/Particle.js:314-316](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L314-L316 "Source code on GitHub") +[src/Particle.js:324-326](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L324-L326 "Source code on GitHub") Mark device as receiving automatic firmware updates @@ -418,7 +433,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### updateDevice -[src/Particle.js:333-340](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L333-L340 "Source code on GitHub") +[src/Particle.js:343-350](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L343-L350 "Source code on GitHub") Update multiple device attributes at the same time @@ -440,7 +455,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### provisionDevice -[src/Particle.js:349-351](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L349-L351 "Source code on GitHub") +[src/Particle.js:359-361](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L359-L361 "Source code on GitHub") Provision a new device for products that allow self-provisioning @@ -455,7 +470,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getClaimCode -[src/Particle.js:363-366](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L363-L366 "Source code on GitHub") +[src/Particle.js:373-376](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L373-L376 "Source code on GitHub") Generate a claim code to use in the device claiming process. To generate a claim code for a product, the access token MUST belong to a @@ -473,7 +488,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getVariable -[src/Particle.js:387-392](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L387-L392 "Source code on GitHub") +[src/Particle.js:397-402](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L397-L402 "Source code on GitHub") Get the value of a device variable @@ -490,7 +505,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### flashDevice -[src/Particle.js:403-412](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L403-L412 "Source code on GitHub") +[src/Particle.js:413-422](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L413-L422 "Source code on GitHub") Compile and flash application firmware to a device. Pass a pre-compiled binary to flash it directly to the device. @@ -507,7 +522,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### flashTinker -[src/Particle.js:421-430](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L421-L430 "Source code on GitHub") +[src/Particle.js:431-440](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L431-L440 "Source code on GitHub") DEPRECATED: Flash the Tinker application to a device. Instead compile and flash the Tinker source code. @@ -522,7 +537,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### compileCode -[src/Particle.js:441-450](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L441-L450 "Source code on GitHub") +[src/Particle.js:451-460](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L451-L460 "Source code on GitHub") Compile firmware using the Particle Cloud @@ -539,7 +554,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### downloadFirmwareBinary -[src/Particle.js:459-468](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L459-L468 "Source code on GitHub") +[src/Particle.js:469-478](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L469-L478 "Source code on GitHub") Download a firmware binary @@ -554,7 +569,7 @@ Returns **[Request](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_A ### sendPublicKey -[src/Particle.js:479-487](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L479-L487 "Source code on GitHub") +[src/Particle.js:489-497](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L489-L497 "Source code on GitHub") Send a new device public key to the Particle Cloud @@ -571,7 +586,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### callFunction -[src/Particle.js:499-504](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L499-L504 "Source code on GitHub") +[src/Particle.js:509-514](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L509-L514 "Source code on GitHub") Call a device function @@ -589,7 +604,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getEventStream -[src/Particle.js:517-541](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L517-L541 "Source code on GitHub") +[src/Particle.js:527-551](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L527-L551 "Source code on GitHub") Get a stream of events @@ -608,7 +623,7 @@ emit 'event' events, as well as the specific named event. ### publishEvent -[src/Particle.js:553-557](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L553-L557 "Source code on GitHub") +[src/Particle.js:563-567](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L563-L567 "Source code on GitHub") Publish a event to the Particle Cloud @@ -626,7 +641,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### createWebhook -[src/Particle.js:580-588](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L580-L588 "Source code on GitHub") +[src/Particle.js:590-598](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L590-L598 "Source code on GitHub") Create a webhook @@ -655,7 +670,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### deleteWebhook -[src/Particle.js:598-601](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L598-L601 "Source code on GitHub") +[src/Particle.js:608-611](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L608-L611 "Source code on GitHub") Delete a webhook @@ -671,7 +686,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listWebhooks -[src/Particle.js:610-613](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L610-L613 "Source code on GitHub") +[src/Particle.js:620-623](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L620-L623 "Source code on GitHub") List all webhooks owned by the account or product @@ -686,7 +701,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### createIntegration -[src/Particle.js:629-633](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L629-L633 "Source code on GitHub") +[src/Particle.js:639-643](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L639-L643 "Source code on GitHub") Create an integration to send events to an external service @@ -707,7 +722,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### editIntegration -[src/Particle.js:649-653](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L649-L653 "Source code on GitHub") +[src/Particle.js:659-663](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L659-L663 "Source code on GitHub") Edit an integration to send events to an external service @@ -728,7 +743,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### deleteIntegration -[src/Particle.js:664-667](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L664-L667 "Source code on GitHub") +[src/Particle.js:674-677](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L674-L677 "Source code on GitHub") Delete an integration to send events to an external service @@ -744,7 +759,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listIntegrations -[src/Particle.js:676-679](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L676-L679 "Source code on GitHub") +[src/Particle.js:686-689](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L686-L689 "Source code on GitHub") List all integrations owned by the account or product @@ -759,7 +774,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getUserInfo -[src/Particle.js:687-689](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L687-L689 "Source code on GitHub") +[src/Particle.js:697-699](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L697-L699 "Source code on GitHub") Get details about the current user @@ -773,7 +788,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### setUserInfo -[src/Particle.js:700-708](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L700-L708 "Source code on GitHub") +[src/Particle.js:710-718](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L710-L718 "Source code on GitHub") Set details on the current user @@ -790,7 +805,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listSIMs -[src/Particle.js:722-726](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L722-L726 "Source code on GitHub") +[src/Particle.js:732-736](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L732-L736 "Source code on GitHub") List SIM cards owned by a user or product @@ -810,7 +825,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getSIMDataUsage -[src/Particle.js:736-741](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L736-L741 "Source code on GitHub") +[src/Particle.js:746-751](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L746-L751 "Source code on GitHub") Get data usage for one SIM card for the current billing period @@ -826,7 +841,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getFleetDataUsage -[src/Particle.js:750-752](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L750-L752 "Source code on GitHub") +[src/Particle.js:760-762](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L760-L762 "Source code on GitHub") Get data usage for all SIM cards in a product the current billing period @@ -841,7 +856,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### activateSIM -[src/Particle.js:768-778](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L768-L778 "Source code on GitHub") +[src/Particle.js:778-788](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L778-L788 "Source code on GitHub") Activate and add SIM cards to an account or product @@ -860,7 +875,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### deactivateSIM -[src/Particle.js:788-792](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L788-L792 "Source code on GitHub") +[src/Particle.js:798-802](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L798-L802 "Source code on GitHub") Deactivate a SIM card so it doesn't incur data usage in future months. @@ -876,7 +891,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### reactivateSIM -[src/Particle.js:803-807](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L803-L807 "Source code on GitHub") +[src/Particle.js:813-817](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L813-L817 "Source code on GitHub") Reactivate a SIM card the was deactivated or unpause a SIM card that was automatically paused @@ -893,7 +908,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### updateSIM -[src/Particle.js:818-822](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L818-L822 "Source code on GitHub") +[src/Particle.js:828-832](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L828-L832 "Source code on GitHub") Update SIM card data limit @@ -910,7 +925,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### removeSIM -[src/Particle.js:832-835](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L832-L835 "Source code on GitHub") +[src/Particle.js:842-845](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L842-L845 "Source code on GitHub") Remove a SIM card from an account so it can be activated by a different account @@ -926,7 +941,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listBuildTargets -[src/Particle.js:844-850](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L844-L850 "Source code on GitHub") +[src/Particle.js:854-860](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L854-L860 "Source code on GitHub") List valid build targets to be used for compiling @@ -941,7 +956,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listLibraries -[src/Particle.js:874-885](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L874-L885 "Source code on GitHub") +[src/Particle.js:884-895](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L884-L895 "Source code on GitHub") List firmware libraries @@ -969,7 +984,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getLibrary -[src/Particle.js:899-901](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L899-L901 "Source code on GitHub") +[src/Particle.js:909-911](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L909-L911 "Source code on GitHub") Get firmware library details @@ -985,7 +1000,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getLibraryVersions -[src/Particle.js:912-917](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L912-L917 "Source code on GitHub") +[src/Particle.js:922-927](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L922-L927 "Source code on GitHub") Firmware library details for each version @@ -1002,7 +1017,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### contributeLibrary -[src/Particle.js:926-933](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L926-L933 "Source code on GitHub") +[src/Particle.js:936-943](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L936-L943 "Source code on GitHub") Contribute a new library version from a compressed archive @@ -1017,7 +1032,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### publishLibrary -[src/Particle.js:942-945](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L942-L945 "Source code on GitHub") +[src/Particle.js:952-955](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L952-L955 "Source code on GitHub") Publish the latest version of a library to the public @@ -1032,7 +1047,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### deleteLibrary -[src/Particle.js:955-957](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L955-L957 "Source code on GitHub") +[src/Particle.js:965-967](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L965-L967 "Source code on GitHub") Delete one version of a library or an entire private library @@ -1048,7 +1063,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### downloadFile -[src/Particle.js:965-976](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L965-L976 "Source code on GitHub") +[src/Particle.js:975-986](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L975-L986 "Source code on GitHub") Download an external file that may not be on the API @@ -1061,7 +1076,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listOAuthClients -[src/Particle.js:985-988](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L985-L988 "Source code on GitHub") +[src/Particle.js:995-998](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L995-L998 "Source code on GitHub") List OAuth client created by the account @@ -1076,7 +1091,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### createOAuthClient -[src/Particle.js:1001-1005](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1001-L1005 "Source code on GitHub") +[src/Particle.js:1011-1015](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1011-L1015 "Source code on GitHub") Create an OAuth client @@ -1095,7 +1110,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### updateOAuthClient -[src/Particle.js:1017-1021](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1017-L1021 "Source code on GitHub") +[src/Particle.js:1027-1031](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1027-L1031 "Source code on GitHub") Update an OAuth client @@ -1113,7 +1128,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### deleteOAuthClient -[src/Particle.js:1031-1034](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1031-L1034 "Source code on GitHub") +[src/Particle.js:1041-1044](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1041-L1044 "Source code on GitHub") Delete an OAuth client @@ -1129,7 +1144,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listProducts -[src/Particle.js:1042-1044](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1042-L1044 "Source code on GitHub") +[src/Particle.js:1052-1054](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1052-L1054 "Source code on GitHub") List products the account has access to @@ -1143,7 +1158,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getProduct -[src/Particle.js:1053-1055](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1053-L1055 "Source code on GitHub") +[src/Particle.js:1063-1065](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1063-L1065 "Source code on GitHub") Get detailed information about a product @@ -1158,7 +1173,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listProductFirmware -[src/Particle.js:1064-1066](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1064-L1066 "Source code on GitHub") +[src/Particle.js:1074-1076](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1074-L1076 "Source code on GitHub") List product firmware versions @@ -1173,7 +1188,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### uploadProductFirmware -[src/Particle.js:1079-1094](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1079-L1094 "Source code on GitHub") +[src/Particle.js:1089-1104](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1089-L1104 "Source code on GitHub") List product firmware versions @@ -1192,7 +1207,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### getProductFirmware -[src/Particle.js:1104-1106](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1104-L1106 "Source code on GitHub") +[src/Particle.js:1114-1116](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1114-L1116 "Source code on GitHub") Get information about a product firmware version @@ -1208,7 +1223,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### updateProductFirmware -[src/Particle.js:1118-1121](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1118-L1121 "Source code on GitHub") +[src/Particle.js:1128-1131](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1128-L1131 "Source code on GitHub") Update information for a product firmware version @@ -1226,7 +1241,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### downloadProductFirmware -[src/Particle.js:1131-1140](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1131-L1140 "Source code on GitHub") +[src/Particle.js:1141-1150](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1141-L1150 "Source code on GitHub") Download a product firmware binary @@ -1242,7 +1257,7 @@ Returns **[Request](https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_A ### releaseProductFirmware -[src/Particle.js:1150-1153](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1150-L1153 "Source code on GitHub") +[src/Particle.js:1160-1163](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1160-L1163 "Source code on GitHub") Release a product firmware version as the default version @@ -1258,7 +1273,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### listTeamMembers -[src/Particle.js:1162-1164](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1162-L1164 "Source code on GitHub") +[src/Particle.js:1172-1174](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1172-L1174 "Source code on GitHub") List product team members @@ -1273,7 +1288,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### inviteTeamMember -[src/Particle.js:1174-1176](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1174-L1176 "Source code on GitHub") +[src/Particle.js:1184-1186](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1184-L1186 "Source code on GitHub") Invite Particle user to a product team @@ -1289,7 +1304,7 @@ Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ### removeTeamMember -[src/Particle.js:1186-1188](https://github.com/spark/particle-api-js/blob/74edd6be01628635f60af5f705871f4fc3fde8d6/src/Particle.js#L1186-L1188 "Source code on GitHub") +[src/Particle.js:1196-1198](https://github.com/spark/particle-api-js/blob/21930d1d7329c4630c3b28691c253fc9e02fa444/src/Particle.js#L1196-L1198 "Source code on GitHub") Remove Particle user to a product team diff --git a/package.json b/package.json index 35c21d5..b3d839b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "particle-api-js", - "version": "6.5.0", + "version": "6.6.0", "description": "Particle API Client", "main": "lib/Particle.js", "scripts": {