{"version":3,"sources":["webpack:///./node_modules/url/url.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/https-browserify/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/builtin-status-codes/browser.js","webpack:///./node_modules/stream-http/lib/request.js","webpack:///./node_modules/stream-http/index.js","webpack:///./node_modules/stream-http/lib/capability.js","webpack:///./node_modules/stream-http/lib/response.js","webpack:///./node_modules/to-arraybuffer/index.js"],"names":["punycode","Url","this","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","protocolPattern","portPattern","simplePathPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","querystring","urlParse","url","parseQueryString","slashesDenoteHost","u","parse","urlFormat","obj","format","prototype","call","urlResolve","source","relative","resolve","urlResolveObject","resolveObject","TypeError","queryIndex","indexOf","splitter","uSplit","split","slashRegex","replace","join","rest","trim","length","simplePath","exec","substr","proto","lowerProto","toLowerCase","match","atSign","hostEnd","i","hec","lastIndexOf","slice","decodeURIComponent","parseHost","ipv6Hostname","hostparts","l","part","newpart","j","k","charCodeAt","validParts","notHost","bit","push","unshift","toASCII","p","h","ae","esc","encodeURIComponent","escape","qm","s","Object","keys","stringify","arrayFormat","addQueryPrefix","charAt","rel","result","tkeys","tk","tkey","rkeys","rk","rkey","v","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","exports","root","nodeType","module","freeGlobal","global","window","self","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","Math","stringFromCharCode","String","fromCharCode","error","type","RangeError","map","array","fn","mapDomain","string","parts","labels","encoded","ucs2decode","value","extra","output","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","decode","input","out","basic","index","oldi","w","t","baseMinusT","inputLength","n","bias","encode","handledCPCount","basicLength","m","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","test","key","hasOwnProperty","validateParams","params","Error","request","cb","get","extend","target","arguments","inherits","response","stream","toArrayBuffer","IncomingMessage","rStates","readyStates","decideMode","preferBinary","useFetch","capability","fetch","mozchunkedarraybuffer","msstream","arraybuffer","vbArray","ClientRequest","opts","Writable","_opts","_body","_headers","setHeader","Buffer","toString","headers","forEach","name","mode","abortController","overrideMimeType","_mode","_fetchTimer","on","_onFinish","statusValid","xhr","status","e","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","headersObj","body","method","blobConstructor","Blob","buffer","headersList","keyName","Array","isArray","signal","controller","AbortController","_fetchAbortController","requestTimeout","setTimeout","emit","abort","undefined","credentials","withCredentials","then","_fetchResponse","_connect","reason","clearTimeout","_xhr","XMLHttpRequest","open","err","process","nextTick","responseType","timeout","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","_write","chunk","encoding","destroy","end","data","flushHeaders","setNoDelay","setSocketKeepAlive","statusCodes","defaultProtocol","location","toUpperCase","req","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","writableStream","isFunction","WritableStream","ArrayBuffer","getXHR","XDomainRequest","checkTypeSupport","haveArrayBuffer","haveSlice","VBArray","UNSENT","OPENED","HEADERS_RECEIVED","fetchTimer","Readable","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","writable","write","Promise","reject","_resumeFetch","close","pipeTo","catch","reader","getReader","read","done","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","responseBody","toArray","responseText","newData","Uint8Array","MSStreamReader","byteLength","onload","readAsArrayBuffer","buf","byteOffset","isBuffer","arrayCopy","len"],"mappings":"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","file":"js/chunk-363f27f5.dc392afd.js","sourcesContent":["/*\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\n'use strict';\n\nvar punycode = require('punycode');\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/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\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 /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\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 */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\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('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && 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 (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\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 */\n var queryIndex = url.indexOf('?'),\n splitter = 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 /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\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 /*\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 */\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] && (slashes || (proto && !slashedProtocol[proto]))) {\n\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\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\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)) { hostEnd = hec; }\n }\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 */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\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)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { 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 /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && 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 /*\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 */\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 /*\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 */\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 /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\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 /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\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 */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { 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 // 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] && 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 /*\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 */\n if (typeof obj === 'string') { 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 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!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 (typeof relative === 'string') {\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 /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\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') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n 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 /*\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 */\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 = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (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 /*\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 */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } 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; } 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 === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? 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 /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\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 (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\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 */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\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 /*\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 */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\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 */\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] !== '' && (!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] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\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 */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (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\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\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","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\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","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 \"451\": \"Unavailable For Legal Reasons\",\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","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\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\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (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, useFetch)\n\tself._fetchTimer = null\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 header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\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 = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n\t\tif (capability.arraybuffer) {\n\t\t\tbody = toArrayBuffer(Buffer.concat(self._body))\n\t\t} else if (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\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tvar fetchTimer = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\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\tglobal.clearTimeout(self._fetchTimer)\n\t\t\tif (!self._destroyed)\n\t\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\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\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, self._fetchTimer)\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\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\tglobal.clearTimeout(self._fetchTimer)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\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'via'\n]\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\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.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\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.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\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\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer'))\n\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')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-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, fetchTimer) {\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.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(new Buffer(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\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\tglobal.clearTimeout(fetchTimer)\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}).catch(function (err) {\n\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\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\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\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 || !xhr.response)\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","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"],"sourceRoot":""}