{"version":3,"sources":["webpack://Jose/webpack/bootstrap","webpack://Jose/./lib/jose-core.js","webpack://Jose/./lib/jose-jwe-decrypt.js","webpack://Jose/./lib/jose-jwe-encrypt.js","webpack://Jose/./lib/jose-jwe-webcryptographer.js","webpack://Jose/./lib/jose-jws-sign.js","webpack://Jose/./lib/jose-jws-verify.js","webpack://Jose/./lib/jose-utils.js","webpack://Jose/./node_modules/base64-js/index.js","webpack://Jose/./node_modules/buffer/index.js","webpack://Jose/./node_modules/ieee754/index.js","webpack://Jose/./node_modules/isarray/index.js","webpack://Jose/(webpack)/buildin/global.js"],"names":["crypto","Utils","JoseUtils","JoseJWE","Encrypter","Decrypter","JoseJWS","Signer","Verifier","setCrypto","cp","window","subtle","webkitSubtle","Jose","WebCryptographer","atob","str","Buffer","from","toString","btoa","buffer","caniuse","r","Promise","reject","prototype","then","all","globalObject","global","getRandomValues","importKey","generateKey","exportKey","wrapKey","unwrapKey","encrypt","decrypt","sign","ArrayBuffer","Uint8Array","Uint32Array","JSON","parse","stringify","cryptographer","keyPromise","headers","base64UrlEncoder","cipherText","parts","split","length","Error","decode","alg","enc","setKeyEncryptionAlgorithm","setContentEncryptionAlgorithm","crit","cekPromise","resolve","encryptedCek","decodeArray","key","unwrapCek","bind","plainTextPromise","userHeaders","k","v","plainText","encryptPlainText","i","getKeyEncryptionAlgorithm","getContentEncryptionAlgorithm","jweProtectedHeader","encode","iv","createIV","aad","header","createCek","cek","wrapCek","encPromise","data","encodeArray","cipher","tag","setContentSignAlgorithm","keyEncryption","getCryptoConfig","jweName","content_encryption","content_sign","getSignConfig","jwa_name","Array","iv_bytes","hack","getCekWorkaround","id","enc_op","extractable","specific_cekBytes","dec_op","len","name","hash","assert","config","auth","aead","tagBytes","additionalData","tagLength","offset","byteLength","slice","keys","splitKey","macKeyPromise","encKeyPromise","cipherTextPromise","encKey","macPromise","truncatedMac","mac","arr1","arr2","macKey","hash1","hash2","dec","buf","compare","payload","signature","keyId","verify","res","kid","verified","rsaKey","n","d","purpose","cekBytesPromise","cekBytes","key_bytes","bytes","truncated_bytes","al","alFull","set","saltLength","namedCurve","publicKey","privateKey","expr","msg","keyPromises","waiting_kid","signer_aads","signer_headers","that","getContentSignAlgorithm","kidPromise","jws","Object","JWS","fromObject","kids","message","protectedHeader","unprotectedHeader","toBeSigned","typ","e","signatures","push","doSign","pl","ph","uh","kps","shift","rv","hasOwnProperty","call","obj","keyfinder","jwt","jwtRx","exec","forEach","unshift","console","log","promises","check","sig","vr","webCryptographer","importPublicKey","importRsaPublicKey","importEcPublicKey","importPrivateKey","importRsaPrivateKey","importEcPrivateKey","ecKey","usage","getKeyUsageByAlg","jwk","convertRsaKey","rk","ext","isString","String","arrayish","arr","parameters","missing","map","p","join","kty","err","er","intFromHex","parseInt","Base64Url","stripLeadingZeros","arrayFromInt32","test","arrayFromString","c","charCodeAt","arrayFromUtf8String","unescape","encodeURIComponent","stringFromArray","fromCharCode","utf8StringFromArray","decodeURIComponent","escape","isLeadingZero","j","arrayBufferConcat","args","total","arguments","sha256","digest","isCryptoKey","constructor","replace","exports","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","maxChunkLength","len2","base64","require","ieee754","isArray","SlowBuffer","INSPECT_MAX_BYTES","TYPED_ARRAY_SUPPORT","undefined","typedArraySupport","kMaxLength","__proto__","foo","subarray","createBuffer","RangeError","arg","encodingOrOffset","allocUnsafe","poolSize","_augment","value","TypeError","fromArrayBuffer","fromString","Symbol","species","defineProperty","configurable","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","fromArrayLike","array","byteOffset","isBuffer","copy","isnan","type","b","_isBuffer","a","x","y","Math","min","toLowerCase","concat","list","pos","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","swap16","swap32","swap64","apply","equals","inspect","max","match","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","isNaN","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","includes","hexWrite","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","toHex","newBuf","sliceLen","checkOffset","readUIntLE","noAssert","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","floor","objectWriteUInt16","littleEndian","writeUInt16LE","writeUInt16BE","objectWriteUInt32","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","trim","units","Infinity","leadSurrogate","byteArray","hi","lo","src","dst","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","s","NaN","rt","abs","LN2","module","g","Function"],"mappings":"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","file":"jose.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./lib/jose-core.js\");\n","/* -\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as JoseUtils from './jose-utils';\nimport { Encrypter } from './jose-jwe-encrypt';\nimport { Decrypter } from './jose-jwe-decrypt';\nimport { Signer } from './jose-jws-sign';\nimport { Verifier } from './jose-jws-verify';\nimport { WebCryptographer } from './jose-jwe-webcryptographer';\n\nexport var crypto;\n/**\n * Javascript Object Signing and Encryption library.\n *\n * @author Alok Menghrajani \n */\n\nexport var Utils = JoseUtils;\n\n/**\n * Initializes a JoseJWE object.\n */\nconst JoseJWE = {\n Encrypter,\n Decrypter\n};\n\n/**\n * Initializes a JoseJWS object.\n */\nconst JoseJWS = {\n Signer,\n Verifier\n};\n\n/**\n * Set crypto provider to use (window.crypto, node-webcrypto-ossl, node-webcrypto-pkcs11 etc.).\n */\nexport var setCrypto = function (cp) {\n crypto = cp;\n};\n\n/**\n * Default to the global \"crypto\" variable\n */\nif (typeof window !== 'undefined') {\n if (typeof window.crypto !== 'undefined') {\n setCrypto(window.crypto);\n if (!crypto.subtle) {\n crypto.subtle = crypto.webkitSubtle;\n }\n }\n}\n\nconst Jose = { JoseJWS, JoseJWE, WebCryptographer, crypto, Utils };\n\nexport default { Jose, WebCryptographer };\nexport { Jose, JoseJWE, JoseJWS, WebCryptographer };\n\n/**\n * Use Node versions of atob, btoa functions outside the browser\n */\nif (typeof atob !== 'function') {\n // eslint-disable-next-line no-global-assign\n atob = (str) => {\n return Buffer.from(str, 'base64').toString('binary');\n };\n}\n\nif (typeof btoa !== 'function') {\n // eslint-disable-next-line no-global-assign\n btoa = (str) => {\n var buffer;\n if (str instanceof Buffer) {\n buffer = str;\n } else {\n buffer = Buffer.from(str.toString(), 'binary');\n }\n return buffer.toString('base64');\n };\n}\n\n/**\n * Checks if we have all the required APIs.\n *\n * It might make sense to take a Cryptographer and delegate some of the checks\n * to the cryptographer. I however wanted to keep things simple, so I put all\n * the checks here for now.\n *\n * This list is generated manually and needs to be kept up-to-date.\n *\n * Casual testing shows that:\n * - things work in Chrome 40.0.2214.115\n * - things work in Firefox 35.0.1\n * - Safari 7.1.3 doesn't support JWK keys.\n * - Internet Explorer doesn't support Promises.\n *\n * Note: We don't check if the browser supports specific crypto operations.\n * I.e. it's possible for this function to return true, but encryption or\n * decryption to subsequently fail because the browser does not support a\n * given encryption, decryption, key wrapping, key unwrapping or hmac\n * operation.\n *\n * @return bool\n */\nexport const caniuse = () => {\n var r = true;\n\n // Promises/A+ (https://promisesaplus.com/)\n r = r && (typeof Promise === 'function');\n r = r && (typeof Promise.reject === 'function');\n r = r && (typeof Promise.prototype.then === 'function');\n r = r && (typeof Promise.all === 'function');\n\n const globalObject = window || global;\n\n // Crypto (http://www.w3.org/TR/WebCryptoAPI/)\n r = r && (typeof globalObject.crypto === 'object');\n r = r && (typeof globalObject.crypto.subtle === 'object');\n r = r && (typeof globalObject.crypto.getRandomValues === 'function');\n r = r && (typeof globalObject.crypto.subtle.importKey === 'function');\n r = r && (typeof globalObject.crypto.subtle.generateKey === 'function');\n r = r && (typeof globalObject.crypto.subtle.exportKey === 'function');\n r = r && (typeof globalObject.crypto.subtle.wrapKey === 'function');\n r = r && (typeof globalObject.crypto.subtle.unwrapKey === 'function');\n r = r && (typeof globalObject.crypto.subtle.encrypt === 'function');\n r = r && (typeof globalObject.crypto.subtle.decrypt === 'function');\n r = r && (typeof globalObject.crypto.subtle.sign === 'function');\n\n // ArrayBuffer (http://people.mozilla.org/~jorendorff/es6-draft.html#sec-arraybuffer-constructor)\n r = r && (typeof ArrayBuffer === 'function');\n r = r && (typeof Uint8Array === 'function' || typeof Uint8Array === 'object'); // Safari uses \"object\"\n r = r && (typeof Uint32Array === 'function' || typeof Uint32Array === 'object'); // Safari uses \"object\"\n // skipping Uint32Array.prototype.buffer because https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-%typedarrayprototype%-object\n\n // JSON (http://www.ecma-international.org/ecma-262/5.1/#sec-15.12.3)\n r = r && (typeof JSON === 'object');\n r = r && (typeof JSON.parse === 'function');\n r = r && (typeof JSON.stringify === 'function');\n\n // Base64 (http://www.w3.org/TR/html5/webappapis.html#dom-windowbase64-atob)\n r = r && (typeof atob === 'function');\n r = r && (typeof btoa === 'function');\n\n // skipping Array functions (map, join, push, length, etc.)\n // skipping String functions (split, charCodeAt, fromCharCode, replace, etc.)\n // skipping regexp.test and parseInt\n\n return r;\n};\n","/* -\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as Utils from './jose-utils';\n\n/**\n * Handles decryption.\n *\n * @param cryptographer an instance of WebCryptographer (or equivalent). Keep\n * in mind that decryption mutates the cryptographer.\n * @param keyPromise Promise, either RSA or shared key\n */\nexport class Decrypter {\n constructor (cryptographer, keyPromise) {\n this.cryptographer = cryptographer;\n this.keyPromise = keyPromise;\n this.headers = {};\n this.base64UrlEncoder = new Utils.Base64Url();\n }\n\n getHeaders () {\n return this.headers;\n }\n\n /**\n * Performs decryption.\n *\n * @param cipherText String\n * @return Promise\n */\n decrypt (cipherText) {\n // Split cipherText in 5 parts\n var parts = cipherText.split('.');\n if (parts.length !== 5) {\n return Promise.reject(Error('decrypt: invalid input'));\n }\n\n // part 1: header\n this.headers = JSON.parse(this.base64UrlEncoder.decode(parts[0]));\n if (!this.headers.alg) {\n return Promise.reject(Error('decrypt: missing alg'));\n }\n if (!this.headers.enc) {\n return Promise.reject(Error('decrypt: missing enc'));\n }\n this.cryptographer.setKeyEncryptionAlgorithm(this.headers.alg);\n this.cryptographer.setContentEncryptionAlgorithm(this.headers.enc);\n\n if (this.headers.crit) {\n // We don't support the crit header\n return Promise.reject(Error('decrypt: crit is not supported'));\n }\n\n var cekPromise;\n\n if (this.headers.alg === 'dir') {\n // with direct mode, we already have the cek\n cekPromise = Promise.resolve(this.keyPromise);\n } else {\n // part 2: decrypt the CEK\n // In some modes (e.g. RSA-PKCS1v1.5), you must take precautions to prevent\n // chosen-ciphertext attacks as described in RFC 3218, \"Preventing\n // the Million Message Attack on Cryptographic Message Syntax\". We currently\n // only support RSA-OAEP, so we don't generate a key if unwrapping fails.\n var encryptedCek = this.base64UrlEncoder.decodeArray(parts[1]);\n cekPromise = this.keyPromise.then(function (key) {\n return this.cryptographer.unwrapCek(encryptedCek, key);\n }.bind(this));\n }\n\n // part 3: decrypt the cipher text\n var plainTextPromise = this.cryptographer.decrypt(\n cekPromise,\n Utils.arrayFromString(parts[0]),\n this.base64UrlEncoder.decodeArray(parts[2]),\n this.base64UrlEncoder.decodeArray(parts[3]),\n this.base64UrlEncoder.decodeArray(parts[4]));\n\n return plainTextPromise.then(Utils.utf8StringFromArray);\n }\n}\n","/* -\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as Utils from './jose-utils';\n\n/**\n * Handles encryption.\n *\n * @param cryptographer an instance of WebCryptographer (or equivalent).\n * @param keyPromise Promise, either RSA or shared key\n */\nexport class Encrypter {\n constructor (cryptographer, keyPromise) {\n this.cryptographer = cryptographer;\n this.keyPromise = keyPromise;\n this.userHeaders = {};\n }\n\n /**\n * Adds a key/value pair which will be included in the header.\n *\n * The data lives in plaintext (an attacker can read the header) but is tamper\n * proof (an attacker cannot modify the header).\n *\n * Note: some headers have semantic implications. E.g. if you set the \"zip\"\n * header, you are responsible for properly compressing plainText before\n * calling encrypt().\n *\n * @param k String\n * @param v String\n */\n addHeader (k, v) {\n this.userHeaders[k] = v;\n }\n\n /**\n * Performs encryption.\n *\n * @param plainText utf-8 string\n * @return Promise\n */\n encrypt (plainText) {\n /**\n * Encrypts plainText with CEK.\n *\n * @param cekPromise Promise\n * @param plainText string\n * @return Promise\n */\n var encryptPlainText = function (cekPromise, plainText) {\n // Create header\n var headers = {};\n for (var i in this.userHeaders) {\n headers[i] = this.userHeaders[i];\n }\n headers.alg = this.cryptographer.getKeyEncryptionAlgorithm();\n headers.enc = this.cryptographer.getContentEncryptionAlgorithm();\n var jweProtectedHeader = new Utils.Base64Url().encode(JSON.stringify(headers));\n\n // Create the IV\n var iv = this.cryptographer.createIV();\n\n // Create the AAD\n var aad = Utils.arrayFromString(jweProtectedHeader);\n plainText = Utils.arrayFromUtf8String(plainText);\n\n return this.cryptographer.encrypt(iv, aad, cekPromise, plainText).then(function (r) {\n r.header = jweProtectedHeader;\n r.iv = iv;\n return r;\n });\n };\n\n var cekPromise, encryptedCek;\n\n if (this.cryptographer.getKeyEncryptionAlgorithm() === 'dir') {\n // with direct encryption, this.keyPromise provides the cek\n // and encryptedCek is empty\n cekPromise = Promise.resolve(this.keyPromise);\n encryptedCek = [];\n } else {\n // Create a CEK key\n cekPromise = this.cryptographer.createCek();\n\n // Key & Cek allows us to create the encryptedCek\n encryptedCek = Promise.all([this.keyPromise, cekPromise]).then(function (all) {\n var key = all[0];\n var cek = all[1];\n return this.cryptographer.wrapCek(cek, key);\n }.bind(this));\n }\n\n // Cek allows us to encrypy the plain text\n var encPromise = encryptPlainText.bind(this, cekPromise, plainText)();\n\n // Once we have all the promises, we can base64 encode all the pieces.\n return Promise.all([encryptedCek, encPromise]).then(function (all) {\n var encryptedCek = all[0];\n var data = all[1];\n var base64UrlEncoder = new Utils.Base64Url();\n return data.header + '.' +\n base64UrlEncoder.encodeArray(encryptedCek) + '.' +\n base64UrlEncoder.encodeArray(data.iv) + '.' +\n base64UrlEncoder.encodeArray(data.cipher) + '.' +\n base64UrlEncoder.encodeArray(data.tag);\n });\n }\n}\n","/* -\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// TODO(eslint): figure out how to properly include Jose or expose crypto object\n\nimport * as Utils from './jose-utils';\nimport { Jose } from './jose-core';\n\n/**\n * The WebCryptographer uses http://www.w3.org/TR/WebCryptoAPI/ to perform\n * various crypto operations. In theory, this should help build the library with\n * different underlying crypto APIs. I'm however unclear if we'll run into code\n * duplication or callback vs Promise based API issues.\n */\nexport class WebCryptographer {\n constructor () {\n this.setKeyEncryptionAlgorithm('RSA-OAEP');\n this.setContentEncryptionAlgorithm('A256GCM');\n this.setContentSignAlgorithm('RS256');\n }\n\n /**\n * Overrides the default key encryption algorithm\n * @param alg string\n */\n setKeyEncryptionAlgorithm (alg) {\n this.keyEncryption = this.getCryptoConfig(alg);\n }\n\n getKeyEncryptionAlgorithm () {\n return this.keyEncryption.jweName;\n }\n\n /**\n * Overrides the default content encryption algorithm\n * @param alg string\n */\n setContentEncryptionAlgorithm (alg) {\n this.content_encryption = this.getCryptoConfig(alg);\n }\n\n getContentEncryptionAlgorithm () {\n return this.content_encryption.jweName;\n }\n\n /**\n * Overrides the default content sign algorithm\n * @param alg string\n */\n setContentSignAlgorithm (alg) {\n this.content_sign = this.getSignConfig(alg);\n }\n\n getContentSignAlgorithm () {\n return this.content_sign.jwa_name;\n }\n\n /**\n * Generates an IV.\n * This function mainly exists so that it can be mocked for testing purpose.\n *\n * @return Uint8Array with random bytes\n */\n createIV () {\n var iv = new Uint8Array(new Array(this.content_encryption.iv_bytes));\n return Jose.crypto.getRandomValues(iv);\n }\n\n /**\n * Creates a random content encryption key.\n * This function mainly exists so that it can be mocked for testing purpose.\n *\n * @return Promise\n */\n createCek () {\n var hack = this.getCekWorkaround(this.content_encryption);\n return Jose.crypto.subtle.generateKey(hack.id, true, hack.enc_op);\n }\n\n wrapCek (cek, key) {\n return Jose.crypto.subtle.wrapKey('raw', cek, key, this.keyEncryption.id);\n }\n\n unwrapCek (cek, key) {\n var hack = this.getCekWorkaround(this.content_encryption);\n var extractable = (this.content_encryption.specific_cekBytes > 0);\n var keyEncryption = this.keyEncryption.id;\n\n return Jose.crypto.subtle.unwrapKey('raw', cek, key, keyEncryption, hack.id, extractable, hack.dec_op);\n }\n\n /**\n * Returns algorithm and operation needed to create a CEK.\n *\n * In some cases, e.g. A128CBC-HS256, the CEK gets split into two keys. The Web\n * Crypto API does not allow us to generate an arbitrary number of bytes and\n * then create a CryptoKey without any associated algorithm. We therefore piggy\n * back on AES-CBS and HMAC which allows the creation of CEKs of size 16, 32, 64\n * and 128 bytes.\n */\n getCekWorkaround (alg) {\n var len = alg.specific_cekBytes;\n if (len) {\n if (len === 16) {\n return { id: { name: 'AES-CBC', length: 128 }, enc_op: ['encrypt'], dec_op: ['decrypt'] };\n } else if (len === 32) {\n return { id: { name: 'AES-CBC', length: 256 }, enc_op: ['encrypt'], dec_op: ['decrypt'] };\n } else if (len === 64) {\n return { id: { name: 'HMAC', hash: { name: 'SHA-256' } }, enc_op: ['sign'], dec_op: ['verify'] };\n } else if (len === 128) {\n return { id: { name: 'HMAC', hash: { name: 'SHA-384' } }, enc_op: ['sign'], dec_op: ['verify'] };\n } else {\n this.assert(false, 'getCekWorkaround: invalid len');\n }\n }\n return { id: alg.id, enc_op: ['encrypt'], dec_op: ['decrypt'] };\n }\n\n /**\n * Encrypts plainText with cek.\n *\n * @param iv Uint8Array\n * @param aad Uint8Array\n * @param cekPromise Promise\n * @param plainText Uint8Array\n * @return Promise\n */\n encrypt (iv, aad, cekPromise, plainText) {\n var config = this.content_encryption;\n if (iv.length !== config.iv_bytes) {\n return Promise.reject(Error('invalid IV length'));\n }\n if (config.auth.aead) {\n var tagBytes = config.auth.tagBytes;\n\n var enc = {\n name: config.id.name,\n iv: iv,\n additionalData: aad,\n tagLength: tagBytes * 8\n };\n\n return cekPromise.then(function (cek) {\n return Jose.crypto.subtle.encrypt(enc, cek, plainText).then(function (cipherText) {\n var offset = cipherText.byteLength - tagBytes;\n return {\n cipher: cipherText.slice(0, offset),\n tag: cipherText.slice(offset)\n };\n });\n });\n } else {\n var keys = this.splitKey(config, cekPromise, ['encrypt']);\n var macKeyPromise = keys[0];\n var encKeyPromise = keys[1];\n\n // Encrypt the plain text\n var cipherTextPromise = encKeyPromise.then(function (encKey) {\n var enc = {\n name: config.id.name,\n iv: iv\n };\n return Jose.crypto.subtle.encrypt(enc, encKey, plainText);\n });\n\n // compute MAC\n var macPromise = cipherTextPromise.then((cipherText) => {\n return this.truncatedMac(\n config,\n macKeyPromise,\n aad,\n iv,\n cipherText);\n });\n\n return Promise.all([cipherTextPromise, macPromise]).then(function (all) {\n var cipherText = all[0];\n var mac = all[1];\n return {\n cipher: cipherText,\n tag: mac\n };\n });\n }\n }\n\n /**\n * Compares two Uint8Arrays in constant time.\n *\n * @return Promise\n */\n compare (config, macKeyPromise, arr1, arr2) {\n this.assert(arr1 instanceof Uint8Array, 'compare: invalid input');\n this.assert(arr2 instanceof Uint8Array, 'compare: invalid input');\n\n return macKeyPromise.then(function (macKey) {\n var hash1 = Jose.crypto.subtle.sign(config.auth.id, macKey, arr1);\n var hash2 = Jose.crypto.subtle.sign(config.auth.id, macKey, arr2);\n return Promise.all([hash1, hash2]).then(function (all) {\n var hash1 = new Uint8Array(all[0]);\n var hash2 = new Uint8Array(all[1]);\n if (hash1.length !== hash2.length) {\n throw new Error('compare failed');\n }\n for (var i = 0; i < hash1.length; i++) {\n if (hash1[i] !== hash2[i]) {\n throw new Error('compare failed');\n }\n }\n return Promise.resolve(null);\n });\n });\n }\n\n /**\n * Decrypts cipherText with cek. Validates the tag.\n *\n * @param cekPromise Promise\n * @param aad protected header\n * @param iv IV\n * @param cipherText text to be decrypted\n * @param tag to be verified\n * @return Promise\n */\n decrypt (cekPromise, aad, iv, cipherText, tag) {\n if (iv.length !== this.content_encryption.iv_bytes) {\n return Promise.reject(Error('decryptCiphertext: invalid IV'));\n }\n\n var config = this.content_encryption;\n if (config.auth.aead) {\n var dec = {\n name: config.id.name,\n iv: iv,\n additionalData: aad,\n tagLength: config.auth.tagBytes * 8\n };\n\n return cekPromise.then(function (cek) {\n var buf = Utils.arrayBufferConcat(cipherText, tag);\n return Jose.crypto.subtle.decrypt(dec, cek, buf);\n });\n } else {\n var keys = this.splitKey(config, cekPromise, ['decrypt']);\n var macKeyPromise = keys[0];\n var encKeyPromise = keys[1];\n\n // Validate the MAC\n var macPromise = this.truncatedMac(\n config,\n macKeyPromise,\n aad,\n iv,\n cipherText);\n\n return Promise.all([encKeyPromise, macPromise]).then((all) => {\n var encKey = all[0];\n var mac = all[1];\n\n return this.compare(config, macKeyPromise, new Uint8Array(mac), tag).then(() => {\n var dec = {\n name: config.id.name,\n iv: iv\n };\n return Jose.crypto.subtle.decrypt(dec, encKey, cipherText);\n }).catch(() => {\n return Promise.reject(Error('decryptCiphertext: MAC failed.'));\n });\n });\n }\n }\n\n /**\n * Signs plainText.\n *\n * @param aad json\n * @param payload String or json\n * @param keyPromise Promise\n * @return Promise\n */\n sign (aad, payload, keyPromise) {\n var config = this.content_sign;\n\n if (aad.alg) {\n config = this.getSignConfig(aad.alg);\n }\n\n // Encrypt the plain text\n return keyPromise.then(function (key) {\n var base64UrlEncoder = new Utils.Base64Url();\n return Jose.crypto.subtle.sign(config.id, key, Utils.arrayFromString(base64UrlEncoder.encode(JSON.stringify(aad)) + '.' + base64UrlEncoder.encodeArray(payload)));\n });\n }\n\n /**\n * Verify JWS.\n *\n * @param payload Base64Url encoded payload\n * @param aad String Base64Url encoded JSON representation of the protected JWS header\n * @param signature Uint8Array containing the signature\n * @param keyPromise Promise\n * @param keyId value of the kid JoseHeader, it'll be passed as part of the result to the returned promise\n * @return Promise\n */\n verify (aad, payload, signature, keyPromise, keyId) {\n var config = this.content_sign;\n\n return keyPromise.then(function (key) {\n return Jose.crypto.subtle.verify(config.id, key, signature, Utils.arrayFromString(aad + '.' + payload)).then(function (res) {\n return { kid: keyId, verified: res };\n });\n });\n }\n\n keyId (rsaKey) {\n return Utils.sha256(rsaKey.n + '+' + rsaKey.d);\n }\n\n /**\n * Splits a CEK into two pieces: a MAC key and an ENC key.\n *\n * This code is structured around the fact that the crypto API does not provide\n * a way to validate truncated MACs. The MAC key is therefore always imported to\n * sign data.\n *\n * @param config (used for key lengths & algorithms)\n * @param cekPromise Promise CEK key to split\n * @param purpose Array usages of the imported key\n * @return [Promise, Promise]\n */\n splitKey (config, cekPromise, purpose) {\n // We need to split the CEK key into a MAC and ENC keys\n var cekBytesPromise = cekPromise.then(function (cek) {\n return Jose.crypto.subtle.exportKey('raw', cek);\n });\n var macKeyPromise = cekBytesPromise.then(function (cekBytes) {\n if (cekBytes.byteLength * 8 !== config.id.length + config.auth.key_bytes * 8) {\n return Promise.reject(Error('encryptPlainText: incorrect cek length'));\n }\n var bytes = cekBytes.slice(0, config.auth.key_bytes);\n return Jose.crypto.subtle.importKey('raw', bytes, config.auth.id, false, ['sign']);\n });\n var encKeyPromise = cekBytesPromise.then(function (cekBytes) {\n if (cekBytes.byteLength * 8 !== config.id.length + config.auth.key_bytes * 8) {\n return Promise.reject(Error('encryptPlainText: incorrect cek length'));\n }\n var bytes = cekBytes.slice(config.auth.key_bytes);\n return Jose.crypto.subtle.importKey('raw', bytes, config.id, false, purpose);\n });\n return [macKeyPromise, encKeyPromise];\n }\n\n /**\n * Converts the Jose web algorithms into data which is\n * useful for the Web Crypto API.\n *\n * length = in bits\n * bytes = in bytes\n */\n getCryptoConfig (alg) {\n switch (alg) {\n // Key encryption\n case 'RSA-OAEP':\n return {\n jweName: 'RSA-OAEP',\n id: { name: 'RSA-OAEP', hash: { name: 'SHA-1' } }\n };\n case 'RSA-OAEP-256':\n return {\n jweName: 'RSA-OAEP-256',\n id: { name: 'RSA-OAEP', hash: { name: 'SHA-256' } }\n };\n case 'A128KW':\n return {\n jweName: 'A128KW',\n id: { name: 'AES-KW', length: 128 }\n };\n case 'A256KW':\n return {\n jweName: 'A256KW',\n id: { name: 'AES-KW', length: 256 }\n };\n case 'dir':\n return {\n jweName: 'dir'\n };\n\n // Content encryption\n case 'A128CBC-HS256':\n return {\n jweName: 'A128CBC-HS256',\n id: { name: 'AES-CBC', length: 128 },\n iv_bytes: 16,\n specific_cekBytes: 32,\n auth: {\n key_bytes: 16,\n id: { name: 'HMAC', hash: { name: 'SHA-256' } },\n truncated_bytes: 16\n }\n };\n case 'A256CBC-HS512':\n return {\n jweName: 'A256CBC-HS512',\n id: { name: 'AES-CBC', length: 256 },\n iv_bytes: 16,\n specific_cekBytes: 64,\n auth: {\n key_bytes: 32,\n id: { name: 'HMAC', hash: { name: 'SHA-512' } },\n truncated_bytes: 32\n }\n };\n case 'A128GCM':\n return {\n jweName: 'A128GCM',\n id: { name: 'AES-GCM', length: 128 },\n iv_bytes: 12,\n auth: {\n aead: true,\n tagBytes: 16\n }\n };\n case 'A256GCM':\n return {\n jweName: 'A256GCM',\n id: { name: 'AES-GCM', length: 256 },\n iv_bytes: 12,\n auth: {\n aead: true,\n tagBytes: 16\n }\n };\n default:\n throw Error('unsupported algorithm: ' + alg);\n }\n }\n\n /**\n * Computes a truncated MAC.\n *\n * @param config configuration\n * @param macKeyPromise Promise mac key\n * @param aad Uint8Array\n * @param iv Uint8Array\n * @param cipherText Uint8Array\n * @return Promise truncated MAC\n */\n truncatedMac (config, macKeyPromise, aad, iv, cipherText) {\n return macKeyPromise.then(function (macKey) {\n var al = new Uint8Array(Utils.arrayFromInt32(aad.length * 8));\n var alFull = new Uint8Array(8);\n alFull.set(al, 4);\n var buf = Utils.arrayBufferConcat(aad, iv, cipherText, alFull);\n return Jose.crypto.subtle.sign(config.auth.id, macKey, buf).then(function (bytes) {\n return bytes.slice(0, config.auth.truncated_bytes);\n });\n });\n }\n\n /**\n * Converts the Jose web algorithms into data which is\n * useful for the Web Crypto API.\n */\n getSignConfig (alg) {\n switch (alg) {\n case 'RS256':\n return {\n jwa_name: 'RS256',\n id: { name: 'RSASSA-PKCS1-v1_5', hash: { name: 'SHA-256' } }\n };\n case 'RS384':\n return {\n jwa_name: 'RS384',\n id: { name: 'RSASSA-PKCS1-v1_5', hash: { name: 'SHA-384' } }\n };\n case 'RS512':\n return {\n jwa_name: 'RS512',\n id: { name: 'RSASSA-PKCS1-v1_5', hash: { name: 'SHA-512' } }\n };\n case 'PS256':\n return {\n jwa_name: 'PS256',\n id: { name: 'RSA-PSS', hash: { name: 'SHA-256' }, saltLength: 20 }\n };\n case 'PS384':\n return {\n jwa_name: 'PS384',\n id: { name: 'RSA-PSS', hash: { name: 'SHA-384' }, saltLength: 20 }\n };\n case 'PS512':\n return {\n jwa_name: 'PS512',\n id: { name: 'RSA-PSS', hash: { name: 'SHA-512' }, saltLength: 20 }\n };\n case 'HS256':\n return {\n jwa_name: 'HS256',\n id: { name: 'HMAC', hash: { name: 'SHA-256' } }\n };\n case 'HS384':\n return {\n jwa_name: 'HS384',\n id: { name: 'HMAC', hash: { name: 'SHA-384' } }\n };\n case 'HS512':\n return {\n jwa_name: 'HS512',\n id: { name: 'HMAC', hash: { name: 'SHA-512' } }\n };\n case 'ES256':\n return {\n jwa_name: 'ES256',\n id: { name: 'ECDSA', namedCurve: 'P-256', hash: { name: 'SHA-256' } }\n };\n case 'ES384':\n return {\n jwa_name: 'ES384',\n id: { name: 'ECDSA', namedCurve: 'P-384', hash: { name: 'SHA-384' } }\n };\n case 'ES512':\n return {\n jwa_name: 'ES512',\n id: { name: 'ECDSA', namedCurve: 'P-521', hash: { name: 'SHA-512' } }\n };\n default:\n throw Error('unsupported algorithm: ' + alg);\n }\n }\n\n /**\n * Derives key usage from algorithm's name\n *\n * @param alg String algorithm name\n * @returns {*}\n */\n getKeyUsageByAlg (alg) {\n switch (alg) {\n // signature\n case 'RS256':\n case 'RS384':\n case 'RS512':\n case 'PS256':\n case 'PS384':\n case 'PS512':\n case 'HS256':\n case 'HS384':\n case 'HS512':\n case 'ES256':\n case 'ES384':\n case 'ES512':\n case 'ES256K':\n return {\n publicKey: 'verify',\n privateKey: 'sign'\n };\n // key encryption\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'A128KW':\n case 'A256KW':\n return {\n publicKey: 'wrapKey',\n privateKey: 'unwrapKey'\n };\n default:\n throw Error('unsupported algorithm: ' + alg);\n }\n }\n\n /**\n * Feel free to override this function.\n */\n assert (expr, msg) {\n if (!expr) {\n throw new Error(msg);\n }\n }\n}\n","/* -\n * Copyright 2015 Peculiar Ventures\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as Utils from './jose-utils';\n\n/**\n * Handles decryption.\n *\n * @param cryptographer an instance of WebCryptographer (or equivalent). Keep\n * in mind that decryption mutates the cryptographer.\n *\n * @author Patrizio Bruno \n */\nexport class Signer {\n constructor (cryptographer) {\n this.cryptographer = cryptographer;\n\n this.keyPromises = {};\n this.waiting_kid = 0;\n this.headers = {};\n this.signer_aads = {};\n this.signer_headers = {};\n }\n\n /**\n * Adds a signer to JoseJWS instance.\n *\n * @param key private key in json format. Parameters can be base64\n * encoded, strings or number (for e.g. 'e'), or CryptoKey.\n * @param keyId a string identifying the key. OPTIONAL\n * @param aad Object protected header\n * @param header Object unprotected header\n */\n addSigner (key, keyId, aad, header) {\n var that = this;\n var keyPromise;\n if (Utils.isCryptoKey(key)) {\n keyPromise = new Promise(function (resolve) {\n resolve(key);\n });\n } else {\n var alg;\n if (aad && aad.alg) {\n alg = aad.alg;\n } else {\n alg = that.cryptographer.getContentSignAlgorithm();\n }\n keyPromise = Utils.importPrivateKey(key, alg, 'sign');\n }\n\n var kidPromise;\n if (keyId) {\n kidPromise = new Promise(function (resolve) {\n resolve(keyId);\n });\n } else if (Utils.isCryptoKey(key)) {\n throw new Error('keyId is a mandatory argument when the key is a CryptoKey');\n } else {\n kidPromise = this.cryptographer.keyId(key);\n }\n\n that.waiting_kid++;\n\n return kidPromise.then(function (kid) {\n that.keyPromises[kid] = keyPromise;\n that.waiting_kid--;\n if (aad) {\n that.signer_aads[kid] = aad;\n }\n if (header) {\n that.signer_headers[kid] = header;\n }\n return kid;\n });\n }\n\n /**\n * Adds a signature to a JWS object\n * @param jws JWS Object to be signed or its representation\n * @param aad Object protected header\n * @param header Object unprotected header\n * @return Promise\n */\n addSignature (jws, aad, header) {\n if (Utils.isString(jws)) {\n jws = JSON.parse(jws);\n }\n\n if (jws.payload && Utils.isString(jws.payload) &&\n jws.protected && Utils.isString(jws.protected) &&\n jws.header && jws.header instanceof Object &&\n jws.signature && Utils.isString(jws.signature)) {\n return this.sign(JWS.fromObject(jws), aad, header);\n } else {\n throw new Error('JWS is not a valid JWS object');\n }\n }\n\n /**\n * Computes signature.\n *\n * @param payload JWS Object or utf-8 string to be signed\n * @param aad Object protected header\n * @param header Object unprotected header\n * @return Promise\n */\n sign (payload, aad, header) {\n var that = this;\n var kids = [];\n\n if (Object.keys(that.keyPromises).length === 0) {\n throw new Error('No signers defined. At least one is required to sign the JWS.');\n }\n\n if (that.waiting_kid) {\n throw new Error('still generating key IDs');\n }\n\n function sign (message, protectedHeader, unprotectedHeader, keyPromise, kid) {\n var toBeSigned;\n\n if (!protectedHeader) {\n protectedHeader = {};\n }\n\n if (!protectedHeader.alg) {\n protectedHeader.alg = that.cryptographer.getContentSignAlgorithm();\n protectedHeader.typ = 'JWT';\n }\n\n if (!protectedHeader.kid) {\n protectedHeader.kid = kid;\n }\n\n if (Utils.isString(message)) {\n toBeSigned = Utils.arrayFromUtf8String(message);\n } else {\n try {\n toBeSigned = Utils.arrayish(message);\n } catch (e) {\n if (message instanceof JWS) {\n toBeSigned = Utils.arrayFromString(new Utils.Base64Url().decode(message.payload));\n } else if (message instanceof Object) {\n toBeSigned = Utils.arrayFromUtf8String(JSON.stringify(message));\n } else {\n throw new Error('cannot sign this message');\n }\n }\n }\n\n return that.cryptographer.sign(protectedHeader, toBeSigned, keyPromise).then(function (signature) {\n var jws = new JWS(protectedHeader, unprotectedHeader, toBeSigned, signature);\n if (message instanceof JWS) {\n delete jws.payload;\n if (!message.signatures) {\n message.signatures = [jws];\n } else {\n message.signatures.push(jws);\n }\n return message;\n }\n return jws;\n });\n }\n\n function doSign (pl, ph, uh, kps, kids) {\n if (kids.length) {\n var kid = kids.shift();\n var rv = sign(pl, that.signer_aads[kid] || ph, that.signer_headers[kid] || uh, kps[kid], kid);\n if (kids.length) {\n rv = rv.then(function (jws) {\n return doSign(jws, null, null, kps, kids);\n });\n }\n return rv;\n }\n }\n\n for (var kid in that.keyPromises) {\n if (Object.prototype.hasOwnProperty.call(that.keyPromises, kid)) {\n kids.push(kid);\n }\n }\n return doSign(payload, aad, header, that.keyPromises, kids);\n }\n}\n\n/**\n * Initialize a JWS object.\n *\n * @param protectedHeader protected header (JS object)\n * @param payload Uint8Array payload to be signed\n * @param signature ArrayBuffer signature of the payload\n * @param header unprotected header (JS object)\n *\n * @constructor\n */\nexport class JWS {\n constructor (protectedHeader, header, payload, signature) {\n this.header = header;\n var base64UrlEncoder = new Utils.Base64Url();\n this.payload = base64UrlEncoder.encodeArray(payload);\n if (signature) {\n this.signature = base64UrlEncoder.encodeArray(signature);\n }\n this.protected = base64UrlEncoder.encode(JSON.stringify(protectedHeader));\n }\n\n fromObject (obj) {\n var rv = new JWS(obj.protected, obj.header, obj.payload, null);\n rv.signature = obj.signature;\n rv.signatures = obj.signatures;\n return rv;\n }\n\n /**\n * Serialize a JWS object using the JSON serialization format\n *\n * @returns {Object} a copy of this\n */\n JsonSerialize () {\n return JSON.stringify(this);\n }\n\n /**\n * Serialize a JWS object using the Compact Serialization Format\n *\n * @returns {string} BASE64URL(UTF8(PROTECTED HEADER)).BASE64URL(PAYLOAD).BASE64URL(SIGNATURE)\n */\n CompactSerialize () {\n return this.protected + '.' + this.payload + '.' + this.signature;\n }\n}\n","/* -\n * Copyright 2015 Peculiar Ventures\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as Utils from './jose-utils';\n\n/**\n * Handles signature verification.\n *\n * @param cryptographer an instance of WebCryptographer (or equivalent). Keep\n * in mind that decryption mutates the cryptographer.\n * @param message a JWS message\n * @param keyfinder (optional) a function returning a Promise given\n * a key id\n *\n * @author Patrizio Bruno \n */\nexport class Verifier {\n constructor (cryptographer, message, keyfinder) {\n var that = this;\n var alg;\n var jwt;\n var aad;\n var header;\n var payload;\n var signatures;\n var protectedHeader;\n var jwtRx = /^([0-9a-z_-]+)\\.([0-9a-z_-]+)\\.([0-9a-z_-]+)$/i;\n\n that.cryptographer = cryptographer;\n\n alg = cryptographer.getContentSignAlgorithm();\n\n if (Utils.isString(message)) {\n if ((jwt = jwtRx.exec(message))) {\n if (jwt.length !== 4) {\n throw new Error('wrong JWS compact serialization format');\n }\n\n message = {\n protected: jwt[1],\n payload: jwt[2],\n signature: jwt[3]\n };\n } else {\n message = JSON.parse(message);\n }\n } else if (typeof message !== 'object') {\n throw new Error('data format not supported');\n }\n\n aad = message.protected;\n header = message.header;\n payload = message.payload;\n signatures = message.signatures instanceof Array ? message.signatures.slice(0) : [];\n\n signatures.forEach(function (sign) {\n sign.aad = sign.protected;\n sign.protected = JSON.parse(new Utils.Base64Url().decode(sign.protected));\n });\n\n that.aad = aad;\n protectedHeader = new Utils.Base64Url().decode(aad);\n try {\n protectedHeader = JSON.parse(protectedHeader);\n } catch (e) {\n }\n\n if (!protectedHeader && !header) {\n throw new Error('at least one header is required');\n }\n\n if (!protectedHeader.alg) {\n throw new Error(\"'alg' is a mandatory header\");\n }\n\n if (protectedHeader.alg !== alg) {\n throw new Error(\"the alg header '\" + protectedHeader.alg + \"' doesn't match the requested algorithm '\" + alg + \"'\");\n }\n\n if (protectedHeader && protectedHeader.typ && protectedHeader.typ !== 'JWT') {\n throw new Error(\"typ '\" + protectedHeader.typ + \"' not supported\");\n }\n\n if (message.signature) {\n signatures.unshift({\n aad: aad,\n protected: protectedHeader,\n header: header,\n signature: message.signature\n });\n }\n\n that.signatures = [];\n for (var i = 0; i < signatures.length; i++) {\n that.signatures[i] = JSON.parse(JSON.stringify(signatures[i]));\n that.signatures[i].signature = Utils.arrayFromString(new Utils.Base64Url().decode(signatures[i].signature));\n }\n\n that.payload = payload;\n\n that.keyPromises = {};\n that.waiting_kid = 0;\n\n if (keyfinder) {\n that.keyfinder = keyfinder;\n }\n }\n\n /**\n * Add supported recipients to verify multiple signatures\n *\n * @param key public key in json format. Parameters can be base64\n * encoded, strings or number (for 'e'), or CryptoKey.\n * @param keyId a string identifying the key. OPTIONAL\n * @param alg String signature algorithm. OPTIONAL\n * @returns Promise a Promise of a key id\n */\n addRecipient (key, keyId, alg) {\n var that = this;\n var kidPromise;\n var keyPromise;\n if (Utils.isCryptoKey(key)) {\n keyPromise = new Promise(function (resolve) { resolve(key); });\n } else {\n keyPromise = Utils.importPublicKey(key, alg || that.cryptographer.getContentSignAlgorithm(), 'verify');\n }\n\n if (keyId) {\n kidPromise = new Promise(function (resolve) {\n resolve(keyId);\n });\n } else if (Utils.isCryptoKey(key)) {\n throw new Error('keyId is a mandatory argument when the key is a CryptoKey');\n } else {\n console.log(\"it's unsafe to omit a keyId\");\n kidPromise = this.cryptographer.keyId(key);\n }\n\n that.waiting_kid++;\n\n return kidPromise.then(function (kid) {\n that.keyPromises[kid] = keyPromise;\n that.waiting_kid--;\n return kid;\n });\n }\n\n /**\n * Verifies a JWS signature\n *\n * @returns Promise a Promise of an array of objects { kid: string, verified: bool, payload?: string }\n *\n * payload is only populated and usable if verified is true\n */\n verify () {\n var that = this;\n var signatures = that.signatures;\n var keyPromises = that.keyPromises;\n var keyfinder = that.keyfinder;\n var promises = [];\n var check = !!keyfinder || Object.keys(that.keyPromises).length > 0;\n\n if (!check) {\n throw new Error('No recipients defined. At least one is required to verify the JWS.');\n }\n\n if (that.waiting_kid) {\n throw new Error('still generating key IDs');\n }\n\n signatures.forEach(function (sig) {\n var kid = sig.protected.kid;\n if (keyfinder) {\n keyPromises[kid] = keyfinder(kid);\n }\n promises.push(that.cryptographer.verify(sig.aad, that.payload, sig.signature, keyPromises[kid], kid)\n .then(function (vr) {\n if (vr.verified) {\n vr.payload = new Utils.Base64Url().decode(that.payload);\n }\n return vr;\n }));\n });\n return Promise.all(promises);\n }\n}\n","/* -\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// TODO(eslint): figure out how to properly include Jose or expose crypto object\n\nimport { WebCryptographer } from './jose-jwe-webcryptographer';\nimport { Jose } from './jose-core';\nconst webCryptographer = new WebCryptographer();\n\n/**\n * Import a public key in JWK format, either RSA or ECDSA.\n *\n * @param key JWK public key\n * @param alg Name of the JWA signing algorithm (e.g. RS256)\n * @return Promise\n */\nexport const importPublicKey = (key, alg) => {\n switch (alg) {\n case 'RS256':\n case 'RS384':\n case 'RS512':\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return importRsaPublicKey(key, alg);\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return importEcPublicKey(key, alg);\n default:\n throw Error('unsupported algorithm: ' + alg);\n }\n};\n\n/**\n * Import a private key in JWK format, either RSA or EC.\n *\n * @param key JWK private key\n * @param alg Name of the JWA signing algorithm (e.g. RS256)\n * @return Promise\n */\nexport const importPrivateKey = (key, alg) => {\n switch (alg) {\n case 'RS256':\n case 'RS384':\n case 'RS512':\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return importRsaPrivateKey(key, alg);\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return importEcPrivateKey(key, alg);\n default:\n throw Error('unsupported algorithm: ' + alg);\n }\n};\n\n/**\n * Import a public EC key in JWK format.\n *\n * @param ecKey JWK public key\n * @param alg Name of the JWA signing algorithm (e.g. ES256)\n * @return Promise\n */\nexport const importEcPublicKey = (ecKey, alg) => {\n var config = webCryptographer.getSignConfig(alg);\n var usage = webCryptographer.getKeyUsageByAlg(alg);\n\n return Jose.crypto.subtle.importKey('jwk', ecKey, config.id, false, [usage.publicKey]);\n};\n\n/**\n * Import a private EC key in JWK format.\n *\n * @param ecKey JWK private key\n * @param alg Name of the JWA signing algorithm (e.g. ES256)\n * @return Promise\n */\nexport const importEcPrivateKey = (ecKey, alg) => {\n var config = webCryptographer.getSignConfig(alg);\n var usage = webCryptographer.getKeyUsageByAlg(alg);\n\n return Jose.crypto.subtle.importKey('jwk', ecKey, config.id, false, [usage.privateKey]);\n};\n\n/**\n * Converts the output from `openssl x509 -text` or `openssl rsa -text` into a\n * CryptoKey which can then be used with RSA-OAEP. Also accepts (and validates)\n * JWK keys.\n *\n * TODO: this code probably belongs in the webcryptographer.\n *\n * @param rsaKey public RSA key in json format. Parameters can be base64\n * encoded, strings or number (for 'e').\n * @param alg String, name of the algorithm\n * @return Promise\n */\nexport const importRsaPublicKey = (rsaKey, alg) => {\n var jwk;\n var config;\n var usage = webCryptographer.getKeyUsageByAlg(alg);\n\n if (usage.publicKey === 'wrapKey') {\n if (!rsaKey.alg) {\n rsaKey.alg = alg;\n }\n jwk = convertRsaKey(rsaKey, ['n', 'e']);\n config = webCryptographer.getCryptoConfig(alg);\n } else {\n var rk = {};\n for (var name in rsaKey) {\n if (Object.prototype.hasOwnProperty.call(rsaKey, name)) {\n rk[name] = rsaKey[name];\n }\n }\n\n if (!rk.alg && alg) {\n rk.alg = alg;\n }\n config = webCryptographer.getSignConfig(rk.alg);\n jwk = convertRsaKey(rk, ['n', 'e']);\n jwk.ext = true;\n }\n return Jose.crypto.subtle.importKey('jwk', jwk, config.id, false, [usage.publicKey]);\n};\n\n/**\n * Converts the output from `openssl x509 -text` or `openssl rsa -text` into a\n * CryptoKey which can then be used with RSA-OAEP and RSA. Also accepts (and validates)\n * JWK keys.\n *\n * TODO: this code probably belongs in the webcryptographer.\n *\n * @param rsaKey private RSA key in json format. Parameters can be base64\n * encoded, strings or number (for 'e').\n * @param alg String, name of the algorithm\n * @return Promise\n */\nexport const importRsaPrivateKey = (rsaKey, alg) => {\n var jwk;\n var config;\n var usage = webCryptographer.getKeyUsageByAlg(alg);\n\n if (usage.privateKey === 'unwrapKey') {\n if (!rsaKey.alg) {\n rsaKey.alg = alg;\n }\n jwk = convertRsaKey(rsaKey, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']);\n config = webCryptographer.getCryptoConfig(alg);\n } else {\n var rk = {};\n for (var name in rsaKey) {\n if (Object.prototype.hasOwnProperty.call(rsaKey, name)) {\n rk[name] = rsaKey[name];\n }\n }\n config = webCryptographer.getSignConfig(alg);\n if (!rk.alg && alg) {\n rk.alg = alg;\n }\n jwk = convertRsaKey(rk, ['n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi']);\n jwk.ext = true;\n }\n return Jose.crypto.subtle.importKey('jwk', jwk, config.id, false, [usage.privateKey]);\n};\n\n// Private functions\n\nexport const isString = (str) => {\n return ((typeof (str) === 'string') || (str instanceof String));\n};\n\n/**\n * Takes an arrayish (an array, ArrayBuffer or Uint8Array)\n * and returns an array or a Uint8Array.\n *\n * @param arr arrayish\n * @return array or Uint8Array\n */\nexport const arrayish = (arr) => {\n if (arr instanceof Array) {\n return arr;\n }\n if (arr instanceof Uint8Array) {\n return arr;\n }\n if (arr instanceof ArrayBuffer) {\n return new Uint8Array(arr);\n }\n webCryptographer.assert(false, 'arrayish: invalid input');\n};\n\n/**\n * Checks if an RSA key contains all the expected parameters. Also checks their\n * types. Converts hex encoded strings (or numbers) to base64.\n *\n * @param rsaKey RSA key in json format. Parameters can be base64 encoded,\n * strings or number (for 'e').\n * @param parameters array\n * @return json\n */\nexport const convertRsaKey = (rsaKey, parameters) => {\n var r = {};\n var alg;\n\n // Check that we have all the parameters\n var missing = [];\n parameters.map(function (p) { if (typeof (rsaKey[p]) === 'undefined') { missing.push(p); } });\n\n if (missing.length > 0) {\n webCryptographer.assert(false, 'convertRsaKey: Was expecting ' + missing.join());\n }\n\n // kty is either missing or is set to \"RSA\"\n if (typeof (rsaKey.kty) !== 'undefined') {\n webCryptographer.assert(rsaKey.kty === 'RSA', \"convertRsaKey: expecting rsaKey['kty'] to be 'RSA'\");\n }\n r.kty = 'RSA';\n\n try {\n webCryptographer.getSignConfig(rsaKey.alg);\n alg = rsaKey.alg;\n } catch (err) {\n try {\n webCryptographer.getCryptoConfig(rsaKey.alg);\n alg = rsaKey.alg;\n } catch (er) {\n webCryptographer.assert(alg, \"convertRsaKey: expecting rsaKey['alg'] to have a valid value\");\n }\n }\n r.alg = alg;\n\n // note: we punt on checking key_ops\n\n var intFromHex = (e) => {\n return parseInt(e, 16);\n };\n for (var i = 0; i < parameters.length; i++) {\n var p = parameters[i];\n var v = rsaKey[p];\n var base64UrlEncoder = new Base64Url();\n if (p === 'e') {\n if (typeof (v) === 'number') {\n v = base64UrlEncoder.encodeArray(stripLeadingZeros(arrayFromInt32(v)));\n }\n } else if (/^([0-9a-fA-F]{2}:)+[0-9a-fA-F]{2}$/.test(v)) {\n var arr = v.split(':').map(intFromHex);\n v = base64UrlEncoder.encodeArray(stripLeadingZeros(arr));\n } else if (typeof (v) !== 'string') {\n webCryptographer.assert(false, \"convertRsaKey: expecting rsaKey['\" + p + \"'] to be a string\");\n }\n r[p] = v;\n }\n\n return r;\n};\n\n/**\n * Converts a string into an array of ascii codes.\n *\n * @param str ascii string\n * @return Uint8Array\n */\nexport const arrayFromString = (str) => {\n webCryptographer.assert(isString(str), 'arrayFromString: invalid input');\n var arr = str.split('').map(function (c) {\n return c.charCodeAt(0);\n });\n return new Uint8Array(arr);\n};\n\n/**\n * Converts a string into an array of utf-8 codes.\n *\n* @param str utf-8 string\n * @return Uint8Array\n */\nexport const arrayFromUtf8String = (str) => {\n webCryptographer.assert(isString(str), 'arrayFromUtf8String: invalid input');\n // javascript represents strings as utf-16. Jose imposes the use of\n // utf-8, so we need to convert from one representation to the other.\n str = unescape(encodeURIComponent(str));\n return arrayFromString(str);\n};\n\n/**\n * Converts an array of ascii bytes into a string.\n *\n * @param arr arrayish\n * @return ascii string\n */\nexport const stringFromArray = (arr) => {\n arr = arrayish(arr);\n var r = '';\n for (var i = 0; i < arr.length; i++) {\n r += String.fromCharCode(arr[i]);\n }\n\n return r;\n};\n\n/**\n * Converts an array of ascii bytes into a string.\n *\n * @param arr ArrayBuffer\n * @return ascii string\n */\nexport const utf8StringFromArray = (arr) => {\n webCryptographer.assert(arr instanceof ArrayBuffer, 'utf8StringFromArray: invalid input');\n\n // javascript represents strings as utf-16. Jose imposes the use of\n // utf-8, so we need to convert from one representation to the other.\n var r = stringFromArray(arr);\n return decodeURIComponent(escape(r));\n};\n\n/**\n * Strips leading zero in an array.\n *\n * @param arr arrayish\n * @return array\n */\nexport const stripLeadingZeros = (arr) => {\n if (arr instanceof ArrayBuffer) {\n arr = new Uint8Array(arr);\n }\n var isLeadingZero = true;\n var r = [];\n for (var i = 0; i < arr.length; i++) {\n if (isLeadingZero && arr[i] === 0) {\n continue;\n }\n isLeadingZero = false;\n r.push(arr[i]);\n }\n return r;\n};\n\n/**\n * Converts a number into an array of 4 bytes (big endian).\n *\n * @param i number\n * @return ArrayBuffer\n */\nexport const arrayFromInt32 = (i) => {\n webCryptographer.assert(typeof (i) === 'number', 'arrayFromInt32: invalid input');\n // TODO(eslint): figure out if there's a better way to validate i\n // eslint-disable-next-line eqeqeq, no-self-compare\n webCryptographer.assert(i == i | 0, 'arrayFromInt32: out of range');\n\n var buf = new Uint8Array(new Uint32Array([i]).buffer);\n var r = new Uint8Array(4);\n for (var j = 0; j < 4; j++) {\n r[j] = buf[3 - j];\n }\n return r.buffer;\n};\n\n/**\n * Concatenates arrayishes.\n *\n * note: cannot be a Arrow function, because Arrow functions do not expose 'arguments' object\n * and Rest parameters are not supported in Babel yet.\n *\n * @param arguments two or more arrayishes\n * @return Uint8Array\n */\nexport function arrayBufferConcat (/* ... */) {\n // Compute total size\n var args = [];\n var total = 0;\n for (var i = 0; i < arguments.length; i++) {\n args.push(arrayish(arguments[i]));\n total += args[i].length;\n }\n var r = new Uint8Array(total);\n var offset = 0;\n for (i = 0; i < arguments.length; i++) {\n for (var j = 0; j < args[i].length; j++) {\n r[offset++] = args[i][j];\n }\n }\n webCryptographer.assert(offset === total, 'arrayBufferConcat: unexpected offset');\n return r;\n}\n\nexport const sha256 = (str) => {\n // Browser docs indicate the first parameter to crypto.subtle.digest to be a\n // DOMString. This was initially implemented as an object and continues to be\n // supported, so we favor the older form for backwards compatibility.\n return Jose.crypto.subtle.digest({ name: 'SHA-256' }, arrayFromString(str)).then(function (hash) {\n return new Base64Url().encodeArray(hash);\n });\n};\n\nexport const isCryptoKey = (rsaKey) => {\n // Some browsers don't expose the CryptoKey as an object, so we need to check\n // the constructor's name.\n if (rsaKey.constructor.name === 'CryptoKey') {\n return true;\n }\n\n // In the presence of minifiers, relying on class names can be problematic,\n // so let's also allow objects that have an 'algorithm' property.\n if (Object.prototype.hasOwnProperty.call(rsaKey, 'algorithm')) {\n return true;\n }\n\n return false;\n};\nexport class Base64Url {\n /**\n * Base64Url encodes a string (no trailing '=')\n *\n * @param str string\n * @return string\n */\n encode (str) {\n webCryptographer.assert(isString(str), 'Base64Url.encode: invalid input');\n return btoa(str)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n }\n\n /**\n * Base64Url encodes an array\n *\n * @param arr array or ArrayBuffer\n * @return string\n */\n encodeArray (arr) {\n return this.encode(stringFromArray(arr));\n }\n\n /**\n * Base64Url decodes a string\n *\n * @param str string\n * @return string\n */\n decode (str) {\n webCryptographer.assert(isString(str), 'Base64Url.decode: invalid input');\n // atob is nice and ignores missing '='\n return atob(str.replace(/-/g, '+').replace(/_/g, '/'));\n }\n\n decodeArray (str) {\n webCryptographer.assert(isString(str), 'Base64Url.decodeArray: invalid input');\n return arrayFromString(this.decode(str));\n }\n}\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\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n 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 =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\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 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(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\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 parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\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","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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}