[
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2017 Howard Wu.\n\nAll files, with the exceptions below, are released under the MIT License:\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# IPFS + Ethereum Storage\n\nWe will create a simple datastore solution using IPFS and Ethereum. IPFS provides a convenient interface for distributed data storage, with a hash-based content address for reference to our file. This address will be stored in our smart contract on a private Ethereum blockchain. To retrieve the latest data, we will fetch the address from our blockchain and query IPFS for the associated file.\n\n## Build Guide\n\nThis repository has the following dependencies:\n * [IPFS](https://ipfs.io) - the Interplanetary File System\n * [Geth](https://ethereum.org/cli) - the Go implementation of Ethereum\n\n### Install Geth\n\n__Mac:__ For Mac users, install [Homebrew](https://brew.sh/) and update:\n```\nbrew update\nbrew upgrade\n```\nThen run:\n```\nbrew tap ethereum/ethereum\nbrew install ethereum\n```\n\n__Windows:__ For Windows users, download the [latest stable release](https://geth.ethereum.org/downloads/), extract it, download the zip file, extract _geth.exe_ from zip, open a command terminal and type:\n```\nchdir <path to extracted binary>\nopen geth.exe\n```\n\n__Linux:__ For Ubuntu users, run:\n```\nsudo apt-get install software-properties-common\nsudo add-apt-repository -y ppa:ethereum/ethereum\nsudo apt-get update\nsudo apt-get install ethereum\n```\n\n### Install IPFS\n\n__Mac/Linux:__ For Mac and Linux users, download the [prebuilt package](https://ipfs.io/docs/install/), then untar and move the binary to your executables `$PATH` as follows:\n```\ntar xvfz go-ipfs.tar.gz\nmv go-ipfs/ipfs /usr/local/bin/ipfs\n```\n\n__Windows:__ For Windows users, download the [prebuilt package](https://ipfs.io/docs/install/), then unzip and move `ipfs.exe` to your `%PATH%`.\n\nTo test that your IPFS installation worked, in your terminal (Mac/Linux) or command prompt (Windows) window, run:\n```\nipfs help\n```\nThe help menu describing IPFS actions will be printed out.\n\n\n## Initialize an Ethereum node\n\nWe will start by setting up a private Ethereum blockchain on your local machine.\n\n### Setup Geth\n\nCreate a new directory for your private blockchain. In your terminal (Mac/Linux) or command prompt (Windows) window, navigate to the directory and create a new account:\n```\ngeth --datadir=\"./\" account new\n```\nEnter a password when prompted for your local Ethereum account. Geth will create a keystore directory and store the account file in the keystore.\n\n### Genesis Block\n\nSetting up a private blockchain requires defining a genesis block, which sets the initial parameters and token distribution.\n\nIn the directory containing your account, copy/paste/save the following JSON into a file called `genesisblock.json`:\n```\n{\n    \"config\": {\n        \"chainID\"       : 10,\n        \"homesteadBlock\": 0,\n        \"eip155Block\":    0,\n        \"eip158Block\":    0\n    },\n    \"nonce\": \"0x01\",\n    \"difficulty\": \"0x20000\",\n    \"mixhash\": \"0x00000000000000000000000000000000000000647572616c65787365646c6578\",\n    \"coinbase\": \"0x0000000000000000000000000000000000000000\",\n    \"timestamp\": \"0x00\",\n    \"parentHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n    \"extraData\": \"0x00\",\n    \"gasLimit\": \"0x2FEFD8\",\n    \"alloc\": {\n    }\n}\n```\nThis will be block 0 of your private blockchain. If you ever wish to have others join this network, they will need this genesis block as well.\n\nWe will now instantiate the blockchain network and load the geth console:\n```\ngeth --datadir=\"./\" init genesisblock.json\ngeth --datadir=\"./\" --networkid 23422  --rpc --rpccorsdomain=\"*\" --rpcport=\"8545\" --minerthreads=\"1\" --mine --nodiscover --maxpeers=0 --unlock 0 console\n```\nThe `--datadir` flag tells geth the path for storing blockchain data. The `--networkid` flag gives your private blockchain a unique reference ID. The `--rpc` and related flags enable remote procedure call (RPC) functionality for web3. The `--minerthreads` flag enables the specified number of CPU threads for mining. The `--mine` flag indicates the mine function for processing transactions and propagating smart contracts through the network. The `--nodiscover` and `--maxpeers` flag disables peer discovery mechanisms. The `--unlock 0` flag unlocks the first account in the system. The `--console` flag enables the REPL terminal.\n\nAs this is our first time running the `--mine` flag, wait for the DAG file to be generated. You will see `Generating DAG: xx%` for a couple minutes. This is a one-time operation.\n\n## Initialize IPFS\n\nWhile we wait for the DAG to be generated, let's setup IPFS. Start by initializing IPFS and modifying CORS restrictions:\n```\nipfs init\nipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '[\"*\"]'\nipfs config --json Gateway.HTTPHeaders.Access-Control-Allow-Origin '[\"*\"]'\n```\n\nNow start the daemon:\n```\nipfs daemon\n```\n\n## Run the Application\n\nOpen `storage.html` and follow the instructions on the front page.\n\n## Further Resources\n\nBelow are references, projects, and developing work related to IPFS and Ethereum.\n\n### IPFS\n* [IPFS](http://ipfs.io) - A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.\n* [astralboot](https://github.com/ipfs/astralboot) - Low level boot server that deploys directly out of IPFS (TFTP, PXE Boot).\n* [ipget](https://github.com/ipfs/ipget) - wget for IPFS: retrieve files over IPFS and save them locally.\n* [container-demos](https://github.com/ipfs/container-demos) - Demos on how to boot docker images and VMs from IPFS.\n* [ipfs-npm](https://github.com/ipfs/ipfs-npm) - npm on IPFS.\n* [luckychain](https://github.com/luckychain/lucky) - Intel SGX and IPFS-based blockchain implementing Proof of Luck.\n\n### Ethereum\n* [Ethereum](https://www.ethereum.org/) - Ethereum is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference.\n* [web3.js](https://github.com/ethereum/web3.js) - the Ethereum compatible JavaScript API which implements the Generic JSON RPC spec.\n* [Ethereum Javascript API (web3)](https://github.com/ethereum/wiki/wiki/JavaScript-API) - Web3 JavaScript Ðapp API.\n\n### Ethereum + IPFS\n * [akasha](http://akasha.world/) - A Next-Generation Social Media Network, powered by Ethereum and embedded into IPFS.\n * [digix](https://www.dgx.io/) - An asset-tokenization platform built on Ethereum and IPFS.\n * [embark](https://github.com/iurimatias/embark-framework) - A framework that allows you to easily develop and deploy Decentralized Applications (DApps).\n * [eris](https://github.com/eris-ltd/eris) - An application platform for building, testing, maintaining, and\noperating applications built to run on an ecosystem level.\n * [uport](https://www.uport.me) - A mobile, self-sovereign identity and key management system, built on the Ethereum blockchain.\n * [js-deflate](https://github.com/dankogai/js-deflate) - Gzipping of data to make it fit in URLs\n\n## Acknowledgement\n\nThe Ethereum Foundation and Ledger Labs have provided the original Ethereum [contract resources](https://github.com/ledgerlabs/ethereum-getting-started/wiki/Anatomy-of-a-Contract)."
  },
  {
    "path": "contract/SimpleStorage.sol",
    "content": "contract SimpleStorage {\n    string storedData;\n\n    function set(string x) {\n        storedData = x;\n    }\n\n    function get() constant returns (string x) {\n        return storedData;\n    }\n}\n"
  },
  {
    "path": "contract/SimpleStorageBytecode.txt",
    "content": "6060604052610282806100126000396000f360606040526000357c0100000000000000000000000000000000000000000000000000000000900480634ed3885e146100445780636d4ce63c1461009a57610042565b005b6100986004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050909091905050610115565b005b6100a760048050506101c6565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156101075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b8060006000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016457805160ff1916838001178555610195565b82800160010185558215610195579182015b82811115610194578251826000505591602001919060010190610176565b5b5090506101c091906101a2565b808211156101bc57600081815060009055506001016101a2565b5090565b50505b50565b602060405190810160405280600081526020015060006000508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102735780601f1061024857610100808354040283529160200191610273565b820191906000526020600020905b81548152906001019060200180831161025657829003601f168201915b5050505050905061027f565b9056"
  },
  {
    "path": "ipfs/ipfs.js",
    "content": "var IpfsApi =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \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\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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/_karma_webpack_//\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 538);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global    = __webpack_require__(5)\n\t  , core      = __webpack_require__(33)\n\t  , hide      = __webpack_require__(19)\n\t  , redefine  = __webpack_require__(20)\n\t  , ctx       = __webpack_require__(34)\n\t  , PROTOTYPE = 'prototype';\n\n\tvar $export = function(type, name, source){\n\t  var IS_FORCED = type & $export.F\n\t    , IS_GLOBAL = type & $export.G\n\t    , IS_STATIC = type & $export.S\n\t    , IS_PROTO  = type & $export.P\n\t    , IS_BIND   = type & $export.B\n\t    , target    = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]\n\t    , exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})\n\t    , expProto  = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})\n\t    , key, own, out, exp;\n\t  if(IS_GLOBAL)source = name;\n\t  for(key in source){\n\t    // contains in native\n\t    own = !IS_FORCED && target && target[key] !== undefined;\n\t    // export native or passed\n\t    out = (own ? target : source)[key];\n\t    // bind timers to global for call from export context\n\t    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n\t    // extend global\n\t    if(target)redefine(target, key, out, type & $export.U);\n\t    // export\n\t    if(exports[key] != out)hide(exports, key, exp);\n\t    if(IS_PROTO && expProto[key] != out)expProto[key] = out;\n\t  }\n\t};\n\tglobal.core = core;\n\t// type bitmap\n\t$export.F = 1;   // forced\n\t$export.G = 2;   // global\n\t$export.S = 4;   // static\n\t$export.P = 8;   // proto\n\t$export.B = 16;  // bind\n\t$export.W = 32;  // wrap\n\t$export.U = 64;  // safe\n\t$export.R = 128; // real proto method for `library` \n\tmodule.exports = $export;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer, global) {/*!\n\t * The buffer module from node.js, for the browser.\n\t *\n\t * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n\t * @license  MIT\n\t */\n\t/* eslint-disable no-proto */\n\n\t'use strict'\n\n\tvar base64 = __webpack_require__(254)\n\tvar ieee754 = __webpack_require__(481)\n\tvar isArray = __webpack_require__(266)\n\n\texports.Buffer = Buffer\n\texports.SlowBuffer = SlowBuffer\n\texports.INSPECT_MAX_BYTES = 50\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t *   === true    Use Uint8Array implementation (fastest)\n\t *   === false   Use Object implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * Due to various browser bugs, sometimes the Object implementation will be used even\n\t * when the browser supports typed arrays.\n\t *\n\t * Note:\n\t *\n\t *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n\t *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n\t *\n\t *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n\t *\n\t *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n\t *     incorrect length in some situations.\n\n\t * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n\t * get the Object implementation, which is slower but behaves correctly.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n\t  ? global.TYPED_ARRAY_SUPPORT\n\t  : typedArraySupport()\n\n\t/*\n\t * Export kMaxLength after typed array support is determined.\n\t */\n\texports.kMaxLength = kMaxLength()\n\n\tfunction typedArraySupport () {\n\t  try {\n\t    var arr = new Uint8Array(1)\n\t    arr.foo = function () { return 42 }\n\t    return arr.foo() === 42 && // typed array instances can be augmented\n\t        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n\t        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n\t  } catch (e) {\n\t    return false\n\t  }\n\t}\n\n\tfunction kMaxLength () {\n\t  return Buffer.TYPED_ARRAY_SUPPORT\n\t    ? 0x7fffffff\n\t    : 0x3fffffff\n\t}\n\n\tfunction createBuffer (that, length) {\n\t  if (kMaxLength() < length) {\n\t    throw new RangeError('Invalid typed array length')\n\t  }\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    // Return an augmented `Uint8Array` instance, for best performance\n\t    that = new Uint8Array(length)\n\t    that.__proto__ = Buffer.prototype\n\t  } else {\n\t    // Fallback: Return an object instance of the Buffer class\n\t    if (that === null) {\n\t      that = new Buffer(length)\n\t    }\n\t    that.length = length\n\t  }\n\n\t  return that\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n\t    return new Buffer(arg, encodingOrOffset, length)\n\t  }\n\n\t  // Common case.\n\t  if (typeof arg === 'number') {\n\t    if (typeof encodingOrOffset === 'string') {\n\t      throw new Error(\n\t        'If encoding is specified then the first argument must be a string'\n\t      )\n\t    }\n\t    return allocUnsafe(this, arg)\n\t  }\n\t  return from(this, arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192 // not used by this implementation\n\n\t// TODO: Legacy, not needed anymore. Remove in next major version.\n\tBuffer._augment = function (arr) {\n\t  arr.__proto__ = Buffer.prototype\n\t  return arr\n\t}\n\n\tfunction from (that, value, encodingOrOffset, length) {\n\t  if (typeof value === 'number') {\n\t    throw new TypeError('\"value\" argument must not be a number')\n\t  }\n\n\t  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n\t    return fromArrayBuffer(that, value, encodingOrOffset, length)\n\t  }\n\n\t  if (typeof value === 'string') {\n\t    return fromString(that, value, encodingOrOffset)\n\t  }\n\n\t  return fromObject(that, value)\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t  return from(null, value, encodingOrOffset, length)\n\t}\n\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t  Buffer.prototype.__proto__ = Uint8Array.prototype\n\t  Buffer.__proto__ = Uint8Array\n\t  if (typeof Symbol !== 'undefined' && Symbol.species &&\n\t      Buffer[Symbol.species] === Buffer) {\n\t    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n\t    Object.defineProperty(Buffer, Symbol.species, {\n\t      value: null,\n\t      configurable: true\n\t    })\n\t  }\n\t}\n\n\tfunction assertSize (size) {\n\t  if (typeof size !== 'number') {\n\t    throw new TypeError('\"size\" argument must be a number')\n\t  }\n\t}\n\n\tfunction alloc (that, size, fill, encoding) {\n\t  assertSize(size)\n\t  if (size <= 0) {\n\t    return createBuffer(that, size)\n\t  }\n\t  if (fill !== undefined) {\n\t    // Only pay attention to encoding if it's a string. This\n\t    // prevents accidentally sending in a number that would\n\t    // be interpretted as a start offset.\n\t    return typeof encoding === 'string'\n\t      ? createBuffer(that, size).fill(fill, encoding)\n\t      : createBuffer(that, size).fill(fill)\n\t  }\n\t  return createBuffer(that, size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t  return alloc(null, size, fill, encoding)\n\t}\n\n\tfunction allocUnsafe (that, size) {\n\t  assertSize(size)\n\t  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n\t  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t    for (var i = 0; i < size; i++) {\n\t      that[i] = 0\n\t    }\n\t  }\n\t  return that\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t  return allocUnsafe(null, size)\n\t}\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t  return allocUnsafe(null, size)\n\t}\n\n\tfunction fromString (that, string, encoding) {\n\t  if (typeof encoding !== 'string' || encoding === '') {\n\t    encoding = 'utf8'\n\t  }\n\n\t  if (!Buffer.isEncoding(encoding)) {\n\t    throw new TypeError('\"encoding\" must be a valid string encoding')\n\t  }\n\n\t  var length = byteLength(string, encoding) | 0\n\t  that = createBuffer(that, length)\n\n\t  that.write(string, encoding)\n\t  return that\n\t}\n\n\tfunction fromArrayLike (that, array) {\n\t  var length = checked(array.length) | 0\n\t  that = createBuffer(that, length)\n\t  for (var i = 0; i < length; i += 1) {\n\t    that[i] = array[i] & 255\n\t  }\n\t  return that\n\t}\n\n\tfunction fromArrayBuffer (that, array, byteOffset, length) {\n\t  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n\t  if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t    throw new RangeError('\\'offset\\' is out of bounds')\n\t  }\n\n\t  if (array.byteLength < byteOffset + (length || 0)) {\n\t    throw new RangeError('\\'length\\' is out of bounds')\n\t  }\n\n\t  if (length === undefined) {\n\t    array = new Uint8Array(array, byteOffset)\n\t  } else {\n\t    array = new Uint8Array(array, byteOffset, length)\n\t  }\n\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    // Return an augmented `Uint8Array` instance, for best performance\n\t    that = array\n\t    that.__proto__ = Buffer.prototype\n\t  } else {\n\t    // Fallback: Return an object instance of the Buffer class\n\t    that = fromArrayLike(that, array)\n\t  }\n\t  return that\n\t}\n\n\tfunction fromObject (that, obj) {\n\t  if (Buffer.isBuffer(obj)) {\n\t    var len = checked(obj.length) | 0\n\t    that = createBuffer(that, len)\n\n\t    if (that.length === 0) {\n\t      return that\n\t    }\n\n\t    obj.copy(that, 0, 0, len)\n\t    return that\n\t  }\n\n\t  if (obj) {\n\t    if ((typeof ArrayBuffer !== 'undefined' &&\n\t        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n\t      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n\t        return createBuffer(that, 0)\n\t      }\n\t      return fromArrayLike(that, obj)\n\t    }\n\n\t    if (obj.type === 'Buffer' && isArray(obj.data)) {\n\t      return fromArrayLike(that, obj.data)\n\t    }\n\t  }\n\n\t  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n\t}\n\n\tfunction checked (length) {\n\t  // Note: cannot use `length < kMaxLength` here because that fails when\n\t  // length is NaN (which is otherwise coerced to zero.)\n\t  if (length >= kMaxLength()) {\n\t    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n\t  }\n\t  return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t  if (+length != length) { // eslint-disable-line eqeqeq\n\t    length = 0\n\t  }\n\t  return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t  return !!(b != null && b._isBuffer)\n\t}\n\n\tBuffer.compare = function compare (a, b) {\n\t  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t    throw new TypeError('Arguments must be Buffers')\n\t  }\n\n\t  if (a === b) return 0\n\n\t  var x = a.length\n\t  var y = b.length\n\n\t  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n\t    if (a[i] !== b[i]) {\n\t      x = a[i]\n\t      y = b[i]\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t}\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t  switch (String(encoding).toLowerCase()) {\n\t    case 'hex':\n\t    case 'utf8':\n\t    case 'utf-8':\n\t    case 'ascii':\n\t    case 'binary':\n\t    case 'base64':\n\t    case 'raw':\n\t    case 'ucs2':\n\t    case 'ucs-2':\n\t    case 'utf16le':\n\t    case 'utf-16le':\n\t      return true\n\t    default:\n\t      return false\n\t  }\n\t}\n\n\tBuffer.concat = function concat (list, length) {\n\t  if (!isArray(list)) {\n\t    throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t  }\n\n\t  if (list.length === 0) {\n\t    return Buffer.alloc(0)\n\t  }\n\n\t  var i\n\t  if (length === undefined) {\n\t    length = 0\n\t    for (i = 0; i < list.length; i++) {\n\t      length += list[i].length\n\t    }\n\t  }\n\n\t  var buffer = Buffer.allocUnsafe(length)\n\t  var pos = 0\n\t  for (i = 0; i < list.length; i++) {\n\t    var buf = list[i]\n\t    if (!Buffer.isBuffer(buf)) {\n\t      throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t    }\n\t    buf.copy(buffer, pos)\n\t    pos += buf.length\n\t  }\n\t  return buffer\n\t}\n\n\tfunction byteLength (string, encoding) {\n\t  if (Buffer.isBuffer(string)) {\n\t    return string.length\n\t  }\n\t  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n\t      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n\t    return string.byteLength\n\t  }\n\t  if (typeof string !== 'string') {\n\t    string = '' + string\n\t  }\n\n\t  var len = string.length\n\t  if (len === 0) return 0\n\n\t  // Use a for loop to avoid recursion\n\t  var loweredCase = false\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'ascii':\n\t      case 'binary':\n\t      // Deprecated\n\t      case 'raw':\n\t      case 'raws':\n\t        return len\n\t      case 'utf8':\n\t      case 'utf-8':\n\t      case undefined:\n\t        return utf8ToBytes(string).length\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return len * 2\n\t      case 'hex':\n\t        return len >>> 1\n\t      case 'base64':\n\t        return base64ToBytes(string).length\n\t      default:\n\t        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n\t        encoding = ('' + encoding).toLowerCase()\n\t        loweredCase = true\n\t    }\n\t  }\n\t}\n\tBuffer.byteLength = byteLength\n\n\tfunction slowToString (encoding, start, end) {\n\t  var loweredCase = false\n\n\t  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t  // property of a typed array.\n\n\t  // This behaves neither like String nor Uint8Array in that we set start/end\n\t  // to their upper/lower bounds if the value passed is out of range.\n\t  // undefined is handled specially as per ECMA-262 6th Edition,\n\t  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t  if (start === undefined || start < 0) {\n\t    start = 0\n\t  }\n\t  // Return early if start > this.length. Done here to prevent potential uint32\n\t  // coercion fail below.\n\t  if (start > this.length) {\n\t    return ''\n\t  }\n\n\t  if (end === undefined || end > this.length) {\n\t    end = this.length\n\t  }\n\n\t  if (end <= 0) {\n\t    return ''\n\t  }\n\n\t  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\t  end >>>= 0\n\t  start >>>= 0\n\n\t  if (end <= start) {\n\t    return ''\n\t  }\n\n\t  if (!encoding) encoding = 'utf8'\n\n\t  while (true) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexSlice(this, start, end)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Slice(this, start, end)\n\n\t      case 'ascii':\n\t        return asciiSlice(this, start, end)\n\n\t      case 'binary':\n\t        return binarySlice(this, start, end)\n\n\t      case 'base64':\n\t        return base64Slice(this, start, end)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return utf16leSlice(this, start, end)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = (encoding + '').toLowerCase()\n\t        loweredCase = true\n\t    }\n\t  }\n\t}\n\n\t// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n\t// Buffer instances.\n\tBuffer.prototype._isBuffer = true\n\n\tfunction swap (b, n, m) {\n\t  var i = b[n]\n\t  b[n] = b[m]\n\t  b[m] = i\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t  var len = this.length\n\t  if (len % 2 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t  }\n\t  for (var i = 0; i < len; i += 2) {\n\t    swap(this, i, i + 1)\n\t  }\n\t  return this\n\t}\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t  var len = this.length\n\t  if (len % 4 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t  }\n\t  for (var i = 0; i < len; i += 4) {\n\t    swap(this, i, i + 3)\n\t    swap(this, i + 1, i + 2)\n\t  }\n\t  return this\n\t}\n\n\tBuffer.prototype.toString = function toString () {\n\t  var length = this.length | 0\n\t  if (length === 0) return ''\n\t  if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t  return slowToString.apply(this, arguments)\n\t}\n\n\tBuffer.prototype.equals = function equals (b) {\n\t  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t  if (this === b) return true\n\t  return Buffer.compare(this, b) === 0\n\t}\n\n\tBuffer.prototype.inspect = function inspect () {\n\t  var str = ''\n\t  var max = exports.INSPECT_MAX_BYTES\n\t  if (this.length > 0) {\n\t    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n\t    if (this.length > max) str += ' ... '\n\t  }\n\t  return '<Buffer ' + str + '>'\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t  if (!Buffer.isBuffer(target)) {\n\t    throw new TypeError('Argument must be a Buffer')\n\t  }\n\n\t  if (start === undefined) {\n\t    start = 0\n\t  }\n\t  if (end === undefined) {\n\t    end = target ? target.length : 0\n\t  }\n\t  if (thisStart === undefined) {\n\t    thisStart = 0\n\t  }\n\t  if (thisEnd === undefined) {\n\t    thisEnd = this.length\n\t  }\n\n\t  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t    throw new RangeError('out of range index')\n\t  }\n\n\t  if (thisStart >= thisEnd && start >= end) {\n\t    return 0\n\t  }\n\t  if (thisStart >= thisEnd) {\n\t    return -1\n\t  }\n\t  if (start >= end) {\n\t    return 1\n\t  }\n\n\t  start >>>= 0\n\t  end >>>= 0\n\t  thisStart >>>= 0\n\t  thisEnd >>>= 0\n\n\t  if (this === target) return 0\n\n\t  var x = thisEnd - thisStart\n\t  var y = end - start\n\t  var len = Math.min(x, y)\n\n\t  var thisCopy = this.slice(thisStart, thisEnd)\n\t  var targetCopy = target.slice(start, end)\n\n\t  for (var i = 0; i < len; ++i) {\n\t    if (thisCopy[i] !== targetCopy[i]) {\n\t      x = thisCopy[i]\n\t      y = targetCopy[i]\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding) {\n\t  var indexSize = 1\n\t  var arrLength = arr.length\n\t  var valLength = val.length\n\n\t  if (encoding !== undefined) {\n\t    encoding = String(encoding).toLowerCase()\n\t    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t        encoding === 'utf16le' || encoding === 'utf-16le') {\n\t      if (arr.length < 2 || val.length < 2) {\n\t        return -1\n\t      }\n\t      indexSize = 2\n\t      arrLength /= 2\n\t      valLength /= 2\n\t      byteOffset /= 2\n\t    }\n\t  }\n\n\t  function read (buf, i) {\n\t    if (indexSize === 1) {\n\t      return buf[i]\n\t    } else {\n\t      return buf.readUInt16BE(i * indexSize)\n\t    }\n\t  }\n\n\t  var foundIndex = -1\n\t  for (var i = 0; byteOffset + i < arrLength; i++) {\n\t    if (read(arr, byteOffset + i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t      if (foundIndex === -1) foundIndex = i\n\t      if (i - foundIndex + 1 === valLength) return (byteOffset + foundIndex) * indexSize\n\t    } else {\n\t      if (foundIndex !== -1) i -= i - foundIndex\n\t      foundIndex = -1\n\t    }\n\t  }\n\t  return -1\n\t}\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t  if (typeof byteOffset === 'string') {\n\t    encoding = byteOffset\n\t    byteOffset = 0\n\t  } else if (byteOffset > 0x7fffffff) {\n\t    byteOffset = 0x7fffffff\n\t  } else if (byteOffset < -0x80000000) {\n\t    byteOffset = -0x80000000\n\t  }\n\t  byteOffset >>= 0\n\n\t  if (this.length === 0) return -1\n\t  if (byteOffset >= this.length) return -1\n\n\t  // Negative offsets start from the end of the buffer\n\t  if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n\t  if (typeof val === 'string') {\n\t    val = Buffer.from(val, encoding)\n\t  }\n\n\t  if (Buffer.isBuffer(val)) {\n\t    // special case: looking for empty string/buffer always fails\n\t    if (val.length === 0) {\n\t      return -1\n\t    }\n\t    return arrayIndexOf(this, val, byteOffset, encoding)\n\t  }\n\t  if (typeof val === 'number') {\n\t    if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n\t      return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n\t    }\n\t    return arrayIndexOf(this, [ val ], byteOffset, encoding)\n\t  }\n\n\t  throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t  return this.indexOf(val, byteOffset, encoding) !== -1\n\t}\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t  offset = Number(offset) || 0\n\t  var remaining = buf.length - offset\n\t  if (!length) {\n\t    length = remaining\n\t  } else {\n\t    length = Number(length)\n\t    if (length > remaining) {\n\t      length = remaining\n\t    }\n\t  }\n\n\t  // must be an even number of digits\n\t  var strLen = string.length\n\t  if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n\t  if (length > strLen / 2) {\n\t    length = strLen / 2\n\t  }\n\t  for (var i = 0; i < length; i++) {\n\t    var parsed = parseInt(string.substr(i * 2, 2), 16)\n\t    if (isNaN(parsed)) return i\n\t    buf[offset + i] = parsed\n\t  }\n\t  return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t  return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction binaryWrite (buf, string, offset, length) {\n\t  return asciiWrite(buf, string, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t  return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t  // Buffer#write(string)\n\t  if (offset === undefined) {\n\t    encoding = 'utf8'\n\t    length = this.length\n\t    offset = 0\n\t  // Buffer#write(string, encoding)\n\t  } else if (length === undefined && typeof offset === 'string') {\n\t    encoding = offset\n\t    length = this.length\n\t    offset = 0\n\t  // Buffer#write(string, offset[, length][, encoding])\n\t  } else if (isFinite(offset)) {\n\t    offset = offset | 0\n\t    if (isFinite(length)) {\n\t      length = length | 0\n\t      if (encoding === undefined) encoding = 'utf8'\n\t    } else {\n\t      encoding = length\n\t      length = undefined\n\t    }\n\t  // legacy write(string, encoding, offset, length) - remove in v0.13\n\t  } else {\n\t    throw new Error(\n\t      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t    )\n\t  }\n\n\t  var remaining = this.length - offset\n\t  if (length === undefined || length > remaining) length = remaining\n\n\t  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t    throw new RangeError('Attempt to write outside buffer bounds')\n\t  }\n\n\t  if (!encoding) encoding = 'utf8'\n\n\t  var loweredCase = false\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexWrite(this, string, offset, length)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Write(this, string, offset, length)\n\n\t      case 'ascii':\n\t        return asciiWrite(this, string, offset, length)\n\n\t      case 'binary':\n\t        return binaryWrite(this, string, offset, length)\n\n\t      case 'base64':\n\t        // Warning: maxLength not taken into account in base64Write\n\t        return base64Write(this, string, offset, length)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return ucs2Write(this, string, offset, length)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = ('' + encoding).toLowerCase()\n\t        loweredCase = true\n\t    }\n\t  }\n\t}\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t  return {\n\t    type: 'Buffer',\n\t    data: Array.prototype.slice.call(this._arr || this, 0)\n\t  }\n\t}\n\n\tfunction base64Slice (buf, start, end) {\n\t  if (start === 0 && end === buf.length) {\n\t    return base64.fromByteArray(buf)\n\t  } else {\n\t    return base64.fromByteArray(buf.slice(start, end))\n\t  }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t  end = Math.min(buf.length, end)\n\t  var res = []\n\n\t  var i = start\n\t  while (i < end) {\n\t    var firstByte = buf[i]\n\t    var codePoint = null\n\t    var bytesPerSequence = (firstByte > 0xEF) ? 4\n\t      : (firstByte > 0xDF) ? 3\n\t      : (firstByte > 0xBF) ? 2\n\t      : 1\n\n\t    if (i + bytesPerSequence <= end) {\n\t      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n\t      switch (bytesPerSequence) {\n\t        case 1:\n\t          if (firstByte < 0x80) {\n\t            codePoint = firstByte\n\t          }\n\t          break\n\t        case 2:\n\t          secondByte = buf[i + 1]\n\t          if ((secondByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n\t            if (tempCodePoint > 0x7F) {\n\t              codePoint = tempCodePoint\n\t            }\n\t          }\n\t          break\n\t        case 3:\n\t          secondByte = buf[i + 1]\n\t          thirdByte = buf[i + 2]\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n\t            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t              codePoint = tempCodePoint\n\t            }\n\t          }\n\t          break\n\t        case 4:\n\t          secondByte = buf[i + 1]\n\t          thirdByte = buf[i + 2]\n\t          fourthByte = buf[i + 3]\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n\t            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t              codePoint = tempCodePoint\n\t            }\n\t          }\n\t      }\n\t    }\n\n\t    if (codePoint === null) {\n\t      // we did not generate a valid codePoint so insert a\n\t      // replacement char (U+FFFD) and advance only 1 byte\n\t      codePoint = 0xFFFD\n\t      bytesPerSequence = 1\n\t    } else if (codePoint > 0xFFFF) {\n\t      // encode to utf16 (surrogate pair dance)\n\t      codePoint -= 0x10000\n\t      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n\t      codePoint = 0xDC00 | codePoint & 0x3FF\n\t    }\n\n\t    res.push(codePoint)\n\t    i += bytesPerSequence\n\t  }\n\n\t  return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tvar MAX_ARGUMENTS_LENGTH = 0x1000\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t  var len = codePoints.length\n\t  if (len <= MAX_ARGUMENTS_LENGTH) {\n\t    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t  }\n\n\t  // Decode in chunks to avoid \"call stack size exceeded\".\n\t  var res = ''\n\t  var i = 0\n\t  while (i < len) {\n\t    res += String.fromCharCode.apply(\n\t      String,\n\t      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t    )\n\t  }\n\t  return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t  var ret = ''\n\t  end = Math.min(buf.length, end)\n\n\t  for (var i = start; i < end; i++) {\n\t    ret += String.fromCharCode(buf[i] & 0x7F)\n\t  }\n\t  return ret\n\t}\n\n\tfunction binarySlice (buf, start, end) {\n\t  var ret = ''\n\t  end = Math.min(buf.length, end)\n\n\t  for (var i = start; i < end; i++) {\n\t    ret += String.fromCharCode(buf[i])\n\t  }\n\t  return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t  var len = buf.length\n\n\t  if (!start || start < 0) start = 0\n\t  if (!end || end < 0 || end > len) end = len\n\n\t  var out = ''\n\t  for (var i = start; i < end; i++) {\n\t    out += toHex(buf[i])\n\t  }\n\t  return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t  var bytes = buf.slice(start, end)\n\t  var res = ''\n\t  for (var i = 0; i < bytes.length; i += 2) {\n\t    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n\t  }\n\t  return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t  var len = this.length\n\t  start = ~~start\n\t  end = end === undefined ? len : ~~end\n\n\t  if (start < 0) {\n\t    start += len\n\t    if (start < 0) start = 0\n\t  } else if (start > len) {\n\t    start = len\n\t  }\n\n\t  if (end < 0) {\n\t    end += len\n\t    if (end < 0) end = 0\n\t  } else if (end > len) {\n\t    end = len\n\t  }\n\n\t  if (end < start) end = start\n\n\t  var newBuf\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    newBuf = this.subarray(start, end)\n\t    newBuf.__proto__ = Buffer.prototype\n\t  } else {\n\t    var sliceLen = end - start\n\t    newBuf = new Buffer(sliceLen, undefined)\n\t    for (var i = 0; i < sliceLen; i++) {\n\t      newBuf[i] = this[i + start]\n\t    }\n\t  }\n\n\t  return newBuf\n\t}\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t  offset = offset | 0\n\t  byteLength = byteLength | 0\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t  var val = this[offset]\n\t  var mul = 1\n\t  var i = 0\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul\n\t  }\n\n\t  return val\n\t}\n\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t  offset = offset | 0\n\t  byteLength = byteLength | 0\n\t  if (!noAssert) {\n\t    checkOffset(offset, byteLength, this.length)\n\t  }\n\n\t  var val = this[offset + --byteLength]\n\t  var mul = 1\n\t  while (byteLength > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --byteLength] * mul\n\t  }\n\n\t  return val\n\t}\n\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 1, this.length)\n\t  return this[offset]\n\t}\n\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 2, this.length)\n\t  return this[offset] | (this[offset + 1] << 8)\n\t}\n\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 2, this.length)\n\t  return (this[offset] << 8) | this[offset + 1]\n\t}\n\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t  return ((this[offset]) |\n\t      (this[offset + 1] << 8) |\n\t      (this[offset + 2] << 16)) +\n\t      (this[offset + 3] * 0x1000000)\n\t}\n\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t  return (this[offset] * 0x1000000) +\n\t    ((this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    this[offset + 3])\n\t}\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t  offset = offset | 0\n\t  byteLength = byteLength | 0\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t  var val = this[offset]\n\t  var mul = 1\n\t  var i = 0\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul\n\t  }\n\t  mul *= 0x80\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n\t  return val\n\t}\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t  offset = offset | 0\n\t  byteLength = byteLength | 0\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t  var i = byteLength\n\t  var mul = 1\n\t  var val = this[offset + --i]\n\t  while (i > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --i] * mul\n\t  }\n\t  mul *= 0x80\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n\t  return val\n\t}\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 1, this.length)\n\t  if (!(this[offset] & 0x80)) return (this[offset])\n\t  return ((0xff - this[offset] + 1) * -1)\n\t}\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 2, this.length)\n\t  var val = this[offset] | (this[offset + 1] << 8)\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 2, this.length)\n\t  var val = this[offset + 1] | (this[offset] << 8)\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t  return (this[offset]) |\n\t    (this[offset + 1] << 8) |\n\t    (this[offset + 2] << 16) |\n\t    (this[offset + 3] << 24)\n\t}\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t  return (this[offset] << 24) |\n\t    (this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    (this[offset + 3])\n\t}\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 4, this.length)\n\t  return ieee754.read(this, offset, true, 23, 4)\n\t}\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 4, this.length)\n\t  return ieee754.read(this, offset, false, 23, 4)\n\t}\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 8, this.length)\n\t  return ieee754.read(this, offset, true, 52, 8)\n\t}\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t  if (!noAssert) checkOffset(offset, 8, this.length)\n\t  return ieee754.read(this, offset, false, 52, 8)\n\t}\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  byteLength = byteLength | 0\n\t  if (!noAssert) {\n\t    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0)\n\t  }\n\n\t  var mul = 1\n\t  var i = 0\n\t  this[offset] = value & 0xFF\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF\n\t  }\n\n\t  return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  byteLength = byteLength | 0\n\t  if (!noAssert) {\n\t    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0)\n\t  }\n\n\t  var i = byteLength - 1\n\t  var mul = 1\n\t  this[offset + i] = value & 0xFF\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF\n\t  }\n\n\t  return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n\t  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t  this[offset] = (value & 0xff)\n\t  return offset + 1\n\t}\n\n\tfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n\t  if (value < 0) value = 0xffff + value + 1\n\t  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n\t    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n\t      (littleEndian ? i : 1 - i) * 8\n\t  }\n\t}\n\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset] = (value & 0xff)\n\t    this[offset + 1] = (value >>> 8)\n\t  } else {\n\t    objectWriteUInt16(this, value, offset, true)\n\t  }\n\t  return offset + 2\n\t}\n\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset] = (value >>> 8)\n\t    this[offset + 1] = (value & 0xff)\n\t  } else {\n\t    objectWriteUInt16(this, value, offset, false)\n\t  }\n\t  return offset + 2\n\t}\n\n\tfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n\t  if (value < 0) value = 0xffffffff + value + 1\n\t  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n\t    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n\t  }\n\t}\n\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset + 3] = (value >>> 24)\n\t    this[offset + 2] = (value >>> 16)\n\t    this[offset + 1] = (value >>> 8)\n\t    this[offset] = (value & 0xff)\n\t  } else {\n\t    objectWriteUInt32(this, value, offset, true)\n\t  }\n\t  return offset + 4\n\t}\n\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset] = (value >>> 24)\n\t    this[offset + 1] = (value >>> 16)\n\t    this[offset + 2] = (value >>> 8)\n\t    this[offset + 3] = (value & 0xff)\n\t  } else {\n\t    objectWriteUInt32(this, value, offset, false)\n\t  }\n\t  return offset + 4\n\t}\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) {\n\t    var limit = Math.pow(2, 8 * byteLength - 1)\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t  }\n\n\t  var i = 0\n\t  var mul = 1\n\t  var sub = 0\n\t  this[offset] = value & 0xFF\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t      sub = 1\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t  }\n\n\t  return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) {\n\t    var limit = Math.pow(2, 8 * byteLength - 1)\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t  }\n\n\t  var i = byteLength - 1\n\t  var mul = 1\n\t  var sub = 0\n\t  this[offset + i] = value & 0xFF\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t      sub = 1\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t  }\n\n\t  return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n\t  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t  if (value < 0) value = 0xff + value + 1\n\t  this[offset] = (value & 0xff)\n\t  return offset + 1\n\t}\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset] = (value & 0xff)\n\t    this[offset + 1] = (value >>> 8)\n\t  } else {\n\t    objectWriteUInt16(this, value, offset, true)\n\t  }\n\t  return offset + 2\n\t}\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset] = (value >>> 8)\n\t    this[offset + 1] = (value & 0xff)\n\t  } else {\n\t    objectWriteUInt16(this, value, offset, false)\n\t  }\n\t  return offset + 2\n\t}\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset] = (value & 0xff)\n\t    this[offset + 1] = (value >>> 8)\n\t    this[offset + 2] = (value >>> 16)\n\t    this[offset + 3] = (value >>> 24)\n\t  } else {\n\t    objectWriteUInt32(this, value, offset, true)\n\t  }\n\t  return offset + 4\n\t}\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t  value = +value\n\t  offset = offset | 0\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t  if (value < 0) value = 0xffffffff + value + 1\n\t  if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t    this[offset] = (value >>> 24)\n\t    this[offset + 1] = (value >>> 16)\n\t    this[offset + 2] = (value >>> 8)\n\t    this[offset + 3] = (value & 0xff)\n\t  } else {\n\t    objectWriteUInt32(this, value, offset, false)\n\t  }\n\t  return offset + 4\n\t}\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t  if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n\t  }\n\t  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n\t  return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, true, noAssert)\n\t}\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, false, noAssert)\n\t}\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n\t  }\n\t  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n\t  return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, true, noAssert)\n\t}\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, false, noAssert)\n\t}\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t  if (!start) start = 0\n\t  if (!end && end !== 0) end = this.length\n\t  if (targetStart >= target.length) targetStart = target.length\n\t  if (!targetStart) targetStart = 0\n\t  if (end > 0 && end < start) end = start\n\n\t  // Copy 0 bytes; we're done\n\t  if (end === start) return 0\n\t  if (target.length === 0 || this.length === 0) return 0\n\n\t  // Fatal error conditions\n\t  if (targetStart < 0) {\n\t    throw new RangeError('targetStart out of bounds')\n\t  }\n\t  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t  // Are we oob?\n\t  if (end > this.length) end = this.length\n\t  if (target.length - targetStart < end - start) {\n\t    end = target.length - targetStart + start\n\t  }\n\n\t  var len = end - start\n\t  var i\n\n\t  if (this === target && start < targetStart && targetStart < end) {\n\t    // descending copy from end\n\t    for (i = len - 1; i >= 0; i--) {\n\t      target[i + targetStart] = this[i + start]\n\t    }\n\t  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t    // ascending copy from start\n\t    for (i = 0; i < len; i++) {\n\t      target[i + targetStart] = this[i + start]\n\t    }\n\t  } else {\n\t    Uint8Array.prototype.set.call(\n\t      target,\n\t      this.subarray(start, start + len),\n\t      targetStart\n\t    )\n\t  }\n\n\t  return len\n\t}\n\n\t// Usage:\n\t//    buffer.fill(number[, offset[, end]])\n\t//    buffer.fill(buffer[, offset[, end]])\n\t//    buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t  // Handle string cases:\n\t  if (typeof val === 'string') {\n\t    if (typeof start === 'string') {\n\t      encoding = start\n\t      start = 0\n\t      end = this.length\n\t    } else if (typeof end === 'string') {\n\t      encoding = end\n\t      end = this.length\n\t    }\n\t    if (val.length === 1) {\n\t      var code = val.charCodeAt(0)\n\t      if (code < 256) {\n\t        val = code\n\t      }\n\t    }\n\t    if (encoding !== undefined && typeof encoding !== 'string') {\n\t      throw new TypeError('encoding must be a string')\n\t    }\n\t    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t      throw new TypeError('Unknown encoding: ' + encoding)\n\t    }\n\t  } else if (typeof val === 'number') {\n\t    val = val & 255\n\t  }\n\n\t  // Invalid ranges are not set to a default, so can range check early.\n\t  if (start < 0 || this.length < start || this.length < end) {\n\t    throw new RangeError('Out of range index')\n\t  }\n\n\t  if (end <= start) {\n\t    return this\n\t  }\n\n\t  start = start >>> 0\n\t  end = end === undefined ? this.length : end >>> 0\n\n\t  if (!val) val = 0\n\n\t  var i\n\t  if (typeof val === 'number') {\n\t    for (i = start; i < end; i++) {\n\t      this[i] = val\n\t    }\n\t  } else {\n\t    var bytes = Buffer.isBuffer(val)\n\t      ? val\n\t      : utf8ToBytes(new Buffer(val, encoding).toString())\n\t    var len = bytes.length\n\t    for (i = 0; i < end - start; i++) {\n\t      this[i + start] = bytes[i % len]\n\t    }\n\t  }\n\n\t  return this\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\n\tfunction base64clean (str) {\n\t  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n\t  // Node converts strings with length < 2 to ''\n\t  if (str.length < 2) return ''\n\t  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t  while (str.length % 4 !== 0) {\n\t    str = str + '='\n\t  }\n\t  return str\n\t}\n\n\tfunction stringtrim (str) {\n\t  if (str.trim) return str.trim()\n\t  return str.replace(/^\\s+|\\s+$/g, '')\n\t}\n\n\tfunction toHex (n) {\n\t  if (n < 16) return '0' + n.toString(16)\n\t  return n.toString(16)\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t  units = units || Infinity\n\t  var codePoint\n\t  var length = string.length\n\t  var leadSurrogate = null\n\t  var bytes = []\n\n\t  for (var i = 0; i < length; i++) {\n\t    codePoint = string.charCodeAt(i)\n\n\t    // is surrogate component\n\t    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t      // last char was a lead\n\t      if (!leadSurrogate) {\n\t        // no lead yet\n\t        if (codePoint > 0xDBFF) {\n\t          // unexpected trail\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t          continue\n\t        } else if (i + 1 === length) {\n\t          // unpaired lead\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t          continue\n\t        }\n\n\t        // valid lead\n\t        leadSurrogate = codePoint\n\n\t        continue\n\t      }\n\n\t      // 2 leads in a row\n\t      if (codePoint < 0xDC00) {\n\t        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t        leadSurrogate = codePoint\n\t        continue\n\t      }\n\n\t      // valid surrogate pair\n\t      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n\t    } else if (leadSurrogate) {\n\t      // valid bmp char, but last char was a lead\n\t      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t    }\n\n\t    leadSurrogate = null\n\n\t    // encode utf8\n\t    if (codePoint < 0x80) {\n\t      if ((units -= 1) < 0) break\n\t      bytes.push(codePoint)\n\t    } else if (codePoint < 0x800) {\n\t      if ((units -= 2) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x6 | 0xC0,\n\t        codePoint & 0x3F | 0x80\n\t      )\n\t    } else if (codePoint < 0x10000) {\n\t      if ((units -= 3) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0xC | 0xE0,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      )\n\t    } else if (codePoint < 0x110000) {\n\t      if ((units -= 4) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x12 | 0xF0,\n\t        codePoint >> 0xC & 0x3F | 0x80,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      )\n\t    } else {\n\t      throw new Error('Invalid code point')\n\t    }\n\t  }\n\n\t  return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t  var byteArray = []\n\t  for (var i = 0; i < str.length; i++) {\n\t    // Node's code seems to be doing this and not & 0x7F..\n\t    byteArray.push(str.charCodeAt(i) & 0xFF)\n\t  }\n\t  return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t  var c, hi, lo\n\t  var byteArray = []\n\t  for (var i = 0; i < str.length; i++) {\n\t    if ((units -= 2) < 0) break\n\n\t    c = str.charCodeAt(i)\n\t    hi = c >> 8\n\t    lo = c % 256\n\t    byteArray.push(lo)\n\t    byteArray.push(hi)\n\t  }\n\n\t  return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t  return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t  for (var i = 0; i < length; i++) {\n\t    if ((i + offset >= dst.length) || (i >= src.length)) break\n\t    dst[i + offset] = src[i]\n\t  }\n\t  return i\n\t}\n\n\tfunction isnan (val) {\n\t  return val !== val // eslint-disable-line no-self-compare\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, (function() { return this; }())))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tif (typeof Object.create === 'function') {\n\t  // implementation from standard node.js 'util' module\n\t  module.exports = function inherits(ctor, superCtor) {\n\t    ctor.super_ = superCtor\n\t    ctor.prototype = Object.create(superCtor.prototype, {\n\t      constructor: {\n\t        value: ctor,\n\t        enumerable: false,\n\t        writable: true,\n\t        configurable: true\n\t      }\n\t    });\n\t  };\n\t} else {\n\t  // old school shim for old browsers\n\t  module.exports = function inherits(ctor, superCtor) {\n\t    ctor.super_ = superCtor\n\t    var TempCtor = function () {}\n\t    TempCtor.prototype = superCtor.prototype\n\t    ctor.prototype = new TempCtor()\n\t    ctor.prototype.constructor = ctor\n\t  }\n\t}\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(6);\n\tmodule.exports = function(it){\n\t  if(!isObject(it))throw TypeError(it + ' is not an object!');\n\t  return it;\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(exec){\n\t  try {\n\t    return !!exec();\n\t  } catch(e){\n\t    return true;\n\t  }\n\t};\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t  ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\tif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(it){\n\t  return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar store      = __webpack_require__(86)('wks')\n\t  , uid        = __webpack_require__(47)\n\t  , Symbol     = __webpack_require__(5).Symbol\n\t  , USE_SYMBOL = typeof Symbol == 'function';\n\n\tvar $exports = module.exports = function(name){\n\t  return store[name] || (store[name] =\n\t    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n\t};\n\n\t$exports.store = store;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\n\tvar process = module.exports = {};\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\n\tfunction cleanUpNextTick() {\n\t    draining = false;\n\t    if (currentQueue.length) {\n\t        queue = currentQueue.concat(queue);\n\t    } else {\n\t        queueIndex = -1;\n\t    }\n\t    if (queue.length) {\n\t        drainQueue();\n\t    }\n\t}\n\n\tfunction drainQueue() {\n\t    if (draining) {\n\t        return;\n\t    }\n\t    var timeout = setTimeout(cleanUpNextTick);\n\t    draining = true;\n\n\t    var len = queue.length;\n\t    while(len) {\n\t        currentQueue = queue;\n\t        queue = [];\n\t        while (++queueIndex < len) {\n\t            if (currentQueue) {\n\t                currentQueue[queueIndex].run();\n\t            }\n\t        }\n\t        queueIndex = -1;\n\t        len = queue.length;\n\t    }\n\t    currentQueue = null;\n\t    draining = false;\n\t    clearTimeout(timeout);\n\t}\n\n\tprocess.nextTick = function (fun) {\n\t    var args = new Array(arguments.length - 1);\n\t    if (arguments.length > 1) {\n\t        for (var i = 1; i < arguments.length; i++) {\n\t            args[i - 1] = arguments[i];\n\t        }\n\t    }\n\t    queue.push(new Item(fun, args));\n\t    if (queue.length === 1 && !draining) {\n\t        setTimeout(drainQueue, 0);\n\t    }\n\t};\n\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t    this.fun = fun;\n\t    this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t    this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\n\tfunction noop() {}\n\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\n\tprocess.binding = function (name) {\n\t    throw new Error('process.binding is not supported');\n\t};\n\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t    throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Thank's IE8 for his funny defineProperty\n\tmodule.exports = !__webpack_require__(4)(function(){\n\t  return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n\t});\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar anObject       = __webpack_require__(3)\n\t  , IE8_DOM_DEFINE = __webpack_require__(159)\n\t  , toPrimitive    = __webpack_require__(31)\n\t  , dP             = Object.defineProperty;\n\n\texports.f = __webpack_require__(9) ? Object.defineProperty : function defineProperty(O, P, Attributes){\n\t  anObject(O);\n\t  P = toPrimitive(P, true);\n\t  anObject(Attributes);\n\t  if(IE8_DOM_DEFINE)try {\n\t    return dP(O, P, Attributes);\n\t  } catch(e){ /* empty */ }\n\t  if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n\t  if('value' in Attributes)O[P] = Attributes.value;\n\t  return O;\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n\t  'use strict';\n\n\t  // Utils\n\t  function assert (val, msg) {\n\t    if (!val) throw new Error(msg || 'Assertion failed');\n\t  }\n\n\t  // Could use `inherits` module, but don't want to move from single file\n\t  // architecture yet.\n\t  function inherits (ctor, superCtor) {\n\t    ctor.super_ = superCtor;\n\t    var TempCtor = function () {};\n\t    TempCtor.prototype = superCtor.prototype;\n\t    ctor.prototype = new TempCtor();\n\t    ctor.prototype.constructor = ctor;\n\t  }\n\n\t  // BN\n\n\t  function BN (number, base, endian) {\n\t    if (BN.isBN(number)) {\n\t      return number;\n\t    }\n\n\t    this.negative = 0;\n\t    this.words = null;\n\t    this.length = 0;\n\n\t    // Reduction context\n\t    this.red = null;\n\n\t    if (number !== null) {\n\t      if (base === 'le' || base === 'be') {\n\t        endian = base;\n\t        base = 10;\n\t      }\n\n\t      this._init(number || 0, base || 10, endian || 'be');\n\t    }\n\t  }\n\t  if (typeof module === 'object') {\n\t    module.exports = BN;\n\t  } else {\n\t    exports.BN = BN;\n\t  }\n\n\t  BN.BN = BN;\n\t  BN.wordSize = 26;\n\n\t  var Buffer;\n\t  try {\n\t    Buffer = __webpack_require__(1).Buffer;\n\t  } catch (e) {\n\t  }\n\n\t  BN.isBN = function isBN (num) {\n\t    return num !== null && typeof num === 'object' &&\n\t      num.constructor.name === 'BN' && Array.isArray(num.words);\n\t  };\n\n\t  BN.max = function max (left, right) {\n\t    if (left.cmp(right) > 0) return left;\n\t    return right;\n\t  };\n\n\t  BN.min = function min (left, right) {\n\t    if (left.cmp(right) < 0) return left;\n\t    return right;\n\t  };\n\n\t  BN.prototype._init = function init (number, base, endian) {\n\t    if (typeof number === 'number') {\n\t      return this._initNumber(number, base, endian);\n\t    }\n\n\t    if (typeof number === 'object') {\n\t      return this._initArray(number, base, endian);\n\t    }\n\n\t    if (base === 'hex') {\n\t      base = 16;\n\t    }\n\t    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n\t    number = number.toString().replace(/\\s+/g, '');\n\t    var start = 0;\n\t    if (number[0] === '-') {\n\t      start++;\n\t    }\n\n\t    if (base === 16) {\n\t      this._parseHex(number, start);\n\t    } else {\n\t      this._parseBase(number, base, start);\n\t    }\n\n\t    if (number[0] === '-') {\n\t      this.negative = 1;\n\t    }\n\n\t    this.strip();\n\n\t    if (endian !== 'le') return;\n\n\t    this._initArray(this.toArray(), base, endian);\n\t  };\n\n\t  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n\t    if (number < 0) {\n\t      this.negative = 1;\n\t      number = -number;\n\t    }\n\t    if (number < 0x4000000) {\n\t      this.words = [ number & 0x3ffffff ];\n\t      this.length = 1;\n\t    } else if (number < 0x10000000000000) {\n\t      this.words = [\n\t        number & 0x3ffffff,\n\t        (number / 0x4000000) & 0x3ffffff\n\t      ];\n\t      this.length = 2;\n\t    } else {\n\t      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\t      this.words = [\n\t        number & 0x3ffffff,\n\t        (number / 0x4000000) & 0x3ffffff,\n\t        1\n\t      ];\n\t      this.length = 3;\n\t    }\n\n\t    if (endian !== 'le') return;\n\n\t    // Reverse the bytes\n\t    this._initArray(this.toArray(), base, endian);\n\t  };\n\n\t  BN.prototype._initArray = function _initArray (number, base, endian) {\n\t    // Perhaps a Uint8Array\n\t    assert(typeof number.length === 'number');\n\t    if (number.length <= 0) {\n\t      this.words = [ 0 ];\n\t      this.length = 1;\n\t      return this;\n\t    }\n\n\t    this.length = Math.ceil(number.length / 3);\n\t    this.words = new Array(this.length);\n\t    for (var i = 0; i < this.length; i++) {\n\t      this.words[i] = 0;\n\t    }\n\n\t    var j, w;\n\t    var off = 0;\n\t    if (endian === 'be') {\n\t      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n\t        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n\t        this.words[j] |= (w << off) & 0x3ffffff;\n\t        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n\t        off += 24;\n\t        if (off >= 26) {\n\t          off -= 26;\n\t          j++;\n\t        }\n\t      }\n\t    } else if (endian === 'le') {\n\t      for (i = 0, j = 0; i < number.length; i += 3) {\n\t        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n\t        this.words[j] |= (w << off) & 0x3ffffff;\n\t        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n\t        off += 24;\n\t        if (off >= 26) {\n\t          off -= 26;\n\t          j++;\n\t        }\n\t      }\n\t    }\n\t    return this.strip();\n\t  };\n\n\t  function parseHex (str, start, end) {\n\t    var r = 0;\n\t    var len = Math.min(str.length, end);\n\t    for (var i = start; i < len; i++) {\n\t      var c = str.charCodeAt(i) - 48;\n\n\t      r <<= 4;\n\n\t      // 'a' - 'f'\n\t      if (c >= 49 && c <= 54) {\n\t        r |= c - 49 + 0xa;\n\n\t      // 'A' - 'F'\n\t      } else if (c >= 17 && c <= 22) {\n\t        r |= c - 17 + 0xa;\n\n\t      // '0' - '9'\n\t      } else {\n\t        r |= c & 0xf;\n\t      }\n\t    }\n\t    return r;\n\t  }\n\n\t  BN.prototype._parseHex = function _parseHex (number, start) {\n\t    // Create possibly bigger array to ensure that it fits the number\n\t    this.length = Math.ceil((number.length - start) / 6);\n\t    this.words = new Array(this.length);\n\t    for (var i = 0; i < this.length; i++) {\n\t      this.words[i] = 0;\n\t    }\n\n\t    var j, w;\n\t    // Scan 24-bit chunks and add them to the number\n\t    var off = 0;\n\t    for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n\t      w = parseHex(number, i, i + 6);\n\t      this.words[j] |= (w << off) & 0x3ffffff;\n\t      // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n\t      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n\t      off += 24;\n\t      if (off >= 26) {\n\t        off -= 26;\n\t        j++;\n\t      }\n\t    }\n\t    if (i + 6 !== start) {\n\t      w = parseHex(number, start, i + 6);\n\t      this.words[j] |= (w << off) & 0x3ffffff;\n\t      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n\t    }\n\t    this.strip();\n\t  };\n\n\t  function parseBase (str, start, end, mul) {\n\t    var r = 0;\n\t    var len = Math.min(str.length, end);\n\t    for (var i = start; i < len; i++) {\n\t      var c = str.charCodeAt(i) - 48;\n\n\t      r *= mul;\n\n\t      // 'a'\n\t      if (c >= 49) {\n\t        r += c - 49 + 0xa;\n\n\t      // 'A'\n\t      } else if (c >= 17) {\n\t        r += c - 17 + 0xa;\n\n\t      // '0' - '9'\n\t      } else {\n\t        r += c;\n\t      }\n\t    }\n\t    return r;\n\t  }\n\n\t  BN.prototype._parseBase = function _parseBase (number, base, start) {\n\t    // Initialize as zero\n\t    this.words = [ 0 ];\n\t    this.length = 1;\n\n\t    // Find length of limb in base\n\t    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n\t      limbLen++;\n\t    }\n\t    limbLen--;\n\t    limbPow = (limbPow / base) | 0;\n\n\t    var total = number.length - start;\n\t    var mod = total % limbLen;\n\t    var end = Math.min(total, total - mod) + start;\n\n\t    var word = 0;\n\t    for (var i = start; i < end; i += limbLen) {\n\t      word = parseBase(number, i, i + limbLen, base);\n\n\t      this.imuln(limbPow);\n\t      if (this.words[0] + word < 0x4000000) {\n\t        this.words[0] += word;\n\t      } else {\n\t        this._iaddn(word);\n\t      }\n\t    }\n\n\t    if (mod !== 0) {\n\t      var pow = 1;\n\t      word = parseBase(number, i, number.length, base);\n\n\t      for (i = 0; i < mod; i++) {\n\t        pow *= base;\n\t      }\n\n\t      this.imuln(pow);\n\t      if (this.words[0] + word < 0x4000000) {\n\t        this.words[0] += word;\n\t      } else {\n\t        this._iaddn(word);\n\t      }\n\t    }\n\t  };\n\n\t  BN.prototype.copy = function copy (dest) {\n\t    dest.words = new Array(this.length);\n\t    for (var i = 0; i < this.length; i++) {\n\t      dest.words[i] = this.words[i];\n\t    }\n\t    dest.length = this.length;\n\t    dest.negative = this.negative;\n\t    dest.red = this.red;\n\t  };\n\n\t  BN.prototype.clone = function clone () {\n\t    var r = new BN(null);\n\t    this.copy(r);\n\t    return r;\n\t  };\n\n\t  BN.prototype._expand = function _expand (size) {\n\t    while (this.length < size) {\n\t      this.words[this.length++] = 0;\n\t    }\n\t    return this;\n\t  };\n\n\t  // Remove leading `0` from `this`\n\t  BN.prototype.strip = function strip () {\n\t    while (this.length > 1 && this.words[this.length - 1] === 0) {\n\t      this.length--;\n\t    }\n\t    return this._normSign();\n\t  };\n\n\t  BN.prototype._normSign = function _normSign () {\n\t    // -0 = 0\n\t    if (this.length === 1 && this.words[0] === 0) {\n\t      this.negative = 0;\n\t    }\n\t    return this;\n\t  };\n\n\t  BN.prototype.inspect = function inspect () {\n\t    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n\t  };\n\n\t  /*\n\n\t  var zeros = [];\n\t  var groupSizes = [];\n\t  var groupBases = [];\n\n\t  var s = '';\n\t  var i = -1;\n\t  while (++i < BN.wordSize) {\n\t    zeros[i] = s;\n\t    s += '0';\n\t  }\n\t  groupSizes[0] = 0;\n\t  groupSizes[1] = 0;\n\t  groupBases[0] = 0;\n\t  groupBases[1] = 0;\n\t  var base = 2 - 1;\n\t  while (++base < 36 + 1) {\n\t    var groupSize = 0;\n\t    var groupBase = 1;\n\t    while (groupBase < (1 << BN.wordSize) / base) {\n\t      groupBase *= base;\n\t      groupSize += 1;\n\t    }\n\t    groupSizes[base] = groupSize;\n\t    groupBases[base] = groupBase;\n\t  }\n\n\t  */\n\n\t  var zeros = [\n\t    '',\n\t    '0',\n\t    '00',\n\t    '000',\n\t    '0000',\n\t    '00000',\n\t    '000000',\n\t    '0000000',\n\t    '00000000',\n\t    '000000000',\n\t    '0000000000',\n\t    '00000000000',\n\t    '000000000000',\n\t    '0000000000000',\n\t    '00000000000000',\n\t    '000000000000000',\n\t    '0000000000000000',\n\t    '00000000000000000',\n\t    '000000000000000000',\n\t    '0000000000000000000',\n\t    '00000000000000000000',\n\t    '000000000000000000000',\n\t    '0000000000000000000000',\n\t    '00000000000000000000000',\n\t    '000000000000000000000000',\n\t    '0000000000000000000000000'\n\t  ];\n\n\t  var groupSizes = [\n\t    0, 0,\n\t    25, 16, 12, 11, 10, 9, 8,\n\t    8, 7, 7, 7, 7, 6, 6,\n\t    6, 6, 6, 6, 6, 5, 5,\n\t    5, 5, 5, 5, 5, 5, 5,\n\t    5, 5, 5, 5, 5, 5, 5\n\t  ];\n\n\t  var groupBases = [\n\t    0, 0,\n\t    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n\t    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n\t    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n\t    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n\t    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n\t  ];\n\n\t  BN.prototype.toString = function toString (base, padding) {\n\t    base = base || 10;\n\t    padding = padding | 0 || 1;\n\n\t    var out;\n\t    if (base === 16 || base === 'hex') {\n\t      out = '';\n\t      var off = 0;\n\t      var carry = 0;\n\t      for (var i = 0; i < this.length; i++) {\n\t        var w = this.words[i];\n\t        var word = (((w << off) | carry) & 0xffffff).toString(16);\n\t        carry = (w >>> (24 - off)) & 0xffffff;\n\t        if (carry !== 0 || i !== this.length - 1) {\n\t          out = zeros[6 - word.length] + word + out;\n\t        } else {\n\t          out = word + out;\n\t        }\n\t        off += 2;\n\t        if (off >= 26) {\n\t          off -= 26;\n\t          i--;\n\t        }\n\t      }\n\t      if (carry !== 0) {\n\t        out = carry.toString(16) + out;\n\t      }\n\t      while (out.length % padding !== 0) {\n\t        out = '0' + out;\n\t      }\n\t      if (this.negative !== 0) {\n\t        out = '-' + out;\n\t      }\n\t      return out;\n\t    }\n\n\t    if (base === (base | 0) && base >= 2 && base <= 36) {\n\t      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n\t      var groupSize = groupSizes[base];\n\t      // var groupBase = Math.pow(base, groupSize);\n\t      var groupBase = groupBases[base];\n\t      out = '';\n\t      var c = this.clone();\n\t      c.negative = 0;\n\t      while (!c.isZero()) {\n\t        var r = c.modn(groupBase).toString(base);\n\t        c = c.idivn(groupBase);\n\n\t        if (!c.isZero()) {\n\t          out = zeros[groupSize - r.length] + r + out;\n\t        } else {\n\t          out = r + out;\n\t        }\n\t      }\n\t      if (this.isZero()) {\n\t        out = '0' + out;\n\t      }\n\t      while (out.length % padding !== 0) {\n\t        out = '0' + out;\n\t      }\n\t      if (this.negative !== 0) {\n\t        out = '-' + out;\n\t      }\n\t      return out;\n\t    }\n\n\t    assert(false, 'Base should be between 2 and 36');\n\t  };\n\n\t  BN.prototype.toNumber = function toNumber () {\n\t    var ret = this.words[0];\n\t    if (this.length === 2) {\n\t      ret += this.words[1] * 0x4000000;\n\t    } else if (this.length === 3 && this.words[2] === 0x01) {\n\t      // NOTE: at this stage it is known that the top bit is set\n\t      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n\t    } else if (this.length > 2) {\n\t      assert(false, 'Number can only safely store up to 53 bits');\n\t    }\n\t    return (this.negative !== 0) ? -ret : ret;\n\t  };\n\n\t  BN.prototype.toJSON = function toJSON () {\n\t    return this.toString(16);\n\t  };\n\n\t  BN.prototype.toBuffer = function toBuffer (endian, length) {\n\t    assert(typeof Buffer !== 'undefined');\n\t    return this.toArrayLike(Buffer, endian, length);\n\t  };\n\n\t  BN.prototype.toArray = function toArray (endian, length) {\n\t    return this.toArrayLike(Array, endian, length);\n\t  };\n\n\t  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n\t    var byteLength = this.byteLength();\n\t    var reqLength = length || Math.max(1, byteLength);\n\t    assert(byteLength <= reqLength, 'byte array longer than desired length');\n\t    assert(reqLength > 0, 'Requested array length <= 0');\n\n\t    this.strip();\n\t    var littleEndian = endian === 'le';\n\t    var res = new ArrayType(reqLength);\n\n\t    var b, i;\n\t    var q = this.clone();\n\t    if (!littleEndian) {\n\t      // Assume big-endian\n\t      for (i = 0; i < reqLength - byteLength; i++) {\n\t        res[i] = 0;\n\t      }\n\n\t      for (i = 0; !q.isZero(); i++) {\n\t        b = q.andln(0xff);\n\t        q.iushrn(8);\n\n\t        res[reqLength - i - 1] = b;\n\t      }\n\t    } else {\n\t      for (i = 0; !q.isZero(); i++) {\n\t        b = q.andln(0xff);\n\t        q.iushrn(8);\n\n\t        res[i] = b;\n\t      }\n\n\t      for (; i < reqLength; i++) {\n\t        res[i] = 0;\n\t      }\n\t    }\n\n\t    return res;\n\t  };\n\n\t  if (Math.clz32) {\n\t    BN.prototype._countBits = function _countBits (w) {\n\t      return 32 - Math.clz32(w);\n\t    };\n\t  } else {\n\t    BN.prototype._countBits = function _countBits (w) {\n\t      var t = w;\n\t      var r = 0;\n\t      if (t >= 0x1000) {\n\t        r += 13;\n\t        t >>>= 13;\n\t      }\n\t      if (t >= 0x40) {\n\t        r += 7;\n\t        t >>>= 7;\n\t      }\n\t      if (t >= 0x8) {\n\t        r += 4;\n\t        t >>>= 4;\n\t      }\n\t      if (t >= 0x02) {\n\t        r += 2;\n\t        t >>>= 2;\n\t      }\n\t      return r + t;\n\t    };\n\t  }\n\n\t  BN.prototype._zeroBits = function _zeroBits (w) {\n\t    // Short-cut\n\t    if (w === 0) return 26;\n\n\t    var t = w;\n\t    var r = 0;\n\t    if ((t & 0x1fff) === 0) {\n\t      r += 13;\n\t      t >>>= 13;\n\t    }\n\t    if ((t & 0x7f) === 0) {\n\t      r += 7;\n\t      t >>>= 7;\n\t    }\n\t    if ((t & 0xf) === 0) {\n\t      r += 4;\n\t      t >>>= 4;\n\t    }\n\t    if ((t & 0x3) === 0) {\n\t      r += 2;\n\t      t >>>= 2;\n\t    }\n\t    if ((t & 0x1) === 0) {\n\t      r++;\n\t    }\n\t    return r;\n\t  };\n\n\t  // Return number of used bits in a BN\n\t  BN.prototype.bitLength = function bitLength () {\n\t    var w = this.words[this.length - 1];\n\t    var hi = this._countBits(w);\n\t    return (this.length - 1) * 26 + hi;\n\t  };\n\n\t  function toBitArray (num) {\n\t    var w = new Array(num.bitLength());\n\n\t    for (var bit = 0; bit < w.length; bit++) {\n\t      var off = (bit / 26) | 0;\n\t      var wbit = bit % 26;\n\n\t      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n\t    }\n\n\t    return w;\n\t  }\n\n\t  // Number of trailing zero bits\n\t  BN.prototype.zeroBits = function zeroBits () {\n\t    if (this.isZero()) return 0;\n\n\t    var r = 0;\n\t    for (var i = 0; i < this.length; i++) {\n\t      var b = this._zeroBits(this.words[i]);\n\t      r += b;\n\t      if (b !== 26) break;\n\t    }\n\t    return r;\n\t  };\n\n\t  BN.prototype.byteLength = function byteLength () {\n\t    return Math.ceil(this.bitLength() / 8);\n\t  };\n\n\t  BN.prototype.toTwos = function toTwos (width) {\n\t    if (this.negative !== 0) {\n\t      return this.abs().inotn(width).iaddn(1);\n\t    }\n\t    return this.clone();\n\t  };\n\n\t  BN.prototype.fromTwos = function fromTwos (width) {\n\t    if (this.testn(width - 1)) {\n\t      return this.notn(width).iaddn(1).ineg();\n\t    }\n\t    return this.clone();\n\t  };\n\n\t  BN.prototype.isNeg = function isNeg () {\n\t    return this.negative !== 0;\n\t  };\n\n\t  // Return negative clone of `this`\n\t  BN.prototype.neg = function neg () {\n\t    return this.clone().ineg();\n\t  };\n\n\t  BN.prototype.ineg = function ineg () {\n\t    if (!this.isZero()) {\n\t      this.negative ^= 1;\n\t    }\n\n\t    return this;\n\t  };\n\n\t  // Or `num` with `this` in-place\n\t  BN.prototype.iuor = function iuor (num) {\n\t    while (this.length < num.length) {\n\t      this.words[this.length++] = 0;\n\t    }\n\n\t    for (var i = 0; i < num.length; i++) {\n\t      this.words[i] = this.words[i] | num.words[i];\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.ior = function ior (num) {\n\t    assert((this.negative | num.negative) === 0);\n\t    return this.iuor(num);\n\t  };\n\n\t  // Or `num` with `this`\n\t  BN.prototype.or = function or (num) {\n\t    if (this.length > num.length) return this.clone().ior(num);\n\t    return num.clone().ior(this);\n\t  };\n\n\t  BN.prototype.uor = function uor (num) {\n\t    if (this.length > num.length) return this.clone().iuor(num);\n\t    return num.clone().iuor(this);\n\t  };\n\n\t  // And `num` with `this` in-place\n\t  BN.prototype.iuand = function iuand (num) {\n\t    // b = min-length(num, this)\n\t    var b;\n\t    if (this.length > num.length) {\n\t      b = num;\n\t    } else {\n\t      b = this;\n\t    }\n\n\t    for (var i = 0; i < b.length; i++) {\n\t      this.words[i] = this.words[i] & num.words[i];\n\t    }\n\n\t    this.length = b.length;\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.iand = function iand (num) {\n\t    assert((this.negative | num.negative) === 0);\n\t    return this.iuand(num);\n\t  };\n\n\t  // And `num` with `this`\n\t  BN.prototype.and = function and (num) {\n\t    if (this.length > num.length) return this.clone().iand(num);\n\t    return num.clone().iand(this);\n\t  };\n\n\t  BN.prototype.uand = function uand (num) {\n\t    if (this.length > num.length) return this.clone().iuand(num);\n\t    return num.clone().iuand(this);\n\t  };\n\n\t  // Xor `num` with `this` in-place\n\t  BN.prototype.iuxor = function iuxor (num) {\n\t    // a.length > b.length\n\t    var a;\n\t    var b;\n\t    if (this.length > num.length) {\n\t      a = this;\n\t      b = num;\n\t    } else {\n\t      a = num;\n\t      b = this;\n\t    }\n\n\t    for (var i = 0; i < b.length; i++) {\n\t      this.words[i] = a.words[i] ^ b.words[i];\n\t    }\n\n\t    if (this !== a) {\n\t      for (; i < a.length; i++) {\n\t        this.words[i] = a.words[i];\n\t      }\n\t    }\n\n\t    this.length = a.length;\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.ixor = function ixor (num) {\n\t    assert((this.negative | num.negative) === 0);\n\t    return this.iuxor(num);\n\t  };\n\n\t  // Xor `num` with `this`\n\t  BN.prototype.xor = function xor (num) {\n\t    if (this.length > num.length) return this.clone().ixor(num);\n\t    return num.clone().ixor(this);\n\t  };\n\n\t  BN.prototype.uxor = function uxor (num) {\n\t    if (this.length > num.length) return this.clone().iuxor(num);\n\t    return num.clone().iuxor(this);\n\t  };\n\n\t  // Not ``this`` with ``width`` bitwidth\n\t  BN.prototype.inotn = function inotn (width) {\n\t    assert(typeof width === 'number' && width >= 0);\n\n\t    var bytesNeeded = Math.ceil(width / 26) | 0;\n\t    var bitsLeft = width % 26;\n\n\t    // Extend the buffer with leading zeroes\n\t    this._expand(bytesNeeded);\n\n\t    if (bitsLeft > 0) {\n\t      bytesNeeded--;\n\t    }\n\n\t    // Handle complete words\n\t    for (var i = 0; i < bytesNeeded; i++) {\n\t      this.words[i] = ~this.words[i] & 0x3ffffff;\n\t    }\n\n\t    // Handle the residue\n\t    if (bitsLeft > 0) {\n\t      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n\t    }\n\n\t    // And remove leading zeroes\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.notn = function notn (width) {\n\t    return this.clone().inotn(width);\n\t  };\n\n\t  // Set `bit` of `this`\n\t  BN.prototype.setn = function setn (bit, val) {\n\t    assert(typeof bit === 'number' && bit >= 0);\n\n\t    var off = (bit / 26) | 0;\n\t    var wbit = bit % 26;\n\n\t    this._expand(off + 1);\n\n\t    if (val) {\n\t      this.words[off] = this.words[off] | (1 << wbit);\n\t    } else {\n\t      this.words[off] = this.words[off] & ~(1 << wbit);\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  // Add `num` to `this` in-place\n\t  BN.prototype.iadd = function iadd (num) {\n\t    var r;\n\n\t    // negative + positive\n\t    if (this.negative !== 0 && num.negative === 0) {\n\t      this.negative = 0;\n\t      r = this.isub(num);\n\t      this.negative ^= 1;\n\t      return this._normSign();\n\n\t    // positive + negative\n\t    } else if (this.negative === 0 && num.negative !== 0) {\n\t      num.negative = 0;\n\t      r = this.isub(num);\n\t      num.negative = 1;\n\t      return r._normSign();\n\t    }\n\n\t    // a.length > b.length\n\t    var a, b;\n\t    if (this.length > num.length) {\n\t      a = this;\n\t      b = num;\n\t    } else {\n\t      a = num;\n\t      b = this;\n\t    }\n\n\t    var carry = 0;\n\t    for (var i = 0; i < b.length; i++) {\n\t      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n\t      this.words[i] = r & 0x3ffffff;\n\t      carry = r >>> 26;\n\t    }\n\t    for (; carry !== 0 && i < a.length; i++) {\n\t      r = (a.words[i] | 0) + carry;\n\t      this.words[i] = r & 0x3ffffff;\n\t      carry = r >>> 26;\n\t    }\n\n\t    this.length = a.length;\n\t    if (carry !== 0) {\n\t      this.words[this.length] = carry;\n\t      this.length++;\n\t    // Copy the rest of the words\n\t    } else if (a !== this) {\n\t      for (; i < a.length; i++) {\n\t        this.words[i] = a.words[i];\n\t      }\n\t    }\n\n\t    return this;\n\t  };\n\n\t  // Add `num` to `this`\n\t  BN.prototype.add = function add (num) {\n\t    var res;\n\t    if (num.negative !== 0 && this.negative === 0) {\n\t      num.negative = 0;\n\t      res = this.sub(num);\n\t      num.negative ^= 1;\n\t      return res;\n\t    } else if (num.negative === 0 && this.negative !== 0) {\n\t      this.negative = 0;\n\t      res = num.sub(this);\n\t      this.negative = 1;\n\t      return res;\n\t    }\n\n\t    if (this.length > num.length) return this.clone().iadd(num);\n\n\t    return num.clone().iadd(this);\n\t  };\n\n\t  // Subtract `num` from `this` in-place\n\t  BN.prototype.isub = function isub (num) {\n\t    // this - (-num) = this + num\n\t    if (num.negative !== 0) {\n\t      num.negative = 0;\n\t      var r = this.iadd(num);\n\t      num.negative = 1;\n\t      return r._normSign();\n\n\t    // -this - num = -(this + num)\n\t    } else if (this.negative !== 0) {\n\t      this.negative = 0;\n\t      this.iadd(num);\n\t      this.negative = 1;\n\t      return this._normSign();\n\t    }\n\n\t    // At this point both numbers are positive\n\t    var cmp = this.cmp(num);\n\n\t    // Optimization - zeroify\n\t    if (cmp === 0) {\n\t      this.negative = 0;\n\t      this.length = 1;\n\t      this.words[0] = 0;\n\t      return this;\n\t    }\n\n\t    // a > b\n\t    var a, b;\n\t    if (cmp > 0) {\n\t      a = this;\n\t      b = num;\n\t    } else {\n\t      a = num;\n\t      b = this;\n\t    }\n\n\t    var carry = 0;\n\t    for (var i = 0; i < b.length; i++) {\n\t      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n\t      carry = r >> 26;\n\t      this.words[i] = r & 0x3ffffff;\n\t    }\n\t    for (; carry !== 0 && i < a.length; i++) {\n\t      r = (a.words[i] | 0) + carry;\n\t      carry = r >> 26;\n\t      this.words[i] = r & 0x3ffffff;\n\t    }\n\n\t    // Copy rest of the words\n\t    if (carry === 0 && i < a.length && a !== this) {\n\t      for (; i < a.length; i++) {\n\t        this.words[i] = a.words[i];\n\t      }\n\t    }\n\n\t    this.length = Math.max(this.length, i);\n\n\t    if (a !== this) {\n\t      this.negative = 1;\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  // Subtract `num` from `this`\n\t  BN.prototype.sub = function sub (num) {\n\t    return this.clone().isub(num);\n\t  };\n\n\t  function smallMulTo (self, num, out) {\n\t    out.negative = num.negative ^ self.negative;\n\t    var len = (self.length + num.length) | 0;\n\t    out.length = len;\n\t    len = (len - 1) | 0;\n\n\t    // Peel one iteration (compiler can't do it, because of code complexity)\n\t    var a = self.words[0] | 0;\n\t    var b = num.words[0] | 0;\n\t    var r = a * b;\n\n\t    var lo = r & 0x3ffffff;\n\t    var carry = (r / 0x4000000) | 0;\n\t    out.words[0] = lo;\n\n\t    for (var k = 1; k < len; k++) {\n\t      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n\t      // note that ncarry could be >= 0x3ffffff\n\t      var ncarry = carry >>> 26;\n\t      var rword = carry & 0x3ffffff;\n\t      var maxJ = Math.min(k, num.length - 1);\n\t      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n\t        var i = (k - j) | 0;\n\t        a = self.words[i] | 0;\n\t        b = num.words[j] | 0;\n\t        r = a * b + rword;\n\t        ncarry += (r / 0x4000000) | 0;\n\t        rword = r & 0x3ffffff;\n\t      }\n\t      out.words[k] = rword | 0;\n\t      carry = ncarry | 0;\n\t    }\n\t    if (carry !== 0) {\n\t      out.words[k] = carry | 0;\n\t    } else {\n\t      out.length--;\n\t    }\n\n\t    return out.strip();\n\t  }\n\n\t  // TODO(indutny): it may be reasonable to omit it for users who don't need\n\t  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n\t  // multiplication (like elliptic secp256k1).\n\t  var comb10MulTo = function comb10MulTo (self, num, out) {\n\t    var a = self.words;\n\t    var b = num.words;\n\t    var o = out.words;\n\t    var c = 0;\n\t    var lo;\n\t    var mid;\n\t    var hi;\n\t    var a0 = a[0] | 0;\n\t    var al0 = a0 & 0x1fff;\n\t    var ah0 = a0 >>> 13;\n\t    var a1 = a[1] | 0;\n\t    var al1 = a1 & 0x1fff;\n\t    var ah1 = a1 >>> 13;\n\t    var a2 = a[2] | 0;\n\t    var al2 = a2 & 0x1fff;\n\t    var ah2 = a2 >>> 13;\n\t    var a3 = a[3] | 0;\n\t    var al3 = a3 & 0x1fff;\n\t    var ah3 = a3 >>> 13;\n\t    var a4 = a[4] | 0;\n\t    var al4 = a4 & 0x1fff;\n\t    var ah4 = a4 >>> 13;\n\t    var a5 = a[5] | 0;\n\t    var al5 = a5 & 0x1fff;\n\t    var ah5 = a5 >>> 13;\n\t    var a6 = a[6] | 0;\n\t    var al6 = a6 & 0x1fff;\n\t    var ah6 = a6 >>> 13;\n\t    var a7 = a[7] | 0;\n\t    var al7 = a7 & 0x1fff;\n\t    var ah7 = a7 >>> 13;\n\t    var a8 = a[8] | 0;\n\t    var al8 = a8 & 0x1fff;\n\t    var ah8 = a8 >>> 13;\n\t    var a9 = a[9] | 0;\n\t    var al9 = a9 & 0x1fff;\n\t    var ah9 = a9 >>> 13;\n\t    var b0 = b[0] | 0;\n\t    var bl0 = b0 & 0x1fff;\n\t    var bh0 = b0 >>> 13;\n\t    var b1 = b[1] | 0;\n\t    var bl1 = b1 & 0x1fff;\n\t    var bh1 = b1 >>> 13;\n\t    var b2 = b[2] | 0;\n\t    var bl2 = b2 & 0x1fff;\n\t    var bh2 = b2 >>> 13;\n\t    var b3 = b[3] | 0;\n\t    var bl3 = b3 & 0x1fff;\n\t    var bh3 = b3 >>> 13;\n\t    var b4 = b[4] | 0;\n\t    var bl4 = b4 & 0x1fff;\n\t    var bh4 = b4 >>> 13;\n\t    var b5 = b[5] | 0;\n\t    var bl5 = b5 & 0x1fff;\n\t    var bh5 = b5 >>> 13;\n\t    var b6 = b[6] | 0;\n\t    var bl6 = b6 & 0x1fff;\n\t    var bh6 = b6 >>> 13;\n\t    var b7 = b[7] | 0;\n\t    var bl7 = b7 & 0x1fff;\n\t    var bh7 = b7 >>> 13;\n\t    var b8 = b[8] | 0;\n\t    var bl8 = b8 & 0x1fff;\n\t    var bh8 = b8 >>> 13;\n\t    var b9 = b[9] | 0;\n\t    var bl9 = b9 & 0x1fff;\n\t    var bh9 = b9 >>> 13;\n\n\t    out.negative = self.negative ^ num.negative;\n\t    out.length = 19;\n\t    /* k = 0 */\n\t    lo = Math.imul(al0, bl0);\n\t    mid = Math.imul(al0, bh0);\n\t    mid += Math.imul(ah0, bl0);\n\t    hi = Math.imul(ah0, bh0);\n\t    var w0 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w0 >>> 26);\n\t    w0 &= 0x3ffffff;\n\t    /* k = 1 */\n\t    lo = Math.imul(al1, bl0);\n\t    mid = Math.imul(al1, bh0);\n\t    mid += Math.imul(ah1, bl0);\n\t    hi = Math.imul(ah1, bh0);\n\t    lo += Math.imul(al0, bl1);\n\t    mid += Math.imul(al0, bh1);\n\t    mid += Math.imul(ah0, bl1);\n\t    hi += Math.imul(ah0, bh1);\n\t    var w1 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w1 >>> 26);\n\t    w1 &= 0x3ffffff;\n\t    /* k = 2 */\n\t    lo = Math.imul(al2, bl0);\n\t    mid = Math.imul(al2, bh0);\n\t    mid += Math.imul(ah2, bl0);\n\t    hi = Math.imul(ah2, bh0);\n\t    lo += Math.imul(al1, bl1);\n\t    mid += Math.imul(al1, bh1);\n\t    mid += Math.imul(ah1, bl1);\n\t    hi += Math.imul(ah1, bh1);\n\t    lo += Math.imul(al0, bl2);\n\t    mid += Math.imul(al0, bh2);\n\t    mid += Math.imul(ah0, bl2);\n\t    hi += Math.imul(ah0, bh2);\n\t    var w2 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w2 >>> 26);\n\t    w2 &= 0x3ffffff;\n\t    /* k = 3 */\n\t    lo = Math.imul(al3, bl0);\n\t    mid = Math.imul(al3, bh0);\n\t    mid += Math.imul(ah3, bl0);\n\t    hi = Math.imul(ah3, bh0);\n\t    lo += Math.imul(al2, bl1);\n\t    mid += Math.imul(al2, bh1);\n\t    mid += Math.imul(ah2, bl1);\n\t    hi += Math.imul(ah2, bh1);\n\t    lo += Math.imul(al1, bl2);\n\t    mid += Math.imul(al1, bh2);\n\t    mid += Math.imul(ah1, bl2);\n\t    hi += Math.imul(ah1, bh2);\n\t    lo += Math.imul(al0, bl3);\n\t    mid += Math.imul(al0, bh3);\n\t    mid += Math.imul(ah0, bl3);\n\t    hi += Math.imul(ah0, bh3);\n\t    var w3 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w3 >>> 26);\n\t    w3 &= 0x3ffffff;\n\t    /* k = 4 */\n\t    lo = Math.imul(al4, bl0);\n\t    mid = Math.imul(al4, bh0);\n\t    mid += Math.imul(ah4, bl0);\n\t    hi = Math.imul(ah4, bh0);\n\t    lo += Math.imul(al3, bl1);\n\t    mid += Math.imul(al3, bh1);\n\t    mid += Math.imul(ah3, bl1);\n\t    hi += Math.imul(ah3, bh1);\n\t    lo += Math.imul(al2, bl2);\n\t    mid += Math.imul(al2, bh2);\n\t    mid += Math.imul(ah2, bl2);\n\t    hi += Math.imul(ah2, bh2);\n\t    lo += Math.imul(al1, bl3);\n\t    mid += Math.imul(al1, bh3);\n\t    mid += Math.imul(ah1, bl3);\n\t    hi += Math.imul(ah1, bh3);\n\t    lo += Math.imul(al0, bl4);\n\t    mid += Math.imul(al0, bh4);\n\t    mid += Math.imul(ah0, bl4);\n\t    hi += Math.imul(ah0, bh4);\n\t    var w4 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w4 >>> 26);\n\t    w4 &= 0x3ffffff;\n\t    /* k = 5 */\n\t    lo = Math.imul(al5, bl0);\n\t    mid = Math.imul(al5, bh0);\n\t    mid += Math.imul(ah5, bl0);\n\t    hi = Math.imul(ah5, bh0);\n\t    lo += Math.imul(al4, bl1);\n\t    mid += Math.imul(al4, bh1);\n\t    mid += Math.imul(ah4, bl1);\n\t    hi += Math.imul(ah4, bh1);\n\t    lo += Math.imul(al3, bl2);\n\t    mid += Math.imul(al3, bh2);\n\t    mid += Math.imul(ah3, bl2);\n\t    hi += Math.imul(ah3, bh2);\n\t    lo += Math.imul(al2, bl3);\n\t    mid += Math.imul(al2, bh3);\n\t    mid += Math.imul(ah2, bl3);\n\t    hi += Math.imul(ah2, bh3);\n\t    lo += Math.imul(al1, bl4);\n\t    mid += Math.imul(al1, bh4);\n\t    mid += Math.imul(ah1, bl4);\n\t    hi += Math.imul(ah1, bh4);\n\t    lo += Math.imul(al0, bl5);\n\t    mid += Math.imul(al0, bh5);\n\t    mid += Math.imul(ah0, bl5);\n\t    hi += Math.imul(ah0, bh5);\n\t    var w5 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w5 >>> 26);\n\t    w5 &= 0x3ffffff;\n\t    /* k = 6 */\n\t    lo = Math.imul(al6, bl0);\n\t    mid = Math.imul(al6, bh0);\n\t    mid += Math.imul(ah6, bl0);\n\t    hi = Math.imul(ah6, bh0);\n\t    lo += Math.imul(al5, bl1);\n\t    mid += Math.imul(al5, bh1);\n\t    mid += Math.imul(ah5, bl1);\n\t    hi += Math.imul(ah5, bh1);\n\t    lo += Math.imul(al4, bl2);\n\t    mid += Math.imul(al4, bh2);\n\t    mid += Math.imul(ah4, bl2);\n\t    hi += Math.imul(ah4, bh2);\n\t    lo += Math.imul(al3, bl3);\n\t    mid += Math.imul(al3, bh3);\n\t    mid += Math.imul(ah3, bl3);\n\t    hi += Math.imul(ah3, bh3);\n\t    lo += Math.imul(al2, bl4);\n\t    mid += Math.imul(al2, bh4);\n\t    mid += Math.imul(ah2, bl4);\n\t    hi += Math.imul(ah2, bh4);\n\t    lo += Math.imul(al1, bl5);\n\t    mid += Math.imul(al1, bh5);\n\t    mid += Math.imul(ah1, bl5);\n\t    hi += Math.imul(ah1, bh5);\n\t    lo += Math.imul(al0, bl6);\n\t    mid += Math.imul(al0, bh6);\n\t    mid += Math.imul(ah0, bl6);\n\t    hi += Math.imul(ah0, bh6);\n\t    var w6 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w6 >>> 26);\n\t    w6 &= 0x3ffffff;\n\t    /* k = 7 */\n\t    lo = Math.imul(al7, bl0);\n\t    mid = Math.imul(al7, bh0);\n\t    mid += Math.imul(ah7, bl0);\n\t    hi = Math.imul(ah7, bh0);\n\t    lo += Math.imul(al6, bl1);\n\t    mid += Math.imul(al6, bh1);\n\t    mid += Math.imul(ah6, bl1);\n\t    hi += Math.imul(ah6, bh1);\n\t    lo += Math.imul(al5, bl2);\n\t    mid += Math.imul(al5, bh2);\n\t    mid += Math.imul(ah5, bl2);\n\t    hi += Math.imul(ah5, bh2);\n\t    lo += Math.imul(al4, bl3);\n\t    mid += Math.imul(al4, bh3);\n\t    mid += Math.imul(ah4, bl3);\n\t    hi += Math.imul(ah4, bh3);\n\t    lo += Math.imul(al3, bl4);\n\t    mid += Math.imul(al3, bh4);\n\t    mid += Math.imul(ah3, bl4);\n\t    hi += Math.imul(ah3, bh4);\n\t    lo += Math.imul(al2, bl5);\n\t    mid += Math.imul(al2, bh5);\n\t    mid += Math.imul(ah2, bl5);\n\t    hi += Math.imul(ah2, bh5);\n\t    lo += Math.imul(al1, bl6);\n\t    mid += Math.imul(al1, bh6);\n\t    mid += Math.imul(ah1, bl6);\n\t    hi += Math.imul(ah1, bh6);\n\t    lo += Math.imul(al0, bl7);\n\t    mid += Math.imul(al0, bh7);\n\t    mid += Math.imul(ah0, bl7);\n\t    hi += Math.imul(ah0, bh7);\n\t    var w7 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w7 >>> 26);\n\t    w7 &= 0x3ffffff;\n\t    /* k = 8 */\n\t    lo = Math.imul(al8, bl0);\n\t    mid = Math.imul(al8, bh0);\n\t    mid += Math.imul(ah8, bl0);\n\t    hi = Math.imul(ah8, bh0);\n\t    lo += Math.imul(al7, bl1);\n\t    mid += Math.imul(al7, bh1);\n\t    mid += Math.imul(ah7, bl1);\n\t    hi += Math.imul(ah7, bh1);\n\t    lo += Math.imul(al6, bl2);\n\t    mid += Math.imul(al6, bh2);\n\t    mid += Math.imul(ah6, bl2);\n\t    hi += Math.imul(ah6, bh2);\n\t    lo += Math.imul(al5, bl3);\n\t    mid += Math.imul(al5, bh3);\n\t    mid += Math.imul(ah5, bl3);\n\t    hi += Math.imul(ah5, bh3);\n\t    lo += Math.imul(al4, bl4);\n\t    mid += Math.imul(al4, bh4);\n\t    mid += Math.imul(ah4, bl4);\n\t    hi += Math.imul(ah4, bh4);\n\t    lo += Math.imul(al3, bl5);\n\t    mid += Math.imul(al3, bh5);\n\t    mid += Math.imul(ah3, bl5);\n\t    hi += Math.imul(ah3, bh5);\n\t    lo += Math.imul(al2, bl6);\n\t    mid += Math.imul(al2, bh6);\n\t    mid += Math.imul(ah2, bl6);\n\t    hi += Math.imul(ah2, bh6);\n\t    lo += Math.imul(al1, bl7);\n\t    mid += Math.imul(al1, bh7);\n\t    mid += Math.imul(ah1, bl7);\n\t    hi += Math.imul(ah1, bh7);\n\t    lo += Math.imul(al0, bl8);\n\t    mid += Math.imul(al0, bh8);\n\t    mid += Math.imul(ah0, bl8);\n\t    hi += Math.imul(ah0, bh8);\n\t    var w8 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w8 >>> 26);\n\t    w8 &= 0x3ffffff;\n\t    /* k = 9 */\n\t    lo = Math.imul(al9, bl0);\n\t    mid = Math.imul(al9, bh0);\n\t    mid += Math.imul(ah9, bl0);\n\t    hi = Math.imul(ah9, bh0);\n\t    lo += Math.imul(al8, bl1);\n\t    mid += Math.imul(al8, bh1);\n\t    mid += Math.imul(ah8, bl1);\n\t    hi += Math.imul(ah8, bh1);\n\t    lo += Math.imul(al7, bl2);\n\t    mid += Math.imul(al7, bh2);\n\t    mid += Math.imul(ah7, bl2);\n\t    hi += Math.imul(ah7, bh2);\n\t    lo += Math.imul(al6, bl3);\n\t    mid += Math.imul(al6, bh3);\n\t    mid += Math.imul(ah6, bl3);\n\t    hi += Math.imul(ah6, bh3);\n\t    lo += Math.imul(al5, bl4);\n\t    mid += Math.imul(al5, bh4);\n\t    mid += Math.imul(ah5, bl4);\n\t    hi += Math.imul(ah5, bh4);\n\t    lo += Math.imul(al4, bl5);\n\t    mid += Math.imul(al4, bh5);\n\t    mid += Math.imul(ah4, bl5);\n\t    hi += Math.imul(ah4, bh5);\n\t    lo += Math.imul(al3, bl6);\n\t    mid += Math.imul(al3, bh6);\n\t    mid += Math.imul(ah3, bl6);\n\t    hi += Math.imul(ah3, bh6);\n\t    lo += Math.imul(al2, bl7);\n\t    mid += Math.imul(al2, bh7);\n\t    mid += Math.imul(ah2, bl7);\n\t    hi += Math.imul(ah2, bh7);\n\t    lo += Math.imul(al1, bl8);\n\t    mid += Math.imul(al1, bh8);\n\t    mid += Math.imul(ah1, bl8);\n\t    hi += Math.imul(ah1, bh8);\n\t    lo += Math.imul(al0, bl9);\n\t    mid += Math.imul(al0, bh9);\n\t    mid += Math.imul(ah0, bl9);\n\t    hi += Math.imul(ah0, bh9);\n\t    var w9 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w9 >>> 26);\n\t    w9 &= 0x3ffffff;\n\t    /* k = 10 */\n\t    lo = Math.imul(al9, bl1);\n\t    mid = Math.imul(al9, bh1);\n\t    mid += Math.imul(ah9, bl1);\n\t    hi = Math.imul(ah9, bh1);\n\t    lo += Math.imul(al8, bl2);\n\t    mid += Math.imul(al8, bh2);\n\t    mid += Math.imul(ah8, bl2);\n\t    hi += Math.imul(ah8, bh2);\n\t    lo += Math.imul(al7, bl3);\n\t    mid += Math.imul(al7, bh3);\n\t    mid += Math.imul(ah7, bl3);\n\t    hi += Math.imul(ah7, bh3);\n\t    lo += Math.imul(al6, bl4);\n\t    mid += Math.imul(al6, bh4);\n\t    mid += Math.imul(ah6, bl4);\n\t    hi += Math.imul(ah6, bh4);\n\t    lo += Math.imul(al5, bl5);\n\t    mid += Math.imul(al5, bh5);\n\t    mid += Math.imul(ah5, bl5);\n\t    hi += Math.imul(ah5, bh5);\n\t    lo += Math.imul(al4, bl6);\n\t    mid += Math.imul(al4, bh6);\n\t    mid += Math.imul(ah4, bl6);\n\t    hi += Math.imul(ah4, bh6);\n\t    lo += Math.imul(al3, bl7);\n\t    mid += Math.imul(al3, bh7);\n\t    mid += Math.imul(ah3, bl7);\n\t    hi += Math.imul(ah3, bh7);\n\t    lo += Math.imul(al2, bl8);\n\t    mid += Math.imul(al2, bh8);\n\t    mid += Math.imul(ah2, bl8);\n\t    hi += Math.imul(ah2, bh8);\n\t    lo += Math.imul(al1, bl9);\n\t    mid += Math.imul(al1, bh9);\n\t    mid += Math.imul(ah1, bl9);\n\t    hi += Math.imul(ah1, bh9);\n\t    var w10 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w10 >>> 26);\n\t    w10 &= 0x3ffffff;\n\t    /* k = 11 */\n\t    lo = Math.imul(al9, bl2);\n\t    mid = Math.imul(al9, bh2);\n\t    mid += Math.imul(ah9, bl2);\n\t    hi = Math.imul(ah9, bh2);\n\t    lo += Math.imul(al8, bl3);\n\t    mid += Math.imul(al8, bh3);\n\t    mid += Math.imul(ah8, bl3);\n\t    hi += Math.imul(ah8, bh3);\n\t    lo += Math.imul(al7, bl4);\n\t    mid += Math.imul(al7, bh4);\n\t    mid += Math.imul(ah7, bl4);\n\t    hi += Math.imul(ah7, bh4);\n\t    lo += Math.imul(al6, bl5);\n\t    mid += Math.imul(al6, bh5);\n\t    mid += Math.imul(ah6, bl5);\n\t    hi += Math.imul(ah6, bh5);\n\t    lo += Math.imul(al5, bl6);\n\t    mid += Math.imul(al5, bh6);\n\t    mid += Math.imul(ah5, bl6);\n\t    hi += Math.imul(ah5, bh6);\n\t    lo += Math.imul(al4, bl7);\n\t    mid += Math.imul(al4, bh7);\n\t    mid += Math.imul(ah4, bl7);\n\t    hi += Math.imul(ah4, bh7);\n\t    lo += Math.imul(al3, bl8);\n\t    mid += Math.imul(al3, bh8);\n\t    mid += Math.imul(ah3, bl8);\n\t    hi += Math.imul(ah3, bh8);\n\t    lo += Math.imul(al2, bl9);\n\t    mid += Math.imul(al2, bh9);\n\t    mid += Math.imul(ah2, bl9);\n\t    hi += Math.imul(ah2, bh9);\n\t    var w11 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w11 >>> 26);\n\t    w11 &= 0x3ffffff;\n\t    /* k = 12 */\n\t    lo = Math.imul(al9, bl3);\n\t    mid = Math.imul(al9, bh3);\n\t    mid += Math.imul(ah9, bl3);\n\t    hi = Math.imul(ah9, bh3);\n\t    lo += Math.imul(al8, bl4);\n\t    mid += Math.imul(al8, bh4);\n\t    mid += Math.imul(ah8, bl4);\n\t    hi += Math.imul(ah8, bh4);\n\t    lo += Math.imul(al7, bl5);\n\t    mid += Math.imul(al7, bh5);\n\t    mid += Math.imul(ah7, bl5);\n\t    hi += Math.imul(ah7, bh5);\n\t    lo += Math.imul(al6, bl6);\n\t    mid += Math.imul(al6, bh6);\n\t    mid += Math.imul(ah6, bl6);\n\t    hi += Math.imul(ah6, bh6);\n\t    lo += Math.imul(al5, bl7);\n\t    mid += Math.imul(al5, bh7);\n\t    mid += Math.imul(ah5, bl7);\n\t    hi += Math.imul(ah5, bh7);\n\t    lo += Math.imul(al4, bl8);\n\t    mid += Math.imul(al4, bh8);\n\t    mid += Math.imul(ah4, bl8);\n\t    hi += Math.imul(ah4, bh8);\n\t    lo += Math.imul(al3, bl9);\n\t    mid += Math.imul(al3, bh9);\n\t    mid += Math.imul(ah3, bl9);\n\t    hi += Math.imul(ah3, bh9);\n\t    var w12 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w12 >>> 26);\n\t    w12 &= 0x3ffffff;\n\t    /* k = 13 */\n\t    lo = Math.imul(al9, bl4);\n\t    mid = Math.imul(al9, bh4);\n\t    mid += Math.imul(ah9, bl4);\n\t    hi = Math.imul(ah9, bh4);\n\t    lo += Math.imul(al8, bl5);\n\t    mid += Math.imul(al8, bh5);\n\t    mid += Math.imul(ah8, bl5);\n\t    hi += Math.imul(ah8, bh5);\n\t    lo += Math.imul(al7, bl6);\n\t    mid += Math.imul(al7, bh6);\n\t    mid += Math.imul(ah7, bl6);\n\t    hi += Math.imul(ah7, bh6);\n\t    lo += Math.imul(al6, bl7);\n\t    mid += Math.imul(al6, bh7);\n\t    mid += Math.imul(ah6, bl7);\n\t    hi += Math.imul(ah6, bh7);\n\t    lo += Math.imul(al5, bl8);\n\t    mid += Math.imul(al5, bh8);\n\t    mid += Math.imul(ah5, bl8);\n\t    hi += Math.imul(ah5, bh8);\n\t    lo += Math.imul(al4, bl9);\n\t    mid += Math.imul(al4, bh9);\n\t    mid += Math.imul(ah4, bl9);\n\t    hi += Math.imul(ah4, bh9);\n\t    var w13 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w13 >>> 26);\n\t    w13 &= 0x3ffffff;\n\t    /* k = 14 */\n\t    lo = Math.imul(al9, bl5);\n\t    mid = Math.imul(al9, bh5);\n\t    mid += Math.imul(ah9, bl5);\n\t    hi = Math.imul(ah9, bh5);\n\t    lo += Math.imul(al8, bl6);\n\t    mid += Math.imul(al8, bh6);\n\t    mid += Math.imul(ah8, bl6);\n\t    hi += Math.imul(ah8, bh6);\n\t    lo += Math.imul(al7, bl7);\n\t    mid += Math.imul(al7, bh7);\n\t    mid += Math.imul(ah7, bl7);\n\t    hi += Math.imul(ah7, bh7);\n\t    lo += Math.imul(al6, bl8);\n\t    mid += Math.imul(al6, bh8);\n\t    mid += Math.imul(ah6, bl8);\n\t    hi += Math.imul(ah6, bh8);\n\t    lo += Math.imul(al5, bl9);\n\t    mid += Math.imul(al5, bh9);\n\t    mid += Math.imul(ah5, bl9);\n\t    hi += Math.imul(ah5, bh9);\n\t    var w14 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w14 >>> 26);\n\t    w14 &= 0x3ffffff;\n\t    /* k = 15 */\n\t    lo = Math.imul(al9, bl6);\n\t    mid = Math.imul(al9, bh6);\n\t    mid += Math.imul(ah9, bl6);\n\t    hi = Math.imul(ah9, bh6);\n\t    lo += Math.imul(al8, bl7);\n\t    mid += Math.imul(al8, bh7);\n\t    mid += Math.imul(ah8, bl7);\n\t    hi += Math.imul(ah8, bh7);\n\t    lo += Math.imul(al7, bl8);\n\t    mid += Math.imul(al7, bh8);\n\t    mid += Math.imul(ah7, bl8);\n\t    hi += Math.imul(ah7, bh8);\n\t    lo += Math.imul(al6, bl9);\n\t    mid += Math.imul(al6, bh9);\n\t    mid += Math.imul(ah6, bl9);\n\t    hi += Math.imul(ah6, bh9);\n\t    var w15 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w15 >>> 26);\n\t    w15 &= 0x3ffffff;\n\t    /* k = 16 */\n\t    lo = Math.imul(al9, bl7);\n\t    mid = Math.imul(al9, bh7);\n\t    mid += Math.imul(ah9, bl7);\n\t    hi = Math.imul(ah9, bh7);\n\t    lo += Math.imul(al8, bl8);\n\t    mid += Math.imul(al8, bh8);\n\t    mid += Math.imul(ah8, bl8);\n\t    hi += Math.imul(ah8, bh8);\n\t    lo += Math.imul(al7, bl9);\n\t    mid += Math.imul(al7, bh9);\n\t    mid += Math.imul(ah7, bl9);\n\t    hi += Math.imul(ah7, bh9);\n\t    var w16 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w16 >>> 26);\n\t    w16 &= 0x3ffffff;\n\t    /* k = 17 */\n\t    lo = Math.imul(al9, bl8);\n\t    mid = Math.imul(al9, bh8);\n\t    mid += Math.imul(ah9, bl8);\n\t    hi = Math.imul(ah9, bh8);\n\t    lo += Math.imul(al8, bl9);\n\t    mid += Math.imul(al8, bh9);\n\t    mid += Math.imul(ah8, bl9);\n\t    hi += Math.imul(ah8, bh9);\n\t    var w17 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w17 >>> 26);\n\t    w17 &= 0x3ffffff;\n\t    /* k = 18 */\n\t    lo = Math.imul(al9, bl9);\n\t    mid = Math.imul(al9, bh9);\n\t    mid += Math.imul(ah9, bl9);\n\t    hi = Math.imul(ah9, bh9);\n\t    var w18 = c + lo + ((mid & 0x1fff) << 13);\n\t    c = hi + (mid >>> 13) + (w18 >>> 26);\n\t    w18 &= 0x3ffffff;\n\t    o[0] = w0;\n\t    o[1] = w1;\n\t    o[2] = w2;\n\t    o[3] = w3;\n\t    o[4] = w4;\n\t    o[5] = w5;\n\t    o[6] = w6;\n\t    o[7] = w7;\n\t    o[8] = w8;\n\t    o[9] = w9;\n\t    o[10] = w10;\n\t    o[11] = w11;\n\t    o[12] = w12;\n\t    o[13] = w13;\n\t    o[14] = w14;\n\t    o[15] = w15;\n\t    o[16] = w16;\n\t    o[17] = w17;\n\t    o[18] = w18;\n\t    if (c !== 0) {\n\t      o[19] = c;\n\t      out.length++;\n\t    }\n\t    return out;\n\t  };\n\n\t  // Polyfill comb\n\t  if (!Math.imul) {\n\t    comb10MulTo = smallMulTo;\n\t  }\n\n\t  function bigMulTo (self, num, out) {\n\t    out.negative = num.negative ^ self.negative;\n\t    out.length = self.length + num.length;\n\n\t    var carry = 0;\n\t    var hncarry = 0;\n\t    for (var k = 0; k < out.length - 1; k++) {\n\t      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n\t      // note that ncarry could be >= 0x3ffffff\n\t      var ncarry = hncarry;\n\t      hncarry = 0;\n\t      var rword = carry & 0x3ffffff;\n\t      var maxJ = Math.min(k, num.length - 1);\n\t      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n\t        var i = k - j;\n\t        var a = self.words[i] | 0;\n\t        var b = num.words[j] | 0;\n\t        var r = a * b;\n\n\t        var lo = r & 0x3ffffff;\n\t        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n\t        lo = (lo + rword) | 0;\n\t        rword = lo & 0x3ffffff;\n\t        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n\t        hncarry += ncarry >>> 26;\n\t        ncarry &= 0x3ffffff;\n\t      }\n\t      out.words[k] = rword;\n\t      carry = ncarry;\n\t      ncarry = hncarry;\n\t    }\n\t    if (carry !== 0) {\n\t      out.words[k] = carry;\n\t    } else {\n\t      out.length--;\n\t    }\n\n\t    return out.strip();\n\t  }\n\n\t  function jumboMulTo (self, num, out) {\n\t    var fftm = new FFTM();\n\t    return fftm.mulp(self, num, out);\n\t  }\n\n\t  BN.prototype.mulTo = function mulTo (num, out) {\n\t    var res;\n\t    var len = this.length + num.length;\n\t    if (this.length === 10 && num.length === 10) {\n\t      res = comb10MulTo(this, num, out);\n\t    } else if (len < 63) {\n\t      res = smallMulTo(this, num, out);\n\t    } else if (len < 1024) {\n\t      res = bigMulTo(this, num, out);\n\t    } else {\n\t      res = jumboMulTo(this, num, out);\n\t    }\n\n\t    return res;\n\t  };\n\n\t  // Cooley-Tukey algorithm for FFT\n\t  // slightly revisited to rely on looping instead of recursion\n\n\t  function FFTM (x, y) {\n\t    this.x = x;\n\t    this.y = y;\n\t  }\n\n\t  FFTM.prototype.makeRBT = function makeRBT (N) {\n\t    var t = new Array(N);\n\t    var l = BN.prototype._countBits(N) - 1;\n\t    for (var i = 0; i < N; i++) {\n\t      t[i] = this.revBin(i, l, N);\n\t    }\n\n\t    return t;\n\t  };\n\n\t  // Returns binary-reversed representation of `x`\n\t  FFTM.prototype.revBin = function revBin (x, l, N) {\n\t    if (x === 0 || x === N - 1) return x;\n\n\t    var rb = 0;\n\t    for (var i = 0; i < l; i++) {\n\t      rb |= (x & 1) << (l - i - 1);\n\t      x >>= 1;\n\t    }\n\n\t    return rb;\n\t  };\n\n\t  // Performs \"tweedling\" phase, therefore 'emulating'\n\t  // behaviour of the recursive algorithm\n\t  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n\t    for (var i = 0; i < N; i++) {\n\t      rtws[i] = rws[rbt[i]];\n\t      itws[i] = iws[rbt[i]];\n\t    }\n\t  };\n\n\t  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n\t    this.permute(rbt, rws, iws, rtws, itws, N);\n\n\t    for (var s = 1; s < N; s <<= 1) {\n\t      var l = s << 1;\n\n\t      var rtwdf = Math.cos(2 * Math.PI / l);\n\t      var itwdf = Math.sin(2 * Math.PI / l);\n\n\t      for (var p = 0; p < N; p += l) {\n\t        var rtwdf_ = rtwdf;\n\t        var itwdf_ = itwdf;\n\n\t        for (var j = 0; j < s; j++) {\n\t          var re = rtws[p + j];\n\t          var ie = itws[p + j];\n\n\t          var ro = rtws[p + j + s];\n\t          var io = itws[p + j + s];\n\n\t          var rx = rtwdf_ * ro - itwdf_ * io;\n\n\t          io = rtwdf_ * io + itwdf_ * ro;\n\t          ro = rx;\n\n\t          rtws[p + j] = re + ro;\n\t          itws[p + j] = ie + io;\n\n\t          rtws[p + j + s] = re - ro;\n\t          itws[p + j + s] = ie - io;\n\n\t          /* jshint maxdepth : false */\n\t          if (j !== l) {\n\t            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n\t            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n\t            rtwdf_ = rx;\n\t          }\n\t        }\n\t      }\n\t    }\n\t  };\n\n\t  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n\t    var N = Math.max(m, n) | 1;\n\t    var odd = N & 1;\n\t    var i = 0;\n\t    for (N = N / 2 | 0; N; N = N >>> 1) {\n\t      i++;\n\t    }\n\n\t    return 1 << i + 1 + odd;\n\t  };\n\n\t  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n\t    if (N <= 1) return;\n\n\t    for (var i = 0; i < N / 2; i++) {\n\t      var t = rws[i];\n\n\t      rws[i] = rws[N - i - 1];\n\t      rws[N - i - 1] = t;\n\n\t      t = iws[i];\n\n\t      iws[i] = -iws[N - i - 1];\n\t      iws[N - i - 1] = -t;\n\t    }\n\t  };\n\n\t  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n\t    var carry = 0;\n\t    for (var i = 0; i < N / 2; i++) {\n\t      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n\t        Math.round(ws[2 * i] / N) +\n\t        carry;\n\n\t      ws[i] = w & 0x3ffffff;\n\n\t      if (w < 0x4000000) {\n\t        carry = 0;\n\t      } else {\n\t        carry = w / 0x4000000 | 0;\n\t      }\n\t    }\n\n\t    return ws;\n\t  };\n\n\t  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n\t    var carry = 0;\n\t    for (var i = 0; i < len; i++) {\n\t      carry = carry + (ws[i] | 0);\n\n\t      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n\t      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n\t    }\n\n\t    // Pad with zeroes\n\t    for (i = 2 * len; i < N; ++i) {\n\t      rws[i] = 0;\n\t    }\n\n\t    assert(carry === 0);\n\t    assert((carry & ~0x1fff) === 0);\n\t  };\n\n\t  FFTM.prototype.stub = function stub (N) {\n\t    var ph = new Array(N);\n\t    for (var i = 0; i < N; i++) {\n\t      ph[i] = 0;\n\t    }\n\n\t    return ph;\n\t  };\n\n\t  FFTM.prototype.mulp = function mulp (x, y, out) {\n\t    var N = 2 * this.guessLen13b(x.length, y.length);\n\n\t    var rbt = this.makeRBT(N);\n\n\t    var _ = this.stub(N);\n\n\t    var rws = new Array(N);\n\t    var rwst = new Array(N);\n\t    var iwst = new Array(N);\n\n\t    var nrws = new Array(N);\n\t    var nrwst = new Array(N);\n\t    var niwst = new Array(N);\n\n\t    var rmws = out.words;\n\t    rmws.length = N;\n\n\t    this.convert13b(x.words, x.length, rws, N);\n\t    this.convert13b(y.words, y.length, nrws, N);\n\n\t    this.transform(rws, _, rwst, iwst, N, rbt);\n\t    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n\t    for (var i = 0; i < N; i++) {\n\t      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n\t      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n\t      rwst[i] = rx;\n\t    }\n\n\t    this.conjugate(rwst, iwst, N);\n\t    this.transform(rwst, iwst, rmws, _, N, rbt);\n\t    this.conjugate(rmws, _, N);\n\t    this.normalize13b(rmws, N);\n\n\t    out.negative = x.negative ^ y.negative;\n\t    out.length = x.length + y.length;\n\t    return out.strip();\n\t  };\n\n\t  // Multiply `this` by `num`\n\t  BN.prototype.mul = function mul (num) {\n\t    var out = new BN(null);\n\t    out.words = new Array(this.length + num.length);\n\t    return this.mulTo(num, out);\n\t  };\n\n\t  // Multiply employing FFT\n\t  BN.prototype.mulf = function mulf (num) {\n\t    var out = new BN(null);\n\t    out.words = new Array(this.length + num.length);\n\t    return jumboMulTo(this, num, out);\n\t  };\n\n\t  // In-place Multiplication\n\t  BN.prototype.imul = function imul (num) {\n\t    return this.clone().mulTo(num, this);\n\t  };\n\n\t  BN.prototype.imuln = function imuln (num) {\n\t    assert(typeof num === 'number');\n\t    assert(num < 0x4000000);\n\n\t    // Carry\n\t    var carry = 0;\n\t    for (var i = 0; i < this.length; i++) {\n\t      var w = (this.words[i] | 0) * num;\n\t      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n\t      carry >>= 26;\n\t      carry += (w / 0x4000000) | 0;\n\t      // NOTE: lo is 27bit maximum\n\t      carry += lo >>> 26;\n\t      this.words[i] = lo & 0x3ffffff;\n\t    }\n\n\t    if (carry !== 0) {\n\t      this.words[i] = carry;\n\t      this.length++;\n\t    }\n\n\t    return this;\n\t  };\n\n\t  BN.prototype.muln = function muln (num) {\n\t    return this.clone().imuln(num);\n\t  };\n\n\t  // `this` * `this`\n\t  BN.prototype.sqr = function sqr () {\n\t    return this.mul(this);\n\t  };\n\n\t  // `this` * `this` in-place\n\t  BN.prototype.isqr = function isqr () {\n\t    return this.imul(this.clone());\n\t  };\n\n\t  // Math.pow(`this`, `num`)\n\t  BN.prototype.pow = function pow (num) {\n\t    var w = toBitArray(num);\n\t    if (w.length === 0) return new BN(1);\n\n\t    // Skip leading zeroes\n\t    var res = this;\n\t    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n\t      if (w[i] !== 0) break;\n\t    }\n\n\t    if (++i < w.length) {\n\t      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n\t        if (w[i] === 0) continue;\n\n\t        res = res.mul(q);\n\t      }\n\t    }\n\n\t    return res;\n\t  };\n\n\t  // Shift-left in-place\n\t  BN.prototype.iushln = function iushln (bits) {\n\t    assert(typeof bits === 'number' && bits >= 0);\n\t    var r = bits % 26;\n\t    var s = (bits - r) / 26;\n\t    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n\t    var i;\n\n\t    if (r !== 0) {\n\t      var carry = 0;\n\n\t      for (i = 0; i < this.length; i++) {\n\t        var newCarry = this.words[i] & carryMask;\n\t        var c = ((this.words[i] | 0) - newCarry) << r;\n\t        this.words[i] = c | carry;\n\t        carry = newCarry >>> (26 - r);\n\t      }\n\n\t      if (carry) {\n\t        this.words[i] = carry;\n\t        this.length++;\n\t      }\n\t    }\n\n\t    if (s !== 0) {\n\t      for (i = this.length - 1; i >= 0; i--) {\n\t        this.words[i + s] = this.words[i];\n\t      }\n\n\t      for (i = 0; i < s; i++) {\n\t        this.words[i] = 0;\n\t      }\n\n\t      this.length += s;\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.ishln = function ishln (bits) {\n\t    // TODO(indutny): implement me\n\t    assert(this.negative === 0);\n\t    return this.iushln(bits);\n\t  };\n\n\t  // Shift-right in-place\n\t  // NOTE: `hint` is a lowest bit before trailing zeroes\n\t  // NOTE: if `extended` is present - it will be filled with destroyed bits\n\t  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n\t    assert(typeof bits === 'number' && bits >= 0);\n\t    var h;\n\t    if (hint) {\n\t      h = (hint - (hint % 26)) / 26;\n\t    } else {\n\t      h = 0;\n\t    }\n\n\t    var r = bits % 26;\n\t    var s = Math.min((bits - r) / 26, this.length);\n\t    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n\t    var maskedWords = extended;\n\n\t    h -= s;\n\t    h = Math.max(0, h);\n\n\t    // Extended mode, copy masked part\n\t    if (maskedWords) {\n\t      for (var i = 0; i < s; i++) {\n\t        maskedWords.words[i] = this.words[i];\n\t      }\n\t      maskedWords.length = s;\n\t    }\n\n\t    if (s === 0) {\n\t      // No-op, we should not move anything at all\n\t    } else if (this.length > s) {\n\t      this.length -= s;\n\t      for (i = 0; i < this.length; i++) {\n\t        this.words[i] = this.words[i + s];\n\t      }\n\t    } else {\n\t      this.words[0] = 0;\n\t      this.length = 1;\n\t    }\n\n\t    var carry = 0;\n\t    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n\t      var word = this.words[i] | 0;\n\t      this.words[i] = (carry << (26 - r)) | (word >>> r);\n\t      carry = word & mask;\n\t    }\n\n\t    // Push carried bits as a mask\n\t    if (maskedWords && carry !== 0) {\n\t      maskedWords.words[maskedWords.length++] = carry;\n\t    }\n\n\t    if (this.length === 0) {\n\t      this.words[0] = 0;\n\t      this.length = 1;\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n\t    // TODO(indutny): implement me\n\t    assert(this.negative === 0);\n\t    return this.iushrn(bits, hint, extended);\n\t  };\n\n\t  // Shift-left\n\t  BN.prototype.shln = function shln (bits) {\n\t    return this.clone().ishln(bits);\n\t  };\n\n\t  BN.prototype.ushln = function ushln (bits) {\n\t    return this.clone().iushln(bits);\n\t  };\n\n\t  // Shift-right\n\t  BN.prototype.shrn = function shrn (bits) {\n\t    return this.clone().ishrn(bits);\n\t  };\n\n\t  BN.prototype.ushrn = function ushrn (bits) {\n\t    return this.clone().iushrn(bits);\n\t  };\n\n\t  // Test if n bit is set\n\t  BN.prototype.testn = function testn (bit) {\n\t    assert(typeof bit === 'number' && bit >= 0);\n\t    var r = bit % 26;\n\t    var s = (bit - r) / 26;\n\t    var q = 1 << r;\n\n\t    // Fast case: bit is much higher than all existing words\n\t    if (this.length <= s) return false;\n\n\t    // Check bit and return\n\t    var w = this.words[s];\n\n\t    return !!(w & q);\n\t  };\n\n\t  // Return only lowers bits of number (in-place)\n\t  BN.prototype.imaskn = function imaskn (bits) {\n\t    assert(typeof bits === 'number' && bits >= 0);\n\t    var r = bits % 26;\n\t    var s = (bits - r) / 26;\n\n\t    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n\t    if (r !== 0) {\n\t      s++;\n\t    }\n\t    this.length = Math.min(s, this.length);\n\n\t    if (r !== 0) {\n\t      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n\t      this.words[this.length - 1] &= mask;\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  // Return only lowers bits of number\n\t  BN.prototype.maskn = function maskn (bits) {\n\t    return this.clone().imaskn(bits);\n\t  };\n\n\t  // Add plain number `num` to `this`\n\t  BN.prototype.iaddn = function iaddn (num) {\n\t    assert(typeof num === 'number');\n\t    assert(num < 0x4000000);\n\t    if (num < 0) return this.isubn(-num);\n\n\t    // Possible sign change\n\t    if (this.negative !== 0) {\n\t      if (this.length === 1 && (this.words[0] | 0) < num) {\n\t        this.words[0] = num - (this.words[0] | 0);\n\t        this.negative = 0;\n\t        return this;\n\t      }\n\n\t      this.negative = 0;\n\t      this.isubn(num);\n\t      this.negative = 1;\n\t      return this;\n\t    }\n\n\t    // Add without checks\n\t    return this._iaddn(num);\n\t  };\n\n\t  BN.prototype._iaddn = function _iaddn (num) {\n\t    this.words[0] += num;\n\n\t    // Carry\n\t    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n\t      this.words[i] -= 0x4000000;\n\t      if (i === this.length - 1) {\n\t        this.words[i + 1] = 1;\n\t      } else {\n\t        this.words[i + 1]++;\n\t      }\n\t    }\n\t    this.length = Math.max(this.length, i + 1);\n\n\t    return this;\n\t  };\n\n\t  // Subtract plain number `num` from `this`\n\t  BN.prototype.isubn = function isubn (num) {\n\t    assert(typeof num === 'number');\n\t    assert(num < 0x4000000);\n\t    if (num < 0) return this.iaddn(-num);\n\n\t    if (this.negative !== 0) {\n\t      this.negative = 0;\n\t      this.iaddn(num);\n\t      this.negative = 1;\n\t      return this;\n\t    }\n\n\t    this.words[0] -= num;\n\n\t    if (this.length === 1 && this.words[0] < 0) {\n\t      this.words[0] = -this.words[0];\n\t      this.negative = 1;\n\t    } else {\n\t      // Carry\n\t      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n\t        this.words[i] += 0x4000000;\n\t        this.words[i + 1] -= 1;\n\t      }\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.addn = function addn (num) {\n\t    return this.clone().iaddn(num);\n\t  };\n\n\t  BN.prototype.subn = function subn (num) {\n\t    return this.clone().isubn(num);\n\t  };\n\n\t  BN.prototype.iabs = function iabs () {\n\t    this.negative = 0;\n\n\t    return this;\n\t  };\n\n\t  BN.prototype.abs = function abs () {\n\t    return this.clone().iabs();\n\t  };\n\n\t  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n\t    var len = num.length + shift;\n\t    var i;\n\n\t    this._expand(len);\n\n\t    var w;\n\t    var carry = 0;\n\t    for (i = 0; i < num.length; i++) {\n\t      w = (this.words[i + shift] | 0) + carry;\n\t      var right = (num.words[i] | 0) * mul;\n\t      w -= right & 0x3ffffff;\n\t      carry = (w >> 26) - ((right / 0x4000000) | 0);\n\t      this.words[i + shift] = w & 0x3ffffff;\n\t    }\n\t    for (; i < this.length - shift; i++) {\n\t      w = (this.words[i + shift] | 0) + carry;\n\t      carry = w >> 26;\n\t      this.words[i + shift] = w & 0x3ffffff;\n\t    }\n\n\t    if (carry === 0) return this.strip();\n\n\t    // Subtraction overflow\n\t    assert(carry === -1);\n\t    carry = 0;\n\t    for (i = 0; i < this.length; i++) {\n\t      w = -(this.words[i] | 0) + carry;\n\t      carry = w >> 26;\n\t      this.words[i] = w & 0x3ffffff;\n\t    }\n\t    this.negative = 1;\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n\t    var shift = this.length - num.length;\n\n\t    var a = this.clone();\n\t    var b = num;\n\n\t    // Normalize\n\t    var bhi = b.words[b.length - 1] | 0;\n\t    var bhiBits = this._countBits(bhi);\n\t    shift = 26 - bhiBits;\n\t    if (shift !== 0) {\n\t      b = b.ushln(shift);\n\t      a.iushln(shift);\n\t      bhi = b.words[b.length - 1] | 0;\n\t    }\n\n\t    // Initialize quotient\n\t    var m = a.length - b.length;\n\t    var q;\n\n\t    if (mode !== 'mod') {\n\t      q = new BN(null);\n\t      q.length = m + 1;\n\t      q.words = new Array(q.length);\n\t      for (var i = 0; i < q.length; i++) {\n\t        q.words[i] = 0;\n\t      }\n\t    }\n\n\t    var diff = a.clone()._ishlnsubmul(b, 1, m);\n\t    if (diff.negative === 0) {\n\t      a = diff;\n\t      if (q) {\n\t        q.words[m] = 1;\n\t      }\n\t    }\n\n\t    for (var j = m - 1; j >= 0; j--) {\n\t      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n\t        (a.words[b.length + j - 1] | 0);\n\n\t      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n\t      // (0x7ffffff)\n\t      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n\t      a._ishlnsubmul(b, qj, j);\n\t      while (a.negative !== 0) {\n\t        qj--;\n\t        a.negative = 0;\n\t        a._ishlnsubmul(b, 1, j);\n\t        if (!a.isZero()) {\n\t          a.negative ^= 1;\n\t        }\n\t      }\n\t      if (q) {\n\t        q.words[j] = qj;\n\t      }\n\t    }\n\t    if (q) {\n\t      q.strip();\n\t    }\n\t    a.strip();\n\n\t    // Denormalize\n\t    if (mode !== 'div' && shift !== 0) {\n\t      a.iushrn(shift);\n\t    }\n\n\t    return {\n\t      div: q || null,\n\t      mod: a\n\t    };\n\t  };\n\n\t  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n\t  //       to `div` to request div only, or be absent to\n\t  //       request both div & mod\n\t  //       2) `positive` is true if unsigned mod is requested\n\t  BN.prototype.divmod = function divmod (num, mode, positive) {\n\t    assert(!num.isZero());\n\n\t    if (this.isZero()) {\n\t      return {\n\t        div: new BN(0),\n\t        mod: new BN(0)\n\t      };\n\t    }\n\n\t    var div, mod, res;\n\t    if (this.negative !== 0 && num.negative === 0) {\n\t      res = this.neg().divmod(num, mode);\n\n\t      if (mode !== 'mod') {\n\t        div = res.div.neg();\n\t      }\n\n\t      if (mode !== 'div') {\n\t        mod = res.mod.neg();\n\t        if (positive && mod.negative !== 0) {\n\t          mod.iadd(num);\n\t        }\n\t      }\n\n\t      return {\n\t        div: div,\n\t        mod: mod\n\t      };\n\t    }\n\n\t    if (this.negative === 0 && num.negative !== 0) {\n\t      res = this.divmod(num.neg(), mode);\n\n\t      if (mode !== 'mod') {\n\t        div = res.div.neg();\n\t      }\n\n\t      return {\n\t        div: div,\n\t        mod: res.mod\n\t      };\n\t    }\n\n\t    if ((this.negative & num.negative) !== 0) {\n\t      res = this.neg().divmod(num.neg(), mode);\n\n\t      if (mode !== 'div') {\n\t        mod = res.mod.neg();\n\t        if (positive && mod.negative !== 0) {\n\t          mod.isub(num);\n\t        }\n\t      }\n\n\t      return {\n\t        div: res.div,\n\t        mod: mod\n\t      };\n\t    }\n\n\t    // Both numbers are positive at this point\n\n\t    // Strip both numbers to approximate shift value\n\t    if (num.length > this.length || this.cmp(num) < 0) {\n\t      return {\n\t        div: new BN(0),\n\t        mod: this\n\t      };\n\t    }\n\n\t    // Very short reduction\n\t    if (num.length === 1) {\n\t      if (mode === 'div') {\n\t        return {\n\t          div: this.divn(num.words[0]),\n\t          mod: null\n\t        };\n\t      }\n\n\t      if (mode === 'mod') {\n\t        return {\n\t          div: null,\n\t          mod: new BN(this.modn(num.words[0]))\n\t        };\n\t      }\n\n\t      return {\n\t        div: this.divn(num.words[0]),\n\t        mod: new BN(this.modn(num.words[0]))\n\t      };\n\t    }\n\n\t    return this._wordDiv(num, mode);\n\t  };\n\n\t  // Find `this` / `num`\n\t  BN.prototype.div = function div (num) {\n\t    return this.divmod(num, 'div', false).div;\n\t  };\n\n\t  // Find `this` % `num`\n\t  BN.prototype.mod = function mod (num) {\n\t    return this.divmod(num, 'mod', false).mod;\n\t  };\n\n\t  BN.prototype.umod = function umod (num) {\n\t    return this.divmod(num, 'mod', true).mod;\n\t  };\n\n\t  // Find Round(`this` / `num`)\n\t  BN.prototype.divRound = function divRound (num) {\n\t    var dm = this.divmod(num);\n\n\t    // Fast case - exact division\n\t    if (dm.mod.isZero()) return dm.div;\n\n\t    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n\t    var half = num.ushrn(1);\n\t    var r2 = num.andln(1);\n\t    var cmp = mod.cmp(half);\n\n\t    // Round down\n\t    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n\t    // Round up\n\t    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n\t  };\n\n\t  BN.prototype.modn = function modn (num) {\n\t    assert(num <= 0x3ffffff);\n\t    var p = (1 << 26) % num;\n\n\t    var acc = 0;\n\t    for (var i = this.length - 1; i >= 0; i--) {\n\t      acc = (p * acc + (this.words[i] | 0)) % num;\n\t    }\n\n\t    return acc;\n\t  };\n\n\t  // In-place division by number\n\t  BN.prototype.idivn = function idivn (num) {\n\t    assert(num <= 0x3ffffff);\n\n\t    var carry = 0;\n\t    for (var i = this.length - 1; i >= 0; i--) {\n\t      var w = (this.words[i] | 0) + carry * 0x4000000;\n\t      this.words[i] = (w / num) | 0;\n\t      carry = w % num;\n\t    }\n\n\t    return this.strip();\n\t  };\n\n\t  BN.prototype.divn = function divn (num) {\n\t    return this.clone().idivn(num);\n\t  };\n\n\t  BN.prototype.egcd = function egcd (p) {\n\t    assert(p.negative === 0);\n\t    assert(!p.isZero());\n\n\t    var x = this;\n\t    var y = p.clone();\n\n\t    if (x.negative !== 0) {\n\t      x = x.umod(p);\n\t    } else {\n\t      x = x.clone();\n\t    }\n\n\t    // A * x + B * y = x\n\t    var A = new BN(1);\n\t    var B = new BN(0);\n\n\t    // C * x + D * y = y\n\t    var C = new BN(0);\n\t    var D = new BN(1);\n\n\t    var g = 0;\n\n\t    while (x.isEven() && y.isEven()) {\n\t      x.iushrn(1);\n\t      y.iushrn(1);\n\t      ++g;\n\t    }\n\n\t    var yp = y.clone();\n\t    var xp = x.clone();\n\n\t    while (!x.isZero()) {\n\t      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n\t      if (i > 0) {\n\t        x.iushrn(i);\n\t        while (i-- > 0) {\n\t          if (A.isOdd() || B.isOdd()) {\n\t            A.iadd(yp);\n\t            B.isub(xp);\n\t          }\n\n\t          A.iushrn(1);\n\t          B.iushrn(1);\n\t        }\n\t      }\n\n\t      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n\t      if (j > 0) {\n\t        y.iushrn(j);\n\t        while (j-- > 0) {\n\t          if (C.isOdd() || D.isOdd()) {\n\t            C.iadd(yp);\n\t            D.isub(xp);\n\t          }\n\n\t          C.iushrn(1);\n\t          D.iushrn(1);\n\t        }\n\t      }\n\n\t      if (x.cmp(y) >= 0) {\n\t        x.isub(y);\n\t        A.isub(C);\n\t        B.isub(D);\n\t      } else {\n\t        y.isub(x);\n\t        C.isub(A);\n\t        D.isub(B);\n\t      }\n\t    }\n\n\t    return {\n\t      a: C,\n\t      b: D,\n\t      gcd: y.iushln(g)\n\t    };\n\t  };\n\n\t  // This is reduced incarnation of the binary EEA\n\t  // above, designated to invert members of the\n\t  // _prime_ fields F(p) at a maximal speed\n\t  BN.prototype._invmp = function _invmp (p) {\n\t    assert(p.negative === 0);\n\t    assert(!p.isZero());\n\n\t    var a = this;\n\t    var b = p.clone();\n\n\t    if (a.negative !== 0) {\n\t      a = a.umod(p);\n\t    } else {\n\t      a = a.clone();\n\t    }\n\n\t    var x1 = new BN(1);\n\t    var x2 = new BN(0);\n\n\t    var delta = b.clone();\n\n\t    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n\t      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n\t      if (i > 0) {\n\t        a.iushrn(i);\n\t        while (i-- > 0) {\n\t          if (x1.isOdd()) {\n\t            x1.iadd(delta);\n\t          }\n\n\t          x1.iushrn(1);\n\t        }\n\t      }\n\n\t      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n\t      if (j > 0) {\n\t        b.iushrn(j);\n\t        while (j-- > 0) {\n\t          if (x2.isOdd()) {\n\t            x2.iadd(delta);\n\t          }\n\n\t          x2.iushrn(1);\n\t        }\n\t      }\n\n\t      if (a.cmp(b) >= 0) {\n\t        a.isub(b);\n\t        x1.isub(x2);\n\t      } else {\n\t        b.isub(a);\n\t        x2.isub(x1);\n\t      }\n\t    }\n\n\t    var res;\n\t    if (a.cmpn(1) === 0) {\n\t      res = x1;\n\t    } else {\n\t      res = x2;\n\t    }\n\n\t    if (res.cmpn(0) < 0) {\n\t      res.iadd(p);\n\t    }\n\n\t    return res;\n\t  };\n\n\t  BN.prototype.gcd = function gcd (num) {\n\t    if (this.isZero()) return num.abs();\n\t    if (num.isZero()) return this.abs();\n\n\t    var a = this.clone();\n\t    var b = num.clone();\n\t    a.negative = 0;\n\t    b.negative = 0;\n\n\t    // Remove common factor of two\n\t    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n\t      a.iushrn(1);\n\t      b.iushrn(1);\n\t    }\n\n\t    do {\n\t      while (a.isEven()) {\n\t        a.iushrn(1);\n\t      }\n\t      while (b.isEven()) {\n\t        b.iushrn(1);\n\t      }\n\n\t      var r = a.cmp(b);\n\t      if (r < 0) {\n\t        // Swap `a` and `b` to make `a` always bigger than `b`\n\t        var t = a;\n\t        a = b;\n\t        b = t;\n\t      } else if (r === 0 || b.cmpn(1) === 0) {\n\t        break;\n\t      }\n\n\t      a.isub(b);\n\t    } while (true);\n\n\t    return b.iushln(shift);\n\t  };\n\n\t  // Invert number in the field F(num)\n\t  BN.prototype.invm = function invm (num) {\n\t    return this.egcd(num).a.umod(num);\n\t  };\n\n\t  BN.prototype.isEven = function isEven () {\n\t    return (this.words[0] & 1) === 0;\n\t  };\n\n\t  BN.prototype.isOdd = function isOdd () {\n\t    return (this.words[0] & 1) === 1;\n\t  };\n\n\t  // And first word and num\n\t  BN.prototype.andln = function andln (num) {\n\t    return this.words[0] & num;\n\t  };\n\n\t  // Increment at the bit position in-line\n\t  BN.prototype.bincn = function bincn (bit) {\n\t    assert(typeof bit === 'number');\n\t    var r = bit % 26;\n\t    var s = (bit - r) / 26;\n\t    var q = 1 << r;\n\n\t    // Fast case: bit is much higher than all existing words\n\t    if (this.length <= s) {\n\t      this._expand(s + 1);\n\t      this.words[s] |= q;\n\t      return this;\n\t    }\n\n\t    // Add bit and propagate, if needed\n\t    var carry = q;\n\t    for (var i = s; carry !== 0 && i < this.length; i++) {\n\t      var w = this.words[i] | 0;\n\t      w += carry;\n\t      carry = w >>> 26;\n\t      w &= 0x3ffffff;\n\t      this.words[i] = w;\n\t    }\n\t    if (carry !== 0) {\n\t      this.words[i] = carry;\n\t      this.length++;\n\t    }\n\t    return this;\n\t  };\n\n\t  BN.prototype.isZero = function isZero () {\n\t    return this.length === 1 && this.words[0] === 0;\n\t  };\n\n\t  BN.prototype.cmpn = function cmpn (num) {\n\t    var negative = num < 0;\n\n\t    if (this.negative !== 0 && !negative) return -1;\n\t    if (this.negative === 0 && negative) return 1;\n\n\t    this.strip();\n\n\t    var res;\n\t    if (this.length > 1) {\n\t      res = 1;\n\t    } else {\n\t      if (negative) {\n\t        num = -num;\n\t      }\n\n\t      assert(num <= 0x3ffffff, 'Number is too big');\n\n\t      var w = this.words[0] | 0;\n\t      res = w === num ? 0 : w < num ? -1 : 1;\n\t    }\n\t    if (this.negative !== 0) return -res | 0;\n\t    return res;\n\t  };\n\n\t  // Compare two numbers and return:\n\t  // 1 - if `this` > `num`\n\t  // 0 - if `this` == `num`\n\t  // -1 - if `this` < `num`\n\t  BN.prototype.cmp = function cmp (num) {\n\t    if (this.negative !== 0 && num.negative === 0) return -1;\n\t    if (this.negative === 0 && num.negative !== 0) return 1;\n\n\t    var res = this.ucmp(num);\n\t    if (this.negative !== 0) return -res | 0;\n\t    return res;\n\t  };\n\n\t  // Unsigned comparison\n\t  BN.prototype.ucmp = function ucmp (num) {\n\t    // At this point both numbers have the same sign\n\t    if (this.length > num.length) return 1;\n\t    if (this.length < num.length) return -1;\n\n\t    var res = 0;\n\t    for (var i = this.length - 1; i >= 0; i--) {\n\t      var a = this.words[i] | 0;\n\t      var b = num.words[i] | 0;\n\n\t      if (a === b) continue;\n\t      if (a < b) {\n\t        res = -1;\n\t      } else if (a > b) {\n\t        res = 1;\n\t      }\n\t      break;\n\t    }\n\t    return res;\n\t  };\n\n\t  BN.prototype.gtn = function gtn (num) {\n\t    return this.cmpn(num) === 1;\n\t  };\n\n\t  BN.prototype.gt = function gt (num) {\n\t    return this.cmp(num) === 1;\n\t  };\n\n\t  BN.prototype.gten = function gten (num) {\n\t    return this.cmpn(num) >= 0;\n\t  };\n\n\t  BN.prototype.gte = function gte (num) {\n\t    return this.cmp(num) >= 0;\n\t  };\n\n\t  BN.prototype.ltn = function ltn (num) {\n\t    return this.cmpn(num) === -1;\n\t  };\n\n\t  BN.prototype.lt = function lt (num) {\n\t    return this.cmp(num) === -1;\n\t  };\n\n\t  BN.prototype.lten = function lten (num) {\n\t    return this.cmpn(num) <= 0;\n\t  };\n\n\t  BN.prototype.lte = function lte (num) {\n\t    return this.cmp(num) <= 0;\n\t  };\n\n\t  BN.prototype.eqn = function eqn (num) {\n\t    return this.cmpn(num) === 0;\n\t  };\n\n\t  BN.prototype.eq = function eq (num) {\n\t    return this.cmp(num) === 0;\n\t  };\n\n\t  //\n\t  // A reduce context, could be using montgomery or something better, depending\n\t  // on the `m` itself.\n\t  //\n\t  BN.red = function red (num) {\n\t    return new Red(num);\n\t  };\n\n\t  BN.prototype.toRed = function toRed (ctx) {\n\t    assert(!this.red, 'Already a number in reduction context');\n\t    assert(this.negative === 0, 'red works only with positives');\n\t    return ctx.convertTo(this)._forceRed(ctx);\n\t  };\n\n\t  BN.prototype.fromRed = function fromRed () {\n\t    assert(this.red, 'fromRed works only with numbers in reduction context');\n\t    return this.red.convertFrom(this);\n\t  };\n\n\t  BN.prototype._forceRed = function _forceRed (ctx) {\n\t    this.red = ctx;\n\t    return this;\n\t  };\n\n\t  BN.prototype.forceRed = function forceRed (ctx) {\n\t    assert(!this.red, 'Already a number in reduction context');\n\t    return this._forceRed(ctx);\n\t  };\n\n\t  BN.prototype.redAdd = function redAdd (num) {\n\t    assert(this.red, 'redAdd works only with red numbers');\n\t    return this.red.add(this, num);\n\t  };\n\n\t  BN.prototype.redIAdd = function redIAdd (num) {\n\t    assert(this.red, 'redIAdd works only with red numbers');\n\t    return this.red.iadd(this, num);\n\t  };\n\n\t  BN.prototype.redSub = function redSub (num) {\n\t    assert(this.red, 'redSub works only with red numbers');\n\t    return this.red.sub(this, num);\n\t  };\n\n\t  BN.prototype.redISub = function redISub (num) {\n\t    assert(this.red, 'redISub works only with red numbers');\n\t    return this.red.isub(this, num);\n\t  };\n\n\t  BN.prototype.redShl = function redShl (num) {\n\t    assert(this.red, 'redShl works only with red numbers');\n\t    return this.red.shl(this, num);\n\t  };\n\n\t  BN.prototype.redMul = function redMul (num) {\n\t    assert(this.red, 'redMul works only with red numbers');\n\t    this.red._verify2(this, num);\n\t    return this.red.mul(this, num);\n\t  };\n\n\t  BN.prototype.redIMul = function redIMul (num) {\n\t    assert(this.red, 'redMul works only with red numbers');\n\t    this.red._verify2(this, num);\n\t    return this.red.imul(this, num);\n\t  };\n\n\t  BN.prototype.redSqr = function redSqr () {\n\t    assert(this.red, 'redSqr works only with red numbers');\n\t    this.red._verify1(this);\n\t    return this.red.sqr(this);\n\t  };\n\n\t  BN.prototype.redISqr = function redISqr () {\n\t    assert(this.red, 'redISqr works only with red numbers');\n\t    this.red._verify1(this);\n\t    return this.red.isqr(this);\n\t  };\n\n\t  // Square root over p\n\t  BN.prototype.redSqrt = function redSqrt () {\n\t    assert(this.red, 'redSqrt works only with red numbers');\n\t    this.red._verify1(this);\n\t    return this.red.sqrt(this);\n\t  };\n\n\t  BN.prototype.redInvm = function redInvm () {\n\t    assert(this.red, 'redInvm works only with red numbers');\n\t    this.red._verify1(this);\n\t    return this.red.invm(this);\n\t  };\n\n\t  // Return negative clone of `this` % `red modulo`\n\t  BN.prototype.redNeg = function redNeg () {\n\t    assert(this.red, 'redNeg works only with red numbers');\n\t    this.red._verify1(this);\n\t    return this.red.neg(this);\n\t  };\n\n\t  BN.prototype.redPow = function redPow (num) {\n\t    assert(this.red && !num.red, 'redPow(normalNum)');\n\t    this.red._verify1(this);\n\t    return this.red.pow(this, num);\n\t  };\n\n\t  // Prime numbers with efficient reduction\n\t  var primes = {\n\t    k256: null,\n\t    p224: null,\n\t    p192: null,\n\t    p25519: null\n\t  };\n\n\t  // Pseudo-Mersenne prime\n\t  function MPrime (name, p) {\n\t    // P = 2 ^ N - K\n\t    this.name = name;\n\t    this.p = new BN(p, 16);\n\t    this.n = this.p.bitLength();\n\t    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n\t    this.tmp = this._tmp();\n\t  }\n\n\t  MPrime.prototype._tmp = function _tmp () {\n\t    var tmp = new BN(null);\n\t    tmp.words = new Array(Math.ceil(this.n / 13));\n\t    return tmp;\n\t  };\n\n\t  MPrime.prototype.ireduce = function ireduce (num) {\n\t    // Assumes that `num` is less than `P^2`\n\t    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n\t    var r = num;\n\t    var rlen;\n\n\t    do {\n\t      this.split(r, this.tmp);\n\t      r = this.imulK(r);\n\t      r = r.iadd(this.tmp);\n\t      rlen = r.bitLength();\n\t    } while (rlen > this.n);\n\n\t    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\t    if (cmp === 0) {\n\t      r.words[0] = 0;\n\t      r.length = 1;\n\t    } else if (cmp > 0) {\n\t      r.isub(this.p);\n\t    } else {\n\t      r.strip();\n\t    }\n\n\t    return r;\n\t  };\n\n\t  MPrime.prototype.split = function split (input, out) {\n\t    input.iushrn(this.n, 0, out);\n\t  };\n\n\t  MPrime.prototype.imulK = function imulK (num) {\n\t    return num.imul(this.k);\n\t  };\n\n\t  function K256 () {\n\t    MPrime.call(\n\t      this,\n\t      'k256',\n\t      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n\t  }\n\t  inherits(K256, MPrime);\n\n\t  K256.prototype.split = function split (input, output) {\n\t    // 256 = 9 * 26 + 22\n\t    var mask = 0x3fffff;\n\n\t    var outLen = Math.min(input.length, 9);\n\t    for (var i = 0; i < outLen; i++) {\n\t      output.words[i] = input.words[i];\n\t    }\n\t    output.length = outLen;\n\n\t    if (input.length <= 9) {\n\t      input.words[0] = 0;\n\t      input.length = 1;\n\t      return;\n\t    }\n\n\t    // Shift by 9 limbs\n\t    var prev = input.words[9];\n\t    output.words[output.length++] = prev & mask;\n\n\t    for (i = 10; i < input.length; i++) {\n\t      var next = input.words[i] | 0;\n\t      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n\t      prev = next;\n\t    }\n\t    prev >>>= 22;\n\t    input.words[i - 10] = prev;\n\t    if (prev === 0 && input.length > 10) {\n\t      input.length -= 10;\n\t    } else {\n\t      input.length -= 9;\n\t    }\n\t  };\n\n\t  K256.prototype.imulK = function imulK (num) {\n\t    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n\t    num.words[num.length] = 0;\n\t    num.words[num.length + 1] = 0;\n\t    num.length += 2;\n\n\t    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\t    var lo = 0;\n\t    for (var i = 0; i < num.length; i++) {\n\t      var w = num.words[i] | 0;\n\t      lo += w * 0x3d1;\n\t      num.words[i] = lo & 0x3ffffff;\n\t      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n\t    }\n\n\t    // Fast length reduction\n\t    if (num.words[num.length - 1] === 0) {\n\t      num.length--;\n\t      if (num.words[num.length - 1] === 0) {\n\t        num.length--;\n\t      }\n\t    }\n\t    return num;\n\t  };\n\n\t  function P224 () {\n\t    MPrime.call(\n\t      this,\n\t      'p224',\n\t      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n\t  }\n\t  inherits(P224, MPrime);\n\n\t  function P192 () {\n\t    MPrime.call(\n\t      this,\n\t      'p192',\n\t      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n\t  }\n\t  inherits(P192, MPrime);\n\n\t  function P25519 () {\n\t    // 2 ^ 255 - 19\n\t    MPrime.call(\n\t      this,\n\t      '25519',\n\t      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n\t  }\n\t  inherits(P25519, MPrime);\n\n\t  P25519.prototype.imulK = function imulK (num) {\n\t    // K = 0x13\n\t    var carry = 0;\n\t    for (var i = 0; i < num.length; i++) {\n\t      var hi = (num.words[i] | 0) * 0x13 + carry;\n\t      var lo = hi & 0x3ffffff;\n\t      hi >>>= 26;\n\n\t      num.words[i] = lo;\n\t      carry = hi;\n\t    }\n\t    if (carry !== 0) {\n\t      num.words[num.length++] = carry;\n\t    }\n\t    return num;\n\t  };\n\n\t  // Exported mostly for testing purposes, use plain name instead\n\t  BN._prime = function prime (name) {\n\t    // Cached version of prime\n\t    if (primes[name]) return primes[name];\n\n\t    var prime;\n\t    if (name === 'k256') {\n\t      prime = new K256();\n\t    } else if (name === 'p224') {\n\t      prime = new P224();\n\t    } else if (name === 'p192') {\n\t      prime = new P192();\n\t    } else if (name === 'p25519') {\n\t      prime = new P25519();\n\t    } else {\n\t      throw new Error('Unknown prime ' + name);\n\t    }\n\t    primes[name] = prime;\n\n\t    return prime;\n\t  };\n\n\t  //\n\t  // Base reduction engine\n\t  //\n\t  function Red (m) {\n\t    if (typeof m === 'string') {\n\t      var prime = BN._prime(m);\n\t      this.m = prime.p;\n\t      this.prime = prime;\n\t    } else {\n\t      assert(m.gtn(1), 'modulus must be greater than 1');\n\t      this.m = m;\n\t      this.prime = null;\n\t    }\n\t  }\n\n\t  Red.prototype._verify1 = function _verify1 (a) {\n\t    assert(a.negative === 0, 'red works only with positives');\n\t    assert(a.red, 'red works only with red numbers');\n\t  };\n\n\t  Red.prototype._verify2 = function _verify2 (a, b) {\n\t    assert((a.negative | b.negative) === 0, 'red works only with positives');\n\t    assert(a.red && a.red === b.red,\n\t      'red works only with red numbers');\n\t  };\n\n\t  Red.prototype.imod = function imod (a) {\n\t    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\t    return a.umod(this.m)._forceRed(this);\n\t  };\n\n\t  Red.prototype.neg = function neg (a) {\n\t    if (a.isZero()) {\n\t      return a.clone();\n\t    }\n\n\t    return this.m.sub(a)._forceRed(this);\n\t  };\n\n\t  Red.prototype.add = function add (a, b) {\n\t    this._verify2(a, b);\n\n\t    var res = a.add(b);\n\t    if (res.cmp(this.m) >= 0) {\n\t      res.isub(this.m);\n\t    }\n\t    return res._forceRed(this);\n\t  };\n\n\t  Red.prototype.iadd = function iadd (a, b) {\n\t    this._verify2(a, b);\n\n\t    var res = a.iadd(b);\n\t    if (res.cmp(this.m) >= 0) {\n\t      res.isub(this.m);\n\t    }\n\t    return res;\n\t  };\n\n\t  Red.prototype.sub = function sub (a, b) {\n\t    this._verify2(a, b);\n\n\t    var res = a.sub(b);\n\t    if (res.cmpn(0) < 0) {\n\t      res.iadd(this.m);\n\t    }\n\t    return res._forceRed(this);\n\t  };\n\n\t  Red.prototype.isub = function isub (a, b) {\n\t    this._verify2(a, b);\n\n\t    var res = a.isub(b);\n\t    if (res.cmpn(0) < 0) {\n\t      res.iadd(this.m);\n\t    }\n\t    return res;\n\t  };\n\n\t  Red.prototype.shl = function shl (a, num) {\n\t    this._verify1(a);\n\t    return this.imod(a.ushln(num));\n\t  };\n\n\t  Red.prototype.imul = function imul (a, b) {\n\t    this._verify2(a, b);\n\t    return this.imod(a.imul(b));\n\t  };\n\n\t  Red.prototype.mul = function mul (a, b) {\n\t    this._verify2(a, b);\n\t    return this.imod(a.mul(b));\n\t  };\n\n\t  Red.prototype.isqr = function isqr (a) {\n\t    return this.imul(a, a.clone());\n\t  };\n\n\t  Red.prototype.sqr = function sqr (a) {\n\t    return this.mul(a, a);\n\t  };\n\n\t  Red.prototype.sqrt = function sqrt (a) {\n\t    if (a.isZero()) return a.clone();\n\n\t    var mod3 = this.m.andln(3);\n\t    assert(mod3 % 2 === 1);\n\n\t    // Fast case\n\t    if (mod3 === 3) {\n\t      var pow = this.m.add(new BN(1)).iushrn(2);\n\t      return this.pow(a, pow);\n\t    }\n\n\t    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n\t    //\n\t    // Find Q and S, that Q * 2 ^ S = (P - 1)\n\t    var q = this.m.subn(1);\n\t    var s = 0;\n\t    while (!q.isZero() && q.andln(1) === 0) {\n\t      s++;\n\t      q.iushrn(1);\n\t    }\n\t    assert(!q.isZero());\n\n\t    var one = new BN(1).toRed(this);\n\t    var nOne = one.redNeg();\n\n\t    // Find quadratic non-residue\n\t    // NOTE: Max is such because of generalized Riemann hypothesis.\n\t    var lpow = this.m.subn(1).iushrn(1);\n\t    var z = this.m.bitLength();\n\t    z = new BN(2 * z * z).toRed(this);\n\n\t    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n\t      z.redIAdd(nOne);\n\t    }\n\n\t    var c = this.pow(z, q);\n\t    var r = this.pow(a, q.addn(1).iushrn(1));\n\t    var t = this.pow(a, q);\n\t    var m = s;\n\t    while (t.cmp(one) !== 0) {\n\t      var tmp = t;\n\t      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n\t        tmp = tmp.redSqr();\n\t      }\n\t      assert(i < m);\n\t      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n\t      r = r.redMul(b);\n\t      c = b.redSqr();\n\t      t = t.redMul(c);\n\t      m = i;\n\t    }\n\n\t    return r;\n\t  };\n\n\t  Red.prototype.invm = function invm (a) {\n\t    var inv = a._invmp(this.m);\n\t    if (inv.negative !== 0) {\n\t      inv.negative = 0;\n\t      return this.imod(inv).redNeg();\n\t    } else {\n\t      return this.imod(inv);\n\t    }\n\t  };\n\n\t  Red.prototype.pow = function pow (a, num) {\n\t    if (num.isZero()) return new BN(1);\n\t    if (num.cmpn(1) === 0) return a.clone();\n\n\t    var windowSize = 4;\n\t    var wnd = new Array(1 << windowSize);\n\t    wnd[0] = new BN(1).toRed(this);\n\t    wnd[1] = a;\n\t    for (var i = 2; i < wnd.length; i++) {\n\t      wnd[i] = this.mul(wnd[i - 1], a);\n\t    }\n\n\t    var res = wnd[0];\n\t    var current = 0;\n\t    var currentLen = 0;\n\t    var start = num.bitLength() % 26;\n\t    if (start === 0) {\n\t      start = 26;\n\t    }\n\n\t    for (i = num.length - 1; i >= 0; i--) {\n\t      var word = num.words[i];\n\t      for (var j = start - 1; j >= 0; j--) {\n\t        var bit = (word >> j) & 1;\n\t        if (res !== wnd[0]) {\n\t          res = this.sqr(res);\n\t        }\n\n\t        if (bit === 0 && current === 0) {\n\t          currentLen = 0;\n\t          continue;\n\t        }\n\n\t        current <<= 1;\n\t        current |= bit;\n\t        currentLen++;\n\t        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n\t        res = this.mul(res, wnd[current]);\n\t        currentLen = 0;\n\t        current = 0;\n\t      }\n\t      start = 26;\n\t    }\n\n\t    return res;\n\t  };\n\n\t  Red.prototype.convertTo = function convertTo (num) {\n\t    var r = num.umod(this.m);\n\n\t    return r === num ? r.clone() : r;\n\t  };\n\n\t  Red.prototype.convertFrom = function convertFrom (num) {\n\t    var res = num.clone();\n\t    res.red = null;\n\t    return res;\n\t  };\n\n\t  //\n\t  // Montgomery method engine\n\t  //\n\n\t  BN.mont = function mont (num) {\n\t    return new Mont(num);\n\t  };\n\n\t  function Mont (m) {\n\t    Red.call(this, m);\n\n\t    this.shift = this.m.bitLength();\n\t    if (this.shift % 26 !== 0) {\n\t      this.shift += 26 - (this.shift % 26);\n\t    }\n\n\t    this.r = new BN(1).iushln(this.shift);\n\t    this.r2 = this.imod(this.r.sqr());\n\t    this.rinv = this.r._invmp(this.m);\n\n\t    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n\t    this.minv = this.minv.umod(this.r);\n\t    this.minv = this.r.sub(this.minv);\n\t  }\n\t  inherits(Mont, Red);\n\n\t  Mont.prototype.convertTo = function convertTo (num) {\n\t    return this.imod(num.ushln(this.shift));\n\t  };\n\n\t  Mont.prototype.convertFrom = function convertFrom (num) {\n\t    var r = this.imod(num.mul(this.rinv));\n\t    r.red = null;\n\t    return r;\n\t  };\n\n\t  Mont.prototype.imul = function imul (a, b) {\n\t    if (a.isZero() || b.isZero()) {\n\t      a.words[0] = 0;\n\t      a.length = 1;\n\t      return a;\n\t    }\n\n\t    var t = a.imul(b);\n\t    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n\t    var u = t.isub(c).iushrn(this.shift);\n\t    var res = u;\n\n\t    if (u.cmp(this.m) >= 0) {\n\t      res = u.isub(this.m);\n\t    } else if (u.cmpn(0) < 0) {\n\t      res = u.iadd(this.m);\n\t    }\n\n\t    return res._forceRed(this);\n\t  };\n\n\t  Mont.prototype.mul = function mul (a, b) {\n\t    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n\t    var t = a.mul(b);\n\t    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n\t    var u = t.isub(c).iushrn(this.shift);\n\t    var res = u;\n\t    if (u.cmp(this.m) >= 0) {\n\t      res = u.isub(this.m);\n\t    } else if (u.cmpn(0) < 0) {\n\t      res = u.iadd(this.m);\n\t    }\n\n\t    return res._forceRed(this);\n\t  };\n\n\t  Mont.prototype.invm = function invm (a) {\n\t    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n\t    var res = this.imod(a._invmp(this.m).mul(this.r2));\n\t    return res._forceRed(this);\n\t  };\n\t})(typeof module === 'undefined' || module, this);\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(92)(module)))\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tmodule.exports = Stream;\n\n\tvar EE = __webpack_require__(32).EventEmitter;\n\tvar inherits = __webpack_require__(2);\n\n\tinherits(Stream, EE);\n\tStream.Readable = __webpack_require__(522);\n\tStream.Writable = __webpack_require__(524);\n\tStream.Duplex = __webpack_require__(520);\n\tStream.Transform = __webpack_require__(523);\n\tStream.PassThrough = __webpack_require__(521);\n\n\t// Backwards-compat with node 0.4.x\n\tStream.Stream = Stream;\n\n\n\n\t// old-style streams.  Note that the pipe method (the only relevant\n\t// part of this class) is overridden in the Readable class.\n\n\tfunction Stream() {\n\t  EE.call(this);\n\t}\n\n\tStream.prototype.pipe = function(dest, options) {\n\t  var source = this;\n\n\t  function ondata(chunk) {\n\t    if (dest.writable) {\n\t      if (false === dest.write(chunk) && source.pause) {\n\t        source.pause();\n\t      }\n\t    }\n\t  }\n\n\t  source.on('data', ondata);\n\n\t  function ondrain() {\n\t    if (source.readable && source.resume) {\n\t      source.resume();\n\t    }\n\t  }\n\n\t  dest.on('drain', ondrain);\n\n\t  // If the 'end' option is not supplied, dest.end() will be called when\n\t  // source gets the 'end' or 'close' events.  Only dest.end() once.\n\t  if (!dest._isStdio && (!options || options.end !== false)) {\n\t    source.on('end', onend);\n\t    source.on('close', onclose);\n\t  }\n\n\t  var didOnEnd = false;\n\t  function onend() {\n\t    if (didOnEnd) return;\n\t    didOnEnd = true;\n\n\t    dest.end();\n\t  }\n\n\n\t  function onclose() {\n\t    if (didOnEnd) return;\n\t    didOnEnd = true;\n\n\t    if (typeof dest.destroy === 'function') dest.destroy();\n\t  }\n\n\t  // don't leave dangling pipes when there are errors.\n\t  function onerror(er) {\n\t    cleanup();\n\t    if (EE.listenerCount(this, 'error') === 0) {\n\t      throw er; // Unhandled stream error in pipe.\n\t    }\n\t  }\n\n\t  source.on('error', onerror);\n\t  dest.on('error', onerror);\n\n\t  // remove all the event listeners that were added.\n\t  function cleanup() {\n\t    source.removeListener('data', ondata);\n\t    dest.removeListener('drain', ondrain);\n\n\t    source.removeListener('end', onend);\n\t    source.removeListener('close', onclose);\n\n\t    source.removeListener('error', onerror);\n\t    dest.removeListener('error', onerror);\n\n\t    source.removeListener('end', cleanup);\n\t    source.removeListener('close', cleanup);\n\n\t    dest.removeListener('close', cleanup);\n\t  }\n\n\t  source.on('end', cleanup);\n\t  source.on('close', cleanup);\n\n\t  dest.on('close', cleanup);\n\n\t  dest.emit('pipe', source);\n\n\t  // Allow for unix-like usage: A.pipe(B).pipe(C)\n\t  return dest;\n\t};\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.15 ToLength\n\tvar toInteger = __webpack_require__(39)\n\t  , min       = Math.min;\n\tmodule.exports = function(it){\n\t  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n\t};\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.13 ToObject(argument)\n\tvar defined = __webpack_require__(27);\n\tmodule.exports = function(it){\n\t  return Object(defined(it));\n\t};\n\n/***/ },\n/* 15 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\texports.command = function command(send, name) {\n\t  return function (opts, cb) {\n\t    if (typeof opts === 'function') {\n\t      cb = opts;\n\t      opts = {};\n\t    }\n\t    return send(name, null, opts, null, cb);\n\t  };\n\t};\n\n\texports.argCommand = function argCommand(send, name) {\n\t  return function (arg, opts, cb) {\n\t    if (typeof opts === 'function') {\n\t      cb = opts;\n\t      opts = {};\n\t    }\n\t    return send(name, arg, opts, null, cb);\n\t  };\n\t};\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tmodule.exports = function(it, key){\n\t  return hasOwnProperty.call(it, key);\n\t};\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t// NOTE: These type checking functions intentionally don't use `instanceof`\n\t// because it is fragile and can be easily faked with `Object.create()`.\n\n\tfunction isArray(arg) {\n\t  if (Array.isArray) {\n\t    return Array.isArray(arg);\n\t  }\n\t  return objectToString(arg) === '[object Array]';\n\t}\n\texports.isArray = isArray;\n\n\tfunction isBoolean(arg) {\n\t  return typeof arg === 'boolean';\n\t}\n\texports.isBoolean = isBoolean;\n\n\tfunction isNull(arg) {\n\t  return arg === null;\n\t}\n\texports.isNull = isNull;\n\n\tfunction isNullOrUndefined(arg) {\n\t  return arg == null;\n\t}\n\texports.isNullOrUndefined = isNullOrUndefined;\n\n\tfunction isNumber(arg) {\n\t  return typeof arg === 'number';\n\t}\n\texports.isNumber = isNumber;\n\n\tfunction isString(arg) {\n\t  return typeof arg === 'string';\n\t}\n\texports.isString = isString;\n\n\tfunction isSymbol(arg) {\n\t  return typeof arg === 'symbol';\n\t}\n\texports.isSymbol = isSymbol;\n\n\tfunction isUndefined(arg) {\n\t  return arg === void 0;\n\t}\n\texports.isUndefined = isUndefined;\n\n\tfunction isRegExp(re) {\n\t  return objectToString(re) === '[object RegExp]';\n\t}\n\texports.isRegExp = isRegExp;\n\n\tfunction isObject(arg) {\n\t  return typeof arg === 'object' && arg !== null;\n\t}\n\texports.isObject = isObject;\n\n\tfunction isDate(d) {\n\t  return objectToString(d) === '[object Date]';\n\t}\n\texports.isDate = isDate;\n\n\tfunction isError(e) {\n\t  return (objectToString(e) === '[object Error]' || e instanceof Error);\n\t}\n\texports.isError = isError;\n\n\tfunction isFunction(arg) {\n\t  return typeof arg === 'function';\n\t}\n\texports.isFunction = isFunction;\n\n\tfunction isPrimitive(arg) {\n\t  return arg === null ||\n\t         typeof arg === 'boolean' ||\n\t         typeof arg === 'number' ||\n\t         typeof arg === 'string' ||\n\t         typeof arg === 'symbol' ||  // ES6 symbol\n\t         typeof arg === 'undefined';\n\t}\n\texports.isPrimitive = isPrimitive;\n\n\texports.isBuffer = Buffer.isBuffer;\n\n\tfunction objectToString(o) {\n\t  return Object.prototype.toString.call(o);\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar elliptic = exports;\n\n\telliptic.version = __webpack_require__(488).version;\n\telliptic.utils = __webpack_require__(472);\n\telliptic.rand = __webpack_require__(140);\n\telliptic.hmacDRBG = __webpack_require__(470);\n\telliptic.curve = __webpack_require__(88);\n\telliptic.curves = __webpack_require__(463);\n\n\t// Protocols\n\telliptic.ec = __webpack_require__(464);\n\telliptic.eddsa = __webpack_require__(467);\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dP         = __webpack_require__(10)\n\t  , createDesc = __webpack_require__(38);\n\tmodule.exports = __webpack_require__(9) ? function(object, key, value){\n\t  return dP.f(object, key, createDesc(1, value));\n\t} : function(object, key, value){\n\t  object[key] = value;\n\t  return object;\n\t};\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global    = __webpack_require__(5)\n\t  , hide      = __webpack_require__(19)\n\t  , has       = __webpack_require__(16)\n\t  , SRC       = __webpack_require__(47)('src')\n\t  , TO_STRING = 'toString'\n\t  , $toString = Function[TO_STRING]\n\t  , TPL       = ('' + $toString).split(TO_STRING);\n\n\t__webpack_require__(33).inspectSource = function(it){\n\t  return $toString.call(it);\n\t};\n\n\t(module.exports = function(O, key, val, safe){\n\t  var isFunction = typeof val == 'function';\n\t  if(isFunction)has(val, 'name') || hide(val, 'name', key);\n\t  if(O[key] === val)return;\n\t  if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n\t  if(O === global){\n\t    O[key] = val;\n\t  } else {\n\t    if(!safe){\n\t      delete O[key];\n\t      hide(O, key, val);\n\t    } else {\n\t      if(O[key])O[key] = val;\n\t      else hide(O, key, val);\n\t    }\n\t  }\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, TO_STRING, function toString(){\n\t  return typeof this == 'function' && this[SRC] || $toString.call(this);\n\t});\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0)\n\t  , fails   = __webpack_require__(4)\n\t  , defined = __webpack_require__(27)\n\t  , quot    = /\"/g;\n\t// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n\tvar createHTML = function(string, tag, attribute, value) {\n\t  var S  = String(defined(string))\n\t    , p1 = '<' + tag;\n\t  if(attribute !== '')p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n\t  return p1 + '>' + S + '</' + tag + '>';\n\t};\n\tmodule.exports = function(NAME, exec){\n\t  var O = {};\n\t  O[NAME] = exec(createHTML);\n\t  $export($export.P + $export.F * fails(function(){\n\t    var test = ''[NAME]('\"');\n\t    return test !== test.toLowerCase() || test.split('\"').length > 3;\n\t  }), 'String', O);\n\t};\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// to indexed object, toObject with fallback for non-array-like ES3 strings\n\tvar IObject = __webpack_require__(67)\n\t  , defined = __webpack_require__(27);\n\tmodule.exports = function(it){\n\t  return IObject(defined(it));\n\t};\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar pIE            = __webpack_require__(68)\r\n\t  , createDesc     = __webpack_require__(38)\r\n\t  , toIObject      = __webpack_require__(22)\r\n\t  , toPrimitive    = __webpack_require__(31)\r\n\t  , has            = __webpack_require__(16)\r\n\t  , IE8_DOM_DEFINE = __webpack_require__(159)\r\n\t  , gOPD           = Object.getOwnPropertyDescriptor;\r\n\r\n\texports.f = __webpack_require__(9) ? gOPD : function getOwnPropertyDescriptor(O, P){\r\n\t  O = toIObject(O);\r\n\t  P = toPrimitive(P, true);\r\n\t  if(IE8_DOM_DEFINE)try {\r\n\t    return gOPD(O, P);\r\n\t  } catch(e){ /* empty */ }\r\n\t  if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\r\n\t};\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\r\n\tvar has         = __webpack_require__(16)\r\n\t  , toObject    = __webpack_require__(14)\r\n\t  , IE_PROTO    = __webpack_require__(109)('IE_PROTO')\r\n\t  , ObjectProto = Object.prototype;\r\n\r\n\tmodule.exports = Object.getPrototypeOf || function(O){\r\n\t  O = toObject(O);\r\n\t  if(has(O, IE_PROTO))return O[IE_PROTO];\r\n\t  if(typeof O.constructor == 'function' && O instanceof O.constructor){\r\n\t    return O.constructor.prototype;\r\n\t  } return O instanceof Object ? ObjectProto : null;\r\n\t};\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(it){\n\t  if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n\t  return it;\n\t};\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\n\tmodule.exports = function(it){\n\t  return toString.call(it).slice(8, -1);\n\t};\n\n/***/ },\n/* 27 */\n/***/ function(module, exports) {\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tmodule.exports = function(it){\n\t  if(it == undefined)throw TypeError(\"Can't call method on  \" + it);\n\t  return it;\n\t};\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar fails = __webpack_require__(4);\r\n\r\n\tmodule.exports = function(method, arg){\r\n\t  return !!method && fails(function(){\r\n\t    arg ? method.call(null, function(){}, 1) : method.call(null);\r\n\t  });\r\n\t};\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 0 -> Array#forEach\n\t// 1 -> Array#map\n\t// 2 -> Array#filter\n\t// 3 -> Array#some\n\t// 4 -> Array#every\n\t// 5 -> Array#find\n\t// 6 -> Array#findIndex\n\tvar ctx      = __webpack_require__(34)\n\t  , IObject  = __webpack_require__(67)\n\t  , toObject = __webpack_require__(14)\n\t  , toLength = __webpack_require__(13)\n\t  , asc      = __webpack_require__(271);\n\tmodule.exports = function(TYPE, $create){\n\t  var IS_MAP        = TYPE == 1\n\t    , IS_FILTER     = TYPE == 2\n\t    , IS_SOME       = TYPE == 3\n\t    , IS_EVERY      = TYPE == 4\n\t    , IS_FIND_INDEX = TYPE == 6\n\t    , NO_HOLES      = TYPE == 5 || IS_FIND_INDEX\n\t    , create        = $create || asc;\n\t  return function($this, callbackfn, that){\n\t    var O      = toObject($this)\n\t      , self   = IObject(O)\n\t      , f      = ctx(callbackfn, that, 3)\n\t      , length = toLength(self.length)\n\t      , index  = 0\n\t      , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined\n\t      , val, res;\n\t    for(;length > index; index++)if(NO_HOLES || index in self){\n\t      val = self[index];\n\t      res = f(val, index, O);\n\t      if(TYPE){\n\t        if(IS_MAP)result[index] = res;            // map\n\t        else if(res)switch(TYPE){\n\t          case 3: return true;                    // some\n\t          case 5: return val;                     // find\n\t          case 6: return index;                   // findIndex\n\t          case 2: result.push(val);               // filter\n\t        } else if(IS_EVERY)return false;          // every\n\t      }\n\t    }\n\t    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n\t  };\n\t};\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// most Object methods by ES6 should accept primitives\n\tvar $export = __webpack_require__(0)\n\t  , core    = __webpack_require__(33)\n\t  , fails   = __webpack_require__(4);\n\tmodule.exports = function(KEY, exec){\n\t  var fn  = (core.Object || {})[KEY] || Object[KEY]\n\t    , exp = {};\n\t  exp[KEY] = exec(fn);\n\t  $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n\t};\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\tvar isObject = __webpack_require__(6);\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tmodule.exports = function(it, S){\n\t  if(!isObject(it))return it;\n\t  var fn, val;\n\t  if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n\t  if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n\t  if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n\t  throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tfunction EventEmitter() {\n\t  this._events = this._events || {};\n\t  this._maxListeners = this._maxListeners || undefined;\n\t}\n\tmodule.exports = EventEmitter;\n\n\t// Backwards-compat with node 0.10.x\n\tEventEmitter.EventEmitter = EventEmitter;\n\n\tEventEmitter.prototype._events = undefined;\n\tEventEmitter.prototype._maxListeners = undefined;\n\n\t// By default EventEmitters will print a warning if more than 10 listeners are\n\t// added to it. This is a useful default which helps finding memory leaks.\n\tEventEmitter.defaultMaxListeners = 10;\n\n\t// Obviously not all Emitters should be limited to 10. This function allows\n\t// that to be increased. Set to zero for unlimited.\n\tEventEmitter.prototype.setMaxListeners = function(n) {\n\t  if (!isNumber(n) || n < 0 || isNaN(n))\n\t    throw TypeError('n must be a positive number');\n\t  this._maxListeners = n;\n\t  return this;\n\t};\n\n\tEventEmitter.prototype.emit = function(type) {\n\t  var er, handler, len, args, i, listeners;\n\n\t  if (!this._events)\n\t    this._events = {};\n\n\t  // If there is no 'error' event listener then throw.\n\t  if (type === 'error') {\n\t    if (!this._events.error ||\n\t        (isObject(this._events.error) && !this._events.error.length)) {\n\t      er = arguments[1];\n\t      if (er instanceof Error) {\n\t        throw er; // Unhandled 'error' event\n\t      }\n\t      throw TypeError('Uncaught, unspecified \"error\" event.');\n\t    }\n\t  }\n\n\t  handler = this._events[type];\n\n\t  if (isUndefined(handler))\n\t    return false;\n\n\t  if (isFunction(handler)) {\n\t    switch (arguments.length) {\n\t      // fast cases\n\t      case 1:\n\t        handler.call(this);\n\t        break;\n\t      case 2:\n\t        handler.call(this, arguments[1]);\n\t        break;\n\t      case 3:\n\t        handler.call(this, arguments[1], arguments[2]);\n\t        break;\n\t      // slower\n\t      default:\n\t        args = Array.prototype.slice.call(arguments, 1);\n\t        handler.apply(this, args);\n\t    }\n\t  } else if (isObject(handler)) {\n\t    args = Array.prototype.slice.call(arguments, 1);\n\t    listeners = handler.slice();\n\t    len = listeners.length;\n\t    for (i = 0; i < len; i++)\n\t      listeners[i].apply(this, args);\n\t  }\n\n\t  return true;\n\t};\n\n\tEventEmitter.prototype.addListener = function(type, listener) {\n\t  var m;\n\n\t  if (!isFunction(listener))\n\t    throw TypeError('listener must be a function');\n\n\t  if (!this._events)\n\t    this._events = {};\n\n\t  // To avoid recursion in the case that type === \"newListener\"! Before\n\t  // adding it to the listeners, first emit \"newListener\".\n\t  if (this._events.newListener)\n\t    this.emit('newListener', type,\n\t              isFunction(listener.listener) ?\n\t              listener.listener : listener);\n\n\t  if (!this._events[type])\n\t    // Optimize the case of one listener. Don't need the extra array object.\n\t    this._events[type] = listener;\n\t  else if (isObject(this._events[type]))\n\t    // If we've already got an array, just append.\n\t    this._events[type].push(listener);\n\t  else\n\t    // Adding the second element, need to change to array.\n\t    this._events[type] = [this._events[type], listener];\n\n\t  // Check for listener leak\n\t  if (isObject(this._events[type]) && !this._events[type].warned) {\n\t    if (!isUndefined(this._maxListeners)) {\n\t      m = this._maxListeners;\n\t    } else {\n\t      m = EventEmitter.defaultMaxListeners;\n\t    }\n\n\t    if (m && m > 0 && this._events[type].length > m) {\n\t      this._events[type].warned = true;\n\t      console.error('(node) warning: possible EventEmitter memory ' +\n\t                    'leak detected. %d listeners added. ' +\n\t                    'Use emitter.setMaxListeners() to increase limit.',\n\t                    this._events[type].length);\n\t      if (typeof console.trace === 'function') {\n\t        // not supported in IE 10\n\t        console.trace();\n\t      }\n\t    }\n\t  }\n\n\t  return this;\n\t};\n\n\tEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\n\tEventEmitter.prototype.once = function(type, listener) {\n\t  if (!isFunction(listener))\n\t    throw TypeError('listener must be a function');\n\n\t  var fired = false;\n\n\t  function g() {\n\t    this.removeListener(type, g);\n\n\t    if (!fired) {\n\t      fired = true;\n\t      listener.apply(this, arguments);\n\t    }\n\t  }\n\n\t  g.listener = listener;\n\t  this.on(type, g);\n\n\t  return this;\n\t};\n\n\t// emits a 'removeListener' event iff the listener was removed\n\tEventEmitter.prototype.removeListener = function(type, listener) {\n\t  var list, position, length, i;\n\n\t  if (!isFunction(listener))\n\t    throw TypeError('listener must be a function');\n\n\t  if (!this._events || !this._events[type])\n\t    return this;\n\n\t  list = this._events[type];\n\t  length = list.length;\n\t  position = -1;\n\n\t  if (list === listener ||\n\t      (isFunction(list.listener) && list.listener === listener)) {\n\t    delete this._events[type];\n\t    if (this._events.removeListener)\n\t      this.emit('removeListener', type, listener);\n\n\t  } else if (isObject(list)) {\n\t    for (i = length; i-- > 0;) {\n\t      if (list[i] === listener ||\n\t          (list[i].listener && list[i].listener === listener)) {\n\t        position = i;\n\t        break;\n\t      }\n\t    }\n\n\t    if (position < 0)\n\t      return this;\n\n\t    if (list.length === 1) {\n\t      list.length = 0;\n\t      delete this._events[type];\n\t    } else {\n\t      list.splice(position, 1);\n\t    }\n\n\t    if (this._events.removeListener)\n\t      this.emit('removeListener', type, listener);\n\t  }\n\n\t  return this;\n\t};\n\n\tEventEmitter.prototype.removeAllListeners = function(type) {\n\t  var key, listeners;\n\n\t  if (!this._events)\n\t    return this;\n\n\t  // not listening for removeListener, no need to emit\n\t  if (!this._events.removeListener) {\n\t    if (arguments.length === 0)\n\t      this._events = {};\n\t    else if (this._events[type])\n\t      delete this._events[type];\n\t    return this;\n\t  }\n\n\t  // emit removeListener for all listeners on all events\n\t  if (arguments.length === 0) {\n\t    for (key in this._events) {\n\t      if (key === 'removeListener') continue;\n\t      this.removeAllListeners(key);\n\t    }\n\t    this.removeAllListeners('removeListener');\n\t    this._events = {};\n\t    return this;\n\t  }\n\n\t  listeners = this._events[type];\n\n\t  if (isFunction(listeners)) {\n\t    this.removeListener(type, listeners);\n\t  } else if (listeners) {\n\t    // LIFO order\n\t    while (listeners.length)\n\t      this.removeListener(type, listeners[listeners.length - 1]);\n\t  }\n\t  delete this._events[type];\n\n\t  return this;\n\t};\n\n\tEventEmitter.prototype.listeners = function(type) {\n\t  var ret;\n\t  if (!this._events || !this._events[type])\n\t    ret = [];\n\t  else if (isFunction(this._events[type]))\n\t    ret = [this._events[type]];\n\t  else\n\t    ret = this._events[type].slice();\n\t  return ret;\n\t};\n\n\tEventEmitter.prototype.listenerCount = function(type) {\n\t  if (this._events) {\n\t    var evlistener = this._events[type];\n\n\t    if (isFunction(evlistener))\n\t      return 1;\n\t    else if (evlistener)\n\t      return evlistener.length;\n\t  }\n\t  return 0;\n\t};\n\n\tEventEmitter.listenerCount = function(emitter, type) {\n\t  return emitter.listenerCount(type);\n\t};\n\n\tfunction isFunction(arg) {\n\t  return typeof arg === 'function';\n\t}\n\n\tfunction isNumber(arg) {\n\t  return typeof arg === 'number';\n\t}\n\n\tfunction isObject(arg) {\n\t  return typeof arg === 'object' && arg !== null;\n\t}\n\n\tfunction isUndefined(arg) {\n\t  return arg === void 0;\n\t}\n\n\n/***/ },\n/* 33 */\n/***/ function(module, exports) {\n\n\tvar core = module.exports = {version: '2.3.0'};\n\tif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// optional / simple context binding\n\tvar aFunction = __webpack_require__(25);\n\tmodule.exports = function(fn, that, length){\n\t  aFunction(fn);\n\t  if(that === undefined)return fn;\n\t  switch(length){\n\t    case 1: return function(a){\n\t      return fn.call(that, a);\n\t    };\n\t    case 2: return function(a, b){\n\t      return fn.call(that, a, b);\n\t    };\n\t    case 3: return function(a, b, c){\n\t      return fn.call(that, a, b, c);\n\t    };\n\t  }\n\t  return function(/* ...args */){\n\t    return fn.apply(that, arguments);\n\t  };\n\t};\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Map     = __webpack_require__(175)\n\t  , $export = __webpack_require__(0)\n\t  , shared  = __webpack_require__(86)('metadata')\n\t  , store   = shared.store || (shared.store = new (__webpack_require__(178)));\n\n\tvar getOrCreateMetadataMap = function(target, targetKey, create){\n\t  var targetMetadata = store.get(target);\n\t  if(!targetMetadata){\n\t    if(!create)return undefined;\n\t    store.set(target, targetMetadata = new Map);\n\t  }\n\t  var keyMetadata = targetMetadata.get(targetKey);\n\t  if(!keyMetadata){\n\t    if(!create)return undefined;\n\t    targetMetadata.set(targetKey, keyMetadata = new Map);\n\t  } return keyMetadata;\n\t};\n\tvar ordinaryHasOwnMetadata = function(MetadataKey, O, P){\n\t  var metadataMap = getOrCreateMetadataMap(O, P, false);\n\t  return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n\t};\n\tvar ordinaryGetOwnMetadata = function(MetadataKey, O, P){\n\t  var metadataMap = getOrCreateMetadataMap(O, P, false);\n\t  return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n\t};\n\tvar ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){\n\t  getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n\t};\n\tvar ordinaryOwnMetadataKeys = function(target, targetKey){\n\t  var metadataMap = getOrCreateMetadataMap(target, targetKey, false)\n\t    , keys        = [];\n\t  if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });\n\t  return keys;\n\t};\n\tvar toMetaKey = function(it){\n\t  return it === undefined || typeof it == 'symbol' ? it : String(it);\n\t};\n\tvar exp = function(O){\n\t  $export($export.S, 'Reflect', O);\n\t};\n\n\tmodule.exports = {\n\t  store: store,\n\t  map: getOrCreateMetadataMap,\n\t  has: ordinaryHasOwnMetadata,\n\t  get: ordinaryGetOwnMetadata,\n\t  set: ordinaryDefineOwnMetadata,\n\t  keys: ordinaryOwnMetadataKeys,\n\t  key: toMetaKey,\n\t  exp: exp\n\t};\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tif(__webpack_require__(9)){\n\t  var LIBRARY             = __webpack_require__(42)\n\t    , global              = __webpack_require__(5)\n\t    , fails               = __webpack_require__(4)\n\t    , $export             = __webpack_require__(0)\n\t    , $typed              = __webpack_require__(87)\n\t    , $buffer             = __webpack_require__(116)\n\t    , ctx                 = __webpack_require__(34)\n\t    , anInstance          = __webpack_require__(40)\n\t    , propertyDesc        = __webpack_require__(38)\n\t    , hide                = __webpack_require__(19)\n\t    , redefineAll         = __webpack_require__(54)\n\t    , isInteger           = __webpack_require__(104)\n\t    , toInteger           = __webpack_require__(39)\n\t    , toLength            = __webpack_require__(13)\n\t    , toIndex             = __webpack_require__(46)\n\t    , toPrimitive         = __webpack_require__(31)\n\t    , has                 = __webpack_require__(16)\n\t    , same                = __webpack_require__(172)\n\t    , classof             = __webpack_require__(53)\n\t    , isObject            = __webpack_require__(6)\n\t    , toObject            = __webpack_require__(14)\n\t    , isArrayIter         = __webpack_require__(102)\n\t    , create              = __webpack_require__(43)\n\t    , getPrototypeOf      = __webpack_require__(24)\n\t    , gOPN                = __webpack_require__(44).f\n\t    , isIterable          = __webpack_require__(278)\n\t    , getIterFn           = __webpack_require__(118)\n\t    , uid                 = __webpack_require__(47)\n\t    , wks                 = __webpack_require__(7)\n\t    , createArrayMethod   = __webpack_require__(29)\n\t    , createArrayIncludes = __webpack_require__(76)\n\t    , speciesConstructor  = __webpack_require__(110)\n\t    , ArrayIterators      = __webpack_require__(119)\n\t    , Iterators           = __webpack_require__(41)\n\t    , $iterDetect         = __webpack_require__(82)\n\t    , setSpecies          = __webpack_require__(55)\n\t    , arrayFill           = __webpack_require__(95)\n\t    , arrayCopyWithin     = __webpack_require__(152)\n\t    , $DP                 = __webpack_require__(10)\n\t    , $GOPD               = __webpack_require__(23)\n\t    , dP                  = $DP.f\n\t    , gOPD                = $GOPD.f\n\t    , RangeError          = global.RangeError\n\t    , TypeError           = global.TypeError\n\t    , Uint8Array          = global.Uint8Array\n\t    , ARRAY_BUFFER        = 'ArrayBuffer'\n\t    , SHARED_BUFFER       = 'Shared' + ARRAY_BUFFER\n\t    , BYTES_PER_ELEMENT   = 'BYTES_PER_ELEMENT'\n\t    , PROTOTYPE           = 'prototype'\n\t    , ArrayProto          = Array[PROTOTYPE]\n\t    , $ArrayBuffer        = $buffer.ArrayBuffer\n\t    , $DataView           = $buffer.DataView\n\t    , arrayForEach        = createArrayMethod(0)\n\t    , arrayFilter         = createArrayMethod(2)\n\t    , arraySome           = createArrayMethod(3)\n\t    , arrayEvery          = createArrayMethod(4)\n\t    , arrayFind           = createArrayMethod(5)\n\t    , arrayFindIndex      = createArrayMethod(6)\n\t    , arrayIncludes       = createArrayIncludes(true)\n\t    , arrayIndexOf        = createArrayIncludes(false)\n\t    , arrayValues         = ArrayIterators.values\n\t    , arrayKeys           = ArrayIterators.keys\n\t    , arrayEntries        = ArrayIterators.entries\n\t    , arrayLastIndexOf    = ArrayProto.lastIndexOf\n\t    , arrayReduce         = ArrayProto.reduce\n\t    , arrayReduceRight    = ArrayProto.reduceRight\n\t    , arrayJoin           = ArrayProto.join\n\t    , arraySort           = ArrayProto.sort\n\t    , arraySlice          = ArrayProto.slice\n\t    , arrayToString       = ArrayProto.toString\n\t    , arrayToLocaleString = ArrayProto.toLocaleString\n\t    , ITERATOR            = wks('iterator')\n\t    , TAG                 = wks('toStringTag')\n\t    , TYPED_CONSTRUCTOR   = uid('typed_constructor')\n\t    , DEF_CONSTRUCTOR     = uid('def_constructor')\n\t    , ALL_CONSTRUCTORS    = $typed.CONSTR\n\t    , TYPED_ARRAY         = $typed.TYPED\n\t    , VIEW                = $typed.VIEW\n\t    , WRONG_LENGTH        = 'Wrong length!';\n\n\t  var $map = createArrayMethod(1, function(O, length){\n\t    return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n\t  });\n\n\t  var LITTLE_ENDIAN = fails(function(){\n\t    return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n\t  });\n\n\t  var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){\n\t    new Uint8Array(1).set({});\n\t  });\n\n\t  var strictToLength = function(it, SAME){\n\t    if(it === undefined)throw TypeError(WRONG_LENGTH);\n\t    var number = +it\n\t      , length = toLength(it);\n\t    if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH);\n\t    return length;\n\t  };\n\n\t  var toOffset = function(it, BYTES){\n\t    var offset = toInteger(it);\n\t    if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!');\n\t    return offset;\n\t  };\n\n\t  var validate = function(it){\n\t    if(isObject(it) && TYPED_ARRAY in it)return it;\n\t    throw TypeError(it + ' is not a typed array!');\n\t  };\n\n\t  var allocate = function(C, length){\n\t    if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){\n\t      throw TypeError('It is not a typed array constructor!');\n\t    } return new C(length);\n\t  };\n\n\t  var speciesFromList = function(O, list){\n\t    return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n\t  };\n\n\t  var fromList = function(C, list){\n\t    var index  = 0\n\t      , length = list.length\n\t      , result = allocate(C, length);\n\t    while(length > index)result[index] = list[index++];\n\t    return result;\n\t  };\n\n\t  var addGetter = function(it, key, internal){\n\t    dP(it, key, {get: function(){ return this._d[internal]; }});\n\t  };\n\n\t  var $from = function from(source /*, mapfn, thisArg */){\n\t    var O       = toObject(source)\n\t      , aLen    = arguments.length\n\t      , mapfn   = aLen > 1 ? arguments[1] : undefined\n\t      , mapping = mapfn !== undefined\n\t      , iterFn  = getIterFn(O)\n\t      , i, length, values, result, step, iterator;\n\t    if(iterFn != undefined && !isArrayIter(iterFn)){\n\t      for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){\n\t        values.push(step.value);\n\t      } O = values;\n\t    }\n\t    if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2);\n\t    for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){\n\t      result[i] = mapping ? mapfn(O[i], i) : O[i];\n\t    }\n\t    return result;\n\t  };\n\n\t  var $of = function of(/*...items*/){\n\t    var index  = 0\n\t      , length = arguments.length\n\t      , result = allocate(this, length);\n\t    while(length > index)result[index] = arguments[index++];\n\t    return result;\n\t  };\n\n\t  // iOS Safari 6.x fails here\n\t  var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); });\n\n\t  var $toLocaleString = function toLocaleString(){\n\t    return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n\t  };\n\n\t  var proto = {\n\t    copyWithin: function copyWithin(target, start /*, end */){\n\t      return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n\t    },\n\t    every: function every(callbackfn /*, thisArg */){\n\t      return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars\n\t      return arrayFill.apply(validate(this), arguments);\n\t    },\n\t    filter: function filter(callbackfn /*, thisArg */){\n\t      return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n\t        arguments.length > 1 ? arguments[1] : undefined));\n\t    },\n\t    find: function find(predicate /*, thisArg */){\n\t      return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    findIndex: function findIndex(predicate /*, thisArg */){\n\t      return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    forEach: function forEach(callbackfn /*, thisArg */){\n\t      arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    indexOf: function indexOf(searchElement /*, fromIndex */){\n\t      return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    includes: function includes(searchElement /*, fromIndex */){\n\t      return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    join: function join(separator){ // eslint-disable-line no-unused-vars\n\t      return arrayJoin.apply(validate(this), arguments);\n\t    },\n\t    lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars\n\t      return arrayLastIndexOf.apply(validate(this), arguments);\n\t    },\n\t    map: function map(mapfn /*, thisArg */){\n\t      return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars\n\t      return arrayReduce.apply(validate(this), arguments);\n\t    },\n\t    reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars\n\t      return arrayReduceRight.apply(validate(this), arguments);\n\t    },\n\t    reverse: function reverse(){\n\t      var that   = this\n\t        , length = validate(that).length\n\t        , middle = Math.floor(length / 2)\n\t        , index  = 0\n\t        , value;\n\t      while(index < middle){\n\t        value         = that[index];\n\t        that[index++] = that[--length];\n\t        that[length]  = value;\n\t      } return that;\n\t    },\n\t    some: function some(callbackfn /*, thisArg */){\n\t      return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t    },\n\t    sort: function sort(comparefn){\n\t      return arraySort.call(validate(this), comparefn);\n\t    },\n\t    subarray: function subarray(begin, end){\n\t      var O      = validate(this)\n\t        , length = O.length\n\t        , $begin = toIndex(begin, length);\n\t      return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n\t        O.buffer,\n\t        O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n\t        toLength((end === undefined ? length : toIndex(end, length)) - $begin)\n\t      );\n\t    }\n\t  };\n\n\t  var $slice = function slice(start, end){\n\t    return speciesFromList(this, arraySlice.call(validate(this), start, end));\n\t  };\n\n\t  var $set = function set(arrayLike /*, offset */){\n\t    validate(this);\n\t    var offset = toOffset(arguments[1], 1)\n\t      , length = this.length\n\t      , src    = toObject(arrayLike)\n\t      , len    = toLength(src.length)\n\t      , index  = 0;\n\t    if(len + offset > length)throw RangeError(WRONG_LENGTH);\n\t    while(index < len)this[offset + index] = src[index++];\n\t  };\n\n\t  var $iterators = {\n\t    entries: function entries(){\n\t      return arrayEntries.call(validate(this));\n\t    },\n\t    keys: function keys(){\n\t      return arrayKeys.call(validate(this));\n\t    },\n\t    values: function values(){\n\t      return arrayValues.call(validate(this));\n\t    }\n\t  };\n\n\t  var isTAIndex = function(target, key){\n\t    return isObject(target)\n\t      && target[TYPED_ARRAY]\n\t      && typeof key != 'symbol'\n\t      && key in target\n\t      && String(+key) == String(key);\n\t  };\n\t  var $getDesc = function getOwnPropertyDescriptor(target, key){\n\t    return isTAIndex(target, key = toPrimitive(key, true))\n\t      ? propertyDesc(2, target[key])\n\t      : gOPD(target, key);\n\t  };\n\t  var $setDesc = function defineProperty(target, key, desc){\n\t    if(isTAIndex(target, key = toPrimitive(key, true))\n\t      && isObject(desc)\n\t      && has(desc, 'value')\n\t      && !has(desc, 'get')\n\t      && !has(desc, 'set')\n\t      // TODO: add validation descriptor w/o calling accessors\n\t      && !desc.configurable\n\t      && (!has(desc, 'writable') || desc.writable)\n\t      && (!has(desc, 'enumerable') || desc.enumerable)\n\t    ){\n\t      target[key] = desc.value;\n\t      return target;\n\t    } else return dP(target, key, desc);\n\t  };\n\n\t  if(!ALL_CONSTRUCTORS){\n\t    $GOPD.f = $getDesc;\n\t    $DP.f   = $setDesc;\n\t  }\n\n\t  $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n\t    getOwnPropertyDescriptor: $getDesc,\n\t    defineProperty:           $setDesc\n\t  });\n\n\t  if(fails(function(){ arrayToString.call({}); })){\n\t    arrayToString = arrayToLocaleString = function toString(){\n\t      return arrayJoin.call(this);\n\t    }\n\t  }\n\n\t  var $TypedArrayPrototype$ = redefineAll({}, proto);\n\t  redefineAll($TypedArrayPrototype$, $iterators);\n\t  hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n\t  redefineAll($TypedArrayPrototype$, {\n\t    slice:          $slice,\n\t    set:            $set,\n\t    constructor:    function(){ /* noop */ },\n\t    toString:       arrayToString,\n\t    toLocaleString: $toLocaleString\n\t  });\n\t  addGetter($TypedArrayPrototype$, 'buffer', 'b');\n\t  addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n\t  addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n\t  addGetter($TypedArrayPrototype$, 'length', 'e');\n\t  dP($TypedArrayPrototype$, TAG, {\n\t    get: function(){ return this[TYPED_ARRAY]; }\n\t  });\n\n\t  module.exports = function(KEY, BYTES, wrapper, CLAMPED){\n\t    CLAMPED = !!CLAMPED;\n\t    var NAME       = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'\n\t      , ISNT_UINT8 = NAME != 'Uint8Array'\n\t      , GETTER     = 'get' + KEY\n\t      , SETTER     = 'set' + KEY\n\t      , TypedArray = global[NAME]\n\t      , Base       = TypedArray || {}\n\t      , TAC        = TypedArray && getPrototypeOf(TypedArray)\n\t      , FORCED     = !TypedArray || !$typed.ABV\n\t      , O          = {}\n\t      , TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n\t    var getter = function(that, index){\n\t      var data = that._d;\n\t      return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n\t    };\n\t    var setter = function(that, index, value){\n\t      var data = that._d;\n\t      if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n\t      data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n\t    };\n\t    var addElement = function(that, index){\n\t      dP(that, index, {\n\t        get: function(){\n\t          return getter(this, index);\n\t        },\n\t        set: function(value){\n\t          return setter(this, index, value);\n\t        },\n\t        enumerable: true\n\t      });\n\t    };\n\t    if(FORCED){\n\t      TypedArray = wrapper(function(that, data, $offset, $length){\n\t        anInstance(that, TypedArray, NAME, '_d');\n\t        var index  = 0\n\t          , offset = 0\n\t          , buffer, byteLength, length, klass;\n\t        if(!isObject(data)){\n\t          length     = strictToLength(data, true)\n\t          byteLength = length * BYTES;\n\t          buffer     = new $ArrayBuffer(byteLength);\n\t        } else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){\n\t          buffer = data;\n\t          offset = toOffset($offset, BYTES);\n\t          var $len = data.byteLength;\n\t          if($length === undefined){\n\t            if($len % BYTES)throw RangeError(WRONG_LENGTH);\n\t            byteLength = $len - offset;\n\t            if(byteLength < 0)throw RangeError(WRONG_LENGTH);\n\t          } else {\n\t            byteLength = toLength($length) * BYTES;\n\t            if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH);\n\t          }\n\t          length = byteLength / BYTES;\n\t        } else if(TYPED_ARRAY in data){\n\t          return fromList(TypedArray, data);\n\t        } else {\n\t          return $from.call(TypedArray, data);\n\t        }\n\t        hide(that, '_d', {\n\t          b: buffer,\n\t          o: offset,\n\t          l: byteLength,\n\t          e: length,\n\t          v: new $DataView(buffer)\n\t        });\n\t        while(index < length)addElement(that, index++);\n\t      });\n\t      TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n\t      hide(TypedArrayPrototype, 'constructor', TypedArray);\n\t    } else if(!$iterDetect(function(iter){\n\t      // V8 works with iterators, but fails in many other cases\n\t      // https://code.google.com/p/v8/issues/detail?id=4552\n\t      new TypedArray(null); // eslint-disable-line no-new\n\t      new TypedArray(iter); // eslint-disable-line no-new\n\t    }, true)){\n\t      TypedArray = wrapper(function(that, data, $offset, $length){\n\t        anInstance(that, TypedArray, NAME);\n\t        var klass;\n\t        // `ws` module bug, temporarily remove validation length for Uint8Array\n\t        // https://github.com/websockets/ws/pull/645\n\t        if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8));\n\t        if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){\n\t          return $length !== undefined\n\t            ? new Base(data, toOffset($offset, BYTES), $length)\n\t            : $offset !== undefined\n\t              ? new Base(data, toOffset($offset, BYTES))\n\t              : new Base(data);\n\t        }\n\t        if(TYPED_ARRAY in data)return fromList(TypedArray, data);\n\t        return $from.call(TypedArray, data);\n\t      });\n\t      arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){\n\t        if(!(key in TypedArray))hide(TypedArray, key, Base[key]);\n\t      });\n\t      TypedArray[PROTOTYPE] = TypedArrayPrototype;\n\t      if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray;\n\t    }\n\t    var $nativeIterator   = TypedArrayPrototype[ITERATOR]\n\t      , CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined)\n\t      , $iterator         = $iterators.values;\n\t    hide(TypedArray, TYPED_CONSTRUCTOR, true);\n\t    hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n\t    hide(TypedArrayPrototype, VIEW, true);\n\t    hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n\t    if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){\n\t      dP(TypedArrayPrototype, TAG, {\n\t        get: function(){ return NAME; }\n\t      });\n\t    }\n\n\t    O[NAME] = TypedArray;\n\n\t    $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n\t    $export($export.S, NAME, {\n\t      BYTES_PER_ELEMENT: BYTES,\n\t      from: $from,\n\t      of: $of\n\t    });\n\n\t    if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n\t    $export($export.P, NAME, proto);\n\n\t    setSpecies(NAME);\n\n\t    $export($export.P + $export.F * FORCED_SET, NAME, {set: $set});\n\n\t    $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n\t    $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});\n\n\t    $export($export.P + $export.F * fails(function(){\n\t      new TypedArray(1).slice();\n\t    }), NAME, {slice: $slice});\n\n\t    $export($export.P + $export.F * (fails(function(){\n\t      return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString()\n\t    }) || !fails(function(){\n\t      TypedArrayPrototype.toLocaleString.call([1, 2]);\n\t    })), NAME, {toLocaleString: $toLocaleString});\n\n\t    Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n\t    if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator);\n\t  };\n\t} else module.exports = function(){ /* empty */ };\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar META     = __webpack_require__(47)('meta')\n\t  , isObject = __webpack_require__(6)\n\t  , has      = __webpack_require__(16)\n\t  , setDesc  = __webpack_require__(10).f\n\t  , id       = 0;\n\tvar isExtensible = Object.isExtensible || function(){\n\t  return true;\n\t};\n\tvar FREEZE = !__webpack_require__(4)(function(){\n\t  return isExtensible(Object.preventExtensions({}));\n\t});\n\tvar setMeta = function(it){\n\t  setDesc(it, META, {value: {\n\t    i: 'O' + ++id, // object ID\n\t    w: {}          // weak collections IDs\n\t  }});\n\t};\n\tvar fastKey = function(it, create){\n\t  // return primitive with prefix\n\t  if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n\t  if(!has(it, META)){\n\t    // can't set metadata to uncaught frozen object\n\t    if(!isExtensible(it))return 'F';\n\t    // not necessary to add metadata\n\t    if(!create)return 'E';\n\t    // add missing metadata\n\t    setMeta(it);\n\t  // return object ID\n\t  } return it[META].i;\n\t};\n\tvar getWeak = function(it, create){\n\t  if(!has(it, META)){\n\t    // can't set metadata to uncaught frozen object\n\t    if(!isExtensible(it))return true;\n\t    // not necessary to add metadata\n\t    if(!create)return false;\n\t    // add missing metadata\n\t    setMeta(it);\n\t  // return hash weak collections IDs\n\t  } return it[META].w;\n\t};\n\t// add metadata on freeze-family methods calling\n\tvar onFreeze = function(it){\n\t  if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n\t  return it;\n\t};\n\tvar meta = module.exports = {\n\t  KEY:      META,\n\t  NEED:     false,\n\t  fastKey:  fastKey,\n\t  getWeak:  getWeak,\n\t  onFreeze: onFreeze\n\t};\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(bitmap, value){\n\t  return {\n\t    enumerable  : !(bitmap & 1),\n\t    configurable: !(bitmap & 2),\n\t    writable    : !(bitmap & 4),\n\t    value       : value\n\t  };\n\t};\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\t// 7.1.4 ToInteger\n\tvar ceil  = Math.ceil\n\t  , floor = Math.floor;\n\tmodule.exports = function(it){\n\t  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n/***/ },\n/* 40 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(it, Constructor, name, forbiddenField){\n\t  if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){\n\t    throw TypeError(name + ': incorrect invocation!');\n\t  } return it;\n\t};\n\n/***/ },\n/* 41 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {};\n\n/***/ },\n/* 42 */\n/***/ function(module, exports) {\n\n\tmodule.exports = false;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\r\n\tvar anObject    = __webpack_require__(3)\r\n\t  , dPs         = __webpack_require__(165)\r\n\t  , enumBugKeys = __webpack_require__(98)\r\n\t  , IE_PROTO    = __webpack_require__(109)('IE_PROTO')\r\n\t  , Empty       = function(){ /* empty */ }\r\n\t  , PROTOTYPE   = 'prototype';\r\n\r\n\t// Create object with fake `null` prototype: use iframe Object with cleared prototype\r\n\tvar createDict = function(){\r\n\t  // Thrash, waste and sodomy: IE GC bug\r\n\t  var iframe = __webpack_require__(97)('iframe')\r\n\t    , i      = enumBugKeys.length\r\n\t    , gt     = '>'\r\n\t    , iframeDocument;\r\n\t  iframe.style.display = 'none';\r\n\t  __webpack_require__(100).appendChild(iframe);\r\n\t  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\r\n\t  // createDict = iframe.contentWindow.Object;\r\n\t  // html.removeChild(iframe);\r\n\t  iframeDocument = iframe.contentWindow.document;\r\n\t  iframeDocument.open();\r\n\t  iframeDocument.write('<script>document.F=Object</script' + gt);\r\n\t  iframeDocument.close();\r\n\t  createDict = iframeDocument.F;\r\n\t  while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\r\n\t  return createDict();\r\n\t};\r\n\r\n\tmodule.exports = Object.create || function create(O, Properties){\r\n\t  var result;\r\n\t  if(O !== null){\r\n\t    Empty[PROTOTYPE] = anObject(O);\r\n\t    result = new Empty;\r\n\t    Empty[PROTOTYPE] = null;\r\n\t    // add \"__proto__\" for Object.getPrototypeOf polyfill\r\n\t    result[IE_PROTO] = O;\r\n\t  } else result = createDict();\r\n\t  return Properties === undefined ? result : dPs(result, Properties);\r\n\t};\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\r\n\tvar $keys      = __webpack_require__(167)\r\n\t  , hiddenKeys = __webpack_require__(98).concat('length', 'prototype');\r\n\r\n\texports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\r\n\t  return $keys(O, hiddenKeys);\r\n\t};\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 / 15.2.3.14 Object.keys(O)\r\n\tvar $keys       = __webpack_require__(167)\r\n\t  , enumBugKeys = __webpack_require__(98);\r\n\r\n\tmodule.exports = Object.keys || function keys(O){\r\n\t  return $keys(O, enumBugKeys);\r\n\t};\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(39)\n\t  , max       = Math.max\n\t  , min       = Math.min;\n\tmodule.exports = function(index, length){\n\t  index = toInteger(index);\n\t  return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n/***/ },\n/* 47 */\n/***/ function(module, exports) {\n\n\tvar id = 0\n\t  , px = Math.random();\n\tmodule.exports = function(key){\n\t  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar hash = exports;\n\n\thash.utils = __webpack_require__(479);\n\thash.common = __webpack_require__(475);\n\thash.sha = __webpack_require__(478);\n\thash.ripemd = __webpack_require__(477);\n\thash.hmac = __webpack_require__(476);\n\n\t// Proxy hash functions to the main object\n\thash.sha1 = hash.sha.sha1;\n\thash.sha256 = hash.sha.sha256;\n\thash.sha224 = hash.sha.sha224;\n\thash.sha384 = hash.sha.sha384;\n\thash.sha512 = hash.sha.sha512;\n\thash.ripemd160 = hash.ripemd.ripemd160;\n\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// a duplex stream is just a stream that is both readable and writable.\n\t// Since JS doesn't have multiple prototypal inheritance, this class\n\t// prototypally inherits from Readable, and then parasitically from\n\t// Writable.\n\n\t'use strict';\n\n\t/*<replacement>*/\n\n\tvar objectKeys = Object.keys || function (obj) {\n\t  var keys = [];\n\t  for (var key in obj) {\n\t    keys.push(key);\n\t  }return keys;\n\t};\n\t/*</replacement>*/\n\n\tmodule.exports = Duplex;\n\n\t/*<replacement>*/\n\tvar processNextTick = __webpack_require__(60);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tvar Readable = __webpack_require__(199);\n\tvar Writable = __webpack_require__(127);\n\n\tutil.inherits(Duplex, Readable);\n\n\tvar keys = objectKeys(Writable.prototype);\n\tfor (var v = 0; v < keys.length; v++) {\n\t  var method = keys[v];\n\t  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n\t}\n\n\tfunction Duplex(options) {\n\t  if (!(this instanceof Duplex)) return new Duplex(options);\n\n\t  Readable.call(this, options);\n\t  Writable.call(this, options);\n\n\t  if (options && options.readable === false) this.readable = false;\n\n\t  if (options && options.writable === false) this.writable = false;\n\n\t  this.allowHalfOpen = true;\n\t  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n\t  this.once('end', onend);\n\t}\n\n\t// the no-half-open enforcer\n\tfunction onend() {\n\t  // if we allow half-open state, or if the writable side ended,\n\t  // then we're ok.\n\t  if (this.allowHalfOpen || this._writableState.ended) return;\n\n\t  // no more data can be written.\n\t  // But allow more writes to happen in this tick.\n\t  processNextTick(onEndNT, this);\n\t}\n\n\tfunction onEndNT(self) {\n\t  self.end();\n\t}\n\n\tfunction forEach(xs, f) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    f(xs[i], i);\n\t  }\n\t}\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\tvar isBufferEncoding = Buffer.isEncoding\n\t  || function(encoding) {\n\t       switch (encoding && encoding.toLowerCase()) {\n\t         case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n\t         default: return false;\n\t       }\n\t     }\n\n\n\tfunction assertEncoding(encoding) {\n\t  if (encoding && !isBufferEncoding(encoding)) {\n\t    throw new Error('Unknown encoding: ' + encoding);\n\t  }\n\t}\n\n\t// StringDecoder provides an interface for efficiently splitting a series of\n\t// buffers into a series of JS strings without breaking apart multi-byte\n\t// characters. CESU-8 is handled as part of the UTF-8 encoding.\n\t//\n\t// @TODO Handling all encodings inside a single object makes it very difficult\n\t// to reason about this code, so it should be split up in the future.\n\t// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n\t// points as used by CESU-8.\n\tvar StringDecoder = exports.StringDecoder = function(encoding) {\n\t  this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n\t  assertEncoding(encoding);\n\t  switch (this.encoding) {\n\t    case 'utf8':\n\t      // CESU-8 represents each of Surrogate Pair by 3-bytes\n\t      this.surrogateSize = 3;\n\t      break;\n\t    case 'ucs2':\n\t    case 'utf16le':\n\t      // UTF-16 represents each of Surrogate Pair by 2-bytes\n\t      this.surrogateSize = 2;\n\t      this.detectIncompleteChar = utf16DetectIncompleteChar;\n\t      break;\n\t    case 'base64':\n\t      // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n\t      this.surrogateSize = 3;\n\t      this.detectIncompleteChar = base64DetectIncompleteChar;\n\t      break;\n\t    default:\n\t      this.write = passThroughWrite;\n\t      return;\n\t  }\n\n\t  // Enough space to store all bytes of a single character. UTF-8 needs 4\n\t  // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n\t  this.charBuffer = new Buffer(6);\n\t  // Number of bytes received for the current incomplete multi-byte character.\n\t  this.charReceived = 0;\n\t  // Number of bytes expected for the current incomplete multi-byte character.\n\t  this.charLength = 0;\n\t};\n\n\n\t// write decodes the given buffer and returns it as JS string that is\n\t// guaranteed to not contain any partial multi-byte characters. Any partial\n\t// character found at the end of the buffer is buffered up, and will be\n\t// returned when calling write again with the remaining bytes.\n\t//\n\t// Note: Converting a Buffer containing an orphan surrogate to a String\n\t// currently works, but converting a String to a Buffer (via `new Buffer`, or\n\t// Buffer#write) will replace incomplete surrogates with the unicode\n\t// replacement character. See https://codereview.chromium.org/121173009/ .\n\tStringDecoder.prototype.write = function(buffer) {\n\t  var charStr = '';\n\t  // if our last write ended with an incomplete multibyte character\n\t  while (this.charLength) {\n\t    // determine how many remaining bytes this buffer has to offer for this char\n\t    var available = (buffer.length >= this.charLength - this.charReceived) ?\n\t        this.charLength - this.charReceived :\n\t        buffer.length;\n\n\t    // add the new bytes to the char buffer\n\t    buffer.copy(this.charBuffer, this.charReceived, 0, available);\n\t    this.charReceived += available;\n\n\t    if (this.charReceived < this.charLength) {\n\t      // still not enough chars in this buffer? wait for more ...\n\t      return '';\n\t    }\n\n\t    // remove bytes belonging to the current character from the buffer\n\t    buffer = buffer.slice(available, buffer.length);\n\n\t    // get the character that was split\n\t    charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n\t    // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n\t    var charCode = charStr.charCodeAt(charStr.length - 1);\n\t    if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n\t      this.charLength += this.surrogateSize;\n\t      charStr = '';\n\t      continue;\n\t    }\n\t    this.charReceived = this.charLength = 0;\n\n\t    // if there are no more bytes in this buffer, just emit our char\n\t    if (buffer.length === 0) {\n\t      return charStr;\n\t    }\n\t    break;\n\t  }\n\n\t  // determine and set charLength / charReceived\n\t  this.detectIncompleteChar(buffer);\n\n\t  var end = buffer.length;\n\t  if (this.charLength) {\n\t    // buffer the incomplete character bytes we got\n\t    buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n\t    end -= this.charReceived;\n\t  }\n\n\t  charStr += buffer.toString(this.encoding, 0, end);\n\n\t  var end = charStr.length - 1;\n\t  var charCode = charStr.charCodeAt(end);\n\t  // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n\t  if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n\t    var size = this.surrogateSize;\n\t    this.charLength += size;\n\t    this.charReceived += size;\n\t    this.charBuffer.copy(this.charBuffer, size, 0, size);\n\t    buffer.copy(this.charBuffer, 0, 0, size);\n\t    return charStr.substring(0, end);\n\t  }\n\n\t  // or just emit the charStr\n\t  return charStr;\n\t};\n\n\t// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n\t// the end of the given buffer. If so, it sets this.charLength to the byte\n\t// length that character, and sets this.charReceived to the number of bytes\n\t// that are available for this character.\n\tStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n\t  // determine how many bytes we have to check at the end of this buffer\n\t  var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n\t  // Figure out if one of the last i bytes of our buffer announces an\n\t  // incomplete char.\n\t  for (; i > 0; i--) {\n\t    var c = buffer[buffer.length - i];\n\n\t    // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n\t    // 110XXXXX\n\t    if (i == 1 && c >> 5 == 0x06) {\n\t      this.charLength = 2;\n\t      break;\n\t    }\n\n\t    // 1110XXXX\n\t    if (i <= 2 && c >> 4 == 0x0E) {\n\t      this.charLength = 3;\n\t      break;\n\t    }\n\n\t    // 11110XXX\n\t    if (i <= 3 && c >> 3 == 0x1E) {\n\t      this.charLength = 4;\n\t      break;\n\t    }\n\t  }\n\t  this.charReceived = i;\n\t};\n\n\tStringDecoder.prototype.end = function(buffer) {\n\t  var res = '';\n\t  if (buffer && buffer.length)\n\t    res = this.write(buffer);\n\n\t  if (this.charReceived) {\n\t    var cr = this.charReceived;\n\t    var buf = this.charBuffer;\n\t    var enc = this.encoding;\n\t    res += buf.slice(0, cr).toString(enc);\n\t  }\n\n\t  return res;\n\t};\n\n\tfunction passThroughWrite(buffer) {\n\t  return buffer.toString(this.encoding);\n\t}\n\n\tfunction utf16DetectIncompleteChar(buffer) {\n\t  this.charReceived = buffer.length % 2;\n\t  this.charLength = this.charReceived ? 2 : 0;\n\t}\n\n\tfunction base64DetectIncompleteChar(buffer) {\n\t  this.charReceived = buffer.length % 3;\n\t  this.charLength = this.charReceived ? 3 : 0;\n\t}\n\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var Transform = __webpack_require__(12).Transform\n\tvar inherits = __webpack_require__(2)\n\tvar StringDecoder = __webpack_require__(50).StringDecoder\n\tmodule.exports = CipherBase\n\tinherits(CipherBase, Transform)\n\tfunction CipherBase (hashMode) {\n\t  Transform.call(this)\n\t  this.hashMode = typeof hashMode === 'string'\n\t  if (this.hashMode) {\n\t    this[hashMode] = this._finalOrDigest\n\t  } else {\n\t    this.final = this._finalOrDigest\n\t  }\n\t  this._decoder = null\n\t  this._encoding = null\n\t}\n\tCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n\t  if (typeof data === 'string') {\n\t    data = new Buffer(data, inputEnc)\n\t  }\n\t  var outData = this._update(data)\n\t  if (this.hashMode) {\n\t    return this\n\t  }\n\t  if (outputEnc) {\n\t    outData = this._toString(outData, outputEnc)\n\t  }\n\t  return outData\n\t}\n\n\tCipherBase.prototype.setAutoPadding = function () {}\n\n\tCipherBase.prototype.getAuthTag = function () {\n\t  throw new Error('trying to get auth tag in unsupported state')\n\t}\n\n\tCipherBase.prototype.setAuthTag = function () {\n\t  throw new Error('trying to set auth tag in unsupported state')\n\t}\n\n\tCipherBase.prototype.setAAD = function () {\n\t  throw new Error('trying to set aad in unsupported state')\n\t}\n\n\tCipherBase.prototype._transform = function (data, _, next) {\n\t  var err\n\t  try {\n\t    if (this.hashMode) {\n\t      this._update(data)\n\t    } else {\n\t      this.push(this._update(data))\n\t    }\n\t  } catch (e) {\n\t    err = e\n\t  } finally {\n\t    next(err)\n\t  }\n\t}\n\tCipherBase.prototype._flush = function (done) {\n\t  var err\n\t  try {\n\t    this.push(this._final())\n\t  } catch (e) {\n\t    err = e\n\t  } finally {\n\t    done(err)\n\t  }\n\t}\n\tCipherBase.prototype._finalOrDigest = function (outputEnc) {\n\t  var outData = this._final() || new Buffer('')\n\t  if (outputEnc) {\n\t    outData = this._toString(outData, outputEnc, true)\n\t  }\n\t  return outData\n\t}\n\n\tCipherBase.prototype._toString = function (value, enc, final) {\n\t  if (!this._decoder) {\n\t    this._decoder = new StringDecoder(enc)\n\t    this._encoding = enc\n\t  }\n\t  if (this._encoding !== enc) {\n\t    throw new Error('can\\'t switch encodings')\n\t  }\n\t  var out = this._decoder.write(value)\n\t  if (final) {\n\t    out += this._decoder.end()\n\t  }\n\t  return out\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 22.1.3.31 Array.prototype[@@unscopables]\n\tvar UNSCOPABLES = __webpack_require__(7)('unscopables')\n\t  , ArrayProto  = Array.prototype;\n\tif(ArrayProto[UNSCOPABLES] == undefined)__webpack_require__(19)(ArrayProto, UNSCOPABLES, {});\n\tmodule.exports = function(key){\n\t  ArrayProto[UNSCOPABLES][key] = true;\n\t};\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// getting tag from 19.1.3.6 Object.prototype.toString()\n\tvar cof = __webpack_require__(26)\n\t  , TAG = __webpack_require__(7)('toStringTag')\n\t  // ES3 wrong here\n\t  , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n\t// fallback for IE11 Script Access Denied error\n\tvar tryGet = function(it, key){\n\t  try {\n\t    return it[key];\n\t  } catch(e){ /* empty */ }\n\t};\n\n\tmodule.exports = function(it){\n\t  var O, T, B;\n\t  return it === undefined ? 'Undefined' : it === null ? 'Null'\n\t    // @@toStringTag case\n\t    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n\t    // builtinTag case\n\t    : ARG ? cof(O)\n\t    // ES3 arguments fallback\n\t    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n\t};\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar redefine = __webpack_require__(20);\n\tmodule.exports = function(target, src, safe){\n\t  for(var key in src)redefine(target, key, src[key], safe);\n\t  return target;\n\t};\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar global      = __webpack_require__(5)\n\t  , dP          = __webpack_require__(10)\n\t  , DESCRIPTORS = __webpack_require__(9)\n\t  , SPECIES     = __webpack_require__(7)('species');\n\n\tmodule.exports = function(KEY){\n\t  var C = global[KEY];\n\t  if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {\n\t    configurable: true,\n\t    get: function(){ return this; }\n\t  });\n\t};\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar def = __webpack_require__(10).f\n\t  , has = __webpack_require__(16)\n\t  , TAG = __webpack_require__(7)('toStringTag');\n\n\tmodule.exports = function(it, tag, stat){\n\t  if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n\t};\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0)\n\t  , defined = __webpack_require__(27)\n\t  , fails   = __webpack_require__(4)\n\t  , spaces  = __webpack_require__(114)\n\t  , space   = '[' + spaces + ']'\n\t  , non     = '\\u200b\\u0085'\n\t  , ltrim   = RegExp('^' + space + space + '*')\n\t  , rtrim   = RegExp(space + space + '*$');\n\n\tvar exporter = function(KEY, exec, ALIAS){\n\t  var exp   = {};\n\t  var FORCE = fails(function(){\n\t    return !!spaces[KEY]() || non[KEY]() != non;\n\t  });\n\t  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n\t  if(ALIAS)exp[ALIAS] = fn;\n\t  $export($export.P + $export.F * FORCE, 'String', exp);\n\t};\n\n\t// 1 -> String#trimLeft\n\t// 2 -> String#trimRight\n\t// 3 -> String#trim\n\tvar trim = exporter.trim = function(string, TYPE){\n\t  string = String(defined(string));\n\t  if(TYPE & 1)string = string.replace(ltrim, '');\n\t  if(TYPE & 2)string = string.replace(rtrim, '');\n\t  return string;\n\t};\n\n\tmodule.exports = exporter;\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\tvar inherits = __webpack_require__(2)\n\tvar md5 = __webpack_require__(179)\n\tvar rmd160 = __webpack_require__(511)\n\tvar sha = __webpack_require__(513)\n\n\tvar Base = __webpack_require__(51)\n\n\tfunction HashNoConstructor(hash) {\n\t  Base.call(this, 'digest')\n\n\t  this._hash = hash\n\t  this.buffers = []\n\t}\n\n\tinherits(HashNoConstructor, Base)\n\n\tHashNoConstructor.prototype._update = function (data) {\n\t  this.buffers.push(data)\n\t}\n\n\tHashNoConstructor.prototype._final = function () {\n\t  var buf = Buffer.concat(this.buffers)\n\t  var r = this._hash(buf)\n\t  this.buffers = null\n\n\t  return r\n\t}\n\n\tfunction Hash(hash) {\n\t  Base.call(this, 'digest')\n\n\t  this._hash = hash\n\t}\n\n\tinherits(Hash, Base)\n\n\tHash.prototype._update = function (data) {\n\t  this._hash.update(data)\n\t}\n\n\tHash.prototype._final = function () {\n\t  return this._hash.digest()\n\t}\n\n\tmodule.exports = function createHash (alg) {\n\t  alg = alg.toLowerCase()\n\t  if ('md5' === alg) return new HashNoConstructor(md5)\n\t  if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)\n\n\t  return new Hash(sha(alg))\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t// resolves . and .. elements in a path array with directory names there\n\t// must be no slashes, empty elements, or device names (c:\\) in the array\n\t// (so also no leading and trailing slashes - it does not distinguish\n\t// relative and absolute paths)\n\tfunction normalizeArray(parts, allowAboveRoot) {\n\t  // if the path tries to go above the root, `up` ends up > 0\n\t  var up = 0;\n\t  for (var i = parts.length - 1; i >= 0; i--) {\n\t    var last = parts[i];\n\t    if (last === '.') {\n\t      parts.splice(i, 1);\n\t    } else if (last === '..') {\n\t      parts.splice(i, 1);\n\t      up++;\n\t    } else if (up) {\n\t      parts.splice(i, 1);\n\t      up--;\n\t    }\n\t  }\n\n\t  // if the path is allowed to go above the root, restore leading ..s\n\t  if (allowAboveRoot) {\n\t    for (; up--; up) {\n\t      parts.unshift('..');\n\t    }\n\t  }\n\n\t  return parts;\n\t}\n\n\t// Split a filename into [root, dir, basename, ext], unix version\n\t// 'root' is just a slash, or nothing.\n\tvar splitPathRe =\n\t    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n\tvar splitPath = function(filename) {\n\t  return splitPathRe.exec(filename).slice(1);\n\t};\n\n\t// path.resolve([from ...], to)\n\t// posix version\n\texports.resolve = function() {\n\t  var resolvedPath = '',\n\t      resolvedAbsolute = false;\n\n\t  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n\t    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n\t    // Skip empty and invalid entries\n\t    if (typeof path !== 'string') {\n\t      throw new TypeError('Arguments to path.resolve must be strings');\n\t    } else if (!path) {\n\t      continue;\n\t    }\n\n\t    resolvedPath = path + '/' + resolvedPath;\n\t    resolvedAbsolute = path.charAt(0) === '/';\n\t  }\n\n\t  // At this point the path should be resolved to a full absolute path, but\n\t  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n\t  // Normalize the path\n\t  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n\t    return !!p;\n\t  }), !resolvedAbsolute).join('/');\n\n\t  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n\t};\n\n\t// path.normalize(path)\n\t// posix version\n\texports.normalize = function(path) {\n\t  var isAbsolute = exports.isAbsolute(path),\n\t      trailingSlash = substr(path, -1) === '/';\n\n\t  // Normalize the path\n\t  path = normalizeArray(filter(path.split('/'), function(p) {\n\t    return !!p;\n\t  }), !isAbsolute).join('/');\n\n\t  if (!path && !isAbsolute) {\n\t    path = '.';\n\t  }\n\t  if (path && trailingSlash) {\n\t    path += '/';\n\t  }\n\n\t  return (isAbsolute ? '/' : '') + path;\n\t};\n\n\t// posix version\n\texports.isAbsolute = function(path) {\n\t  return path.charAt(0) === '/';\n\t};\n\n\t// posix version\n\texports.join = function() {\n\t  var paths = Array.prototype.slice.call(arguments, 0);\n\t  return exports.normalize(filter(paths, function(p, index) {\n\t    if (typeof p !== 'string') {\n\t      throw new TypeError('Arguments to path.join must be strings');\n\t    }\n\t    return p;\n\t  }).join('/'));\n\t};\n\n\n\t// path.relative(from, to)\n\t// posix version\n\texports.relative = function(from, to) {\n\t  from = exports.resolve(from).substr(1);\n\t  to = exports.resolve(to).substr(1);\n\n\t  function trim(arr) {\n\t    var start = 0;\n\t    for (; start < arr.length; start++) {\n\t      if (arr[start] !== '') break;\n\t    }\n\n\t    var end = arr.length - 1;\n\t    for (; end >= 0; end--) {\n\t      if (arr[end] !== '') break;\n\t    }\n\n\t    if (start > end) return [];\n\t    return arr.slice(start, end - start + 1);\n\t  }\n\n\t  var fromParts = trim(from.split('/'));\n\t  var toParts = trim(to.split('/'));\n\n\t  var length = Math.min(fromParts.length, toParts.length);\n\t  var samePartsLength = length;\n\t  for (var i = 0; i < length; i++) {\n\t    if (fromParts[i] !== toParts[i]) {\n\t      samePartsLength = i;\n\t      break;\n\t    }\n\t  }\n\n\t  var outputParts = [];\n\t  for (var i = samePartsLength; i < fromParts.length; i++) {\n\t    outputParts.push('..');\n\t  }\n\n\t  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n\t  return outputParts.join('/');\n\t};\n\n\texports.sep = '/';\n\texports.delimiter = ':';\n\n\texports.dirname = function(path) {\n\t  var result = splitPath(path),\n\t      root = result[0],\n\t      dir = result[1];\n\n\t  if (!root && !dir) {\n\t    // No dirname whatsoever\n\t    return '.';\n\t  }\n\n\t  if (dir) {\n\t    // It has a dirname, strip trailing slash\n\t    dir = dir.substr(0, dir.length - 1);\n\t  }\n\n\t  return root + dir;\n\t};\n\n\n\texports.basename = function(path, ext) {\n\t  var f = splitPath(path)[2];\n\t  // TODO: make this comparison case-insensitive on windows?\n\t  if (ext && f.substr(-1 * ext.length) === ext) {\n\t    f = f.substr(0, f.length - ext.length);\n\t  }\n\t  return f;\n\t};\n\n\n\texports.extname = function(path) {\n\t  return splitPath(path)[3];\n\t};\n\n\tfunction filter (xs, f) {\n\t    if (xs.filter) return xs.filter(f);\n\t    var res = [];\n\t    for (var i = 0; i < xs.length; i++) {\n\t        if (f(xs[i], i, xs)) res.push(xs[i]);\n\t    }\n\t    return res;\n\t}\n\n\t// String.prototype.substr - negative index don't work in IE8\n\tvar substr = 'ab'.substr(-1) === 'b'\n\t    ? function (str, start, len) { return str.substr(start, len) }\n\t    : function (str, start, len) {\n\t        if (start < 0) start = str.length + start;\n\t        return str.substr(start, len);\n\t    }\n\t;\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\n\tif (!process.version ||\n\t    process.version.indexOf('v0.') === 0 ||\n\t    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n\t  module.exports = nextTick;\n\t} else {\n\t  module.exports = process.nextTick;\n\t}\n\n\tfunction nextTick(fn) {\n\t  var args = new Array(arguments.length - 1);\n\t  var i = 0;\n\t  while (i < args.length) {\n\t    args[i++] = arguments[i];\n\t  }\n\t  process.nextTick(function afterTick() {\n\t    fn.apply(null, args);\n\t  });\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {// prototype class for hash functions\n\tfunction Hash (blockSize, finalSize) {\n\t  this._block = new Buffer(blockSize)\n\t  this._finalSize = finalSize\n\t  this._blockSize = blockSize\n\t  this._len = 0\n\t  this._s = 0\n\t}\n\n\tHash.prototype.update = function (data, enc) {\n\t  if (typeof data === 'string') {\n\t    enc = enc || 'utf8'\n\t    data = new Buffer(data, enc)\n\t  }\n\n\t  var l = this._len += data.length\n\t  var s = this._s || 0\n\t  var f = 0\n\t  var buffer = this._block\n\n\t  while (s < l) {\n\t    var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))\n\t    var ch = (t - f)\n\n\t    for (var i = 0; i < ch; i++) {\n\t      buffer[(s % this._blockSize) + i] = data[i + f]\n\t    }\n\n\t    s += ch\n\t    f += ch\n\n\t    if ((s % this._blockSize) === 0) {\n\t      this._update(buffer)\n\t    }\n\t  }\n\t  this._s = s\n\n\t  return this\n\t}\n\n\tHash.prototype.digest = function (enc) {\n\t  // Suppose the length of the message M, in bits, is l\n\t  var l = this._len * 8\n\n\t  // Append the bit 1 to the end of the message\n\t  this._block[this._len % this._blockSize] = 0x80\n\n\t  // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize\n\t  this._block.fill(0, this._len % this._blockSize + 1)\n\n\t  if (l % (this._blockSize * 8) >= this._finalSize * 8) {\n\t    this._update(this._block)\n\t    this._block.fill(0)\n\t  }\n\n\t  // to this append the block which is equal to the number l written in binary\n\t  // TODO: handle case where l is > Math.pow(2, 29)\n\t  this._block.writeInt32BE(l, this._blockSize - 4)\n\n\t  var hash = this._update(this._block) || this._hash()\n\n\t  return enc ? hash.toString(enc) : hash\n\t}\n\n\tHash.prototype._update = function () {\n\t  throw new Error('_update must be implemented by subclass')\n\t}\n\n\tmodule.exports = Hash\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// a duplex stream is just a stream that is both readable and writable.\n\t// Since JS doesn't have multiple prototypal inheritance, this class\n\t// prototypally inherits from Readable, and then parasitically from\n\t// Writable.\n\n\t'use strict';\n\n\t/*<replacement>*/\n\n\tvar objectKeys = Object.keys || function (obj) {\n\t  var keys = [];\n\t  for (var key in obj) {\n\t    keys.push(key);\n\t  }return keys;\n\t};\n\t/*</replacement>*/\n\n\tmodule.exports = Duplex;\n\n\t/*<replacement>*/\n\tvar processNextTick = __webpack_require__(60);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tvar Readable = __webpack_require__(202);\n\tvar Writable = __webpack_require__(204);\n\n\tutil.inherits(Duplex, Readable);\n\n\tvar keys = objectKeys(Writable.prototype);\n\tfor (var v = 0; v < keys.length; v++) {\n\t  var method = keys[v];\n\t  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n\t}\n\n\tfunction Duplex(options) {\n\t  if (!(this instanceof Duplex)) return new Duplex(options);\n\n\t  Readable.call(this, options);\n\t  Writable.call(this, options);\n\n\t  if (options && options.readable === false) this.readable = false;\n\n\t  if (options && options.writable === false) this.writable = false;\n\n\t  this.allowHalfOpen = true;\n\t  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n\t  this.once('end', onend);\n\t}\n\n\t// the no-half-open enforcer\n\tfunction onend() {\n\t  // if we allow half-open state, or if the writable side ended,\n\t  // then we're ok.\n\t  if (this.allowHalfOpen || this._writableState.ended) return;\n\n\t  // no more data can be written.\n\t  // But allow more writes to happen in this tick.\n\t  processNextTick(onEndNT, this);\n\t}\n\n\tfunction onEndNT(self) {\n\t  self.end();\n\t}\n\n\tfunction forEach(xs, f) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    f(xs[i], i);\n\t  }\n\t}\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar base = exports;\n\n\tbase.Reporter = __webpack_require__(214).Reporter;\n\tbase.DecoderBuffer = __webpack_require__(131).DecoderBuffer;\n\tbase.EncoderBuffer = __webpack_require__(131).EncoderBuffer;\n\tbase.Node = __webpack_require__(213);\n\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer, process) {'use strict';\n\n\t// Load modules\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar Crypto = __webpack_require__(180);\n\tvar Path = __webpack_require__(59);\n\tvar Util = __webpack_require__(71);\n\tvar Escape = __webpack_require__(225);\n\n\t// Declare internals\n\n\tvar internals = {};\n\n\t// Clone object or array\n\n\texports.clone = function (obj, seen) {\n\n\t    if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' || obj === null) {\n\n\t        return obj;\n\t    }\n\n\t    seen = seen || { orig: [], copy: [] };\n\n\t    var lookup = seen.orig.indexOf(obj);\n\t    if (lookup !== -1) {\n\t        return seen.copy[lookup];\n\t    }\n\n\t    var newObj = void 0;\n\t    var cloneDeep = false;\n\n\t    if (!Array.isArray(obj)) {\n\t        if (Buffer.isBuffer(obj)) {\n\t            newObj = new Buffer(obj);\n\t        } else if (obj instanceof Date) {\n\t            newObj = new Date(obj.getTime());\n\t        } else if (obj instanceof RegExp) {\n\t            newObj = new RegExp(obj);\n\t        } else {\n\t            var proto = Object.getPrototypeOf(obj);\n\t            if (proto && proto.isImmutable) {\n\n\t                newObj = obj;\n\t            } else {\n\t                newObj = Object.create(proto);\n\t                cloneDeep = true;\n\t            }\n\t        }\n\t    } else {\n\t        newObj = [];\n\t        cloneDeep = true;\n\t    }\n\n\t    seen.orig.push(obj);\n\t    seen.copy.push(newObj);\n\n\t    if (cloneDeep) {\n\t        var keys = Object.getOwnPropertyNames(obj);\n\t        for (var i = 0; i < keys.length; ++i) {\n\t            var key = keys[i];\n\t            var descriptor = Object.getOwnPropertyDescriptor(obj, key);\n\t            if (descriptor && (descriptor.get || descriptor.set)) {\n\n\t                Object.defineProperty(newObj, key, descriptor);\n\t            } else {\n\t                newObj[key] = exports.clone(obj[key], seen);\n\t            }\n\t        }\n\t    }\n\n\t    return newObj;\n\t};\n\n\t// Merge all the properties of source into target, source wins in conflict, and by default null and undefined from source are applied\n\n\t/*eslint-disable */\n\texports.merge = function (target, source, isNullOverride /* = true */, isMergeArrays /* = true */) {\n\t    /*eslint-enable */\n\n\t    exports.assert(target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object', 'Invalid target value: must be an object');\n\t    exports.assert(source === null || source === undefined || (typeof source === 'undefined' ? 'undefined' : _typeof(source)) === 'object', 'Invalid source value: must be null, undefined, or an object');\n\n\t    if (!source) {\n\t        return target;\n\t    }\n\n\t    if (Array.isArray(source)) {\n\t        exports.assert(Array.isArray(target), 'Cannot merge array onto an object');\n\t        if (isMergeArrays === false) {\n\t            // isMergeArrays defaults to true\n\t            target.length = 0; // Must not change target assignment\n\t        }\n\n\t        for (var i = 0; i < source.length; ++i) {\n\t            target.push(exports.clone(source[i]));\n\t        }\n\n\t        return target;\n\t    }\n\n\t    var keys = Object.keys(source);\n\t    for (var _i = 0; _i < keys.length; ++_i) {\n\t        var key = keys[_i];\n\t        var value = source[key];\n\t        if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n\n\t            if (!target[key] || _typeof(target[key]) !== 'object' || Array.isArray(target[key]) ^ Array.isArray(value) || value instanceof Date || Buffer.isBuffer(value) || value instanceof RegExp) {\n\n\t                target[key] = exports.clone(value);\n\t            } else {\n\t                exports.merge(target[key], value, isNullOverride, isMergeArrays);\n\t            }\n\t        } else {\n\t            if (value !== null && value !== undefined) {\n\t                // Explicit to preserve empty strings\n\n\t                target[key] = value;\n\t            } else if (isNullOverride !== false) {\n\t                // Defaults to true\n\t                target[key] = value;\n\t            }\n\t        }\n\t    }\n\n\t    return target;\n\t};\n\n\t// Apply options to a copy of the defaults\n\n\texports.applyToDefaults = function (defaults, options, isNullOverride) {\n\n\t    exports.assert(defaults && (typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) === 'object', 'Invalid defaults value: must be an object');\n\t    exports.assert(!options || options === true || (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object', 'Invalid options value: must be true, falsy or an object');\n\n\t    if (!options) {\n\t        // If no options, return null\n\t        return null;\n\t    }\n\n\t    var copy = exports.clone(defaults);\n\n\t    if (options === true) {\n\t        // If options is set to true, use defaults\n\t        return copy;\n\t    }\n\n\t    return exports.merge(copy, options, isNullOverride === true, false);\n\t};\n\n\t// Clone an object except for the listed keys which are shallow copied\n\n\texports.cloneWithShallow = function (source, keys) {\n\n\t    if (!source || (typeof source === 'undefined' ? 'undefined' : _typeof(source)) !== 'object') {\n\n\t        return source;\n\t    }\n\n\t    var storage = internals.store(source, keys); // Move shallow copy items to storage\n\t    var copy = exports.clone(source); // Deep copy the rest\n\t    internals.restore(copy, source, storage); // Shallow copy the stored items and restore\n\t    return copy;\n\t};\n\n\tinternals.store = function (source, keys) {\n\n\t    var storage = {};\n\t    for (var i = 0; i < keys.length; ++i) {\n\t        var key = keys[i];\n\t        var value = exports.reach(source, key);\n\t        if (value !== undefined) {\n\t            storage[key] = value;\n\t            internals.reachSet(source, key, undefined);\n\t        }\n\t    }\n\n\t    return storage;\n\t};\n\n\tinternals.restore = function (copy, source, storage) {\n\n\t    var keys = Object.keys(storage);\n\t    for (var i = 0; i < keys.length; ++i) {\n\t        var key = keys[i];\n\t        internals.reachSet(copy, key, storage[key]);\n\t        internals.reachSet(source, key, storage[key]);\n\t    }\n\t};\n\n\tinternals.reachSet = function (obj, key, value) {\n\n\t    var path = key.split('.');\n\t    var ref = obj;\n\t    for (var i = 0; i < path.length; ++i) {\n\t        var segment = path[i];\n\t        if (i + 1 === path.length) {\n\t            ref[segment] = value;\n\t        }\n\n\t        ref = ref[segment];\n\t    }\n\t};\n\n\t// Apply options to defaults except for the listed keys which are shallow copied from option without merging\n\n\texports.applyToDefaultsWithShallow = function (defaults, options, keys) {\n\n\t    exports.assert(defaults && (typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) === 'object', 'Invalid defaults value: must be an object');\n\t    exports.assert(!options || options === true || (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object', 'Invalid options value: must be true, falsy or an object');\n\t    exports.assert(keys && Array.isArray(keys), 'Invalid keys');\n\n\t    if (!options) {\n\t        // If no options, return null\n\t        return null;\n\t    }\n\n\t    var copy = exports.cloneWithShallow(defaults, keys);\n\n\t    if (options === true) {\n\t        // If options is set to true, use defaults\n\t        return copy;\n\t    }\n\n\t    var storage = internals.store(options, keys); // Move shallow copy items to storage\n\t    exports.merge(copy, options, false, false); // Deep copy the rest\n\t    internals.restore(copy, options, storage); // Shallow copy the stored items and restore\n\t    return copy;\n\t};\n\n\t// Deep object or array comparison\n\n\texports.deepEqual = function (obj, ref, options, seen) {\n\n\t    options = options || { prototype: true };\n\n\t    var type = typeof obj === 'undefined' ? 'undefined' : _typeof(obj);\n\n\t    if (type !== (typeof ref === 'undefined' ? 'undefined' : _typeof(ref))) {\n\t        return false;\n\t    }\n\n\t    if (type !== 'object' || obj === null || ref === null) {\n\n\t        if (obj === ref) {\n\t            // Copied from Deep-eql, copyright(c) 2013 Jake Luer, jake@alogicalparadox.com, MIT Licensed, https://github.com/chaijs/deep-eql\n\t            return obj !== 0 || 1 / obj === 1 / ref; // -0 / +0\n\t        }\n\n\t        return obj !== obj && ref !== ref; // NaN\n\t    }\n\n\t    seen = seen || [];\n\t    if (seen.indexOf(obj) !== -1) {\n\t        return true; // If previous comparison failed, it would have stopped execution\n\t    }\n\n\t    seen.push(obj);\n\n\t    if (Array.isArray(obj)) {\n\t        if (!Array.isArray(ref)) {\n\t            return false;\n\t        }\n\n\t        if (!options.part && obj.length !== ref.length) {\n\t            return false;\n\t        }\n\n\t        for (var i = 0; i < obj.length; ++i) {\n\t            if (options.part) {\n\t                var found = false;\n\t                for (var j = 0; j < ref.length; ++j) {\n\t                    if (exports.deepEqual(obj[i], ref[j], options)) {\n\t                        found = true;\n\t                        break;\n\t                    }\n\t                }\n\n\t                return found;\n\t            }\n\n\t            if (!exports.deepEqual(obj[i], ref[i], options)) {\n\t                return false;\n\t            }\n\t        }\n\n\t        return true;\n\t    }\n\n\t    if (Buffer.isBuffer(obj)) {\n\t        if (!Buffer.isBuffer(ref)) {\n\t            return false;\n\t        }\n\n\t        if (obj.length !== ref.length) {\n\t            return false;\n\t        }\n\n\t        for (var _i2 = 0; _i2 < obj.length; ++_i2) {\n\t            if (obj[_i2] !== ref[_i2]) {\n\t                return false;\n\t            }\n\t        }\n\n\t        return true;\n\t    }\n\n\t    if (obj instanceof Date) {\n\t        return ref instanceof Date && obj.getTime() === ref.getTime();\n\t    }\n\n\t    if (obj instanceof RegExp) {\n\t        return ref instanceof RegExp && obj.toString() === ref.toString();\n\t    }\n\n\t    if (options.prototype) {\n\t        if (Object.getPrototypeOf(obj) !== Object.getPrototypeOf(ref)) {\n\t            return false;\n\t        }\n\t    }\n\n\t    var keys = Object.getOwnPropertyNames(obj);\n\n\t    if (!options.part && keys.length !== Object.getOwnPropertyNames(ref).length) {\n\t        return false;\n\t    }\n\n\t    for (var _i3 = 0; _i3 < keys.length; ++_i3) {\n\t        var key = keys[_i3];\n\t        var descriptor = Object.getOwnPropertyDescriptor(obj, key);\n\t        if (descriptor.get) {\n\t            if (!exports.deepEqual(descriptor, Object.getOwnPropertyDescriptor(ref, key), options, seen)) {\n\t                return false;\n\t            }\n\t        } else if (!exports.deepEqual(obj[key], ref[key], options, seen)) {\n\t            return false;\n\t        }\n\t    }\n\n\t    return true;\n\t};\n\n\t// Remove duplicate items from array\n\n\texports.unique = function (array, key) {\n\n\t    var index = {};\n\t    var result = [];\n\n\t    for (var i = 0; i < array.length; ++i) {\n\t        var id = key ? array[i][key] : array[i];\n\t        if (index[id] !== true) {\n\n\t            result.push(array[i]);\n\t            index[id] = true;\n\t        }\n\t    }\n\n\t    return result;\n\t};\n\n\t// Convert array into object\n\n\texports.mapToObject = function (array, key) {\n\n\t    if (!array) {\n\t        return null;\n\t    }\n\n\t    var obj = {};\n\t    for (var i = 0; i < array.length; ++i) {\n\t        if (key) {\n\t            if (array[i][key]) {\n\t                obj[array[i][key]] = true;\n\t            }\n\t        } else {\n\t            obj[array[i]] = true;\n\t        }\n\t    }\n\n\t    return obj;\n\t};\n\n\t// Find the common unique items in two arrays\n\n\texports.intersect = function (array1, array2, justFirst) {\n\n\t    if (!array1 || !array2) {\n\t        return [];\n\t    }\n\n\t    var common = [];\n\t    var hash = Array.isArray(array1) ? exports.mapToObject(array1) : array1;\n\t    var found = {};\n\t    for (var i = 0; i < array2.length; ++i) {\n\t        if (hash[array2[i]] && !found[array2[i]]) {\n\t            if (justFirst) {\n\t                return array2[i];\n\t            }\n\n\t            common.push(array2[i]);\n\t            found[array2[i]] = true;\n\t        }\n\t    }\n\n\t    return justFirst ? null : common;\n\t};\n\n\t// Test if the reference contains the values\n\n\texports.contain = function (ref, values, options) {\n\n\t    /*\n\t        string -> string(s)\n\t        array -> item(s)\n\t        object -> key(s)\n\t        object -> object (key:value)\n\t    */\n\n\t    var valuePairs = null;\n\t    if ((typeof ref === 'undefined' ? 'undefined' : _typeof(ref)) === 'object' && (typeof values === 'undefined' ? 'undefined' : _typeof(values)) === 'object' && !Array.isArray(ref) && !Array.isArray(values)) {\n\n\t        valuePairs = values;\n\t        values = Object.keys(values);\n\t    } else {\n\t        values = [].concat(values);\n\t    }\n\n\t    options = options || {}; // deep, once, only, part\n\n\t    exports.assert(arguments.length >= 2, 'Insufficient arguments');\n\t    exports.assert(typeof ref === 'string' || (typeof ref === 'undefined' ? 'undefined' : _typeof(ref)) === 'object', 'Reference must be string or an object');\n\t    exports.assert(values.length, 'Values array cannot be empty');\n\n\t    var compare = void 0;\n\t    var compareFlags = void 0;\n\t    if (options.deep) {\n\t        compare = exports.deepEqual;\n\n\t        var hasOnly = options.hasOwnProperty('only');\n\t        var hasPart = options.hasOwnProperty('part');\n\n\t        compareFlags = {\n\t            prototype: hasOnly ? options.only : hasPart ? !options.part : false,\n\t            part: hasOnly ? !options.only : hasPart ? options.part : true\n\t        };\n\t    } else {\n\t        compare = function compare(a, b) {\n\t            return a === b;\n\t        };\n\t    }\n\n\t    var misses = false;\n\t    var matches = new Array(values.length);\n\t    for (var i = 0; i < matches.length; ++i) {\n\t        matches[i] = 0;\n\t    }\n\n\t    if (typeof ref === 'string') {\n\t        var pattern = '(';\n\t        for (var _i4 = 0; _i4 < values.length; ++_i4) {\n\t            var value = values[_i4];\n\t            exports.assert(typeof value === 'string', 'Cannot compare string reference to non-string value');\n\t            pattern += (_i4 ? '|' : '') + exports.escapeRegex(value);\n\t        }\n\n\t        var regex = new RegExp(pattern + ')', 'g');\n\t        var leftovers = ref.replace(regex, function ($0, $1) {\n\n\t            var index = values.indexOf($1);\n\t            ++matches[index];\n\t            return ''; // Remove from string\n\t        });\n\n\t        misses = !!leftovers;\n\t    } else if (Array.isArray(ref)) {\n\t        for (var _i5 = 0; _i5 < ref.length; ++_i5) {\n\t            var matched = false;\n\t            for (var j = 0; j < values.length && matched === false; ++j) {\n\t                matched = compare(values[j], ref[_i5], compareFlags) && j;\n\t            }\n\n\t            if (matched !== false) {\n\t                ++matches[matched];\n\t            } else {\n\t                misses = true;\n\t            }\n\t        }\n\t    } else {\n\t        var keys = Object.keys(ref);\n\t        for (var _i6 = 0; _i6 < keys.length; ++_i6) {\n\t            var key = keys[_i6];\n\t            var pos = values.indexOf(key);\n\t            if (pos !== -1) {\n\t                if (valuePairs && !compare(valuePairs[key], ref[key], compareFlags)) {\n\n\t                    return false;\n\t                }\n\n\t                ++matches[pos];\n\t            } else {\n\t                misses = true;\n\t            }\n\t        }\n\t    }\n\n\t    var result = false;\n\t    for (var _i7 = 0; _i7 < matches.length; ++_i7) {\n\t        result = result || !!matches[_i7];\n\t        if (options.once && matches[_i7] > 1 || !options.part && !matches[_i7]) {\n\n\t            return false;\n\t        }\n\t    }\n\n\t    if (options.only && misses) {\n\n\t        return false;\n\t    }\n\n\t    return result;\n\t};\n\n\t// Flatten array\n\n\texports.flatten = function (array, target) {\n\n\t    var result = target || [];\n\n\t    for (var i = 0; i < array.length; ++i) {\n\t        if (Array.isArray(array[i])) {\n\t            exports.flatten(array[i], result);\n\t        } else {\n\t            result.push(array[i]);\n\t        }\n\t    }\n\n\t    return result;\n\t};\n\n\t// Convert an object key chain string ('a.b.c') to reference (object[a][b][c])\n\n\texports.reach = function (obj, chain, options) {\n\n\t    if (chain === false || chain === null || typeof chain === 'undefined') {\n\n\t        return obj;\n\t    }\n\n\t    options = options || {};\n\t    if (typeof options === 'string') {\n\t        options = { separator: options };\n\t    }\n\n\t    var path = chain.split(options.separator || '.');\n\t    var ref = obj;\n\t    for (var i = 0; i < path.length; ++i) {\n\t        var key = path[i];\n\t        if (key[0] === '-' && Array.isArray(ref)) {\n\t            key = key.slice(1, key.length);\n\t            key = ref.length - key;\n\t        }\n\n\t        if (!ref || !(((typeof ref === 'undefined' ? 'undefined' : _typeof(ref)) === 'object' || typeof ref === 'function') && key in ref) || (typeof ref === 'undefined' ? 'undefined' : _typeof(ref)) !== 'object' && options.functions === false) {\n\t            // Only object and function can have properties\n\n\t            exports.assert(!options.strict || i + 1 === path.length, 'Missing segment', key, 'in reach path ', chain);\n\t            exports.assert((typeof ref === 'undefined' ? 'undefined' : _typeof(ref)) === 'object' || options.functions === true || typeof ref !== 'function', 'Invalid segment', key, 'in reach path ', chain);\n\t            ref = options.default;\n\t            break;\n\t        }\n\n\t        ref = ref[key];\n\t    }\n\n\t    return ref;\n\t};\n\n\texports.reachTemplate = function (obj, template, options) {\n\n\t    return template.replace(/{([^}]+)}/g, function ($0, chain) {\n\n\t        var value = exports.reach(obj, chain, options);\n\t        return value === undefined || value === null ? '' : value;\n\t    });\n\t};\n\n\texports.formatStack = function (stack) {\n\n\t    var trace = [];\n\t    for (var i = 0; i < stack.length; ++i) {\n\t        var item = stack[i];\n\t        trace.push([item.getFileName(), item.getLineNumber(), item.getColumnNumber(), item.getFunctionName(), item.isConstructor()]);\n\t    }\n\n\t    return trace;\n\t};\n\n\texports.formatTrace = function (trace) {\n\n\t    var display = [];\n\n\t    for (var i = 0; i < trace.length; ++i) {\n\t        var row = trace[i];\n\t        display.push((row[4] ? 'new ' : '') + row[3] + ' (' + row[0] + ':' + row[1] + ':' + row[2] + ')');\n\t    }\n\n\t    return display;\n\t};\n\n\texports.callStack = function (slice) {\n\n\t    // http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n\n\t    var v8 = Error.prepareStackTrace;\n\t    Error.prepareStackTrace = function (err, stack) {\n\n\t        return stack;\n\t    };\n\n\t    var capture = {};\n\t    Error.captureStackTrace(capture, this); // arguments.callee is not supported in strict mode so we use this and slice the trace of this off the result\n\t    var stack = capture.stack;\n\n\t    Error.prepareStackTrace = v8;\n\n\t    var trace = exports.formatStack(stack);\n\n\t    return trace.slice(1 + slice);\n\t};\n\n\texports.displayStack = function (slice) {\n\n\t    var trace = exports.callStack(slice === undefined ? 1 : slice + 1);\n\n\t    return exports.formatTrace(trace);\n\t};\n\n\texports.abortThrow = false;\n\n\texports.abort = function (message, hideStack) {\n\n\t    if (process.env.NODE_ENV === 'test' || exports.abortThrow === true) {\n\t        throw new Error(message || 'Unknown error');\n\t    }\n\n\t    var stack = '';\n\t    if (!hideStack) {\n\t        stack = exports.displayStack(1).join('\\n\\t');\n\t    }\n\t    console.log('ABORT: ' + message + '\\n\\t' + stack);\n\t    process.exit(1);\n\t};\n\n\texports.assert = function (condition /*, msg1, msg2, msg3 */) {\n\n\t    if (condition) {\n\t        return;\n\t    }\n\n\t    if (arguments.length === 2 && arguments[1] instanceof Error) {\n\t        throw arguments[1];\n\t    }\n\n\t    var msgs = [];\n\t    for (var i = 1; i < arguments.length; ++i) {\n\t        if (arguments[i] !== '') {\n\t            msgs.push(arguments[i]); // Avoids Array.slice arguments leak, allowing for V8 optimizations\n\t        }\n\t    }\n\n\t    msgs = msgs.map(function (msg) {\n\n\t        return typeof msg === 'string' ? msg : msg instanceof Error ? msg.message : exports.stringify(msg);\n\t    });\n\n\t    throw new Error(msgs.join(' ') || 'Unknown error');\n\t};\n\n\texports.Timer = function () {\n\n\t    this.ts = 0;\n\t    this.reset();\n\t};\n\n\texports.Timer.prototype.reset = function () {\n\n\t    this.ts = Date.now();\n\t};\n\n\texports.Timer.prototype.elapsed = function () {\n\n\t    return Date.now() - this.ts;\n\t};\n\n\texports.Bench = function () {\n\n\t    this.ts = 0;\n\t    this.reset();\n\t};\n\n\texports.Bench.prototype.reset = function () {\n\n\t    this.ts = exports.Bench.now();\n\t};\n\n\texports.Bench.prototype.elapsed = function () {\n\n\t    return exports.Bench.now() - this.ts;\n\t};\n\n\texports.Bench.now = function () {\n\n\t    var ts = process.hrtime();\n\t    return ts[0] * 1e3 + ts[1] / 1e6;\n\t};\n\n\t// Escape string for Regex construction\n\n\texports.escapeRegex = function (string) {\n\n\t    // Escape ^$.*+-?=!:|\\/()[]{},\n\t    return string.replace(/[\\^\\$\\.\\*\\+\\-\\?\\=\\!\\:\\|\\\\\\/\\(\\)\\[\\]\\{\\}\\,]/g, '\\\\$&');\n\t};\n\n\t// Base64url (RFC 4648) encode\n\n\texports.base64urlEncode = function (value, encoding) {\n\n\t    var buf = Buffer.isBuffer(value) ? value : new Buffer(value, encoding || 'binary');\n\t    return buf.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/\\=/g, '');\n\t};\n\n\t// Base64url (RFC 4648) decode\n\n\texports.base64urlDecode = function (value, encoding) {\n\n\t    if (value && !/^[\\w\\-]*$/.test(value)) {\n\n\t        return new Error('Invalid character');\n\t    }\n\n\t    try {\n\t        var buf = new Buffer(value, 'base64');\n\t        return encoding === 'buffer' ? buf : buf.toString(encoding || 'binary');\n\t    } catch (err) {\n\t        return err;\n\t    }\n\t};\n\n\t// Escape attribute value for use in HTTP header\n\n\texports.escapeHeaderAttribute = function (attribute) {\n\n\t    // Allowed value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9, \\, \"\n\n\t    exports.assert(/^[ \\w\\!#\\$%&'\\(\\)\\*\\+,\\-\\.\\/\\:;<\\=>\\?@\\[\\]\\^`\\{\\|\\}~\\\"\\\\]*$/.test(attribute), 'Bad attribute value (' + attribute + ')');\n\n\t    return attribute.replace(/\\\\/g, '\\\\\\\\').replace(/\\\"/g, '\\\\\"'); // Escape quotes and slash\n\t};\n\n\texports.escapeHtml = function (string) {\n\n\t    return Escape.escapeHtml(string);\n\t};\n\n\texports.escapeJavaScript = function (string) {\n\n\t    return Escape.escapeJavaScript(string);\n\t};\n\n\texports.nextTick = function (callback) {\n\n\t    return function () {\n\n\t        var args = arguments;\n\t        process.nextTick(function () {\n\n\t            callback.apply(null, args);\n\t        });\n\t    };\n\t};\n\n\texports.once = function (method) {\n\n\t    if (method._hoekOnce) {\n\t        return method;\n\t    }\n\n\t    var once = false;\n\t    var wrapped = function wrapped() {\n\n\t        if (!once) {\n\t            once = true;\n\t            method.apply(null, arguments);\n\t        }\n\t    };\n\n\t    wrapped._hoekOnce = true;\n\n\t    return wrapped;\n\t};\n\n\texports.isAbsolutePath = function (path, platform) {\n\n\t    if (!path) {\n\t        return false;\n\t    }\n\n\t    if (Path.isAbsolute) {\n\t        // node >= 0.11\n\t        return Path.isAbsolute(path);\n\t    }\n\n\t    platform = platform || process.platform;\n\n\t    // Unix\n\n\t    if (platform !== 'win32') {\n\t        return path[0] === '/';\n\t    }\n\n\t    // Windows\n\n\t    return !!/^(?:[a-zA-Z]:[\\\\\\/])|(?:[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/])/.test(path); // C:\\ or \\\\something\\something\n\t};\n\n\texports.isInteger = function (value) {\n\n\t    return typeof value === 'number' && parseFloat(value) === parseInt(value, 10) && !isNaN(value);\n\t};\n\n\texports.ignore = function () {};\n\n\texports.inherits = Util.inherits;\n\n\texports.format = Util.format;\n\n\texports.transform = function (source, transform, options) {\n\n\t    exports.assert(source === null || source === undefined || (typeof source === 'undefined' ? 'undefined' : _typeof(source)) === 'object' || Array.isArray(source), 'Invalid source object: must be null, undefined, an object, or an array');\n\n\t    if (Array.isArray(source)) {\n\t        var results = [];\n\t        for (var i = 0; i < source.length; ++i) {\n\t            results.push(exports.transform(source[i], transform, options));\n\t        }\n\t        return results;\n\t    }\n\n\t    var result = {};\n\t    var keys = Object.keys(transform);\n\n\t    for (var _i8 = 0; _i8 < keys.length; ++_i8) {\n\t        var key = keys[_i8];\n\t        var path = key.split('.');\n\t        var sourcePath = transform[key];\n\n\t        exports.assert(typeof sourcePath === 'string', 'All mappings must be \".\" delineated strings');\n\n\t        var segment = void 0;\n\t        var res = result;\n\n\t        while (path.length > 1) {\n\t            segment = path.shift();\n\t            if (!res[segment]) {\n\t                res[segment] = {};\n\t            }\n\t            res = res[segment];\n\t        }\n\t        segment = path.shift();\n\t        res[segment] = exports.reach(source, sourcePath, options);\n\t    }\n\n\t    return result;\n\t};\n\n\texports.uniqueFilename = function (path, extension) {\n\n\t    if (extension) {\n\t        extension = extension[0] !== '.' ? '.' + extension : extension;\n\t    } else {\n\t        extension = '';\n\t    }\n\n\t    path = Path.resolve(path);\n\t    var name = [Date.now(), process.pid, Crypto.randomBytes(8).toString('hex')].join('-') + extension;\n\t    return Path.join(path, name);\n\t};\n\n\texports.stringify = function () {\n\n\t    try {\n\t        return JSON.stringify.apply(null, arguments);\n\t    } catch (err) {\n\t        return '[Cannot display object: ' + err.message + ']';\n\t    }\n\t};\n\n\texports.shallow = function (source) {\n\n\t    var target = {};\n\t    var keys = Object.keys(source);\n\t    for (var i = 0; i < keys.length; ++i) {\n\t        var key = keys[i];\n\t        target[key] = source[key];\n\t    }\n\n\t    return target;\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(8)))\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {module.exports = function xor (a, b) {\n\t  var length = Math.min(a.length, b.length)\n\t  var buffer = new Buffer(length)\n\n\t  for (var i = 0; i < length; ++i) {\n\t    buffer[i] = a[i] ^ b[i]\n\t  }\n\n\t  return buffer\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ctx         = __webpack_require__(34)\n\t  , call        = __webpack_require__(160)\n\t  , isArrayIter = __webpack_require__(102)\n\t  , anObject    = __webpack_require__(3)\n\t  , toLength    = __webpack_require__(13)\n\t  , getIterFn   = __webpack_require__(118);\n\tmodule.exports = function(iterable, entries, fn, that, ITERATOR){\n\t  var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)\n\t    , f      = ctx(fn, that, entries ? 2 : 1)\n\t    , index  = 0\n\t    , length, step, iterator;\n\t  if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');\n\t  // fast case for arrays with default iterator\n\t  if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){\n\t    entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n\t  } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){\n\t    call(iterator, f, step.value, entries);\n\t  }\n\t};\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// fallback for non-array-like ES3 and non-enumerable old V8 strings\n\tvar cof = __webpack_require__(26);\n\tmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n\t  return cof(it) == 'String' ? it.split('') : Object(it);\n\t};\n\n/***/ },\n/* 68 */\n/***/ function(module, exports) {\n\n\texports.f = {}.propertyIsEnumerable;\n\n/***/ },\n/* 69 */\n/***/ function(module, exports) {\n\n\tmodule.exports = assert;\n\n\tfunction assert(val, msg) {\n\t  if (!val)\n\t    throw new Error(msg || 'Assertion failed');\n\t}\n\n\tassert.equal = function assertEqual(l, r, msg) {\n\t  if (l != r)\n\t    throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n\t};\n\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global, Buffer, process) {'use strict'\n\n\tfunction oldBrowser () {\n\t  throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n\t}\n\n\tvar crypto = global.crypto || global.msCrypto\n\n\tif (crypto && crypto.getRandomValues) {\n\t  module.exports = randomBytes\n\t} else {\n\t  module.exports = oldBrowser\n\t}\n\n\tfunction randomBytes (size, cb) {\n\t  // phantomjs needs to throw\n\t  if (size > 65536) throw new Error('requested too many random bytes')\n\t  // in case browserify  isn't using the Uint8Array version\n\t  var rawBytes = new global.Uint8Array(size)\n\n\t  // This will not work in older browsers.\n\t  // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n\t  if (size > 0) {  // getRandomValues fails on IE if size == 0\n\t    crypto.getRandomValues(rawBytes)\n\t  }\n\t  // phantomjs doesn't like a buffer being passed here\n\t  var bytes = new Buffer(rawBytes.buffer)\n\n\t  if (typeof cb === 'function') {\n\t    return process.nextTick(function () {\n\t      cb(null, bytes)\n\t    })\n\t  }\n\n\t  return bytes\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(1).Buffer, __webpack_require__(8)))\n\n/***/ },\n/* 71 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tvar formatRegExp = /%[sdj%]/g;\n\texports.format = function(f) {\n\t  if (!isString(f)) {\n\t    var objects = [];\n\t    for (var i = 0; i < arguments.length; i++) {\n\t      objects.push(inspect(arguments[i]));\n\t    }\n\t    return objects.join(' ');\n\t  }\n\n\t  var i = 1;\n\t  var args = arguments;\n\t  var len = args.length;\n\t  var str = String(f).replace(formatRegExp, function(x) {\n\t    if (x === '%%') return '%';\n\t    if (i >= len) return x;\n\t    switch (x) {\n\t      case '%s': return String(args[i++]);\n\t      case '%d': return Number(args[i++]);\n\t      case '%j':\n\t        try {\n\t          return JSON.stringify(args[i++]);\n\t        } catch (_) {\n\t          return '[Circular]';\n\t        }\n\t      default:\n\t        return x;\n\t    }\n\t  });\n\t  for (var x = args[i]; i < len; x = args[++i]) {\n\t    if (isNull(x) || !isObject(x)) {\n\t      str += ' ' + x;\n\t    } else {\n\t      str += ' ' + inspect(x);\n\t    }\n\t  }\n\t  return str;\n\t};\n\n\n\t// Mark that a method should not be used.\n\t// Returns a modified function which warns once by default.\n\t// If --no-deprecation is set, then it is a no-op.\n\texports.deprecate = function(fn, msg) {\n\t  // Allow for deprecating things in the process of starting up.\n\t  if (isUndefined(global.process)) {\n\t    return function() {\n\t      return exports.deprecate(fn, msg).apply(this, arguments);\n\t    };\n\t  }\n\n\t  if (process.noDeprecation === true) {\n\t    return fn;\n\t  }\n\n\t  var warned = false;\n\t  function deprecated() {\n\t    if (!warned) {\n\t      if (process.throwDeprecation) {\n\t        throw new Error(msg);\n\t      } else if (process.traceDeprecation) {\n\t        console.trace(msg);\n\t      } else {\n\t        console.error(msg);\n\t      }\n\t      warned = true;\n\t    }\n\t    return fn.apply(this, arguments);\n\t  }\n\n\t  return deprecated;\n\t};\n\n\n\tvar debugs = {};\n\tvar debugEnviron;\n\texports.debuglog = function(set) {\n\t  if (isUndefined(debugEnviron))\n\t    debugEnviron = process.env.NODE_DEBUG || '';\n\t  set = set.toUpperCase();\n\t  if (!debugs[set]) {\n\t    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n\t      var pid = process.pid;\n\t      debugs[set] = function() {\n\t        var msg = exports.format.apply(exports, arguments);\n\t        console.error('%s %d: %s', set, pid, msg);\n\t      };\n\t    } else {\n\t      debugs[set] = function() {};\n\t    }\n\t  }\n\t  return debugs[set];\n\t};\n\n\n\t/**\n\t * Echos the value of a value. Trys to print the value out\n\t * in the best way possible given the different types.\n\t *\n\t * @param {Object} obj The object to print out.\n\t * @param {Object} opts Optional options object that alters the output.\n\t */\n\t/* legacy: obj, showHidden, depth, colors*/\n\tfunction inspect(obj, opts) {\n\t  // default options\n\t  var ctx = {\n\t    seen: [],\n\t    stylize: stylizeNoColor\n\t  };\n\t  // legacy...\n\t  if (arguments.length >= 3) ctx.depth = arguments[2];\n\t  if (arguments.length >= 4) ctx.colors = arguments[3];\n\t  if (isBoolean(opts)) {\n\t    // legacy...\n\t    ctx.showHidden = opts;\n\t  } else if (opts) {\n\t    // got an \"options\" object\n\t    exports._extend(ctx, opts);\n\t  }\n\t  // set default options\n\t  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n\t  if (isUndefined(ctx.depth)) ctx.depth = 2;\n\t  if (isUndefined(ctx.colors)) ctx.colors = false;\n\t  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n\t  if (ctx.colors) ctx.stylize = stylizeWithColor;\n\t  return formatValue(ctx, obj, ctx.depth);\n\t}\n\texports.inspect = inspect;\n\n\n\t// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n\tinspect.colors = {\n\t  'bold' : [1, 22],\n\t  'italic' : [3, 23],\n\t  'underline' : [4, 24],\n\t  'inverse' : [7, 27],\n\t  'white' : [37, 39],\n\t  'grey' : [90, 39],\n\t  'black' : [30, 39],\n\t  'blue' : [34, 39],\n\t  'cyan' : [36, 39],\n\t  'green' : [32, 39],\n\t  'magenta' : [35, 39],\n\t  'red' : [31, 39],\n\t  'yellow' : [33, 39]\n\t};\n\n\t// Don't use 'blue' not visible on cmd.exe\n\tinspect.styles = {\n\t  'special': 'cyan',\n\t  'number': 'yellow',\n\t  'boolean': 'yellow',\n\t  'undefined': 'grey',\n\t  'null': 'bold',\n\t  'string': 'green',\n\t  'date': 'magenta',\n\t  // \"name\": intentionally not styling\n\t  'regexp': 'red'\n\t};\n\n\n\tfunction stylizeWithColor(str, styleType) {\n\t  var style = inspect.styles[styleType];\n\n\t  if (style) {\n\t    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n\t           '\\u001b[' + inspect.colors[style][1] + 'm';\n\t  } else {\n\t    return str;\n\t  }\n\t}\n\n\n\tfunction stylizeNoColor(str, styleType) {\n\t  return str;\n\t}\n\n\n\tfunction arrayToHash(array) {\n\t  var hash = {};\n\n\t  array.forEach(function(val, idx) {\n\t    hash[val] = true;\n\t  });\n\n\t  return hash;\n\t}\n\n\n\tfunction formatValue(ctx, value, recurseTimes) {\n\t  // Provide a hook for user-specified inspect functions.\n\t  // Check that value is an object with an inspect function on it\n\t  if (ctx.customInspect &&\n\t      value &&\n\t      isFunction(value.inspect) &&\n\t      // Filter out the util module, it's inspect function is special\n\t      value.inspect !== exports.inspect &&\n\t      // Also filter out any prototype objects using the circular check.\n\t      !(value.constructor && value.constructor.prototype === value)) {\n\t    var ret = value.inspect(recurseTimes, ctx);\n\t    if (!isString(ret)) {\n\t      ret = formatValue(ctx, ret, recurseTimes);\n\t    }\n\t    return ret;\n\t  }\n\n\t  // Primitive types cannot have properties\n\t  var primitive = formatPrimitive(ctx, value);\n\t  if (primitive) {\n\t    return primitive;\n\t  }\n\n\t  // Look up the keys of the object.\n\t  var keys = Object.keys(value);\n\t  var visibleKeys = arrayToHash(keys);\n\n\t  if (ctx.showHidden) {\n\t    keys = Object.getOwnPropertyNames(value);\n\t  }\n\n\t  // IE doesn't make error fields non-enumerable\n\t  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n\t  if (isError(value)\n\t      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n\t    return formatError(value);\n\t  }\n\n\t  // Some type of object without properties can be shortcutted.\n\t  if (keys.length === 0) {\n\t    if (isFunction(value)) {\n\t      var name = value.name ? ': ' + value.name : '';\n\t      return ctx.stylize('[Function' + name + ']', 'special');\n\t    }\n\t    if (isRegExp(value)) {\n\t      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n\t    }\n\t    if (isDate(value)) {\n\t      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n\t    }\n\t    if (isError(value)) {\n\t      return formatError(value);\n\t    }\n\t  }\n\n\t  var base = '', array = false, braces = ['{', '}'];\n\n\t  // Make Array say that they are Array\n\t  if (isArray(value)) {\n\t    array = true;\n\t    braces = ['[', ']'];\n\t  }\n\n\t  // Make functions say that they are functions\n\t  if (isFunction(value)) {\n\t    var n = value.name ? ': ' + value.name : '';\n\t    base = ' [Function' + n + ']';\n\t  }\n\n\t  // Make RegExps say that they are RegExps\n\t  if (isRegExp(value)) {\n\t    base = ' ' + RegExp.prototype.toString.call(value);\n\t  }\n\n\t  // Make dates with properties first say the date\n\t  if (isDate(value)) {\n\t    base = ' ' + Date.prototype.toUTCString.call(value);\n\t  }\n\n\t  // Make error with message first say the error\n\t  if (isError(value)) {\n\t    base = ' ' + formatError(value);\n\t  }\n\n\t  if (keys.length === 0 && (!array || value.length == 0)) {\n\t    return braces[0] + base + braces[1];\n\t  }\n\n\t  if (recurseTimes < 0) {\n\t    if (isRegExp(value)) {\n\t      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n\t    } else {\n\t      return ctx.stylize('[Object]', 'special');\n\t    }\n\t  }\n\n\t  ctx.seen.push(value);\n\n\t  var output;\n\t  if (array) {\n\t    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n\t  } else {\n\t    output = keys.map(function(key) {\n\t      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n\t    });\n\t  }\n\n\t  ctx.seen.pop();\n\n\t  return reduceToSingleString(output, base, braces);\n\t}\n\n\n\tfunction formatPrimitive(ctx, value) {\n\t  if (isUndefined(value))\n\t    return ctx.stylize('undefined', 'undefined');\n\t  if (isString(value)) {\n\t    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n\t                                             .replace(/'/g, \"\\\\'\")\n\t                                             .replace(/\\\\\"/g, '\"') + '\\'';\n\t    return ctx.stylize(simple, 'string');\n\t  }\n\t  if (isNumber(value))\n\t    return ctx.stylize('' + value, 'number');\n\t  if (isBoolean(value))\n\t    return ctx.stylize('' + value, 'boolean');\n\t  // For some reason typeof null is \"object\", so special case here.\n\t  if (isNull(value))\n\t    return ctx.stylize('null', 'null');\n\t}\n\n\n\tfunction formatError(value) {\n\t  return '[' + Error.prototype.toString.call(value) + ']';\n\t}\n\n\n\tfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n\t  var output = [];\n\t  for (var i = 0, l = value.length; i < l; ++i) {\n\t    if (hasOwnProperty(value, String(i))) {\n\t      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n\t          String(i), true));\n\t    } else {\n\t      output.push('');\n\t    }\n\t  }\n\t  keys.forEach(function(key) {\n\t    if (!key.match(/^\\d+$/)) {\n\t      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n\t          key, true));\n\t    }\n\t  });\n\t  return output;\n\t}\n\n\n\tfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n\t  var name, str, desc;\n\t  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n\t  if (desc.get) {\n\t    if (desc.set) {\n\t      str = ctx.stylize('[Getter/Setter]', 'special');\n\t    } else {\n\t      str = ctx.stylize('[Getter]', 'special');\n\t    }\n\t  } else {\n\t    if (desc.set) {\n\t      str = ctx.stylize('[Setter]', 'special');\n\t    }\n\t  }\n\t  if (!hasOwnProperty(visibleKeys, key)) {\n\t    name = '[' + key + ']';\n\t  }\n\t  if (!str) {\n\t    if (ctx.seen.indexOf(desc.value) < 0) {\n\t      if (isNull(recurseTimes)) {\n\t        str = formatValue(ctx, desc.value, null);\n\t      } else {\n\t        str = formatValue(ctx, desc.value, recurseTimes - 1);\n\t      }\n\t      if (str.indexOf('\\n') > -1) {\n\t        if (array) {\n\t          str = str.split('\\n').map(function(line) {\n\t            return '  ' + line;\n\t          }).join('\\n').substr(2);\n\t        } else {\n\t          str = '\\n' + str.split('\\n').map(function(line) {\n\t            return '   ' + line;\n\t          }).join('\\n');\n\t        }\n\t      }\n\t    } else {\n\t      str = ctx.stylize('[Circular]', 'special');\n\t    }\n\t  }\n\t  if (isUndefined(name)) {\n\t    if (array && key.match(/^\\d+$/)) {\n\t      return str;\n\t    }\n\t    name = JSON.stringify('' + key);\n\t    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n\t      name = name.substr(1, name.length - 2);\n\t      name = ctx.stylize(name, 'name');\n\t    } else {\n\t      name = name.replace(/'/g, \"\\\\'\")\n\t                 .replace(/\\\\\"/g, '\"')\n\t                 .replace(/(^\"|\"$)/g, \"'\");\n\t      name = ctx.stylize(name, 'string');\n\t    }\n\t  }\n\n\t  return name + ': ' + str;\n\t}\n\n\n\tfunction reduceToSingleString(output, base, braces) {\n\t  var numLinesEst = 0;\n\t  var length = output.reduce(function(prev, cur) {\n\t    numLinesEst++;\n\t    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n\t    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n\t  }, 0);\n\n\t  if (length > 60) {\n\t    return braces[0] +\n\t           (base === '' ? '' : base + '\\n ') +\n\t           ' ' +\n\t           output.join(',\\n  ') +\n\t           ' ' +\n\t           braces[1];\n\t  }\n\n\t  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n\t}\n\n\n\t// NOTE: These type checking functions intentionally don't use `instanceof`\n\t// because it is fragile and can be easily faked with `Object.create()`.\n\tfunction isArray(ar) {\n\t  return Array.isArray(ar);\n\t}\n\texports.isArray = isArray;\n\n\tfunction isBoolean(arg) {\n\t  return typeof arg === 'boolean';\n\t}\n\texports.isBoolean = isBoolean;\n\n\tfunction isNull(arg) {\n\t  return arg === null;\n\t}\n\texports.isNull = isNull;\n\n\tfunction isNullOrUndefined(arg) {\n\t  return arg == null;\n\t}\n\texports.isNullOrUndefined = isNullOrUndefined;\n\n\tfunction isNumber(arg) {\n\t  return typeof arg === 'number';\n\t}\n\texports.isNumber = isNumber;\n\n\tfunction isString(arg) {\n\t  return typeof arg === 'string';\n\t}\n\texports.isString = isString;\n\n\tfunction isSymbol(arg) {\n\t  return typeof arg === 'symbol';\n\t}\n\texports.isSymbol = isSymbol;\n\n\tfunction isUndefined(arg) {\n\t  return arg === void 0;\n\t}\n\texports.isUndefined = isUndefined;\n\n\tfunction isRegExp(re) {\n\t  return isObject(re) && objectToString(re) === '[object RegExp]';\n\t}\n\texports.isRegExp = isRegExp;\n\n\tfunction isObject(arg) {\n\t  return typeof arg === 'object' && arg !== null;\n\t}\n\texports.isObject = isObject;\n\n\tfunction isDate(d) {\n\t  return isObject(d) && objectToString(d) === '[object Date]';\n\t}\n\texports.isDate = isDate;\n\n\tfunction isError(e) {\n\t  return isObject(e) &&\n\t      (objectToString(e) === '[object Error]' || e instanceof Error);\n\t}\n\texports.isError = isError;\n\n\tfunction isFunction(arg) {\n\t  return typeof arg === 'function';\n\t}\n\texports.isFunction = isFunction;\n\n\tfunction isPrimitive(arg) {\n\t  return arg === null ||\n\t         typeof arg === 'boolean' ||\n\t         typeof arg === 'number' ||\n\t         typeof arg === 'string' ||\n\t         typeof arg === 'symbol' ||  // ES6 symbol\n\t         typeof arg === 'undefined';\n\t}\n\texports.isPrimitive = isPrimitive;\n\n\texports.isBuffer = __webpack_require__(531);\n\n\tfunction objectToString(o) {\n\t  return Object.prototype.toString.call(o);\n\t}\n\n\n\tfunction pad(n) {\n\t  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n\t}\n\n\n\tvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n\t              'Oct', 'Nov', 'Dec'];\n\n\t// 26 Feb 16:19:34\n\tfunction timestamp() {\n\t  var d = new Date();\n\t  var time = [pad(d.getHours()),\n\t              pad(d.getMinutes()),\n\t              pad(d.getSeconds())].join(':');\n\t  return [d.getDate(), months[d.getMonth()], time].join(' ');\n\t}\n\n\n\t// log is just a thin wrapper to console.log that prepends a timestamp\n\texports.log = function() {\n\t  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n\t};\n\n\n\t/**\n\t * Inherit the prototype methods from one constructor into another.\n\t *\n\t * The Function.prototype.inherits from lang.js rewritten as a standalone\n\t * function (not on Function.prototype). NOTE: If this file is to be loaded\n\t * during bootstrapping this function needs to be rewritten using some native\n\t * functions as prototype setup using normal JavaScript does not work as\n\t * expected during bootstrapping (see mirror.js in r114903).\n\t *\n\t * @param {function} ctor Constructor function which needs to inherit the\n\t *     prototype.\n\t * @param {function} superCtor Constructor function to inherit prototype from.\n\t */\n\texports.inherits = __webpack_require__(2);\n\n\texports._extend = function(origin, add) {\n\t  // Don't do anything if add isn't an object\n\t  if (!add || !isObject(add)) return origin;\n\n\t  var keys = Object.keys(add);\n\t  var i = keys.length;\n\t  while (i--) {\n\t    origin[keys[i]] = add[keys[i]];\n\t  }\n\t  return origin;\n\t};\n\n\tfunction hasOwnProperty(obj, prop) {\n\t  return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(8)))\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar asn1 = exports;\n\n\tasn1.bignum = __webpack_require__(11);\n\n\tasn1.define = __webpack_require__(212).define;\n\tasn1.base = __webpack_require__(63);\n\tasn1.constants = __webpack_require__(132);\n\tasn1.decoders = __webpack_require__(216);\n\tasn1.encoders = __webpack_require__(218);\n\n\n/***/ },\n/* 73 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {// based on the aes implimentation in triple sec\n\t// https://github.com/keybase/triplesec\n\n\t// which is in turn based on the one from crypto-js\n\t// https://code.google.com/p/crypto-js/\n\n\tvar uint_max = Math.pow(2, 32)\n\tfunction fixup_uint32 (x) {\n\t  var ret, x_pos\n\t  ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x\n\t  return ret\n\t}\n\tfunction scrub_vec (v) {\n\t  for (var i = 0; i < v.length; v++) {\n\t    v[i] = 0\n\t  }\n\t  return false\n\t}\n\n\tfunction Global () {\n\t  this.SBOX = []\n\t  this.INV_SBOX = []\n\t  this.SUB_MIX = [[], [], [], []]\n\t  this.INV_SUB_MIX = [[], [], [], []]\n\t  this.init()\n\t  this.RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\n\t}\n\n\tGlobal.prototype.init = function () {\n\t  var d, i, sx, t, x, x2, x4, x8, xi, _i\n\t  d = (function () {\n\t    var _i, _results\n\t    _results = []\n\t    for (i = _i = 0; _i < 256; i = ++_i) {\n\t      if (i < 128) {\n\t        _results.push(i << 1)\n\t      } else {\n\t        _results.push((i << 1) ^ 0x11b)\n\t      }\n\t    }\n\t    return _results\n\t  })()\n\t  x = 0\n\t  xi = 0\n\t  for (i = _i = 0; _i < 256; i = ++_i) {\n\t    sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n\t    sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n\t    this.SBOX[x] = sx\n\t    this.INV_SBOX[sx] = x\n\t    x2 = d[x]\n\t    x4 = d[x2]\n\t    x8 = d[x4]\n\t    t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n\t    this.SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n\t    this.SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n\t    this.SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n\t    this.SUB_MIX[3][x] = t\n\t    t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n\t    this.INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n\t    this.INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n\t    this.INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n\t    this.INV_SUB_MIX[3][sx] = t\n\t    if (x === 0) {\n\t      x = xi = 1\n\t    } else {\n\t      x = x2 ^ d[d[d[x8 ^ x2]]]\n\t      xi ^= d[d[xi]]\n\t    }\n\t  }\n\t  return true\n\t}\n\n\tvar G = new Global()\n\n\tAES.blockSize = 4 * 4\n\n\tAES.prototype.blockSize = AES.blockSize\n\n\tAES.keySize = 256 / 8\n\n\tAES.prototype.keySize = AES.keySize\n\n\tfunction bufferToArray (buf) {\n\t  var len = buf.length / 4\n\t  var out = new Array(len)\n\t  var i = -1\n\t  while (++i < len) {\n\t    out[i] = buf.readUInt32BE(i * 4)\n\t  }\n\t  return out\n\t}\n\tfunction AES (key) {\n\t  this._key = bufferToArray(key)\n\t  this._doReset()\n\t}\n\n\tAES.prototype._doReset = function () {\n\t  var invKsRow, keySize, keyWords, ksRow, ksRows, t\n\t  keyWords = this._key\n\t  keySize = keyWords.length\n\t  this._nRounds = keySize + 6\n\t  ksRows = (this._nRounds + 1) * 4\n\t  this._keySchedule = []\n\t  for (ksRow = 0; ksRow < ksRows; ksRow++) {\n\t    this._keySchedule[ksRow] = ksRow < keySize ? keyWords[ksRow] : (t = this._keySchedule[ksRow - 1], (ksRow % keySize) === 0 ? (t = (t << 8) | (t >>> 24), t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff], t ^= G.RCON[(ksRow / keySize) | 0] << 24) : keySize > 6 && ksRow % keySize === 4 ? t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff] : void 0, this._keySchedule[ksRow - keySize] ^ t)\n\t  }\n\t  this._invKeySchedule = []\n\t  for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t    ksRow = ksRows - invKsRow\n\t    t = this._keySchedule[ksRow - (invKsRow % 4 ? 0 : 4)]\n\t    this._invKeySchedule[invKsRow] = invKsRow < 4 || ksRow <= 4 ? t : G.INV_SUB_MIX[0][G.SBOX[t >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[(t >>> 16) & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[(t >>> 8) & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[t & 0xff]]\n\t  }\n\t  return true\n\t}\n\n\tAES.prototype.encryptBlock = function (M) {\n\t  M = bufferToArray(new Buffer(M))\n\t  var out = this._doCryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX)\n\t  var buf = new Buffer(16)\n\t  buf.writeUInt32BE(out[0], 0)\n\t  buf.writeUInt32BE(out[1], 4)\n\t  buf.writeUInt32BE(out[2], 8)\n\t  buf.writeUInt32BE(out[3], 12)\n\t  return buf\n\t}\n\n\tAES.prototype.decryptBlock = function (M) {\n\t  M = bufferToArray(new Buffer(M))\n\t  var temp = [M[3], M[1]]\n\t  M[1] = temp[0]\n\t  M[3] = temp[1]\n\t  var out = this._doCryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX)\n\t  var buf = new Buffer(16)\n\t  buf.writeUInt32BE(out[0], 0)\n\t  buf.writeUInt32BE(out[3], 4)\n\t  buf.writeUInt32BE(out[2], 8)\n\t  buf.writeUInt32BE(out[1], 12)\n\t  return buf\n\t}\n\n\tAES.prototype.scrub = function () {\n\t  scrub_vec(this._keySchedule)\n\t  scrub_vec(this._invKeySchedule)\n\t  scrub_vec(this._key)\n\t}\n\n\tAES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) {\n\t  var ksRow, s0, s1, s2, s3, t0, t1, t2, t3\n\n\t  s0 = M[0] ^ keySchedule[0]\n\t  s1 = M[1] ^ keySchedule[1]\n\t  s2 = M[2] ^ keySchedule[2]\n\t  s3 = M[3] ^ keySchedule[3]\n\t  ksRow = 4\n\t  for (var round = 1; round < this._nRounds; round++) {\n\t    t0 = SUB_MIX[0][s0 >>> 24] ^ SUB_MIX[1][(s1 >>> 16) & 0xff] ^ SUB_MIX[2][(s2 >>> 8) & 0xff] ^ SUB_MIX[3][s3 & 0xff] ^ keySchedule[ksRow++]\n\t    t1 = SUB_MIX[0][s1 >>> 24] ^ SUB_MIX[1][(s2 >>> 16) & 0xff] ^ SUB_MIX[2][(s3 >>> 8) & 0xff] ^ SUB_MIX[3][s0 & 0xff] ^ keySchedule[ksRow++]\n\t    t2 = SUB_MIX[0][s2 >>> 24] ^ SUB_MIX[1][(s3 >>> 16) & 0xff] ^ SUB_MIX[2][(s0 >>> 8) & 0xff] ^ SUB_MIX[3][s1 & 0xff] ^ keySchedule[ksRow++]\n\t    t3 = SUB_MIX[0][s3 >>> 24] ^ SUB_MIX[1][(s0 >>> 16) & 0xff] ^ SUB_MIX[2][(s1 >>> 8) & 0xff] ^ SUB_MIX[3][s2 & 0xff] ^ keySchedule[ksRow++]\n\t    s0 = t0\n\t    s1 = t1\n\t    s2 = t2\n\t    s3 = t3\n\t  }\n\t  t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n\t  t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n\t  t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n\t  t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n\t  return [\n\t    fixup_uint32(t0),\n\t    fixup_uint32(t1),\n\t    fixup_uint32(t2),\n\t    fixup_uint32(t3)\n\t  ]\n\t}\n\n\texports.AES = AES\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\texports['aes-128-ecb'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 0,\n\t  mode: 'ECB',\n\t  type: 'block'\n\t}\n\texports['aes-192-ecb'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 0,\n\t  mode: 'ECB',\n\t  type: 'block'\n\t}\n\texports['aes-256-ecb'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 0,\n\t  mode: 'ECB',\n\t  type: 'block'\n\t}\n\texports['aes-128-cbc'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 16,\n\t  mode: 'CBC',\n\t  type: 'block'\n\t}\n\texports['aes-192-cbc'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 16,\n\t  mode: 'CBC',\n\t  type: 'block'\n\t}\n\texports['aes-256-cbc'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 16,\n\t  mode: 'CBC',\n\t  type: 'block'\n\t}\n\texports['aes128'] = exports['aes-128-cbc']\n\texports['aes192'] = exports['aes-192-cbc']\n\texports['aes256'] = exports['aes-256-cbc']\n\texports['aes-128-cfb'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 16,\n\t  mode: 'CFB',\n\t  type: 'stream'\n\t}\n\texports['aes-192-cfb'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 16,\n\t  mode: 'CFB',\n\t  type: 'stream'\n\t}\n\texports['aes-256-cfb'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 16,\n\t  mode: 'CFB',\n\t  type: 'stream'\n\t}\n\texports['aes-128-cfb8'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 16,\n\t  mode: 'CFB8',\n\t  type: 'stream'\n\t}\n\texports['aes-192-cfb8'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 16,\n\t  mode: 'CFB8',\n\t  type: 'stream'\n\t}\n\texports['aes-256-cfb8'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 16,\n\t  mode: 'CFB8',\n\t  type: 'stream'\n\t}\n\texports['aes-128-cfb1'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 16,\n\t  mode: 'CFB1',\n\t  type: 'stream'\n\t}\n\texports['aes-192-cfb1'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 16,\n\t  mode: 'CFB1',\n\t  type: 'stream'\n\t}\n\texports['aes-256-cfb1'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 16,\n\t  mode: 'CFB1',\n\t  type: 'stream'\n\t}\n\texports['aes-128-ofb'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 16,\n\t  mode: 'OFB',\n\t  type: 'stream'\n\t}\n\texports['aes-192-ofb'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 16,\n\t  mode: 'OFB',\n\t  type: 'stream'\n\t}\n\texports['aes-256-ofb'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 16,\n\t  mode: 'OFB',\n\t  type: 'stream'\n\t}\n\texports['aes-128-ctr'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 16,\n\t  mode: 'CTR',\n\t  type: 'stream'\n\t}\n\texports['aes-192-ctr'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 16,\n\t  mode: 'CTR',\n\t  type: 'stream'\n\t}\n\texports['aes-256-ctr'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 16,\n\t  mode: 'CTR',\n\t  type: 'stream'\n\t}\n\texports['aes-128-gcm'] = {\n\t  cipher: 'AES',\n\t  key: 128,\n\t  iv: 12,\n\t  mode: 'GCM',\n\t  type: 'auth'\n\t}\n\texports['aes-192-gcm'] = {\n\t  cipher: 'AES',\n\t  key: 192,\n\t  iv: 12,\n\t  mode: 'GCM',\n\t  type: 'auth'\n\t}\n\texports['aes-256-gcm'] = {\n\t  cipher: 'AES',\n\t  key: 256,\n\t  iv: 12,\n\t  mode: 'GCM',\n\t  type: 'auth'\n\t}\n\n\n/***/ },\n/* 75 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(65)\n\n\tfunction incr32 (iv) {\n\t  var len = iv.length\n\t  var item\n\t  while (len--) {\n\t    item = iv.readUInt8(len)\n\t    if (item === 255) {\n\t      iv.writeUInt8(0, len)\n\t    } else {\n\t      item++\n\t      iv.writeUInt8(item, len)\n\t      break\n\t    }\n\t  }\n\t}\n\n\tfunction getBlock (self) {\n\t  var out = self._cipher.encryptBlock(self._prev)\n\t  incr32(self._prev)\n\t  return out\n\t}\n\n\texports.encrypt = function (self, chunk) {\n\t  while (self._cache.length < chunk.length) {\n\t    self._cache = Buffer.concat([self._cache, getBlock(self)])\n\t  }\n\t  var pad = self._cache.slice(0, chunk.length)\n\t  self._cache = self._cache.slice(chunk.length)\n\t  return xor(chunk, pad)\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 76 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// false -> Array#indexOf\n\t// true  -> Array#includes\n\tvar toIObject = __webpack_require__(22)\n\t  , toLength  = __webpack_require__(13)\n\t  , toIndex   = __webpack_require__(46);\n\tmodule.exports = function(IS_INCLUDES){\n\t  return function($this, el, fromIndex){\n\t    var O      = toIObject($this)\n\t      , length = toLength(O.length)\n\t      , index  = toIndex(fromIndex, length)\n\t      , value;\n\t    // Array#includes uses SameValueZero equality algorithm\n\t    if(IS_INCLUDES && el != el)while(length > index){\n\t      value = O[index++];\n\t      if(value != value)return true;\n\t    // Array#toIndex ignores holes, Array#includes - not\n\t    } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n\t      if(O[index] === el)return IS_INCLUDES || index || 0;\n\t    } return !IS_INCLUDES && -1;\n\t  };\n\t};\n\n/***/ },\n/* 77 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar global            = __webpack_require__(5)\n\t  , $export           = __webpack_require__(0)\n\t  , redefine          = __webpack_require__(20)\n\t  , redefineAll       = __webpack_require__(54)\n\t  , meta              = __webpack_require__(37)\n\t  , forOf             = __webpack_require__(66)\n\t  , anInstance        = __webpack_require__(40)\n\t  , isObject          = __webpack_require__(6)\n\t  , fails             = __webpack_require__(4)\n\t  , $iterDetect       = __webpack_require__(82)\n\t  , setToStringTag    = __webpack_require__(56)\n\t  , inheritIfRequired = __webpack_require__(101);\n\n\tmodule.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){\n\t  var Base  = global[NAME]\n\t    , C     = Base\n\t    , ADDER = IS_MAP ? 'set' : 'add'\n\t    , proto = C && C.prototype\n\t    , O     = {};\n\t  var fixMethod = function(KEY){\n\t    var fn = proto[KEY];\n\t    redefine(proto, KEY,\n\t      KEY == 'delete' ? function(a){\n\t        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n\t      } : KEY == 'has' ? function has(a){\n\t        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n\t      } : KEY == 'get' ? function get(a){\n\t        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n\t      } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; }\n\t        : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; }\n\t    );\n\t  };\n\t  if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){\n\t    new C().entries().next();\n\t  }))){\n\t    // create collection constructor\n\t    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n\t    redefineAll(C.prototype, methods);\n\t    meta.NEED = true;\n\t  } else {\n\t    var instance             = new C\n\t      // early implementations not supports chaining\n\t      , HASNT_CHAINING       = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance\n\t      // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false\n\t      , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); })\n\t      // most early implementations doesn't supports iterables, most modern - not close it correctly\n\t      , ACCEPT_ITERABLES     = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new\n\t      // for early implementations -0 and +0 not the same\n\t      , BUGGY_ZERO = !IS_WEAK && fails(function(){\n\t        // V8 ~ Chromium 42- fails only with 5+ elements\n\t        var $instance = new C()\n\t          , index     = 5;\n\t        while(index--)$instance[ADDER](index, index);\n\t        return !$instance.has(-0);\n\t      });\n\t    if(!ACCEPT_ITERABLES){ \n\t      C = wrapper(function(target, iterable){\n\t        anInstance(target, C, NAME);\n\t        var that = inheritIfRequired(new Base, target, C);\n\t        if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);\n\t        return that;\n\t      });\n\t      C.prototype = proto;\n\t      proto.constructor = C;\n\t    }\n\t    if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){\n\t      fixMethod('delete');\n\t      fixMethod('has');\n\t      IS_MAP && fixMethod('get');\n\t    }\n\t    if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER);\n\t    // weak collections should not contains .clear method\n\t    if(IS_WEAK && proto.clear)delete proto.clear;\n\t  }\n\n\t  setToStringTag(C, NAME);\n\n\t  O[NAME] = C;\n\t  $export($export.G + $export.W + $export.F * (C != Base), O);\n\n\t  if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);\n\n\t  return C;\n\t};\n\n/***/ },\n/* 78 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar hide     = __webpack_require__(19)\n\t  , redefine = __webpack_require__(20)\n\t  , fails    = __webpack_require__(4)\n\t  , defined  = __webpack_require__(27)\n\t  , wks      = __webpack_require__(7);\n\n\tmodule.exports = function(KEY, length, exec){\n\t  var SYMBOL   = wks(KEY)\n\t    , fns      = exec(defined, SYMBOL, ''[KEY])\n\t    , strfn    = fns[0]\n\t    , rxfn     = fns[1];\n\t  if(fails(function(){\n\t    var O = {};\n\t    O[SYMBOL] = function(){ return 7; };\n\t    return ''[KEY](O) != 7;\n\t  })){\n\t    redefine(String.prototype, KEY, strfn);\n\t    hide(RegExp.prototype, SYMBOL, length == 2\n\t      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n\t      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n\t      ? function(string, arg){ return rxfn.call(string, this, arg); }\n\t      // 21.2.5.6 RegExp.prototype[@@match](string)\n\t      // 21.2.5.9 RegExp.prototype[@@search](string)\n\t      : function(string){ return rxfn.call(string, this); }\n\t    );\n\t  }\n\t};\n\n/***/ },\n/* 79 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 21.2.5.3 get RegExp.prototype.flags\n\tvar anObject = __webpack_require__(3);\n\tmodule.exports = function(){\n\t  var that   = anObject(this)\n\t    , result = '';\n\t  if(that.global)     result += 'g';\n\t  if(that.ignoreCase) result += 'i';\n\t  if(that.multiline)  result += 'm';\n\t  if(that.unicode)    result += 'u';\n\t  if(that.sticky)     result += 'y';\n\t  return result;\n\t};\n\n/***/ },\n/* 80 */\n/***/ function(module, exports) {\n\n\t// fast apply, http://jsperf.lnkit.com/fast-apply/5\n\tmodule.exports = function(fn, args, that){\n\t  var un = that === undefined;\n\t  switch(args.length){\n\t    case 0: return un ? fn()\n\t                      : fn.call(that);\n\t    case 1: return un ? fn(args[0])\n\t                      : fn.call(that, args[0]);\n\t    case 2: return un ? fn(args[0], args[1])\n\t                      : fn.call(that, args[0], args[1]);\n\t    case 3: return un ? fn(args[0], args[1], args[2])\n\t                      : fn.call(that, args[0], args[1], args[2]);\n\t    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n\t                      : fn.call(that, args[0], args[1], args[2], args[3]);\n\t  } return              fn.apply(that, args);\n\t};\n\n/***/ },\n/* 81 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.2.8 IsRegExp(argument)\n\tvar isObject = __webpack_require__(6)\n\t  , cof      = __webpack_require__(26)\n\t  , MATCH    = __webpack_require__(7)('match');\n\tmodule.exports = function(it){\n\t  var isRegExp;\n\t  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n\t};\n\n/***/ },\n/* 82 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ITERATOR     = __webpack_require__(7)('iterator')\n\t  , SAFE_CLOSING = false;\n\n\ttry {\n\t  var riter = [7][ITERATOR]();\n\t  riter['return'] = function(){ SAFE_CLOSING = true; };\n\t  Array.from(riter, function(){ throw 2; });\n\t} catch(e){ /* empty */ }\n\n\tmodule.exports = function(exec, skipClosing){\n\t  if(!skipClosing && !SAFE_CLOSING)return false;\n\t  var safe = false;\n\t  try {\n\t    var arr  = [7]\n\t      , iter = arr[ITERATOR]();\n\t    iter.next = function(){ return {done: safe = true}; };\n\t    arr[ITERATOR] = function(){ return iter; };\n\t    exec(arr);\n\t  } catch(e){ /* empty */ }\n\t  return safe;\n\t};\n\n/***/ },\n/* 83 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Forced replacement prototype accessors methods\r\n\tmodule.exports = __webpack_require__(42)|| !__webpack_require__(4)(function(){\r\n\t  var K = Math.random();\r\n\t  // In FF throws only define methods\r\n\t  __defineSetter__.call(null, K, function(){ /* empty */});\r\n\t  delete __webpack_require__(5)[K];\r\n\t});\n\n/***/ },\n/* 84 */\n/***/ function(module, exports) {\n\n\texports.f = Object.getOwnPropertySymbols;\n\n/***/ },\n/* 85 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Works with __proto__ only. Old v8 can't work with null proto objects.\n\t/* eslint-disable no-proto */\n\tvar isObject = __webpack_require__(6)\n\t  , anObject = __webpack_require__(3);\n\tvar check = function(O, proto){\n\t  anObject(O);\n\t  if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n\t};\n\tmodule.exports = {\n\t  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n\t    function(test, buggy, set){\n\t      try {\n\t        set = __webpack_require__(34)(Function.call, __webpack_require__(23).f(Object.prototype, '__proto__').set, 2);\n\t        set(test, []);\n\t        buggy = !(test instanceof Array);\n\t      } catch(e){ buggy = true; }\n\t      return function setPrototypeOf(O, proto){\n\t        check(O, proto);\n\t        if(buggy)O.__proto__ = proto;\n\t        else set(O, proto);\n\t        return O;\n\t      };\n\t    }({}, false) : undefined),\n\t  check: check\n\t};\n\n/***/ },\n/* 86 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(5)\n\t  , SHARED = '__core-js_shared__'\n\t  , store  = global[SHARED] || (global[SHARED] = {});\n\tmodule.exports = function(key){\n\t  return store[key] || (store[key] = {});\n\t};\n\n/***/ },\n/* 87 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global = __webpack_require__(5)\n\t  , hide   = __webpack_require__(19)\n\t  , uid    = __webpack_require__(47)\n\t  , TYPED  = uid('typed_array')\n\t  , VIEW   = uid('view')\n\t  , ABV    = !!(global.ArrayBuffer && global.DataView)\n\t  , CONSTR = ABV\n\t  , i = 0, l = 9, Typed;\n\n\tvar TypedArrayConstructors = (\n\t  'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n\t).split(',');\n\n\twhile(i < l){\n\t  if(Typed = global[TypedArrayConstructors[i++]]){\n\t    hide(Typed.prototype, TYPED, true);\n\t    hide(Typed.prototype, VIEW, true);\n\t  } else CONSTR = false;\n\t}\n\n\tmodule.exports = {\n\t  ABV:    ABV,\n\t  CONSTR: CONSTR,\n\t  TYPED:  TYPED,\n\t  VIEW:   VIEW\n\t};\n\n/***/ },\n/* 88 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar curve = exports;\n\n\tcurve.base = __webpack_require__(459);\n\tcurve.short = __webpack_require__(462);\n\tcurve.mont = __webpack_require__(461);\n\tcurve.edwards = __webpack_require__(460);\n\n\n/***/ },\n/* 89 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var md5 = __webpack_require__(179)\n\tmodule.exports = EVP_BytesToKey\n\tfunction EVP_BytesToKey (password, salt, keyLen, ivLen) {\n\t  if (!Buffer.isBuffer(password)) {\n\t    password = new Buffer(password, 'binary')\n\t  }\n\t  if (salt && !Buffer.isBuffer(salt)) {\n\t    salt = new Buffer(salt, 'binary')\n\t  }\n\t  keyLen = keyLen / 8\n\t  ivLen = ivLen || 0\n\t  var ki = 0\n\t  var ii = 0\n\t  var key = new Buffer(keyLen)\n\t  var iv = new Buffer(ivLen)\n\t  var addmd = 0\n\t  var md_buf\n\t  var i\n\t  var bufs = []\n\t  while (true) {\n\t    if (addmd++ > 0) {\n\t      bufs.push(md_buf)\n\t    }\n\t    bufs.push(password)\n\t    if (salt) {\n\t      bufs.push(salt)\n\t    }\n\t    md_buf = md5(Buffer.concat(bufs))\n\t    bufs = []\n\t    i = 0\n\t    if (keyLen > 0) {\n\t      while (true) {\n\t        if (keyLen === 0) {\n\t          break\n\t        }\n\t        if (i === md_buf.length) {\n\t          break\n\t        }\n\t        key[ki++] = md_buf[i]\n\t        keyLen--\n\t        i++\n\t      }\n\t    }\n\t    if (ivLen > 0 && i !== md_buf.length) {\n\t      while (true) {\n\t        if (ivLen === 0) {\n\t          break\n\t        }\n\t        if (i === md_buf.length) {\n\t          break\n\t        }\n\t        iv[ii++] = md_buf[i]\n\t        ivLen--\n\t        i++\n\t      }\n\t    }\n\t    if (keyLen === 0 && ivLen === 0) {\n\t      break\n\t    }\n\t  }\n\t  for (i = 0; i < md_buf.length; i++) {\n\t    md_buf[i] = 0\n\t  }\n\t  return {\n\t    key: key,\n\t    iv: iv\n\t  }\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 90 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var asn1 = __webpack_require__(498)\n\tvar aesid = __webpack_require__(489)\n\tvar fixProc = __webpack_require__(499)\n\tvar ciphers = __webpack_require__(93)\n\tvar compat = __webpack_require__(191)\n\tmodule.exports = parseKeys\n\n\tfunction parseKeys (buffer) {\n\t  var password\n\t  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n\t    password = buffer.passphrase\n\t    buffer = buffer.key\n\t  }\n\t  if (typeof buffer === 'string') {\n\t    buffer = new Buffer(buffer)\n\t  }\n\n\t  var stripped = fixProc(buffer, password)\n\n\t  var type = stripped.tag\n\t  var data = stripped.data\n\t  var subtype, ndata\n\t  switch (type) {\n\t    case 'PUBLIC KEY':\n\t      ndata = asn1.PublicKey.decode(data, 'der')\n\t      subtype = ndata.algorithm.algorithm.join('.')\n\t      switch (subtype) {\n\t        case '1.2.840.113549.1.1.1':\n\t          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n\t        case '1.2.840.10045.2.1':\n\t          ndata.subjectPrivateKey = ndata.subjectPublicKey\n\t          return {\n\t            type: 'ec',\n\t            data: ndata\n\t          }\n\t        case '1.2.840.10040.4.1':\n\t          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n\t          return {\n\t            type: 'dsa',\n\t            data: ndata.algorithm.params\n\t          }\n\t        default: throw new Error('unknown key id ' + subtype)\n\t      }\n\t      throw new Error('unknown key type ' + type)\n\t    case 'ENCRYPTED PRIVATE KEY':\n\t      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n\t      data = decrypt(data, password)\n\t      // falls through\n\t    case 'PRIVATE KEY':\n\t      ndata = asn1.PrivateKey.decode(data, 'der')\n\t      subtype = ndata.algorithm.algorithm.join('.')\n\t      switch (subtype) {\n\t        case '1.2.840.113549.1.1.1':\n\t          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n\t        case '1.2.840.10045.2.1':\n\t          return {\n\t            curve: ndata.algorithm.curve,\n\t            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n\t          }\n\t        case '1.2.840.10040.4.1':\n\t          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n\t          return {\n\t            type: 'dsa',\n\t            params: ndata.algorithm.params\n\t          }\n\t        default: throw new Error('unknown key id ' + subtype)\n\t      }\n\t      throw new Error('unknown key type ' + type)\n\t    case 'RSA PUBLIC KEY':\n\t      return asn1.RSAPublicKey.decode(data, 'der')\n\t    case 'RSA PRIVATE KEY':\n\t      return asn1.RSAPrivateKey.decode(data, 'der')\n\t    case 'DSA PRIVATE KEY':\n\t      return {\n\t        type: 'dsa',\n\t        params: asn1.DSAPrivateKey.decode(data, 'der')\n\t      }\n\t    case 'EC PRIVATE KEY':\n\t      data = asn1.ECPrivateKey.decode(data, 'der')\n\t      return {\n\t        curve: data.parameters.value,\n\t        privateKey: data.privateKey\n\t      }\n\t    default: throw new Error('unknown key type ' + type)\n\t  }\n\t}\n\tparseKeys.signature = asn1.signature\n\tfunction decrypt (data, password) {\n\t  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n\t  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n\t  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n\t  var iv = data.algorithm.decrypt.cipher.iv\n\t  var cipherText = data.subjectPrivateKey\n\t  var keylen = parseInt(algo.split('-')[1], 10) / 8\n\t  var key = compat.pbkdf2Sync(password, salt, iters, keylen)\n\t  var cipher = ciphers.createDecipheriv(algo, key, iv)\n\t  var out = []\n\t  out.push(cipher.update(cipherText))\n\t  out.push(cipher.final())\n\t  return Buffer.concat(out)\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 91 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(8).nextTick;\n\tvar apply = Function.prototype.apply;\n\tvar slice = Array.prototype.slice;\n\tvar immediateIds = {};\n\tvar nextImmediateId = 0;\n\n\t// DOM APIs, for completeness\n\n\texports.setTimeout = function() {\n\t  return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n\t};\n\texports.setInterval = function() {\n\t  return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n\t};\n\texports.clearTimeout =\n\texports.clearInterval = function(timeout) { timeout.close(); };\n\n\tfunction Timeout(id, clearFn) {\n\t  this._id = id;\n\t  this._clearFn = clearFn;\n\t}\n\tTimeout.prototype.unref = Timeout.prototype.ref = function() {};\n\tTimeout.prototype.close = function() {\n\t  this._clearFn.call(window, this._id);\n\t};\n\n\t// Does not start the time, just sets up the members needed.\n\texports.enroll = function(item, msecs) {\n\t  clearTimeout(item._idleTimeoutId);\n\t  item._idleTimeout = msecs;\n\t};\n\n\texports.unenroll = function(item) {\n\t  clearTimeout(item._idleTimeoutId);\n\t  item._idleTimeout = -1;\n\t};\n\n\texports._unrefActive = exports.active = function(item) {\n\t  clearTimeout(item._idleTimeoutId);\n\n\t  var msecs = item._idleTimeout;\n\t  if (msecs >= 0) {\n\t    item._idleTimeoutId = setTimeout(function onTimeout() {\n\t      if (item._onTimeout)\n\t        item._onTimeout();\n\t    }, msecs);\n\t  }\n\t};\n\n\t// That's not how node.js implements it but the exposed api is the same.\n\texports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n\t  var id = nextImmediateId++;\n\t  var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n\t  immediateIds[id] = true;\n\n\t  nextTick(function onNextTick() {\n\t    if (immediateIds[id]) {\n\t      // fn.call() is faster so we optimize for the common use-case\n\t      // @see http://jsperf.com/call-apply-segu\n\t      if (args) {\n\t        fn.apply(null, args);\n\t      } else {\n\t        fn.call(null);\n\t      }\n\t      // Prevent ids from leaking\n\t      exports.clearImmediate(id);\n\t    }\n\t  });\n\n\t  return id;\n\t};\n\n\texports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n\t  delete immediateIds[id];\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(91).setImmediate, __webpack_require__(91).clearImmediate))\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: false,\r\n\t\t\t\tget: function() { return module.l; }\r\n\t\t\t});\r\n\t\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: false,\r\n\t\t\t\tget: function() { return module.i; }\r\n\t\t\t});\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ },\n/* 93 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ciphers = __webpack_require__(257)\n\texports.createCipher = exports.Cipher = ciphers.createCipher\n\texports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\n\tvar deciphers = __webpack_require__(256)\n\texports.createDecipher = exports.Decipher = deciphers.createDecipher\n\texports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\n\tvar modes = __webpack_require__(74)\n\tfunction getCiphers () {\n\t  return Object.keys(modes)\n\t}\n\texports.listCiphers = exports.getCiphers = getCiphers\n\n\n/***/ },\n/* 94 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(11);\n\tvar randomBytes = __webpack_require__(70);\n\tmodule.exports = crt;\n\tfunction blind(priv) {\n\t  var r = getr(priv);\n\t  var blinder = r.toRed(bn.mont(priv.modulus))\n\t  .redPow(new bn(priv.publicExponent)).fromRed();\n\t  return {\n\t    blinder: blinder,\n\t    unblinder:r.invm(priv.modulus)\n\t  };\n\t}\n\tfunction crt(msg, priv) {\n\t  var blinds = blind(priv);\n\t  var len = priv.modulus.byteLength();\n\t  var mod = bn.mont(priv.modulus);\n\t  var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n\t  var c1 = blinded.toRed(bn.mont(priv.prime1));\n\t  var c2 = blinded.toRed(bn.mont(priv.prime2));\n\t  var qinv = priv.coefficient;\n\t  var p = priv.prime1;\n\t  var q = priv.prime2;\n\t  var m1 = c1.redPow(priv.exponent1);\n\t  var m2 = c2.redPow(priv.exponent2);\n\t  m1 = m1.fromRed();\n\t  m2 = m2.fromRed();\n\t  var h = m1.isub(m2).imul(qinv).umod(p);\n\t  h.imul(q);\n\t  m2.iadd(h);\n\t  return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n\t}\n\tcrt.getr = getr;\n\tfunction getr(priv) {\n\t  var len = priv.modulus.byteLength();\n\t  var r = new bn(randomBytes(len));\n\t  while (r.cmp(priv.modulus) >=  0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n\t    r = new bn(randomBytes(len));\n\t  }\n\t  return r;\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 95 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n\t'use strict';\n\tvar toObject = __webpack_require__(14)\n\t  , toIndex  = __webpack_require__(46)\n\t  , toLength = __webpack_require__(13);\n\tmodule.exports = function fill(value /*, start = 0, end = @length */){\n\t  var O      = toObject(this)\n\t    , length = toLength(O.length)\n\t    , aLen   = arguments.length\n\t    , index  = toIndex(aLen > 1 ? arguments[1] : undefined, length)\n\t    , end    = aLen > 2 ? arguments[2] : undefined\n\t    , endPos = end === undefined ? length : toIndex(end, length);\n\t  while(endPos > index)O[index++] = value;\n\t  return O;\n\t};\n\n/***/ },\n/* 96 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $defineProperty = __webpack_require__(10)\r\n\t  , createDesc      = __webpack_require__(38);\r\n\r\n\tmodule.exports = function(object, index, value){\r\n\t  if(index in object)$defineProperty.f(object, index, createDesc(0, value));\r\n\t  else object[index] = value;\r\n\t};\n\n/***/ },\n/* 97 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(6)\n\t  , document = __webpack_require__(5).document\n\t  // in old IE typeof document.createElement is 'object'\n\t  , is = isObject(document) && isObject(document.createElement);\n\tmodule.exports = function(it){\n\t  return is ? document.createElement(it) : {};\n\t};\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\t// IE 8- don't enum bug keys\r\n\tmodule.exports = (\r\n\t  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\r\n\t).split(',');\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar MATCH = __webpack_require__(7)('match');\n\tmodule.exports = function(KEY){\n\t  var re = /./;\n\t  try {\n\t    '/./'[KEY](re);\n\t  } catch(e){\n\t    try {\n\t      re[MATCH] = false;\n\t      return !'/./'[KEY](re);\n\t    } catch(f){ /* empty */ }\n\t  } return true;\n\t};\n\n/***/ },\n/* 100 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(5).document && document.documentElement;\n\n/***/ },\n/* 101 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject       = __webpack_require__(6)\r\n\t  , setPrototypeOf = __webpack_require__(85).set;\r\n\tmodule.exports = function(that, target, C){\r\n\t  var P, S = target.constructor;\r\n\t  if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){\r\n\t    setPrototypeOf(that, P);\r\n\t  } return that;\r\n\t};\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// check on default Array iterator\n\tvar Iterators  = __webpack_require__(41)\n\t  , ITERATOR   = __webpack_require__(7)('iterator')\n\t  , ArrayProto = Array.prototype;\n\n\tmodule.exports = function(it){\n\t  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n\t};\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.2.2 IsArray(argument)\n\tvar cof = __webpack_require__(26);\n\tmodule.exports = Array.isArray || function isArray(arg){\n\t  return cof(arg) == 'Array';\n\t};\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.3 Number.isInteger(number)\n\tvar isObject = __webpack_require__(6)\n\t  , floor    = Math.floor;\n\tmodule.exports = function isInteger(it){\n\t  return !isObject(it) && isFinite(it) && floor(it) === it;\n\t};\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar create         = __webpack_require__(43)\n\t  , descriptor     = __webpack_require__(38)\n\t  , setToStringTag = __webpack_require__(56)\n\t  , IteratorPrototype = {};\n\n\t// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\t__webpack_require__(19)(IteratorPrototype, __webpack_require__(7)('iterator'), function(){ return this; });\n\n\tmodule.exports = function(Constructor, NAME, next){\n\t  Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n\t  setToStringTag(Constructor, NAME + ' Iterator');\n\t};\n\n/***/ },\n/* 106 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar LIBRARY        = __webpack_require__(42)\n\t  , $export        = __webpack_require__(0)\n\t  , redefine       = __webpack_require__(20)\n\t  , hide           = __webpack_require__(19)\n\t  , has            = __webpack_require__(16)\n\t  , Iterators      = __webpack_require__(41)\n\t  , $iterCreate    = __webpack_require__(105)\n\t  , setToStringTag = __webpack_require__(56)\n\t  , getPrototypeOf = __webpack_require__(24)\n\t  , ITERATOR       = __webpack_require__(7)('iterator')\n\t  , BUGGY          = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n\t  , FF_ITERATOR    = '@@iterator'\n\t  , KEYS           = 'keys'\n\t  , VALUES         = 'values';\n\n\tvar returnThis = function(){ return this; };\n\n\tmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n\t  $iterCreate(Constructor, NAME, next);\n\t  var getMethod = function(kind){\n\t    if(!BUGGY && kind in proto)return proto[kind];\n\t    switch(kind){\n\t      case KEYS: return function keys(){ return new Constructor(this, kind); };\n\t      case VALUES: return function values(){ return new Constructor(this, kind); };\n\t    } return function entries(){ return new Constructor(this, kind); };\n\t  };\n\t  var TAG        = NAME + ' Iterator'\n\t    , DEF_VALUES = DEFAULT == VALUES\n\t    , VALUES_BUG = false\n\t    , proto      = Base.prototype\n\t    , $native    = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n\t    , $default   = $native || getMethod(DEFAULT)\n\t    , $entries   = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n\t    , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n\t    , methods, key, IteratorPrototype;\n\t  // Fix native\n\t  if($anyNative){\n\t    IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n\t    if(IteratorPrototype !== Object.prototype){\n\t      // Set @@toStringTag to native iterators\n\t      setToStringTag(IteratorPrototype, TAG, true);\n\t      // fix for some old engines\n\t      if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n\t    }\n\t  }\n\t  // fix Array#{values, @@iterator}.name in V8 / FF\n\t  if(DEF_VALUES && $native && $native.name !== VALUES){\n\t    VALUES_BUG = true;\n\t    $default = function values(){ return $native.call(this); };\n\t  }\n\t  // Define iterator\n\t  if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n\t    hide(proto, ITERATOR, $default);\n\t  }\n\t  // Plug for library\n\t  Iterators[NAME] = $default;\n\t  Iterators[TAG]  = returnThis;\n\t  if(DEFAULT){\n\t    methods = {\n\t      values:  DEF_VALUES ? $default : getMethod(VALUES),\n\t      keys:    IS_SET     ? $default : getMethod(KEYS),\n\t      entries: $entries\n\t    };\n\t    if(FORCED)for(key in methods){\n\t      if(!(key in proto))redefine(proto, key, methods[key]);\n\t    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n\t  }\n\t  return methods;\n\t};\n\n/***/ },\n/* 107 */\n/***/ function(module, exports) {\n\n\t// 20.2.2.14 Math.expm1(x)\n\tvar $expm1 = Math.expm1;\n\tmodule.exports = (!$expm1\n\t  // Old FF bug\n\t  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n\t  // Tor Browser bug\n\t  || $expm1(-2e-17) != -2e-17\n\t) ? function expm1(x){\n\t  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n\t} : $expm1;\n\n/***/ },\n/* 108 */\n/***/ function(module, exports) {\n\n\t// 20.2.2.28 Math.sign(x)\n\tmodule.exports = Math.sign || function sign(x){\n\t  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n\t};\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar shared = __webpack_require__(86)('keys')\r\n\t  , uid    = __webpack_require__(47);\r\n\tmodule.exports = function(key){\r\n\t  return shared[key] || (shared[key] = uid(key));\r\n\t};\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.3.20 SpeciesConstructor(O, defaultConstructor)\n\tvar anObject  = __webpack_require__(3)\n\t  , aFunction = __webpack_require__(25)\n\t  , SPECIES   = __webpack_require__(7)('species');\n\tmodule.exports = function(O, D){\n\t  var C = anObject(O).constructor, S;\n\t  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n\t};\n\n/***/ },\n/* 111 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toInteger = __webpack_require__(39)\n\t  , defined   = __webpack_require__(27);\n\t// true  -> String#at\n\t// false -> String#codePointAt\n\tmodule.exports = function(TO_STRING){\n\t  return function(that, pos){\n\t    var s = String(defined(that))\n\t      , i = toInteger(pos)\n\t      , l = s.length\n\t      , a, b;\n\t    if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n\t    a = s.charCodeAt(i);\n\t    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t      ? TO_STRING ? s.charAt(i) : a\n\t      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t  };\n\t};\n\n/***/ },\n/* 112 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// helper for String#{startsWith, endsWith, includes}\n\tvar isRegExp = __webpack_require__(81)\n\t  , defined  = __webpack_require__(27);\n\n\tmodule.exports = function(that, searchString, NAME){\n\t  if(isRegExp(searchString))throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n\t  return String(defined(that));\n\t};\n\n/***/ },\n/* 113 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar toInteger = __webpack_require__(39)\n\t  , defined   = __webpack_require__(27);\n\n\tmodule.exports = function repeat(count){\n\t  var str = String(defined(this))\n\t    , res = ''\n\t    , n   = toInteger(count);\n\t  if(n < 0 || n == Infinity)throw RangeError(\"Count can't be negative\");\n\t  for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;\n\t  return res;\n\t};\n\n/***/ },\n/* 114 */\n/***/ function(module, exports) {\n\n\tmodule.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\r\n\t  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n/***/ },\n/* 115 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ctx                = __webpack_require__(34)\n\t  , invoke             = __webpack_require__(80)\n\t  , html               = __webpack_require__(100)\n\t  , cel                = __webpack_require__(97)\n\t  , global             = __webpack_require__(5)\n\t  , process            = global.process\n\t  , setTask            = global.setImmediate\n\t  , clearTask          = global.clearImmediate\n\t  , MessageChannel     = global.MessageChannel\n\t  , counter            = 0\n\t  , queue              = {}\n\t  , ONREADYSTATECHANGE = 'onreadystatechange'\n\t  , defer, channel, port;\n\tvar run = function(){\n\t  var id = +this;\n\t  if(queue.hasOwnProperty(id)){\n\t    var fn = queue[id];\n\t    delete queue[id];\n\t    fn();\n\t  }\n\t};\n\tvar listener = function(event){\n\t  run.call(event.data);\n\t};\n\t// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\n\tif(!setTask || !clearTask){\n\t  setTask = function setImmediate(fn){\n\t    var args = [], i = 1;\n\t    while(arguments.length > i)args.push(arguments[i++]);\n\t    queue[++counter] = function(){\n\t      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n\t    };\n\t    defer(counter);\n\t    return counter;\n\t  };\n\t  clearTask = function clearImmediate(id){\n\t    delete queue[id];\n\t  };\n\t  // Node.js 0.8-\n\t  if(__webpack_require__(26)(process) == 'process'){\n\t    defer = function(id){\n\t      process.nextTick(ctx(run, id, 1));\n\t    };\n\t  // Browsers with MessageChannel, includes WebWorkers\n\t  } else if(MessageChannel){\n\t    channel = new MessageChannel;\n\t    port    = channel.port2;\n\t    channel.port1.onmessage = listener;\n\t    defer = ctx(port.postMessage, port, 1);\n\t  // Browsers with postMessage, skip WebWorkers\n\t  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n\t  } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){\n\t    defer = function(id){\n\t      global.postMessage(id + '', '*');\n\t    };\n\t    global.addEventListener('message', listener, false);\n\t  // IE8-\n\t  } else if(ONREADYSTATECHANGE in cel('script')){\n\t    defer = function(id){\n\t      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){\n\t        html.removeChild(this);\n\t        run.call(id);\n\t      };\n\t    };\n\t  // Rest old browsers\n\t  } else {\n\t    defer = function(id){\n\t      setTimeout(ctx(run, id, 1), 0);\n\t    };\n\t  }\n\t}\n\tmodule.exports = {\n\t  set:   setTask,\n\t  clear: clearTask\n\t};\n\n/***/ },\n/* 116 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar global         = __webpack_require__(5)\n\t  , DESCRIPTORS    = __webpack_require__(9)\n\t  , LIBRARY        = __webpack_require__(42)\n\t  , $typed         = __webpack_require__(87)\n\t  , hide           = __webpack_require__(19)\n\t  , redefineAll    = __webpack_require__(54)\n\t  , fails          = __webpack_require__(4)\n\t  , anInstance     = __webpack_require__(40)\n\t  , toInteger      = __webpack_require__(39)\n\t  , toLength       = __webpack_require__(13)\n\t  , gOPN           = __webpack_require__(44).f\n\t  , dP             = __webpack_require__(10).f\n\t  , arrayFill      = __webpack_require__(95)\n\t  , setToStringTag = __webpack_require__(56)\n\t  , ARRAY_BUFFER   = 'ArrayBuffer'\n\t  , DATA_VIEW      = 'DataView'\n\t  , PROTOTYPE      = 'prototype'\n\t  , WRONG_LENGTH   = 'Wrong length!'\n\t  , WRONG_INDEX    = 'Wrong index!'\n\t  , $ArrayBuffer   = global[ARRAY_BUFFER]\n\t  , $DataView      = global[DATA_VIEW]\n\t  , Math           = global.Math\n\t  , parseInt       = global.parseInt\n\t  , RangeError     = global.RangeError\n\t  , Infinity       = global.Infinity\n\t  , BaseBuffer     = $ArrayBuffer\n\t  , abs            = Math.abs\n\t  , pow            = Math.pow\n\t  , min            = Math.min\n\t  , floor          = Math.floor\n\t  , log            = Math.log\n\t  , LN2            = Math.LN2\n\t  , BUFFER         = 'buffer'\n\t  , BYTE_LENGTH    = 'byteLength'\n\t  , BYTE_OFFSET    = 'byteOffset'\n\t  , $BUFFER        = DESCRIPTORS ? '_b' : BUFFER\n\t  , $LENGTH        = DESCRIPTORS ? '_l' : BYTE_LENGTH\n\t  , $OFFSET        = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n\t// IEEE754 conversions based on https://github.com/feross/ieee754\n\tvar packIEEE754 = function(value, mLen, nBytes){\n\t  var buffer = Array(nBytes)\n\t    , eLen   = nBytes * 8 - mLen - 1\n\t    , eMax   = (1 << eLen) - 1\n\t    , eBias  = eMax >> 1\n\t    , rt     = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0\n\t    , i      = 0\n\t    , s      = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0\n\t    , e, m, c;\n\t  value = abs(value)\n\t  if(value != value || value === Infinity){\n\t    m = value != value ? 1 : 0;\n\t    e = eMax;\n\t  } else {\n\t    e = floor(log(value) / LN2);\n\t    if(value * (c = pow(2, -e)) < 1){\n\t      e--;\n\t      c *= 2;\n\t    }\n\t    if(e + eBias >= 1){\n\t      value += rt / c;\n\t    } else {\n\t      value += rt * pow(2, 1 - eBias);\n\t    }\n\t    if(value * c >= 2){\n\t      e++;\n\t      c /= 2;\n\t    }\n\t    if(e + eBias >= eMax){\n\t      m = 0;\n\t      e = eMax;\n\t    } else if(e + eBias >= 1){\n\t      m = (value * c - 1) * pow(2, mLen);\n\t      e = e + eBias;\n\t    } else {\n\t      m = value * pow(2, eBias - 1) * pow(2, mLen);\n\t      e = 0;\n\t    }\n\t  }\n\t  for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n\t  e = e << mLen | m;\n\t  eLen += mLen;\n\t  for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n\t  buffer[--i] |= s * 128;\n\t  return buffer;\n\t};\n\tvar unpackIEEE754 = function(buffer, mLen, nBytes){\n\t  var eLen  = nBytes * 8 - mLen - 1\n\t    , eMax  = (1 << eLen) - 1\n\t    , eBias = eMax >> 1\n\t    , nBits = eLen - 7\n\t    , i     = nBytes - 1\n\t    , s     = buffer[i--]\n\t    , e     = s & 127\n\t    , m;\n\t  s >>= 7;\n\t  for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n\t  m = e & (1 << -nBits) - 1;\n\t  e >>= -nBits;\n\t  nBits += mLen;\n\t  for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n\t  if(e === 0){\n\t    e = 1 - eBias;\n\t  } else if(e === eMax){\n\t    return m ? NaN : s ? -Infinity : Infinity;\n\t  } else {\n\t    m = m + pow(2, mLen);\n\t    e = e - eBias;\n\t  } return (s ? -1 : 1) * m * pow(2, e - mLen);\n\t};\n\n\tvar unpackI32 = function(bytes){\n\t  return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n\t};\n\tvar packI8 = function(it){\n\t  return [it & 0xff];\n\t};\n\tvar packI16 = function(it){\n\t  return [it & 0xff, it >> 8 & 0xff];\n\t};\n\tvar packI32 = function(it){\n\t  return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n\t};\n\tvar packF64 = function(it){\n\t  return packIEEE754(it, 52, 8);\n\t};\n\tvar packF32 = function(it){\n\t  return packIEEE754(it, 23, 4);\n\t};\n\n\tvar addGetter = function(C, key, internal){\n\t  dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }});\n\t};\n\n\tvar get = function(view, bytes, index, isLittleEndian){\n\t  var numIndex = +index\n\t    , intIndex = toInteger(numIndex);\n\t  if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);\n\t  var store = view[$BUFFER]._b\n\t    , start = intIndex + view[$OFFSET]\n\t    , pack  = store.slice(start, start + bytes);\n\t  return isLittleEndian ? pack : pack.reverse();\n\t};\n\tvar set = function(view, bytes, index, conversion, value, isLittleEndian){\n\t  var numIndex = +index\n\t    , intIndex = toInteger(numIndex);\n\t  if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);\n\t  var store = view[$BUFFER]._b\n\t    , start = intIndex + view[$OFFSET]\n\t    , pack  = conversion(+value);\n\t  for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n\t};\n\n\tvar validateArrayBufferArguments = function(that, length){\n\t  anInstance(that, $ArrayBuffer, ARRAY_BUFFER);\n\t  var numberLength = +length\n\t    , byteLength   = toLength(numberLength);\n\t  if(numberLength != byteLength)throw RangeError(WRONG_LENGTH);\n\t  return byteLength;\n\t};\n\n\tif(!$typed.ABV){\n\t  $ArrayBuffer = function ArrayBuffer(length){\n\t    var byteLength = validateArrayBufferArguments(this, length);\n\t    this._b       = arrayFill.call(Array(byteLength), 0);\n\t    this[$LENGTH] = byteLength;\n\t  };\n\n\t  $DataView = function DataView(buffer, byteOffset, byteLength){\n\t    anInstance(this, $DataView, DATA_VIEW);\n\t    anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n\t    var bufferLength = buffer[$LENGTH]\n\t      , offset       = toInteger(byteOffset);\n\t    if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!');\n\t    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n\t    if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH);\n\t    this[$BUFFER] = buffer;\n\t    this[$OFFSET] = offset;\n\t    this[$LENGTH] = byteLength;\n\t  };\n\n\t  if(DESCRIPTORS){\n\t    addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n\t    addGetter($DataView, BUFFER, '_b');\n\t    addGetter($DataView, BYTE_LENGTH, '_l');\n\t    addGetter($DataView, BYTE_OFFSET, '_o');\n\t  }\n\n\t  redefineAll($DataView[PROTOTYPE], {\n\t    getInt8: function getInt8(byteOffset){\n\t      return get(this, 1, byteOffset)[0] << 24 >> 24;\n\t    },\n\t    getUint8: function getUint8(byteOffset){\n\t      return get(this, 1, byteOffset)[0];\n\t    },\n\t    getInt16: function getInt16(byteOffset /*, littleEndian */){\n\t      var bytes = get(this, 2, byteOffset, arguments[1]);\n\t      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n\t    },\n\t    getUint16: function getUint16(byteOffset /*, littleEndian */){\n\t      var bytes = get(this, 2, byteOffset, arguments[1]);\n\t      return bytes[1] << 8 | bytes[0];\n\t    },\n\t    getInt32: function getInt32(byteOffset /*, littleEndian */){\n\t      return unpackI32(get(this, 4, byteOffset, arguments[1]));\n\t    },\n\t    getUint32: function getUint32(byteOffset /*, littleEndian */){\n\t      return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n\t    },\n\t    getFloat32: function getFloat32(byteOffset /*, littleEndian */){\n\t      return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n\t    },\n\t    getFloat64: function getFloat64(byteOffset /*, littleEndian */){\n\t      return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n\t    },\n\t    setInt8: function setInt8(byteOffset, value){\n\t      set(this, 1, byteOffset, packI8, value);\n\t    },\n\t    setUint8: function setUint8(byteOffset, value){\n\t      set(this, 1, byteOffset, packI8, value);\n\t    },\n\t    setInt16: function setInt16(byteOffset, value /*, littleEndian */){\n\t      set(this, 2, byteOffset, packI16, value, arguments[2]);\n\t    },\n\t    setUint16: function setUint16(byteOffset, value /*, littleEndian */){\n\t      set(this, 2, byteOffset, packI16, value, arguments[2]);\n\t    },\n\t    setInt32: function setInt32(byteOffset, value /*, littleEndian */){\n\t      set(this, 4, byteOffset, packI32, value, arguments[2]);\n\t    },\n\t    setUint32: function setUint32(byteOffset, value /*, littleEndian */){\n\t      set(this, 4, byteOffset, packI32, value, arguments[2]);\n\t    },\n\t    setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){\n\t      set(this, 4, byteOffset, packF32, value, arguments[2]);\n\t    },\n\t    setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){\n\t      set(this, 8, byteOffset, packF64, value, arguments[2]);\n\t    }\n\t  });\n\t} else {\n\t  if(!fails(function(){\n\t    new $ArrayBuffer;     // eslint-disable-line no-new\n\t  }) || !fails(function(){\n\t    new $ArrayBuffer(.5); // eslint-disable-line no-new\n\t  })){\n\t    $ArrayBuffer = function ArrayBuffer(length){\n\t      return new BaseBuffer(validateArrayBufferArguments(this, length));\n\t    };\n\t    var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n\t    for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){\n\t      if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]);\n\t    };\n\t    if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer;\n\t  }\n\t  // iOS Safari 7.x bug\n\t  var view = new $DataView(new $ArrayBuffer(2))\n\t    , $setInt8 = $DataView[PROTOTYPE].setInt8;\n\t  view.setInt8(0, 2147483648);\n\t  view.setInt8(1, 2147483649);\n\t  if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], {\n\t    setInt8: function setInt8(byteOffset, value){\n\t      $setInt8.call(this, byteOffset, value << 24 >> 24);\n\t    },\n\t    setUint8: function setUint8(byteOffset, value){\n\t      $setInt8.call(this, byteOffset, value << 24 >> 24);\n\t    }\n\t  }, true);\n\t}\n\tsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\n\tsetToStringTag($DataView, DATA_VIEW);\n\thide($DataView[PROTOTYPE], $typed.VIEW, true);\n\texports[ARRAY_BUFFER] = $ArrayBuffer;\n\texports[DATA_VIEW] = $DataView;\n\n/***/ },\n/* 117 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global         = __webpack_require__(5)\r\n\t  , core           = __webpack_require__(33)\r\n\t  , LIBRARY        = __webpack_require__(42)\r\n\t  , wksExt         = __webpack_require__(174)\r\n\t  , defineProperty = __webpack_require__(10).f;\r\n\tmodule.exports = function(name){\r\n\t  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\r\n\t  if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\r\n\t};\n\n/***/ },\n/* 118 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar classof   = __webpack_require__(53)\n\t  , ITERATOR  = __webpack_require__(7)('iterator')\n\t  , Iterators = __webpack_require__(41);\n\tmodule.exports = __webpack_require__(33).getIteratorMethod = function(it){\n\t  if(it != undefined)return it[ITERATOR]\n\t    || it['@@iterator']\n\t    || Iterators[classof(it)];\n\t};\n\n/***/ },\n/* 119 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar addToUnscopables = __webpack_require__(52)\n\t  , step             = __webpack_require__(161)\n\t  , Iterators        = __webpack_require__(41)\n\t  , toIObject        = __webpack_require__(22);\n\n\t// 22.1.3.4 Array.prototype.entries()\n\t// 22.1.3.13 Array.prototype.keys()\n\t// 22.1.3.29 Array.prototype.values()\n\t// 22.1.3.30 Array.prototype[@@iterator]()\n\tmodule.exports = __webpack_require__(106)(Array, 'Array', function(iterated, kind){\n\t  this._t = toIObject(iterated); // target\n\t  this._i = 0;                   // next index\n\t  this._k = kind;                // kind\n\t// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n\t}, function(){\n\t  var O     = this._t\n\t    , kind  = this._k\n\t    , index = this._i++;\n\t  if(!O || index >= O.length){\n\t    this._t = undefined;\n\t    return step(1);\n\t  }\n\t  if(kind == 'keys'  )return step(0, index);\n\t  if(kind == 'values')return step(0, O[index]);\n\t  return step(0, [index, O[index]]);\n\t}, 'values');\n\n\t// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\n\tIterators.Arguments = Iterators.Array;\n\n\taddToUnscopables('keys');\n\taddToUnscopables('values');\n\taddToUnscopables('entries');\n\n/***/ },\n/* 120 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\tvar createHash = __webpack_require__(58);\n\tvar inherits = __webpack_require__(2)\n\n\tvar Transform = __webpack_require__(12).Transform\n\n\tvar ZEROS = new Buffer(128)\n\tZEROS.fill(0)\n\n\tfunction Hmac(alg, key) {\n\t  Transform.call(this)\n\t  alg = alg.toLowerCase()\n\t  if (typeof key === 'string') {\n\t    key = new Buffer(key)\n\t  }\n\n\t  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n\t  this._alg = alg\n\t  this._key = key\n\n\t  if (key.length > blocksize) {\n\t    key = createHash(alg).update(key).digest()\n\n\t  } else if (key.length < blocksize) {\n\t    key = Buffer.concat([key, ZEROS], blocksize)\n\t  }\n\n\t  var ipad = this._ipad = new Buffer(blocksize)\n\t  var opad = this._opad = new Buffer(blocksize)\n\n\t  for (var i = 0; i < blocksize; i++) {\n\t    ipad[i] = key[i] ^ 0x36\n\t    opad[i] = key[i] ^ 0x5C\n\t  }\n\n\t  this._hash = createHash(alg).update(ipad)\n\t}\n\n\tinherits(Hmac, Transform)\n\n\tHmac.prototype.update = function (data, enc) {\n\t  this._hash.update(data, enc)\n\n\t  return this\n\t}\n\n\tHmac.prototype._transform = function (data, _, next) {\n\t  this._hash.update(data)\n\n\t  next()\n\t}\n\n\tHmac.prototype._flush = function (next) {\n\t  this.push(this.digest())\n\n\t  next()\n\t}\n\n\tHmac.prototype.digest = function (enc) {\n\t  var h = this._hash.digest()\n\n\t  return createHash(this._alg).update(this._opad).update(h).digest(enc)\n\t}\n\n\tmodule.exports = function createHmac(alg, key) {\n\t  return new Hmac(alg, key)\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 121 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\texports.utils = __webpack_require__(456);\n\texports.Cipher = __webpack_require__(453);\n\texports.DES = __webpack_require__(454);\n\texports.CBC = __webpack_require__(452);\n\texports.EDE = __webpack_require__(455);\n\n\n/***/ },\n/* 122 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * lodash 4.3.0 (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\tvar baseEach = __webpack_require__(185),\n\t    baseIteratee = __webpack_require__(186);\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar funcTag = '[object Function]',\n\t    genTag = '[object GeneratorFunction]';\n\n\t/**\n\t * A specialized version of `_.map` for arrays without support for iteratee\n\t * shorthands.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\tfunction arrayMap(array, iteratee) {\n\t  var index = -1,\n\t      length = array.length,\n\t      result = Array(length);\n\n\t  while (++index < length) {\n\t    result[index] = iteratee(array[index], index, array);\n\t  }\n\t  return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\n\t/**\n\t * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/**\n\t * The base implementation of `_.map` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\tfunction baseMap(collection, iteratee) {\n\t  var index = -1,\n\t      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n\t  baseEach(collection, function(value, key, collection) {\n\t    result[++index] = iteratee(value, key, collection);\n\t  });\n\t  return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.property` without support for deep paths.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseProperty(key) {\n\t  return function(object) {\n\t    return object == null ? undefined : object[key];\n\t  };\n\t}\n\n\t/**\n\t * Gets the \"length\" property value of `object`.\n\t *\n\t * **Note:** This function is used to avoid a\n\t * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n\t * Safari on at least iOS 8.1-8.3 ARM64.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {*} Returns the \"length\" value.\n\t */\n\tvar getLength = baseProperty('length');\n\n\t/**\n\t * Creates an array of values by running each element in `collection` through\n\t * `iteratee`. The iteratee is invoked with three arguments:\n\t * (value, index|key, collection).\n\t *\n\t * Many lodash methods are guarded to work as iteratees for methods like\n\t * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n\t *\n\t * The guarded methods are:\n\t * `ary`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, `fill`,\n\t * `invert`, `parseInt`, `random`, `range`, `rangeRight`, `slice`, `some`,\n\t * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimEnd`, `trimStart`,\n\t * and `words`\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Collection\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Array|Function|Object|string} [iteratee=_.identity]\n\t *  The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t * @example\n\t *\n\t * function square(n) {\n\t *   return n * n;\n\t * }\n\t *\n\t * _.map([4, 8], square);\n\t * // => [16, 64]\n\t *\n\t * _.map({ 'a': 4, 'b': 8 }, square);\n\t * // => [16, 64] (iteration order is not guaranteed)\n\t *\n\t * var users = [\n\t *   { 'user': 'barney' },\n\t *   { 'user': 'fred' }\n\t * ];\n\t *\n\t * // The `_.property` iteratee shorthand.\n\t * _.map(users, 'user');\n\t * // => ['barney', 'fred']\n\t */\n\tfunction map(collection, iteratee) {\n\t  var func = isArray(collection) ? arrayMap : baseMap;\n\t  return func(collection, baseIteratee(iteratee, 3));\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @type {Function}\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t  return value != null && isLength(getLength(value)) && !isFunction(value);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t  // The use of `Object#toString` avoids issues with the `typeof` operator\n\t  // in Safari 8 which returns 'object' for typed array and weak map constructors,\n\t  // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n\t  var tag = isObject(value) ? objectToString.call(value) : '';\n\t  return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This function is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t  return typeof value == 'number' &&\n\t    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n\t * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t  var type = typeof value;\n\t  return !!value && (type == 'object' || type == 'function');\n\t}\n\n\tmodule.exports = map;\n\n\n/***/ },\n/* 123 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = minimatch\n\tminimatch.Minimatch = Minimatch\n\n\tvar path = { sep: '/' }\n\ttry {\n\t  path = __webpack_require__(59)\n\t} catch (er) {}\n\n\tvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\n\tvar expand = __webpack_require__(255)\n\n\t// any single thing other than /\n\t// don't need to escape / when using new RegExp()\n\tvar qmark = '[^/]'\n\n\t// * => any number of characters\n\tvar star = qmark + '*?'\n\n\t// ** when dots are allowed.  Anything goes, except .. and .\n\t// not (^ or / followed by one or two dots followed by $ or /),\n\t// followed by anything, any number of times.\n\tvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n\t// not a ^ or / followed by a dot,\n\t// followed by anything, any number of times.\n\tvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n\t// characters that need to be escaped in RegExp.\n\tvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n\t// \"abc\" -> { a:true, b:true, c:true }\n\tfunction charSet (s) {\n\t  return s.split('').reduce(function (set, c) {\n\t    set[c] = true\n\t    return set\n\t  }, {})\n\t}\n\n\t// normalizes slashes.\n\tvar slashSplit = /\\/+/\n\n\tminimatch.filter = filter\n\tfunction filter (pattern, options) {\n\t  options = options || {}\n\t  return function (p, i, list) {\n\t    return minimatch(p, pattern, options)\n\t  }\n\t}\n\n\tfunction ext (a, b) {\n\t  a = a || {}\n\t  b = b || {}\n\t  var t = {}\n\t  Object.keys(b).forEach(function (k) {\n\t    t[k] = b[k]\n\t  })\n\t  Object.keys(a).forEach(function (k) {\n\t    t[k] = a[k]\n\t  })\n\t  return t\n\t}\n\n\tminimatch.defaults = function (def) {\n\t  if (!def || !Object.keys(def).length) return minimatch\n\n\t  var orig = minimatch\n\n\t  var m = function minimatch (p, pattern, options) {\n\t    return orig.minimatch(p, pattern, ext(def, options))\n\t  }\n\n\t  m.Minimatch = function Minimatch (pattern, options) {\n\t    return new orig.Minimatch(pattern, ext(def, options))\n\t  }\n\n\t  return m\n\t}\n\n\tMinimatch.defaults = function (def) {\n\t  if (!def || !Object.keys(def).length) return Minimatch\n\t  return minimatch.defaults(def).Minimatch\n\t}\n\n\tfunction minimatch (p, pattern, options) {\n\t  if (typeof pattern !== 'string') {\n\t    throw new TypeError('glob pattern string required')\n\t  }\n\n\t  if (!options) options = {}\n\n\t  // shortcut: comments match nothing.\n\t  if (!options.nocomment && pattern.charAt(0) === '#') {\n\t    return false\n\t  }\n\n\t  // \"\" only matches \"\"\n\t  if (pattern.trim() === '') return p === ''\n\n\t  return new Minimatch(pattern, options).match(p)\n\t}\n\n\tfunction Minimatch (pattern, options) {\n\t  if (!(this instanceof Minimatch)) {\n\t    return new Minimatch(pattern, options)\n\t  }\n\n\t  if (typeof pattern !== 'string') {\n\t    throw new TypeError('glob pattern string required')\n\t  }\n\n\t  if (!options) options = {}\n\t  pattern = pattern.trim()\n\n\t  // windows support: need to use /, not \\\n\t  if (path.sep !== '/') {\n\t    pattern = pattern.split(path.sep).join('/')\n\t  }\n\n\t  this.options = options\n\t  this.set = []\n\t  this.pattern = pattern\n\t  this.regexp = null\n\t  this.negate = false\n\t  this.comment = false\n\t  this.empty = false\n\n\t  // make the set of regexps etc.\n\t  this.make()\n\t}\n\n\tMinimatch.prototype.debug = function () {}\n\n\tMinimatch.prototype.make = make\n\tfunction make () {\n\t  // don't do it more than once.\n\t  if (this._made) return\n\n\t  var pattern = this.pattern\n\t  var options = this.options\n\n\t  // empty patterns and comments match nothing.\n\t  if (!options.nocomment && pattern.charAt(0) === '#') {\n\t    this.comment = true\n\t    return\n\t  }\n\t  if (!pattern) {\n\t    this.empty = true\n\t    return\n\t  }\n\n\t  // step 1: figure out negation, etc.\n\t  this.parseNegate()\n\n\t  // step 2: expand braces\n\t  var set = this.globSet = this.braceExpand()\n\n\t  if (options.debug) this.debug = console.error\n\n\t  this.debug(this.pattern, set)\n\n\t  // step 3: now we have a set, so turn each one into a series of path-portion\n\t  // matching patterns.\n\t  // These will be regexps, except in the case of \"**\", which is\n\t  // set to the GLOBSTAR object for globstar behavior,\n\t  // and will not contain any / characters\n\t  set = this.globParts = set.map(function (s) {\n\t    return s.split(slashSplit)\n\t  })\n\n\t  this.debug(this.pattern, set)\n\n\t  // glob --> regexps\n\t  set = set.map(function (s, si, set) {\n\t    return s.map(this.parse, this)\n\t  }, this)\n\n\t  this.debug(this.pattern, set)\n\n\t  // filter out everything that didn't compile properly.\n\t  set = set.filter(function (s) {\n\t    return s.indexOf(false) === -1\n\t  })\n\n\t  this.debug(this.pattern, set)\n\n\t  this.set = set\n\t}\n\n\tMinimatch.prototype.parseNegate = parseNegate\n\tfunction parseNegate () {\n\t  var pattern = this.pattern\n\t  var negate = false\n\t  var options = this.options\n\t  var negateOffset = 0\n\n\t  if (options.nonegate) return\n\n\t  for (var i = 0, l = pattern.length\n\t    ; i < l && pattern.charAt(i) === '!'\n\t    ; i++) {\n\t    negate = !negate\n\t    negateOffset++\n\t  }\n\n\t  if (negateOffset) this.pattern = pattern.substr(negateOffset)\n\t  this.negate = negate\n\t}\n\n\t// Brace expansion:\n\t// a{b,c}d -> abd acd\n\t// a{b,}c -> abc ac\n\t// a{0..3}d -> a0d a1d a2d a3d\n\t// a{b,c{d,e}f}g -> abg acdfg acefg\n\t// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n\t//\n\t// Invalid sets are not expanded.\n\t// a{2..}b -> a{2..}b\n\t// a{b}c -> a{b}c\n\tminimatch.braceExpand = function (pattern, options) {\n\t  return braceExpand(pattern, options)\n\t}\n\n\tMinimatch.prototype.braceExpand = braceExpand\n\n\tfunction braceExpand (pattern, options) {\n\t  if (!options) {\n\t    if (this instanceof Minimatch) {\n\t      options = this.options\n\t    } else {\n\t      options = {}\n\t    }\n\t  }\n\n\t  pattern = typeof pattern === 'undefined'\n\t    ? this.pattern : pattern\n\n\t  if (typeof pattern === 'undefined') {\n\t    throw new Error('undefined pattern')\n\t  }\n\n\t  if (options.nobrace ||\n\t    !pattern.match(/\\{.*\\}/)) {\n\t    // shortcut. no need to expand.\n\t    return [pattern]\n\t  }\n\n\t  return expand(pattern)\n\t}\n\n\t// parse a component of the expanded set.\n\t// At this point, no pattern may contain \"/\" in it\n\t// so we're going to return a 2d array, where each entry is the full\n\t// pattern, split on '/', and then turned into a regular expression.\n\t// A regexp is made at the end which joins each array with an\n\t// escaped /, and another full one which joins each regexp with |.\n\t//\n\t// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n\t// when it is the *only* thing in a path portion.  Otherwise, any series\n\t// of * is equivalent to a single *.  Globstar behavior is enabled by\n\t// default, and can be disabled by setting options.noglobstar.\n\tMinimatch.prototype.parse = parse\n\tvar SUBPARSE = {}\n\tfunction parse (pattern, isSub) {\n\t  var options = this.options\n\n\t  // shortcuts\n\t  if (!options.noglobstar && pattern === '**') return GLOBSTAR\n\t  if (pattern === '') return ''\n\n\t  var re = ''\n\t  var hasMagic = !!options.nocase\n\t  var escaping = false\n\t  // ? => one single character\n\t  var patternListStack = []\n\t  var negativeLists = []\n\t  var plType\n\t  var stateChar\n\t  var inClass = false\n\t  var reClassStart = -1\n\t  var classStart = -1\n\t  // . and .. never match anything that doesn't start with .,\n\t  // even when options.dot is set.\n\t  var patternStart = pattern.charAt(0) === '.' ? '' // anything\n\t  // not (start or / followed by . or .. followed by / or end)\n\t  : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n\t  : '(?!\\\\.)'\n\t  var self = this\n\n\t  function clearStateChar () {\n\t    if (stateChar) {\n\t      // we had some state-tracking character\n\t      // that wasn't consumed by this pass.\n\t      switch (stateChar) {\n\t        case '*':\n\t          re += star\n\t          hasMagic = true\n\t        break\n\t        case '?':\n\t          re += qmark\n\t          hasMagic = true\n\t        break\n\t        default:\n\t          re += '\\\\' + stateChar\n\t        break\n\t      }\n\t      self.debug('clearStateChar %j %j', stateChar, re)\n\t      stateChar = false\n\t    }\n\t  }\n\n\t  for (var i = 0, len = pattern.length, c\n\t    ; (i < len) && (c = pattern.charAt(i))\n\t    ; i++) {\n\t    this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n\t    // skip over any that are escaped.\n\t    if (escaping && reSpecials[c]) {\n\t      re += '\\\\' + c\n\t      escaping = false\n\t      continue\n\t    }\n\n\t    switch (c) {\n\t      case '/':\n\t        // completely not allowed, even escaped.\n\t        // Should already be path-split by now.\n\t        return false\n\n\t      case '\\\\':\n\t        clearStateChar()\n\t        escaping = true\n\t      continue\n\n\t      // the various stateChar values\n\t      // for the \"extglob\" stuff.\n\t      case '?':\n\t      case '*':\n\t      case '+':\n\t      case '@':\n\t      case '!':\n\t        this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n\t        // all of those are literals inside a class, except that\n\t        // the glob [!a] means [^a] in regexp\n\t        if (inClass) {\n\t          this.debug('  in class')\n\t          if (c === '!' && i === classStart + 1) c = '^'\n\t          re += c\n\t          continue\n\t        }\n\n\t        // if we already have a stateChar, then it means\n\t        // that there was something like ** or +? in there.\n\t        // Handle the stateChar, then proceed with this one.\n\t        self.debug('call clearStateChar %j', stateChar)\n\t        clearStateChar()\n\t        stateChar = c\n\t        // if extglob is disabled, then +(asdf|foo) isn't a thing.\n\t        // just clear the statechar *now*, rather than even diving into\n\t        // the patternList stuff.\n\t        if (options.noext) clearStateChar()\n\t      continue\n\n\t      case '(':\n\t        if (inClass) {\n\t          re += '('\n\t          continue\n\t        }\n\n\t        if (!stateChar) {\n\t          re += '\\\\('\n\t          continue\n\t        }\n\n\t        plType = stateChar\n\t        patternListStack.push({\n\t          type: plType,\n\t          start: i - 1,\n\t          reStart: re.length\n\t        })\n\t        // negation is (?:(?!js)[^/]*)\n\t        re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n\t        this.debug('plType %j %j', stateChar, re)\n\t        stateChar = false\n\t      continue\n\n\t      case ')':\n\t        if (inClass || !patternListStack.length) {\n\t          re += '\\\\)'\n\t          continue\n\t        }\n\n\t        clearStateChar()\n\t        hasMagic = true\n\t        re += ')'\n\t        var pl = patternListStack.pop()\n\t        plType = pl.type\n\t        // negation is (?:(?!js)[^/]*)\n\t        // The others are (?:<pattern>)<type>\n\t        switch (plType) {\n\t          case '!':\n\t            negativeLists.push(pl)\n\t            re += ')[^/]*?)'\n\t            pl.reEnd = re.length\n\t            break\n\t          case '?':\n\t          case '+':\n\t          case '*':\n\t            re += plType\n\t            break\n\t          case '@': break // the default anyway\n\t        }\n\t      continue\n\n\t      case '|':\n\t        if (inClass || !patternListStack.length || escaping) {\n\t          re += '\\\\|'\n\t          escaping = false\n\t          continue\n\t        }\n\n\t        clearStateChar()\n\t        re += '|'\n\t      continue\n\n\t      // these are mostly the same in regexp and glob\n\t      case '[':\n\t        // swallow any state-tracking char before the [\n\t        clearStateChar()\n\n\t        if (inClass) {\n\t          re += '\\\\' + c\n\t          continue\n\t        }\n\n\t        inClass = true\n\t        classStart = i\n\t        reClassStart = re.length\n\t        re += c\n\t      continue\n\n\t      case ']':\n\t        //  a right bracket shall lose its special\n\t        //  meaning and represent itself in\n\t        //  a bracket expression if it occurs\n\t        //  first in the list.  -- POSIX.2 2.8.3.2\n\t        if (i === classStart + 1 || !inClass) {\n\t          re += '\\\\' + c\n\t          escaping = false\n\t          continue\n\t        }\n\n\t        // handle the case where we left a class open.\n\t        // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n\t        if (inClass) {\n\t          // split where the last [ was, make sure we don't have\n\t          // an invalid re. if so, re-walk the contents of the\n\t          // would-be class to re-translate any characters that\n\t          // were passed through as-is\n\t          // TODO: It would probably be faster to determine this\n\t          // without a try/catch and a new RegExp, but it's tricky\n\t          // to do safely.  For now, this is safe and works.\n\t          var cs = pattern.substring(classStart + 1, i)\n\t          try {\n\t            RegExp('[' + cs + ']')\n\t          } catch (er) {\n\t            // not a valid class!\n\t            var sp = this.parse(cs, SUBPARSE)\n\t            re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n\t            hasMagic = hasMagic || sp[1]\n\t            inClass = false\n\t            continue\n\t          }\n\t        }\n\n\t        // finish up the class.\n\t        hasMagic = true\n\t        inClass = false\n\t        re += c\n\t      continue\n\n\t      default:\n\t        // swallow any state char that wasn't consumed\n\t        clearStateChar()\n\n\t        if (escaping) {\n\t          // no need\n\t          escaping = false\n\t        } else if (reSpecials[c]\n\t          && !(c === '^' && inClass)) {\n\t          re += '\\\\'\n\t        }\n\n\t        re += c\n\n\t    } // switch\n\t  } // for\n\n\t  // handle the case where we left a class open.\n\t  // \"[abc\" is valid, equivalent to \"\\[abc\"\n\t  if (inClass) {\n\t    // split where the last [ was, and escape it\n\t    // this is a huge pita.  We now have to re-walk\n\t    // the contents of the would-be class to re-translate\n\t    // any characters that were passed through as-is\n\t    cs = pattern.substr(classStart + 1)\n\t    sp = this.parse(cs, SUBPARSE)\n\t    re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n\t    hasMagic = hasMagic || sp[1]\n\t  }\n\n\t  // handle the case where we had a +( thing at the *end*\n\t  // of the pattern.\n\t  // each pattern list stack adds 3 chars, and we need to go through\n\t  // and escape any | chars that were passed through as-is for the regexp.\n\t  // Go through and escape them, taking care not to double-escape any\n\t  // | chars that were already escaped.\n\t  for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n\t    var tail = re.slice(pl.reStart + 3)\n\t    // maybe some even number of \\, then maybe 1 \\, followed by a |\n\t    tail = tail.replace(/((?:\\\\{2})*)(\\\\?)\\|/g, function (_, $1, $2) {\n\t      if (!$2) {\n\t        // the | isn't already escaped, so escape it.\n\t        $2 = '\\\\'\n\t      }\n\n\t      // need to escape all those slashes *again*, without escaping the\n\t      // one that we need for escaping the | character.  As it works out,\n\t      // escaping an even number of slashes can be done by simply repeating\n\t      // it exactly after itself.  That's why this trick works.\n\t      //\n\t      // I am sorry that you have to see this.\n\t      return $1 + $1 + $2 + '|'\n\t    })\n\n\t    this.debug('tail=%j\\n   %s', tail, tail)\n\t    var t = pl.type === '*' ? star\n\t      : pl.type === '?' ? qmark\n\t      : '\\\\' + pl.type\n\n\t    hasMagic = true\n\t    re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n\t  }\n\n\t  // handle trailing things that only matter at the very end.\n\t  clearStateChar()\n\t  if (escaping) {\n\t    // trailing \\\\\n\t    re += '\\\\\\\\'\n\t  }\n\n\t  // only need to apply the nodot start if the re starts with\n\t  // something that could conceivably capture a dot\n\t  var addPatternStart = false\n\t  switch (re.charAt(0)) {\n\t    case '.':\n\t    case '[':\n\t    case '(': addPatternStart = true\n\t  }\n\n\t  // Hack to work around lack of negative lookbehind in JS\n\t  // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n\t  // like 'a.xyz.yz' doesn't match.  So, the first negative\n\t  // lookahead, has to look ALL the way ahead, to the end of\n\t  // the pattern.\n\t  for (var n = negativeLists.length - 1; n > -1; n--) {\n\t    var nl = negativeLists[n]\n\n\t    var nlBefore = re.slice(0, nl.reStart)\n\t    var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n\t    var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n\t    var nlAfter = re.slice(nl.reEnd)\n\n\t    nlLast += nlAfter\n\n\t    // Handle nested stuff like *(*.js|!(*.json)), where open parens\n\t    // mean that we should *not* include the ) in the bit that is considered\n\t    // \"after\" the negated section.\n\t    var openParensBefore = nlBefore.split('(').length - 1\n\t    var cleanAfter = nlAfter\n\t    for (i = 0; i < openParensBefore; i++) {\n\t      cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n\t    }\n\t    nlAfter = cleanAfter\n\n\t    var dollar = ''\n\t    if (nlAfter === '' && isSub !== SUBPARSE) {\n\t      dollar = '$'\n\t    }\n\t    var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n\t    re = newRe\n\t  }\n\n\t  // if the re is not \"\" at this point, then we need to make sure\n\t  // it doesn't match against an empty path part.\n\t  // Otherwise a/* will match a/, which it should not.\n\t  if (re !== '' && hasMagic) {\n\t    re = '(?=.)' + re\n\t  }\n\n\t  if (addPatternStart) {\n\t    re = patternStart + re\n\t  }\n\n\t  // parsing just a piece of a larger pattern.\n\t  if (isSub === SUBPARSE) {\n\t    return [re, hasMagic]\n\t  }\n\n\t  // skip the regexp for non-magical patterns\n\t  // unescape anything in it, though, so that it'll be\n\t  // an exact match against a file etc.\n\t  if (!hasMagic) {\n\t    return globUnescape(pattern)\n\t  }\n\n\t  var flags = options.nocase ? 'i' : ''\n\t  var regExp = new RegExp('^' + re + '$', flags)\n\n\t  regExp._glob = pattern\n\t  regExp._src = re\n\n\t  return regExp\n\t}\n\n\tminimatch.makeRe = function (pattern, options) {\n\t  return new Minimatch(pattern, options || {}).makeRe()\n\t}\n\n\tMinimatch.prototype.makeRe = makeRe\n\tfunction makeRe () {\n\t  if (this.regexp || this.regexp === false) return this.regexp\n\n\t  // at this point, this.set is a 2d array of partial\n\t  // pattern strings, or \"**\".\n\t  //\n\t  // It's better to use .match().  This function shouldn't\n\t  // be used, really, but it's pretty convenient sometimes,\n\t  // when you just want to work with a regex.\n\t  var set = this.set\n\n\t  if (!set.length) {\n\t    this.regexp = false\n\t    return this.regexp\n\t  }\n\t  var options = this.options\n\n\t  var twoStar = options.noglobstar ? star\n\t    : options.dot ? twoStarDot\n\t    : twoStarNoDot\n\t  var flags = options.nocase ? 'i' : ''\n\n\t  var re = set.map(function (pattern) {\n\t    return pattern.map(function (p) {\n\t      return (p === GLOBSTAR) ? twoStar\n\t      : (typeof p === 'string') ? regExpEscape(p)\n\t      : p._src\n\t    }).join('\\\\\\/')\n\t  }).join('|')\n\n\t  // must match entire pattern\n\t  // ending in a * or ** will make it less strict.\n\t  re = '^(?:' + re + ')$'\n\n\t  // can match anything, as long as it's not this.\n\t  if (this.negate) re = '^(?!' + re + ').*$'\n\n\t  try {\n\t    this.regexp = new RegExp(re, flags)\n\t  } catch (ex) {\n\t    this.regexp = false\n\t  }\n\t  return this.regexp\n\t}\n\n\tminimatch.match = function (list, pattern, options) {\n\t  options = options || {}\n\t  var mm = new Minimatch(pattern, options)\n\t  list = list.filter(function (f) {\n\t    return mm.match(f)\n\t  })\n\t  if (mm.options.nonull && !list.length) {\n\t    list.push(pattern)\n\t  }\n\t  return list\n\t}\n\n\tMinimatch.prototype.match = match\n\tfunction match (f, partial) {\n\t  this.debug('match', f, this.pattern)\n\t  // short-circuit in the case of busted things.\n\t  // comments, etc.\n\t  if (this.comment) return false\n\t  if (this.empty) return f === ''\n\n\t  if (f === '/' && partial) return true\n\n\t  var options = this.options\n\n\t  // windows: need to use /, not \\\n\t  if (path.sep !== '/') {\n\t    f = f.split(path.sep).join('/')\n\t  }\n\n\t  // treat the test path as a set of pathparts.\n\t  f = f.split(slashSplit)\n\t  this.debug(this.pattern, 'split', f)\n\n\t  // just ONE of the pattern sets in this.set needs to match\n\t  // in order for it to be valid.  If negating, then just one\n\t  // match means that we have failed.\n\t  // Either way, return on the first hit.\n\n\t  var set = this.set\n\t  this.debug(this.pattern, 'set', set)\n\n\t  // Find the basename of the path by looking for the last non-empty segment\n\t  var filename\n\t  var i\n\t  for (i = f.length - 1; i >= 0; i--) {\n\t    filename = f[i]\n\t    if (filename) break\n\t  }\n\n\t  for (i = 0; i < set.length; i++) {\n\t    var pattern = set[i]\n\t    var file = f\n\t    if (options.matchBase && pattern.length === 1) {\n\t      file = [filename]\n\t    }\n\t    var hit = this.matchOne(file, pattern, partial)\n\t    if (hit) {\n\t      if (options.flipNegate) return true\n\t      return !this.negate\n\t    }\n\t  }\n\n\t  // didn't get any hits.  this is success if it's a negative\n\t  // pattern, failure otherwise.\n\t  if (options.flipNegate) return false\n\t  return this.negate\n\t}\n\n\t// set partial to true to test if, for example,\n\t// \"/a/b\" matches the start of \"/*/b/*/d\"\n\t// Partial means, if you run out of file before you run\n\t// out of pattern, then that's fine, as long as all\n\t// the parts match.\n\tMinimatch.prototype.matchOne = function (file, pattern, partial) {\n\t  var options = this.options\n\n\t  this.debug('matchOne',\n\t    { 'this': this, file: file, pattern: pattern })\n\n\t  this.debug('matchOne', file.length, pattern.length)\n\n\t  for (var fi = 0,\n\t      pi = 0,\n\t      fl = file.length,\n\t      pl = pattern.length\n\t      ; (fi < fl) && (pi < pl)\n\t      ; fi++, pi++) {\n\t    this.debug('matchOne loop')\n\t    var p = pattern[pi]\n\t    var f = file[fi]\n\n\t    this.debug(pattern, p, f)\n\n\t    // should be impossible.\n\t    // some invalid regexp stuff in the set.\n\t    if (p === false) return false\n\n\t    if (p === GLOBSTAR) {\n\t      this.debug('GLOBSTAR', [pattern, p, f])\n\n\t      // \"**\"\n\t      // a/**/b/**/c would match the following:\n\t      // a/b/x/y/z/c\n\t      // a/x/y/z/b/c\n\t      // a/b/x/b/x/c\n\t      // a/b/c\n\t      // To do this, take the rest of the pattern after\n\t      // the **, and see if it would match the file remainder.\n\t      // If so, return success.\n\t      // If not, the ** \"swallows\" a segment, and try again.\n\t      // This is recursively awful.\n\t      //\n\t      // a/**/b/**/c matching a/b/x/y/z/c\n\t      // - a matches a\n\t      // - doublestar\n\t      //   - matchOne(b/x/y/z/c, b/**/c)\n\t      //     - b matches b\n\t      //     - doublestar\n\t      //       - matchOne(x/y/z/c, c) -> no\n\t      //       - matchOne(y/z/c, c) -> no\n\t      //       - matchOne(z/c, c) -> no\n\t      //       - matchOne(c, c) yes, hit\n\t      var fr = fi\n\t      var pr = pi + 1\n\t      if (pr === pl) {\n\t        this.debug('** at the end')\n\t        // a ** at the end will just swallow the rest.\n\t        // We have found a match.\n\t        // however, it will not swallow /.x, unless\n\t        // options.dot is set.\n\t        // . and .. are *never* matched by **, for explosively\n\t        // exponential reasons.\n\t        for (; fi < fl; fi++) {\n\t          if (file[fi] === '.' || file[fi] === '..' ||\n\t            (!options.dot && file[fi].charAt(0) === '.')) return false\n\t        }\n\t        return true\n\t      }\n\n\t      // ok, let's see if we can swallow whatever we can.\n\t      while (fr < fl) {\n\t        var swallowee = file[fr]\n\n\t        this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n\t        // XXX remove this slice.  Just pass the start index.\n\t        if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n\t          this.debug('globstar found match!', fr, fl, swallowee)\n\t          // found a match.\n\t          return true\n\t        } else {\n\t          // can't swallow \".\" or \"..\" ever.\n\t          // can only swallow \".foo\" when explicitly asked.\n\t          if (swallowee === '.' || swallowee === '..' ||\n\t            (!options.dot && swallowee.charAt(0) === '.')) {\n\t            this.debug('dot detected!', file, fr, pattern, pr)\n\t            break\n\t          }\n\n\t          // ** swallows a segment, and continue.\n\t          this.debug('globstar swallow a segment, and continue')\n\t          fr++\n\t        }\n\t      }\n\n\t      // no match was found.\n\t      // However, in partial mode, we can't say this is necessarily over.\n\t      // If there's more *pattern* left, then\n\t      if (partial) {\n\t        // ran out of file\n\t        this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n\t        if (fr === fl) return true\n\t      }\n\t      return false\n\t    }\n\n\t    // something other than **\n\t    // non-magic patterns just have to match exactly\n\t    // patterns with magic have been turned into regexps.\n\t    var hit\n\t    if (typeof p === 'string') {\n\t      if (options.nocase) {\n\t        hit = f.toLowerCase() === p.toLowerCase()\n\t      } else {\n\t        hit = f === p\n\t      }\n\t      this.debug('string match', p, f, hit)\n\t    } else {\n\t      hit = f.match(p)\n\t      this.debug('pattern match', p, f, hit)\n\t    }\n\n\t    if (!hit) return false\n\t  }\n\n\t  // Note: ending in / means that we'll get a final \"\"\n\t  // at the end of the pattern.  This can only match a\n\t  // corresponding \"\" at the end of the file.\n\t  // If the file ends in /, then it can only match a\n\t  // a pattern that ends in /, unless the pattern just\n\t  // doesn't have any more for it. But, a/b/ should *not*\n\t  // match \"a/b/*\", even though \"\" matches against the\n\t  // [^/]*? pattern, except in partial mode, where it might\n\t  // simply not be reached yet.\n\t  // However, a/b/ should still satisfy a/*\n\n\t  // now either we fell off the end of the pattern, or we're done.\n\t  if (fi === fl && pi === pl) {\n\t    // ran out of pattern and filename at the same time.\n\t    // an exact hit!\n\t    return true\n\t  } else if (fi === fl) {\n\t    // ran out of file, but still had pattern left.\n\t    // this is ok if we're doing the match as part of\n\t    // a glob fs traversal.\n\t    return partial\n\t  } else if (pi === pl) {\n\t    // ran out of pattern, still have file left.\n\t    // this is only acceptable if we're on the very last\n\t    // empty segment of a file with a trailing slash.\n\t    // a/* should match a/b/\n\t    var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n\t    return emptyFileEnd\n\t  }\n\n\t  // should be unreachable.\n\t  throw new Error('wtf?')\n\t}\n\n\t// replace stuff like \\* with *\n\tfunction globUnescape (s) {\n\t  return s.replace(/\\\\(.)/g, '$1')\n\t}\n\n\tfunction regExpEscape (s) {\n\t  return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\t}\n\n\n/***/ },\n/* 124 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar map = __webpack_require__(122);\n\n\tmodule.exports = Protocols;\n\n\tfunction Protocols(proto) {\n\t  if (typeof proto === 'number') {\n\t    if (Protocols.codes[proto]) {\n\t      return Protocols.codes[proto];\n\t    }\n\n\t    throw new Error('no protocol with code: ' + proto);\n\t  } else if (typeof proto === 'string' || proto instanceof String) {\n\t    if (Protocols.names[proto]) {\n\t      return Protocols.names[proto];\n\t    }\n\n\t    throw new Error('no protocol with name: ' + proto);\n\t  }\n\n\t  throw new Error('invalid protocol id type: ' + proto);\n\t}\n\n\tProtocols.lengthPrefixedVarSize = -1;\n\n\t// replicating table here to:\n\t// 1. avoid parsing the csv\n\t// 2. ensuring errors in the csv don't screw up code.\n\t// 3. changing a number has to happen in two places.\n\n\tProtocols.table = [[4, 32, 'ip4'], [6, 16, 'tcp'], [17, 16, 'udp'], [33, 16, 'dccp'], [41, 128, 'ip6'], [132, 16, 'sctp'],\n\t// these require varint for the protocol code\n\t[302, 0, 'utp'], [421, Protocols.lengthPrefixedVarSize, 'ipfs'], [480, 0, 'http'], [443, 0, 'https'], [477, 0, 'websockets']];\n\n\tProtocols.names = {};\n\tProtocols.codes = {};\n\n\t// populate tables\n\tmap(Protocols.table, function (e) {\n\t  var proto = p.apply(this, e);\n\t  Protocols.codes[proto.code] = proto;\n\t  Protocols.names[proto.name] = proto;\n\t});\n\n\tProtocols.object = p;\n\n\tfunction p(code, size, name) {\n\t  return { code: code, size: size, name: name };\n\t}\n\n/***/ },\n/* 125 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\n\tfunction posix(path) {\n\t\treturn path.charAt(0) === '/';\n\t};\n\n\tfunction win32(path) {\n\t\t// https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\t\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\t\tvar result = splitDeviceRe.exec(path);\n\t\tvar device = result[1] || '';\n\t\tvar isUnc = !!device && device.charAt(1) !== ':';\n\n\t\t// UNC paths are always absolute\n\t\treturn !!result[2] || isUnc;\n\t};\n\n\tmodule.exports = process.platform === 'win32' ? win32 : posix;\n\tmodule.exports.posix = posix;\n\tmodule.exports.win32 = win32;\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 126 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// a transform stream is a readable/writable stream where you do\n\t// something with the data.  Sometimes it's called a \"filter\",\n\t// but that's not a great name for it, since that implies a thing where\n\t// some bits pass through, and others are simply ignored.  (That would\n\t// be a valid example of a transform, of course.)\n\t//\n\t// While the output is causally related to the input, it's not a\n\t// necessarily symmetric or synchronous transformation.  For example,\n\t// a zlib stream might take multiple plain-text writes(), and then\n\t// emit a single compressed chunk some time in the future.\n\t//\n\t// Here's how this works:\n\t//\n\t// The Transform stream has all the aspects of the readable and writable\n\t// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n\t// internally, and returns false if there's a lot of pending writes\n\t// buffered up.  When you call read(), that calls _read(n) until\n\t// there's enough pending readable data buffered up.\n\t//\n\t// In a transform stream, the written data is placed in a buffer.  When\n\t// _read(n) is called, it transforms the queued up data, calling the\n\t// buffered _write cb's as it consumes chunks.  If consuming a single\n\t// written chunk would result in multiple output chunks, then the first\n\t// outputted bit calls the readcb, and subsequent chunks just go into\n\t// the read buffer, and will cause it to emit 'readable' if necessary.\n\t//\n\t// This way, back-pressure is actually determined by the reading side,\n\t// since _read has to be called to start processing a new chunk.  However,\n\t// a pathological inflate type of transform can cause excessive buffering\n\t// here.  For example, imagine a stream where every byte of input is\n\t// interpreted as an integer from 0-255, and then results in that many\n\t// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n\t// 1kb of data being output.  In this case, you could write a very small\n\t// amount of input, and end up with a very large amount of output.  In\n\t// such a pathological inflating mechanism, there'd be no way to tell\n\t// the system to stop doing the transform.  A single 4MB write could\n\t// cause the system to run out of memory.\n\t//\n\t// However, even in such a pathological case, only a single written chunk\n\t// would be consumed, and then the rest would wait (un-transformed) until\n\t// the results of the previous transformed chunk were consumed.\n\n\t'use strict';\n\n\tmodule.exports = Transform;\n\n\tvar Duplex = __webpack_require__(49);\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tutil.inherits(Transform, Duplex);\n\n\tfunction TransformState(stream) {\n\t  this.afterTransform = function (er, data) {\n\t    return afterTransform(stream, er, data);\n\t  };\n\n\t  this.needTransform = false;\n\t  this.transforming = false;\n\t  this.writecb = null;\n\t  this.writechunk = null;\n\t  this.writeencoding = null;\n\t}\n\n\tfunction afterTransform(stream, er, data) {\n\t  var ts = stream._transformState;\n\t  ts.transforming = false;\n\n\t  var cb = ts.writecb;\n\n\t  if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n\t  ts.writechunk = null;\n\t  ts.writecb = null;\n\n\t  if (data !== null && data !== undefined) stream.push(data);\n\n\t  cb(er);\n\n\t  var rs = stream._readableState;\n\t  rs.reading = false;\n\t  if (rs.needReadable || rs.length < rs.highWaterMark) {\n\t    stream._read(rs.highWaterMark);\n\t  }\n\t}\n\n\tfunction Transform(options) {\n\t  if (!(this instanceof Transform)) return new Transform(options);\n\n\t  Duplex.call(this, options);\n\n\t  this._transformState = new TransformState(this);\n\n\t  // when the writable side finishes, then flush out anything remaining.\n\t  var stream = this;\n\n\t  // start out asking for a readable event once data is transformed.\n\t  this._readableState.needReadable = true;\n\n\t  // we have implemented the _read method, and done the other things\n\t  // that Readable wants before the first _read call, so unset the\n\t  // sync guard flag.\n\t  this._readableState.sync = false;\n\n\t  if (options) {\n\t    if (typeof options.transform === 'function') this._transform = options.transform;\n\n\t    if (typeof options.flush === 'function') this._flush = options.flush;\n\t  }\n\n\t  this.once('prefinish', function () {\n\t    if (typeof this._flush === 'function') this._flush(function (er) {\n\t      done(stream, er);\n\t    });else done(stream);\n\t  });\n\t}\n\n\tTransform.prototype.push = function (chunk, encoding) {\n\t  this._transformState.needTransform = false;\n\t  return Duplex.prototype.push.call(this, chunk, encoding);\n\t};\n\n\t// This is the part where you do stuff!\n\t// override this function in implementation classes.\n\t// 'chunk' is an input chunk.\n\t//\n\t// Call `push(newChunk)` to pass along transformed output\n\t// to the readable side.  You may call 'push' zero or more times.\n\t//\n\t// Call `cb(err)` when you are done with this chunk.  If you pass\n\t// an error, then that'll put the hurt on the whole operation.  If you\n\t// never call cb(), then you'll never get another chunk.\n\tTransform.prototype._transform = function (chunk, encoding, cb) {\n\t  throw new Error('not implemented');\n\t};\n\n\tTransform.prototype._write = function (chunk, encoding, cb) {\n\t  var ts = this._transformState;\n\t  ts.writecb = cb;\n\t  ts.writechunk = chunk;\n\t  ts.writeencoding = encoding;\n\t  if (!ts.transforming) {\n\t    var rs = this._readableState;\n\t    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n\t  }\n\t};\n\n\t// Doesn't matter what the args are here.\n\t// _transform does all the work.\n\t// That we got here means that the readable side wants more data.\n\tTransform.prototype._read = function (n) {\n\t  var ts = this._transformState;\n\n\t  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n\t    ts.transforming = true;\n\t    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n\t  } else {\n\t    // mark that we need a transform, so that any data that comes in\n\t    // will get processed, now that we've asked for it.\n\t    ts.needTransform = true;\n\t  }\n\t};\n\n\tfunction done(stream, er) {\n\t  if (er) return stream.emit('error', er);\n\n\t  // if there's nothing in the write buffer, then that means\n\t  // that nothing more will ever be provided\n\t  var ws = stream._writableState;\n\t  var ts = stream._transformState;\n\n\t  if (ws.length) throw new Error('calling transform done when ws.length != 0');\n\n\t  if (ts.transforming) throw new Error('calling transform done when still transforming');\n\n\t  return stream.push(null);\n\t}\n\n/***/ },\n/* 127 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process, setImmediate) {// A bit simpler than readable streams.\n\t// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n\t// the drain event emission and buffering.\n\n\t'use strict';\n\n\tmodule.exports = Writable;\n\n\t/*<replacement>*/\n\tvar processNextTick = __webpack_require__(60);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Buffer = __webpack_require__(1).Buffer;\n\t/*</replacement>*/\n\n\tWritable.WritableState = WritableState;\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar internalUtil = {\n\t  deprecate: __webpack_require__(208)\n\t};\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Stream;\n\t(function () {\n\t  try {\n\t    Stream = __webpack_require__(12);\n\t  } catch (_) {} finally {\n\t    if (!Stream) Stream = __webpack_require__(32).EventEmitter;\n\t  }\n\t})();\n\t/*</replacement>*/\n\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\tutil.inherits(Writable, Stream);\n\n\tfunction nop() {}\n\n\tfunction WriteReq(chunk, encoding, cb) {\n\t  this.chunk = chunk;\n\t  this.encoding = encoding;\n\t  this.callback = cb;\n\t  this.next = null;\n\t}\n\n\tvar Duplex;\n\tfunction WritableState(options, stream) {\n\t  Duplex = Duplex || __webpack_require__(49);\n\n\t  options = options || {};\n\n\t  // object stream flag to indicate whether or not this stream\n\t  // contains buffers or objects.\n\t  this.objectMode = !!options.objectMode;\n\n\t  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n\t  // the point at which write() starts returning false\n\t  // Note: 0 is a valid value, means that we always return false if\n\t  // the entire buffer is not flushed immediately on write()\n\t  var hwm = options.highWaterMark;\n\t  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\t  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n\t  // cast to ints.\n\t  this.highWaterMark = ~ ~this.highWaterMark;\n\n\t  this.needDrain = false;\n\t  // at the start of calling end()\n\t  this.ending = false;\n\t  // when end() has been called, and returned\n\t  this.ended = false;\n\t  // when 'finish' is emitted\n\t  this.finished = false;\n\n\t  // should we decode strings into buffers before passing to _write?\n\t  // this is here so that some node-core streams can optimize string\n\t  // handling at a lower level.\n\t  var noDecode = options.decodeStrings === false;\n\t  this.decodeStrings = !noDecode;\n\n\t  // Crypto is kind of old and crusty.  Historically, its default string\n\t  // encoding is 'binary' so we have to make this configurable.\n\t  // Everything else in the universe uses 'utf8', though.\n\t  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n\t  // not an actual buffer we keep track of, but a measurement\n\t  // of how much we're waiting to get pushed to some underlying\n\t  // socket or file.\n\t  this.length = 0;\n\n\t  // a flag to see when we're in the middle of a write.\n\t  this.writing = false;\n\n\t  // when true all writes will be buffered until .uncork() call\n\t  this.corked = 0;\n\n\t  // a flag to be able to tell if the onwrite cb is called immediately,\n\t  // or on a later tick.  We set this to true at first, because any\n\t  // actions that shouldn't happen until \"later\" should generally also\n\t  // not happen before the first write call.\n\t  this.sync = true;\n\n\t  // a flag to know if we're processing previously buffered items, which\n\t  // may call the _write() callback in the same tick, so that we don't\n\t  // end up in an overlapped onwrite situation.\n\t  this.bufferProcessing = false;\n\n\t  // the callback that's passed to _write(chunk,cb)\n\t  this.onwrite = function (er) {\n\t    onwrite(stream, er);\n\t  };\n\n\t  // the callback that the user supplies to write(chunk,encoding,cb)\n\t  this.writecb = null;\n\n\t  // the amount that is being written when _write is called.\n\t  this.writelen = 0;\n\n\t  this.bufferedRequest = null;\n\t  this.lastBufferedRequest = null;\n\n\t  // number of pending user-supplied write callbacks\n\t  // this must be 0 before 'finish' can be emitted\n\t  this.pendingcb = 0;\n\n\t  // emit prefinish if the only thing we're waiting for is _write cbs\n\t  // This is relevant for synchronous Transform streams\n\t  this.prefinished = false;\n\n\t  // True if the error was already emitted and should not be thrown again\n\t  this.errorEmitted = false;\n\n\t  // count buffered requests\n\t  this.bufferedRequestCount = 0;\n\n\t  // create the two objects needed to store the corked requests\n\t  // they are not a linked list, as no new elements are inserted in there\n\t  this.corkedRequestsFree = new CorkedRequest(this);\n\t  this.corkedRequestsFree.next = new CorkedRequest(this);\n\t}\n\n\tWritableState.prototype.getBuffer = function writableStateGetBuffer() {\n\t  var current = this.bufferedRequest;\n\t  var out = [];\n\t  while (current) {\n\t    out.push(current);\n\t    current = current.next;\n\t  }\n\t  return out;\n\t};\n\n\t(function () {\n\t  try {\n\t    Object.defineProperty(WritableState.prototype, 'buffer', {\n\t      get: internalUtil.deprecate(function () {\n\t        return this.getBuffer();\n\t      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\n\t    });\n\t  } catch (_) {}\n\t})();\n\n\tvar Duplex;\n\tfunction Writable(options) {\n\t  Duplex = Duplex || __webpack_require__(49);\n\n\t  // Writable ctor is applied to Duplexes, though they're not\n\t  // instanceof Writable, they're instanceof Readable.\n\t  if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);\n\n\t  this._writableState = new WritableState(options, this);\n\n\t  // legacy.\n\t  this.writable = true;\n\n\t  if (options) {\n\t    if (typeof options.write === 'function') this._write = options.write;\n\n\t    if (typeof options.writev === 'function') this._writev = options.writev;\n\t  }\n\n\t  Stream.call(this);\n\t}\n\n\t// Otherwise people can pipe Writable streams, which is just wrong.\n\tWritable.prototype.pipe = function () {\n\t  this.emit('error', new Error('Cannot pipe. Not readable.'));\n\t};\n\n\tfunction writeAfterEnd(stream, cb) {\n\t  var er = new Error('write after end');\n\t  // TODO: defer error events consistently everywhere, not just the cb\n\t  stream.emit('error', er);\n\t  processNextTick(cb, er);\n\t}\n\n\t// If we get something that is not a buffer, string, null, or undefined,\n\t// and we're not in objectMode, then that's an error.\n\t// Otherwise stream chunks are all considered to be of length=1, and the\n\t// watermarks determine how many objects to keep in the buffer, rather than\n\t// how many bytes or characters.\n\tfunction validChunk(stream, state, chunk, cb) {\n\t  var valid = true;\n\n\t  if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n\t    var er = new TypeError('Invalid non-string/buffer chunk');\n\t    stream.emit('error', er);\n\t    processNextTick(cb, er);\n\t    valid = false;\n\t  }\n\t  return valid;\n\t}\n\n\tWritable.prototype.write = function (chunk, encoding, cb) {\n\t  var state = this._writableState;\n\t  var ret = false;\n\n\t  if (typeof encoding === 'function') {\n\t    cb = encoding;\n\t    encoding = null;\n\t  }\n\n\t  if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n\t  if (typeof cb !== 'function') cb = nop;\n\n\t  if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {\n\t    state.pendingcb++;\n\t    ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\t  }\n\n\t  return ret;\n\t};\n\n\tWritable.prototype.cork = function () {\n\t  var state = this._writableState;\n\n\t  state.corked++;\n\t};\n\n\tWritable.prototype.uncork = function () {\n\t  var state = this._writableState;\n\n\t  if (state.corked) {\n\t    state.corked--;\n\n\t    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n\t  }\n\t};\n\n\tWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n\t  // node::ParseEncoding() requires lower case.\n\t  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n\t  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n\t  this._writableState.defaultEncoding = encoding;\n\t};\n\n\tfunction decodeChunk(state, chunk, encoding) {\n\t  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n\t    chunk = new Buffer(chunk, encoding);\n\t  }\n\t  return chunk;\n\t}\n\n\t// if we're already writing something, then just put this\n\t// in the queue, and wait our turn.  Otherwise, call _write\n\t// If we return false, then we need a drain event, so set that flag.\n\tfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n\t  chunk = decodeChunk(state, chunk, encoding);\n\n\t  if (Buffer.isBuffer(chunk)) encoding = 'buffer';\n\t  var len = state.objectMode ? 1 : chunk.length;\n\n\t  state.length += len;\n\n\t  var ret = state.length < state.highWaterMark;\n\t  // we must ensure that previous needDrain will not be reset to false.\n\t  if (!ret) state.needDrain = true;\n\n\t  if (state.writing || state.corked) {\n\t    var last = state.lastBufferedRequest;\n\t    state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n\t    if (last) {\n\t      last.next = state.lastBufferedRequest;\n\t    } else {\n\t      state.bufferedRequest = state.lastBufferedRequest;\n\t    }\n\t    state.bufferedRequestCount += 1;\n\t  } else {\n\t    doWrite(stream, state, false, len, chunk, encoding, cb);\n\t  }\n\n\t  return ret;\n\t}\n\n\tfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n\t  state.writelen = len;\n\t  state.writecb = cb;\n\t  state.writing = true;\n\t  state.sync = true;\n\t  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n\t  state.sync = false;\n\t}\n\n\tfunction onwriteError(stream, state, sync, er, cb) {\n\t  --state.pendingcb;\n\t  if (sync) processNextTick(cb, er);else cb(er);\n\n\t  stream._writableState.errorEmitted = true;\n\t  stream.emit('error', er);\n\t}\n\n\tfunction onwriteStateUpdate(state) {\n\t  state.writing = false;\n\t  state.writecb = null;\n\t  state.length -= state.writelen;\n\t  state.writelen = 0;\n\t}\n\n\tfunction onwrite(stream, er) {\n\t  var state = stream._writableState;\n\t  var sync = state.sync;\n\t  var cb = state.writecb;\n\n\t  onwriteStateUpdate(state);\n\n\t  if (er) onwriteError(stream, state, sync, er, cb);else {\n\t    // Check if we're actually ready to finish, but don't emit yet\n\t    var finished = needFinish(state);\n\n\t    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n\t      clearBuffer(stream, state);\n\t    }\n\n\t    if (sync) {\n\t      /*<replacement>*/\n\t      asyncWrite(afterWrite, stream, state, finished, cb);\n\t      /*</replacement>*/\n\t    } else {\n\t        afterWrite(stream, state, finished, cb);\n\t      }\n\t  }\n\t}\n\n\tfunction afterWrite(stream, state, finished, cb) {\n\t  if (!finished) onwriteDrain(stream, state);\n\t  state.pendingcb--;\n\t  cb();\n\t  finishMaybe(stream, state);\n\t}\n\n\t// Must force callback to be called on nextTick, so that we don't\n\t// emit 'drain' before the write() consumer gets the 'false' return\n\t// value, and has a chance to attach a 'drain' listener.\n\tfunction onwriteDrain(stream, state) {\n\t  if (state.length === 0 && state.needDrain) {\n\t    state.needDrain = false;\n\t    stream.emit('drain');\n\t  }\n\t}\n\n\t// if there's something in the buffer waiting, then process it\n\tfunction clearBuffer(stream, state) {\n\t  state.bufferProcessing = true;\n\t  var entry = state.bufferedRequest;\n\n\t  if (stream._writev && entry && entry.next) {\n\t    // Fast case, write everything using _writev()\n\t    var l = state.bufferedRequestCount;\n\t    var buffer = new Array(l);\n\t    var holder = state.corkedRequestsFree;\n\t    holder.entry = entry;\n\n\t    var count = 0;\n\t    while (entry) {\n\t      buffer[count] = entry;\n\t      entry = entry.next;\n\t      count += 1;\n\t    }\n\n\t    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n\t    // doWrite is always async, defer these to save a bit of time\n\t    // as the hot path ends with doWrite\n\t    state.pendingcb++;\n\t    state.lastBufferedRequest = null;\n\t    state.corkedRequestsFree = holder.next;\n\t    holder.next = null;\n\t  } else {\n\t    // Slow case, write chunks one-by-one\n\t    while (entry) {\n\t      var chunk = entry.chunk;\n\t      var encoding = entry.encoding;\n\t      var cb = entry.callback;\n\t      var len = state.objectMode ? 1 : chunk.length;\n\n\t      doWrite(stream, state, false, len, chunk, encoding, cb);\n\t      entry = entry.next;\n\t      // if we didn't call the onwrite immediately, then\n\t      // it means that we need to wait until it does.\n\t      // also, that means that the chunk and cb are currently\n\t      // being processed, so move the buffer counter past them.\n\t      if (state.writing) {\n\t        break;\n\t      }\n\t    }\n\n\t    if (entry === null) state.lastBufferedRequest = null;\n\t  }\n\n\t  state.bufferedRequestCount = 0;\n\t  state.bufferedRequest = entry;\n\t  state.bufferProcessing = false;\n\t}\n\n\tWritable.prototype._write = function (chunk, encoding, cb) {\n\t  cb(new Error('not implemented'));\n\t};\n\n\tWritable.prototype._writev = null;\n\n\tWritable.prototype.end = function (chunk, encoding, cb) {\n\t  var state = this._writableState;\n\n\t  if (typeof chunk === 'function') {\n\t    cb = chunk;\n\t    chunk = null;\n\t    encoding = null;\n\t  } else if (typeof encoding === 'function') {\n\t    cb = encoding;\n\t    encoding = null;\n\t  }\n\n\t  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n\t  // .end() fully uncorks\n\t  if (state.corked) {\n\t    state.corked = 1;\n\t    this.uncork();\n\t  }\n\n\t  // ignore unnecessary end() calls.\n\t  if (!state.ending && !state.finished) endWritable(this, state, cb);\n\t};\n\n\tfunction needFinish(state) {\n\t  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n\t}\n\n\tfunction prefinish(stream, state) {\n\t  if (!state.prefinished) {\n\t    state.prefinished = true;\n\t    stream.emit('prefinish');\n\t  }\n\t}\n\n\tfunction finishMaybe(stream, state) {\n\t  var need = needFinish(state);\n\t  if (need) {\n\t    if (state.pendingcb === 0) {\n\t      prefinish(stream, state);\n\t      state.finished = true;\n\t      stream.emit('finish');\n\t    } else {\n\t      prefinish(stream, state);\n\t    }\n\t  }\n\t  return need;\n\t}\n\n\tfunction endWritable(stream, state, cb) {\n\t  state.ending = true;\n\t  finishMaybe(stream, state);\n\t  if (cb) {\n\t    if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n\t  }\n\t  state.ended = true;\n\t  stream.writable = false;\n\t}\n\n\t// It seems a linked list but it is not\n\t// there will be only 2 of these for each stream\n\tfunction CorkedRequest(state) {\n\t  var _this = this;\n\n\t  this.next = null;\n\t  this.entry = null;\n\n\t  this.finish = function (err) {\n\t    var entry = _this.entry;\n\t    _this.entry = null;\n\t    while (entry) {\n\t      var cb = entry.callback;\n\t      state.pendingcb--;\n\t      cb(err);\n\t      entry = entry.next;\n\t    }\n\t    if (state.corkedRequestsFree) {\n\t      state.corkedRequestsFree.next = _this;\n\t    } else {\n\t      state.corkedRequestsFree = _this;\n\t    }\n\t  };\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8), __webpack_require__(91).setImmediate))\n\n/***/ },\n/* 128 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t    encode: __webpack_require__(533)\n\t  , decode: __webpack_require__(532)\n\t  , encodingLength: __webpack_require__(534)\n\t}\n\n\n/***/ },\n/* 129 */\n/***/ function(module, exports) {\n\n\tmodule.exports = extend\n\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\tfunction extend() {\n\t    var target = {}\n\n\t    for (var i = 0; i < arguments.length; i++) {\n\t        var source = arguments[i]\n\n\t        for (var key in source) {\n\t            if (hasOwnProperty.call(source, key)) {\n\t                target[key] = source[key]\n\t            }\n\t        }\n\t    }\n\n\t    return target\n\t}\n\n\n/***/ },\n/* 130 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {};\n\n/***/ },\n/* 131 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar inherits = __webpack_require__(2);\n\tvar Reporter = __webpack_require__(63).Reporter;\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\tfunction DecoderBuffer(base, options) {\n\t  Reporter.call(this, options);\n\t  if (!Buffer.isBuffer(base)) {\n\t    this.error('Input not Buffer');\n\t    return;\n\t  }\n\n\t  this.base = base;\n\t  this.offset = 0;\n\t  this.length = base.length;\n\t}\n\tinherits(DecoderBuffer, Reporter);\n\texports.DecoderBuffer = DecoderBuffer;\n\n\tDecoderBuffer.prototype.save = function save() {\n\t  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n\t};\n\n\tDecoderBuffer.prototype.restore = function restore(save) {\n\t  // Return skipped data\n\t  var res = new DecoderBuffer(this.base);\n\t  res.offset = save.offset;\n\t  res.length = this.offset;\n\n\t  this.offset = save.offset;\n\t  Reporter.prototype.restore.call(this, save.reporter);\n\n\t  return res;\n\t};\n\n\tDecoderBuffer.prototype.isEmpty = function isEmpty() {\n\t  return this.offset === this.length;\n\t};\n\n\tDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n\t  if (this.offset + 1 <= this.length)\n\t    return this.base.readUInt8(this.offset++, true);\n\t  else\n\t    return this.error(fail || 'DecoderBuffer overrun');\n\t}\n\n\tDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n\t  if (!(this.offset + bytes <= this.length))\n\t    return this.error(fail || 'DecoderBuffer overrun');\n\n\t  var res = new DecoderBuffer(this.base);\n\n\t  // Share reporter state\n\t  res._reporterState = this._reporterState;\n\n\t  res.offset = this.offset;\n\t  res.length = this.offset + bytes;\n\t  this.offset += bytes;\n\t  return res;\n\t}\n\n\tDecoderBuffer.prototype.raw = function raw(save) {\n\t  return this.base.slice(save ? save.offset : this.offset, this.length);\n\t}\n\n\tfunction EncoderBuffer(value, reporter) {\n\t  if (Array.isArray(value)) {\n\t    this.length = 0;\n\t    this.value = value.map(function(item) {\n\t      if (!(item instanceof EncoderBuffer))\n\t        item = new EncoderBuffer(item, reporter);\n\t      this.length += item.length;\n\t      return item;\n\t    }, this);\n\t  } else if (typeof value === 'number') {\n\t    if (!(0 <= value && value <= 0xff))\n\t      return reporter.error('non-byte EncoderBuffer value');\n\t    this.value = value;\n\t    this.length = 1;\n\t  } else if (typeof value === 'string') {\n\t    this.value = value;\n\t    this.length = Buffer.byteLength(value);\n\t  } else if (Buffer.isBuffer(value)) {\n\t    this.value = value;\n\t    this.length = value.length;\n\t  } else {\n\t    return reporter.error('Unsupported type: ' + typeof value);\n\t  }\n\t}\n\texports.EncoderBuffer = EncoderBuffer;\n\n\tEncoderBuffer.prototype.join = function join(out, offset) {\n\t  if (!out)\n\t    out = new Buffer(this.length);\n\t  if (!offset)\n\t    offset = 0;\n\n\t  if (this.length === 0)\n\t    return out;\n\n\t  if (Array.isArray(this.value)) {\n\t    this.value.forEach(function(item) {\n\t      item.join(out, offset);\n\t      offset += item.length;\n\t    });\n\t  } else {\n\t    if (typeof this.value === 'number')\n\t      out[offset] = this.value;\n\t    else if (typeof this.value === 'string')\n\t      out.write(this.value, offset);\n\t    else if (Buffer.isBuffer(this.value))\n\t      this.value.copy(out, offset);\n\t    offset += this.length;\n\t  }\n\n\t  return out;\n\t};\n\n\n/***/ },\n/* 132 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar constants = exports;\n\n\t// Helper\n\tconstants._reverse = function reverse(map) {\n\t  var res = {};\n\n\t  Object.keys(map).forEach(function(key) {\n\t    // Convert key to integer if it is stringified\n\t    if ((key | 0) == key)\n\t      key = key | 0;\n\n\t    var value = map[key];\n\t    res[value] = key;\n\t  });\n\n\t  return res;\n\t};\n\n\tconstants.der = __webpack_require__(215);\n\n\n/***/ },\n/* 133 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar inherits = __webpack_require__(2);\n\n\tvar asn1 = __webpack_require__(72);\n\tvar base = asn1.base;\n\tvar bignum = asn1.bignum;\n\n\t// Import DER constants\n\tvar der = asn1.constants.der;\n\n\tfunction DERDecoder(entity) {\n\t  this.enc = 'der';\n\t  this.name = entity.name;\n\t  this.entity = entity;\n\n\t  // Construct base tree\n\t  this.tree = new DERNode();\n\t  this.tree._init(entity.body);\n\t};\n\tmodule.exports = DERDecoder;\n\n\tDERDecoder.prototype.decode = function decode(data, options) {\n\t  if (!(data instanceof base.DecoderBuffer))\n\t    data = new base.DecoderBuffer(data, options);\n\n\t  return this.tree._decode(data, options);\n\t};\n\n\t// Tree methods\n\n\tfunction DERNode(parent) {\n\t  base.Node.call(this, 'der', parent);\n\t}\n\tinherits(DERNode, base.Node);\n\n\tDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n\t  if (buffer.isEmpty())\n\t    return false;\n\n\t  var state = buffer.save();\n\t  var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n\t  if (buffer.isError(decodedTag))\n\t    return decodedTag;\n\n\t  buffer.restore(state);\n\n\t  return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n\t    (decodedTag.tagStr + 'of') === tag || any;\n\t};\n\n\tDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n\t  var decodedTag = derDecodeTag(buffer,\n\t                                'Failed to decode tag of \"' + tag + '\"');\n\t  if (buffer.isError(decodedTag))\n\t    return decodedTag;\n\n\t  var len = derDecodeLen(buffer,\n\t                         decodedTag.primitive,\n\t                         'Failed to get length of \"' + tag + '\"');\n\n\t  // Failure\n\t  if (buffer.isError(len))\n\t    return len;\n\n\t  if (!any &&\n\t      decodedTag.tag !== tag &&\n\t      decodedTag.tagStr !== tag &&\n\t      decodedTag.tagStr + 'of' !== tag) {\n\t    return buffer.error('Failed to match tag: \"' + tag + '\"');\n\t  }\n\n\t  if (decodedTag.primitive || len !== null)\n\t    return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n\t  // Indefinite length... find END tag\n\t  var state = buffer.save();\n\t  var res = this._skipUntilEnd(\n\t      buffer,\n\t      'Failed to skip indefinite length body: \"' + this.tag + '\"');\n\t  if (buffer.isError(res))\n\t    return res;\n\n\t  len = buffer.offset - state.offset;\n\t  buffer.restore(state);\n\t  return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\t};\n\n\tDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n\t  while (true) {\n\t    var tag = derDecodeTag(buffer, fail);\n\t    if (buffer.isError(tag))\n\t      return tag;\n\t    var len = derDecodeLen(buffer, tag.primitive, fail);\n\t    if (buffer.isError(len))\n\t      return len;\n\n\t    var res;\n\t    if (tag.primitive || len !== null)\n\t      res = buffer.skip(len)\n\t    else\n\t      res = this._skipUntilEnd(buffer, fail);\n\n\t    // Failure\n\t    if (buffer.isError(res))\n\t      return res;\n\n\t    if (tag.tagStr === 'end')\n\t      break;\n\t  }\n\t};\n\n\tDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder) {\n\t  var result = [];\n\t  while (!buffer.isEmpty()) {\n\t    var possibleEnd = this._peekTag(buffer, 'end');\n\t    if (buffer.isError(possibleEnd))\n\t      return possibleEnd;\n\n\t    var res = decoder.decode(buffer, 'der');\n\t    if (buffer.isError(res) && possibleEnd)\n\t      break;\n\t    result.push(res);\n\t  }\n\t  return result;\n\t};\n\n\tDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n\t  if (tag === 'bitstr') {\n\t    var unused = buffer.readUInt8();\n\t    if (buffer.isError(unused))\n\t      return unused;\n\t    return { unused: unused, data: buffer.raw() };\n\t  } else if (tag === 'bmpstr') {\n\t    var raw = buffer.raw();\n\t    if (raw.length % 2 === 1)\n\t      return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n\t    var str = '';\n\t    for (var i = 0; i < raw.length / 2; i++) {\n\t      str += String.fromCharCode(raw.readUInt16BE(i * 2));\n\t    }\n\t    return str;\n\t  } else if (tag === 'numstr') {\n\t    var numstr = buffer.raw().toString('ascii');\n\t    if (!this._isNumstr(numstr)) {\n\t      return buffer.error('Decoding of string type: ' +\n\t                          'numstr unsupported characters');\n\t    }\n\t    return numstr;\n\t  } else if (tag === 'octstr') {\n\t    return buffer.raw();\n\t  } else if (tag === 'printstr') {\n\t    var printstr = buffer.raw().toString('ascii');\n\t    if (!this._isPrintstr(printstr)) {\n\t      return buffer.error('Decoding of string type: ' +\n\t                          'printstr unsupported characters');\n\t    }\n\t    return printstr;\n\t  } else if (/str$/.test(tag)) {\n\t    return buffer.raw().toString();\n\t  } else {\n\t    return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n\t  }\n\t};\n\n\tDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n\t  var result;\n\t  var identifiers = [];\n\t  var ident = 0;\n\t  while (!buffer.isEmpty()) {\n\t    var subident = buffer.readUInt8();\n\t    ident <<= 7;\n\t    ident |= subident & 0x7f;\n\t    if ((subident & 0x80) === 0) {\n\t      identifiers.push(ident);\n\t      ident = 0;\n\t    }\n\t  }\n\t  if (subident & 0x80)\n\t    identifiers.push(ident);\n\n\t  var first = (identifiers[0] / 40) | 0;\n\t  var second = identifiers[0] % 40;\n\n\t  if (relative)\n\t    result = identifiers;\n\t  else\n\t    result = [first, second].concat(identifiers.slice(1));\n\n\t  if (values) {\n\t    var tmp = values[result.join(' ')];\n\t    if (tmp === undefined)\n\t      tmp = values[result.join('.')];\n\t    if (tmp !== undefined)\n\t      result = tmp;\n\t  }\n\n\t  return result;\n\t};\n\n\tDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n\t  var str = buffer.raw().toString();\n\t  if (tag === 'gentime') {\n\t    var year = str.slice(0, 4) | 0;\n\t    var mon = str.slice(4, 6) | 0;\n\t    var day = str.slice(6, 8) | 0;\n\t    var hour = str.slice(8, 10) | 0;\n\t    var min = str.slice(10, 12) | 0;\n\t    var sec = str.slice(12, 14) | 0;\n\t  } else if (tag === 'utctime') {\n\t    var year = str.slice(0, 2) | 0;\n\t    var mon = str.slice(2, 4) | 0;\n\t    var day = str.slice(4, 6) | 0;\n\t    var hour = str.slice(6, 8) | 0;\n\t    var min = str.slice(8, 10) | 0;\n\t    var sec = str.slice(10, 12) | 0;\n\t    if (year < 70)\n\t      year = 2000 + year;\n\t    else\n\t      year = 1900 + year;\n\t  } else {\n\t    return buffer.error('Decoding ' + tag + ' time is not supported yet');\n\t  }\n\n\t  return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n\t};\n\n\tDERNode.prototype._decodeNull = function decodeNull(buffer) {\n\t  return null;\n\t};\n\n\tDERNode.prototype._decodeBool = function decodeBool(buffer) {\n\t  var res = buffer.readUInt8();\n\t  if (buffer.isError(res))\n\t    return res;\n\t  else\n\t    return res !== 0;\n\t};\n\n\tDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n\t  // Bigint, return as it is (assume big endian)\n\t  var raw = buffer.raw();\n\t  var res = new bignum(raw);\n\n\t  if (values)\n\t    res = values[res.toString(10)] || res;\n\n\t  return res;\n\t};\n\n\tDERNode.prototype._use = function use(entity, obj) {\n\t  if (typeof entity === 'function')\n\t    entity = entity(obj);\n\t  return entity._getDecoder('der').tree;\n\t};\n\n\t// Utility methods\n\n\tfunction derDecodeTag(buf, fail) {\n\t  var tag = buf.readUInt8(fail);\n\t  if (buf.isError(tag))\n\t    return tag;\n\n\t  var cls = der.tagClass[tag >> 6];\n\t  var primitive = (tag & 0x20) === 0;\n\n\t  // Multi-octet tag - load\n\t  if ((tag & 0x1f) === 0x1f) {\n\t    var oct = tag;\n\t    tag = 0;\n\t    while ((oct & 0x80) === 0x80) {\n\t      oct = buf.readUInt8(fail);\n\t      if (buf.isError(oct))\n\t        return oct;\n\n\t      tag <<= 7;\n\t      tag |= oct & 0x7f;\n\t    }\n\t  } else {\n\t    tag &= 0x1f;\n\t  }\n\t  var tagStr = der.tag[tag];\n\n\t  return {\n\t    cls: cls,\n\t    primitive: primitive,\n\t    tag: tag,\n\t    tagStr: tagStr\n\t  };\n\t}\n\n\tfunction derDecodeLen(buf, primitive, fail) {\n\t  var len = buf.readUInt8(fail);\n\t  if (buf.isError(len))\n\t    return len;\n\n\t  // Indefinite form\n\t  if (!primitive && len === 0x80)\n\t    return null;\n\n\t  // Definite form\n\t  if ((len & 0x80) === 0) {\n\t    // Short form\n\t    return len;\n\t  }\n\n\t  // Long form\n\t  var num = len & 0x7f;\n\t  if (num >= 4)\n\t    return buf.error('length octect is too long');\n\n\t  len = 0;\n\t  for (var i = 0; i < num; i++) {\n\t    len <<= 8;\n\t    var j = buf.readUInt8(fail);\n\t    if (buf.isError(j))\n\t      return j;\n\t    len |= j;\n\t  }\n\n\t  return len;\n\t}\n\n\n/***/ },\n/* 134 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar inherits = __webpack_require__(2);\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\tvar asn1 = __webpack_require__(72);\n\tvar base = asn1.base;\n\n\t// Import DER constants\n\tvar der = asn1.constants.der;\n\n\tfunction DEREncoder(entity) {\n\t  this.enc = 'der';\n\t  this.name = entity.name;\n\t  this.entity = entity;\n\n\t  // Construct base tree\n\t  this.tree = new DERNode();\n\t  this.tree._init(entity.body);\n\t};\n\tmodule.exports = DEREncoder;\n\n\tDEREncoder.prototype.encode = function encode(data, reporter) {\n\t  return this.tree._encode(data, reporter).join();\n\t};\n\n\t// Tree methods\n\n\tfunction DERNode(parent) {\n\t  base.Node.call(this, 'der', parent);\n\t}\n\tinherits(DERNode, base.Node);\n\n\tDERNode.prototype._encodeComposite = function encodeComposite(tag,\n\t                                                              primitive,\n\t                                                              cls,\n\t                                                              content) {\n\t  var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n\t  // Short form\n\t  if (content.length < 0x80) {\n\t    var header = new Buffer(2);\n\t    header[0] = encodedTag;\n\t    header[1] = content.length;\n\t    return this._createEncoderBuffer([ header, content ]);\n\t  }\n\n\t  // Long form\n\t  // Count octets required to store length\n\t  var lenOctets = 1;\n\t  for (var i = content.length; i >= 0x100; i >>= 8)\n\t    lenOctets++;\n\n\t  var header = new Buffer(1 + 1 + lenOctets);\n\t  header[0] = encodedTag;\n\t  header[1] = 0x80 | lenOctets;\n\n\t  for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n\t    header[i] = j & 0xff;\n\n\t  return this._createEncoderBuffer([ header, content ]);\n\t};\n\n\tDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n\t  if (tag === 'bitstr') {\n\t    return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n\t  } else if (tag === 'bmpstr') {\n\t    var buf = new Buffer(str.length * 2);\n\t    for (var i = 0; i < str.length; i++) {\n\t      buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n\t    }\n\t    return this._createEncoderBuffer(buf);\n\t  } else if (tag === 'numstr') {\n\t    if (!this._isNumstr(str)) {\n\t      return this.reporter.error('Encoding of string type: numstr supports ' +\n\t                                 'only digits and space');\n\t    }\n\t    return this._createEncoderBuffer(str);\n\t  } else if (tag === 'printstr') {\n\t    if (!this._isPrintstr(str)) {\n\t      return this.reporter.error('Encoding of string type: printstr supports ' +\n\t                                 'only latin upper and lower case letters, ' +\n\t                                 'digits, space, apostrophe, left and rigth ' +\n\t                                 'parenthesis, plus sign, comma, hyphen, ' +\n\t                                 'dot, slash, colon, equal sign, ' +\n\t                                 'question mark');\n\t    }\n\t    return this._createEncoderBuffer(str);\n\t  } else if (/str$/.test(tag)) {\n\t    return this._createEncoderBuffer(str);\n\t  } else {\n\t    return this.reporter.error('Encoding of string type: ' + tag +\n\t                               ' unsupported');\n\t  }\n\t};\n\n\tDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n\t  if (typeof id === 'string') {\n\t    if (!values)\n\t      return this.reporter.error('string objid given, but no values map found');\n\t    if (!values.hasOwnProperty(id))\n\t      return this.reporter.error('objid not found in values map');\n\t    id = values[id].split(/[\\s\\.]+/g);\n\t    for (var i = 0; i < id.length; i++)\n\t      id[i] |= 0;\n\t  } else if (Array.isArray(id)) {\n\t    id = id.slice();\n\t    for (var i = 0; i < id.length; i++)\n\t      id[i] |= 0;\n\t  }\n\n\t  if (!Array.isArray(id)) {\n\t    return this.reporter.error('objid() should be either array or string, ' +\n\t                               'got: ' + JSON.stringify(id));\n\t  }\n\n\t  if (!relative) {\n\t    if (id[1] >= 40)\n\t      return this.reporter.error('Second objid identifier OOB');\n\t    id.splice(0, 2, id[0] * 40 + id[1]);\n\t  }\n\n\t  // Count number of octets\n\t  var size = 0;\n\t  for (var i = 0; i < id.length; i++) {\n\t    var ident = id[i];\n\t    for (size++; ident >= 0x80; ident >>= 7)\n\t      size++;\n\t  }\n\n\t  var objid = new Buffer(size);\n\t  var offset = objid.length - 1;\n\t  for (var i = id.length - 1; i >= 0; i--) {\n\t    var ident = id[i];\n\t    objid[offset--] = ident & 0x7f;\n\t    while ((ident >>= 7) > 0)\n\t      objid[offset--] = 0x80 | (ident & 0x7f);\n\t  }\n\n\t  return this._createEncoderBuffer(objid);\n\t};\n\n\tfunction two(num) {\n\t  if (num < 10)\n\t    return '0' + num;\n\t  else\n\t    return num;\n\t}\n\n\tDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n\t  var str;\n\t  var date = new Date(time);\n\n\t  if (tag === 'gentime') {\n\t    str = [\n\t      two(date.getFullYear()),\n\t      two(date.getUTCMonth() + 1),\n\t      two(date.getUTCDate()),\n\t      two(date.getUTCHours()),\n\t      two(date.getUTCMinutes()),\n\t      two(date.getUTCSeconds()),\n\t      'Z'\n\t    ].join('');\n\t  } else if (tag === 'utctime') {\n\t    str = [\n\t      two(date.getFullYear() % 100),\n\t      two(date.getUTCMonth() + 1),\n\t      two(date.getUTCDate()),\n\t      two(date.getUTCHours()),\n\t      two(date.getUTCMinutes()),\n\t      two(date.getUTCSeconds()),\n\t      'Z'\n\t    ].join('');\n\t  } else {\n\t    this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n\t  }\n\n\t  return this._encodeStr(str, 'octstr');\n\t};\n\n\tDERNode.prototype._encodeNull = function encodeNull() {\n\t  return this._createEncoderBuffer('');\n\t};\n\n\tDERNode.prototype._encodeInt = function encodeInt(num, values) {\n\t  if (typeof num === 'string') {\n\t    if (!values)\n\t      return this.reporter.error('String int or enum given, but no values map');\n\t    if (!values.hasOwnProperty(num)) {\n\t      return this.reporter.error('Values map doesn\\'t contain: ' +\n\t                                 JSON.stringify(num));\n\t    }\n\t    num = values[num];\n\t  }\n\n\t  // Bignum, assume big endian\n\t  if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n\t    var numArray = num.toArray();\n\t    if (!num.sign && numArray[0] & 0x80) {\n\t      numArray.unshift(0);\n\t    }\n\t    num = new Buffer(numArray);\n\t  }\n\n\t  if (Buffer.isBuffer(num)) {\n\t    var size = num.length;\n\t    if (num.length === 0)\n\t      size++;\n\n\t    var out = new Buffer(size);\n\t    num.copy(out);\n\t    if (num.length === 0)\n\t      out[0] = 0\n\t    return this._createEncoderBuffer(out);\n\t  }\n\n\t  if (num < 0x80)\n\t    return this._createEncoderBuffer(num);\n\n\t  if (num < 0x100)\n\t    return this._createEncoderBuffer([0, num]);\n\n\t  var size = 1;\n\t  for (var i = num; i >= 0x100; i >>= 8)\n\t    size++;\n\n\t  var out = new Array(size);\n\t  for (var i = out.length - 1; i >= 0; i--) {\n\t    out[i] = num & 0xff;\n\t    num >>= 8;\n\t  }\n\t  if(out[0] & 0x80) {\n\t    out.unshift(0);\n\t  }\n\n\t  return this._createEncoderBuffer(new Buffer(out));\n\t};\n\n\tDERNode.prototype._encodeBool = function encodeBool(value) {\n\t  return this._createEncoderBuffer(value ? 0xff : 0);\n\t};\n\n\tDERNode.prototype._use = function use(entity, obj) {\n\t  if (typeof entity === 'function')\n\t    entity = entity(obj);\n\t  return entity._getEncoder('der').tree;\n\t};\n\n\tDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n\t  var state = this._baseState;\n\t  var i;\n\t  if (state['default'] === null)\n\t    return false;\n\n\t  var data = dataBuffer.join();\n\t  if (state.defaultBuffer === undefined)\n\t    state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n\t  if (data.length !== state.defaultBuffer.length)\n\t    return false;\n\n\t  for (i=0; i < data.length; i++)\n\t    if (data[i] !== state.defaultBuffer[i])\n\t      return false;\n\n\t  return true;\n\t};\n\n\t// Utility methods\n\n\tfunction encodeTag(tag, primitive, cls, reporter) {\n\t  var res;\n\n\t  if (tag === 'seqof')\n\t    tag = 'seq';\n\t  else if (tag === 'setof')\n\t    tag = 'set';\n\n\t  if (der.tagByName.hasOwnProperty(tag))\n\t    res = der.tagByName[tag];\n\t  else if (typeof tag === 'number' && (tag | 0) === tag)\n\t    res = tag;\n\t  else\n\t    return reporter.error('Unknown tag: ' + tag);\n\n\t  if (res >= 0x1f)\n\t    return reporter.error('Multi-octet tag encoding unsupported');\n\n\t  if (!primitive)\n\t    res |= 0x20;\n\n\t  res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n\t  return res;\n\t}\n\n\n/***/ },\n/* 135 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n\t//\n\t// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n\t//\n\t// Originally from narwhal.js (http://narwhaljs.org)\n\t// Copyright (c) 2009 Thomas Robinson <280north.com>\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a copy\n\t// of this software and associated documentation files (the 'Software'), to\n\t// deal in the Software without restriction, including without limitation the\n\t// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n\t// sell copies of the Software, and to permit persons to whom the Software is\n\t// furnished to do so, subject to the following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included in\n\t// all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\t// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\t// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\t// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n\t// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n\t// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t// when used in node, this will actually load the util module we depend on\n\t// versus loading the builtin util module as happens otherwise\n\t// this is a bug in node module loading as far as I am concerned\n\tvar util = __webpack_require__(71);\n\n\tvar pSlice = Array.prototype.slice;\n\tvar hasOwn = Object.prototype.hasOwnProperty;\n\n\t// 1. The assert module provides functions that throw\n\t// AssertionError's when particular conditions are not met. The\n\t// assert module must conform to the following interface.\n\n\tvar assert = module.exports = ok;\n\n\t// 2. The AssertionError is defined in assert.\n\t// new assert.AssertionError({ message: message,\n\t//                             actual: actual,\n\t//                             expected: expected })\n\n\tassert.AssertionError = function AssertionError(options) {\n\t  this.name = 'AssertionError';\n\t  this.actual = options.actual;\n\t  this.expected = options.expected;\n\t  this.operator = options.operator;\n\t  if (options.message) {\n\t    this.message = options.message;\n\t    this.generatedMessage = false;\n\t  } else {\n\t    this.message = getMessage(this);\n\t    this.generatedMessage = true;\n\t  }\n\t  var stackStartFunction = options.stackStartFunction || fail;\n\n\t  if (Error.captureStackTrace) {\n\t    Error.captureStackTrace(this, stackStartFunction);\n\t  }\n\t  else {\n\t    // non v8 browsers so we can have a stacktrace\n\t    var err = new Error();\n\t    if (err.stack) {\n\t      var out = err.stack;\n\n\t      // try to strip useless frames\n\t      var fn_name = stackStartFunction.name;\n\t      var idx = out.indexOf('\\n' + fn_name);\n\t      if (idx >= 0) {\n\t        // once we have located the function frame\n\t        // we need to strip out everything before it (and its line)\n\t        var next_line = out.indexOf('\\n', idx + 1);\n\t        out = out.substring(next_line + 1);\n\t      }\n\n\t      this.stack = out;\n\t    }\n\t  }\n\t};\n\n\t// assert.AssertionError instanceof Error\n\tutil.inherits(assert.AssertionError, Error);\n\n\tfunction replacer(key, value) {\n\t  if (util.isUndefined(value)) {\n\t    return '' + value;\n\t  }\n\t  if (util.isNumber(value) && !isFinite(value)) {\n\t    return value.toString();\n\t  }\n\t  if (util.isFunction(value) || util.isRegExp(value)) {\n\t    return value.toString();\n\t  }\n\t  return value;\n\t}\n\n\tfunction truncate(s, n) {\n\t  if (util.isString(s)) {\n\t    return s.length < n ? s : s.slice(0, n);\n\t  } else {\n\t    return s;\n\t  }\n\t}\n\n\tfunction getMessage(self) {\n\t  return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +\n\t         self.operator + ' ' +\n\t         truncate(JSON.stringify(self.expected, replacer), 128);\n\t}\n\n\t// At present only the three keys mentioned above are used and\n\t// understood by the spec. Implementations or sub modules can pass\n\t// other keys to the AssertionError's constructor - they will be\n\t// ignored.\n\n\t// 3. All of the following functions must throw an AssertionError\n\t// when a corresponding condition is not met, with a message that\n\t// may be undefined if not provided.  All assertion methods provide\n\t// both the actual and expected values to the assertion error for\n\t// display purposes.\n\n\tfunction fail(actual, expected, message, operator, stackStartFunction) {\n\t  throw new assert.AssertionError({\n\t    message: message,\n\t    actual: actual,\n\t    expected: expected,\n\t    operator: operator,\n\t    stackStartFunction: stackStartFunction\n\t  });\n\t}\n\n\t// EXTENSION! allows for well behaved errors defined elsewhere.\n\tassert.fail = fail;\n\n\t// 4. Pure assertion tests whether a value is truthy, as determined\n\t// by !!guard.\n\t// assert.ok(guard, message_opt);\n\t// This statement is equivalent to assert.equal(true, !!guard,\n\t// message_opt);. To test strictly for the value true, use\n\t// assert.strictEqual(true, guard, message_opt);.\n\n\tfunction ok(value, message) {\n\t  if (!value) fail(value, true, message, '==', assert.ok);\n\t}\n\tassert.ok = ok;\n\n\t// 5. The equality assertion tests shallow, coercive equality with\n\t// ==.\n\t// assert.equal(actual, expected, message_opt);\n\n\tassert.equal = function equal(actual, expected, message) {\n\t  if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n\t};\n\n\t// 6. The non-equality assertion tests for whether two objects are not equal\n\t// with != assert.notEqual(actual, expected, message_opt);\n\n\tassert.notEqual = function notEqual(actual, expected, message) {\n\t  if (actual == expected) {\n\t    fail(actual, expected, message, '!=', assert.notEqual);\n\t  }\n\t};\n\n\t// 7. The equivalence assertion tests a deep equality relation.\n\t// assert.deepEqual(actual, expected, message_opt);\n\n\tassert.deepEqual = function deepEqual(actual, expected, message) {\n\t  if (!_deepEqual(actual, expected)) {\n\t    fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n\t  }\n\t};\n\n\tfunction _deepEqual(actual, expected) {\n\t  // 7.1. All identical values are equivalent, as determined by ===.\n\t  if (actual === expected) {\n\t    return true;\n\n\t  } else if (util.isBuffer(actual) && util.isBuffer(expected)) {\n\t    if (actual.length != expected.length) return false;\n\n\t    for (var i = 0; i < actual.length; i++) {\n\t      if (actual[i] !== expected[i]) return false;\n\t    }\n\n\t    return true;\n\n\t  // 7.2. If the expected value is a Date object, the actual value is\n\t  // equivalent if it is also a Date object that refers to the same time.\n\t  } else if (util.isDate(actual) && util.isDate(expected)) {\n\t    return actual.getTime() === expected.getTime();\n\n\t  // 7.3 If the expected value is a RegExp object, the actual value is\n\t  // equivalent if it is also a RegExp object with the same source and\n\t  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n\t  } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n\t    return actual.source === expected.source &&\n\t           actual.global === expected.global &&\n\t           actual.multiline === expected.multiline &&\n\t           actual.lastIndex === expected.lastIndex &&\n\t           actual.ignoreCase === expected.ignoreCase;\n\n\t  // 7.4. Other pairs that do not both pass typeof value == 'object',\n\t  // equivalence is determined by ==.\n\t  } else if (!util.isObject(actual) && !util.isObject(expected)) {\n\t    return actual == expected;\n\n\t  // 7.5 For all other Object pairs, including Array objects, equivalence is\n\t  // determined by having the same number of owned properties (as verified\n\t  // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t  // (although not necessarily the same order), equivalent values for every\n\t  // corresponding key, and an identical 'prototype' property. Note: this\n\t  // accounts for both named and indexed properties on Arrays.\n\t  } else {\n\t    return objEquiv(actual, expected);\n\t  }\n\t}\n\n\tfunction isArguments(object) {\n\t  return Object.prototype.toString.call(object) == '[object Arguments]';\n\t}\n\n\tfunction objEquiv(a, b) {\n\t  if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))\n\t    return false;\n\t  // an identical 'prototype' property.\n\t  if (a.prototype !== b.prototype) return false;\n\t  // if one is a primitive, the other must be same\n\t  if (util.isPrimitive(a) || util.isPrimitive(b)) {\n\t    return a === b;\n\t  }\n\t  var aIsArgs = isArguments(a),\n\t      bIsArgs = isArguments(b);\n\t  if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n\t    return false;\n\t  if (aIsArgs) {\n\t    a = pSlice.call(a);\n\t    b = pSlice.call(b);\n\t    return _deepEqual(a, b);\n\t  }\n\t  var ka = objectKeys(a),\n\t      kb = objectKeys(b),\n\t      key, i;\n\t  // having the same number of owned properties (keys incorporates\n\t  // hasOwnProperty)\n\t  if (ka.length != kb.length)\n\t    return false;\n\t  //the same set of keys (although not necessarily the same order),\n\t  ka.sort();\n\t  kb.sort();\n\t  //~~~cheap key test\n\t  for (i = ka.length - 1; i >= 0; i--) {\n\t    if (ka[i] != kb[i])\n\t      return false;\n\t  }\n\t  //equivalent values for every corresponding key, and\n\t  //~~~possibly expensive deep test\n\t  for (i = ka.length - 1; i >= 0; i--) {\n\t    key = ka[i];\n\t    if (!_deepEqual(a[key], b[key])) return false;\n\t  }\n\t  return true;\n\t}\n\n\t// 8. The non-equivalence assertion tests for any deep inequality.\n\t// assert.notDeepEqual(actual, expected, message_opt);\n\n\tassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n\t  if (_deepEqual(actual, expected)) {\n\t    fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n\t  }\n\t};\n\n\t// 9. The strict equality assertion tests strict equality, as determined by ===.\n\t// assert.strictEqual(actual, expected, message_opt);\n\n\tassert.strictEqual = function strictEqual(actual, expected, message) {\n\t  if (actual !== expected) {\n\t    fail(actual, expected, message, '===', assert.strictEqual);\n\t  }\n\t};\n\n\t// 10. The strict non-equality assertion tests for strict inequality, as\n\t// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);\n\n\tassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n\t  if (actual === expected) {\n\t    fail(actual, expected, message, '!==', assert.notStrictEqual);\n\t  }\n\t};\n\n\tfunction expectedException(actual, expected) {\n\t  if (!actual || !expected) {\n\t    return false;\n\t  }\n\n\t  if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n\t    return expected.test(actual);\n\t  } else if (actual instanceof expected) {\n\t    return true;\n\t  } else if (expected.call({}, actual) === true) {\n\t    return true;\n\t  }\n\n\t  return false;\n\t}\n\n\tfunction _throws(shouldThrow, block, expected, message) {\n\t  var actual;\n\n\t  if (util.isString(expected)) {\n\t    message = expected;\n\t    expected = null;\n\t  }\n\n\t  try {\n\t    block();\n\t  } catch (e) {\n\t    actual = e;\n\t  }\n\n\t  message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n\t            (message ? ' ' + message : '.');\n\n\t  if (shouldThrow && !actual) {\n\t    fail(actual, expected, 'Missing expected exception' + message);\n\t  }\n\n\t  if (!shouldThrow && expectedException(actual, expected)) {\n\t    fail(actual, expected, 'Got unwanted exception' + message);\n\t  }\n\n\t  if ((shouldThrow && actual && expected &&\n\t      !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n\t    throw actual;\n\t  }\n\t}\n\n\t// 11. Expected to throw an error:\n\t// assert.throws(block, Error_opt, message_opt);\n\n\tassert.throws = function(block, /*optional*/error, /*optional*/message) {\n\t  _throws.apply(this, [true].concat(pSlice.call(arguments)));\n\t};\n\n\t// EXTENSION! This is annoying to write outside this module.\n\tassert.doesNotThrow = function(block, /*optional*/message) {\n\t  _throws.apply(this, [false].concat(pSlice.call(arguments)));\n\t};\n\n\tassert.ifError = function(err) { if (err) {throw err;}};\n\n\tvar objectKeys = Object.keys || function (obj) {\n\t  var keys = [];\n\t  for (var key in obj) {\n\t    if (hasOwn.call(obj, key)) keys.push(key);\n\t  }\n\t  return keys;\n\t};\n\n\n/***/ },\n/* 136 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar hexTable = function () {\n\t    var array = new Array(256);\n\t    for (var i = 0; i < 256; ++i) {\n\t        array[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n\t    }\n\n\t    return array;\n\t}();\n\n\texports.arrayToObject = function (source, options) {\n\t    var obj = options.plainObjects ? Object.create(null) : {};\n\t    for (var i = 0; i < source.length; ++i) {\n\t        if (typeof source[i] !== 'undefined') {\n\t            obj[i] = source[i];\n\t        }\n\t    }\n\n\t    return obj;\n\t};\n\n\texports.merge = function (target, source, options) {\n\t    if (!source) {\n\t        return target;\n\t    }\n\n\t    if ((typeof source === 'undefined' ? 'undefined' : _typeof(source)) !== 'object') {\n\t        if (Array.isArray(target)) {\n\t            target.push(source);\n\t        } else if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object') {\n\t            target[source] = true;\n\t        } else {\n\t            return [target, source];\n\t        }\n\n\t        return target;\n\t    }\n\n\t    if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) !== 'object') {\n\t        return [target].concat(source);\n\t    }\n\n\t    var mergeTarget = target;\n\t    if (Array.isArray(target) && !Array.isArray(source)) {\n\t        mergeTarget = exports.arrayToObject(target, options);\n\t    }\n\n\t    return Object.keys(source).reduce(function (acc, key) {\n\t        var value = source[key];\n\n\t        if (Object.prototype.hasOwnProperty.call(acc, key)) {\n\t            acc[key] = exports.merge(acc[key], value, options);\n\t        } else {\n\t            acc[key] = value;\n\t        }\n\t        return acc;\n\t    }, mergeTarget);\n\t};\n\n\texports.decode = function (str) {\n\t    try {\n\t        return decodeURIComponent(str.replace(/\\+/g, ' '));\n\t    } catch (e) {\n\t        return str;\n\t    }\n\t};\n\n\texports.encode = function (str) {\n\t    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n\t    // It has been adapted here for stricter adherence to RFC 3986\n\t    if (str.length === 0) {\n\t        return str;\n\t    }\n\n\t    var string = typeof str === 'string' ? str : String(str);\n\n\t    var out = '';\n\t    for (var i = 0; i < string.length; ++i) {\n\t        var c = string.charCodeAt(i);\n\n\t        if (c === 0x2D || // -\n\t        c === 0x2E || // .\n\t        c === 0x5F || // _\n\t        c === 0x7E || // ~\n\t        c >= 0x30 && c <= 0x39 || // 0-9\n\t        c >= 0x41 && c <= 0x5A || // a-z\n\t        c >= 0x61 && c <= 0x7A // A-Z\n\t        ) {\n\t                out += string.charAt(i);\n\t                continue;\n\t            }\n\n\t        if (c < 0x80) {\n\t            out = out + hexTable[c];\n\t            continue;\n\t        }\n\n\t        if (c < 0x800) {\n\t            out = out + (hexTable[0xC0 | c >> 6] + hexTable[0x80 | c & 0x3F]);\n\t            continue;\n\t        }\n\n\t        if (c < 0xD800 || c >= 0xE000) {\n\t            out = out + (hexTable[0xE0 | c >> 12] + hexTable[0x80 | c >> 6 & 0x3F] + hexTable[0x80 | c & 0x3F]);\n\t            continue;\n\t        }\n\n\t        i += 1;\n\t        c = 0x10000 + ((c & 0x3FF) << 10 | string.charCodeAt(i) & 0x3FF);\n\t        out += hexTable[0xF0 | c >> 18] + hexTable[0x80 | c >> 12 & 0x3F] + hexTable[0x80 | c >> 6 & 0x3F] + hexTable[0x80 | c & 0x3F];\n\t    }\n\n\t    return out;\n\t};\n\n\texports.compact = function (obj, references) {\n\t    if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' || obj === null) {\n\t        return obj;\n\t    }\n\n\t    var refs = references || [];\n\t    var lookup = refs.indexOf(obj);\n\t    if (lookup !== -1) {\n\t        return refs[lookup];\n\t    }\n\n\t    refs.push(obj);\n\n\t    if (Array.isArray(obj)) {\n\t        var compacted = [];\n\n\t        for (var i = 0; i < obj.length; ++i) {\n\t            if (typeof obj[i] !== 'undefined') {\n\t                compacted.push(obj[i]);\n\t            }\n\t        }\n\n\t        return compacted;\n\t    }\n\n\t    var keys = Object.keys(obj);\n\t    for (var j = 0; j < keys.length; ++j) {\n\t        var key = keys[j];\n\t        obj[key] = exports.compact(obj[key], refs);\n\t    }\n\n\t    return obj;\n\t};\n\n\texports.isRegExp = function (obj) {\n\t    return Object.prototype.toString.call(obj) === '[object RegExp]';\n\t};\n\n\texports.isBuffer = function (obj) {\n\t    if (obj === null || typeof obj === 'undefined') {\n\t        return false;\n\t    }\n\n\t    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n\t};\n\n/***/ },\n/* 137 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process, Buffer) {'use strict';\n\n\t// Load modules\n\n\tvar Events = __webpack_require__(32);\n\tvar Url = __webpack_require__(207);\n\tvar Http = __webpack_require__(200);\n\tvar Https = __webpack_require__(480);\n\tvar Stream = __webpack_require__(12);\n\tvar Hoek = __webpack_require__(64);\n\tvar Boom = __webpack_require__(139);\n\tvar Payload = __webpack_require__(138);\n\tvar Recorder = __webpack_require__(223);\n\tvar Tap = __webpack_require__(224);\n\n\t// Declare internals\n\n\tvar internals = {\n\t    jsonRegex: /^application\\/[a-z.+-]*json$/,\n\t    shallowOptions: ['agent', 'payload', 'downstreamRes', 'beforeRedirect', 'redirected'],\n\t    emitSymbol: Symbol.for('wreck')\n\t};\n\n\tprocess[internals.emitSymbol] = process[internals.emitSymbol] || new Events.EventEmitter();\n\n\t// new instance is exported as module.exports\n\n\tinternals.Client = function (defaults) {\n\n\t    // Use a single emitter instance for events\n\t    Object.assign(this, process[internals.emitSymbol]);\n\n\t    this.agents = {\n\t        https: new Https.Agent({ maxSockets: Infinity }),\n\t        http: new Http.Agent({ maxSockets: Infinity }),\n\t        httpsAllowUnauthorized: new Https.Agent({ maxSockets: Infinity, rejectUnauthorized: false })\n\t    };\n\n\t    this._defaults = defaults || {};\n\t};\n\n\tHoek.inherits(internals.Client, Events.EventEmitter);\n\n\tinternals.Client.prototype.defaults = function (options) {\n\n\t    options = Hoek.applyToDefaultsWithShallow(options, this._defaults, internals.shallowOptions);\n\t    return new internals.Client(options);\n\t};\n\n\tinternals.resolveUrl = function (baseUrl, path) {\n\n\t    if (!path) {\n\t        return baseUrl;\n\t    }\n\n\t    var parsedBase = Url.parse(baseUrl);\n\t    var parsedPath = Url.parse(path);\n\n\t    parsedBase.pathname = parsedBase.pathname + parsedPath.pathname;\n\t    parsedBase.pathname = parsedBase.pathname.replace(/[/]{2,}/g, '/');\n\t    parsedBase.search = parsedPath.search; // Always use the querystring from the path argument\n\n\t    return Url.format(parsedBase);\n\t};\n\n\tinternals.Client.prototype.request = function (method, url, options, callback, _trace) {\n\t    var _this = this;\n\n\t    options = Hoek.applyToDefaultsWithShallow(this._defaults, options || {}, internals.shallowOptions);\n\n\t    Hoek.assert(options.payload === null || options.payload === undefined || typeof options.payload === 'string' || options.payload instanceof Stream || Buffer.isBuffer(options.payload), 'options.payload must be a string, a Buffer, or a Stream');\n\n\t    Hoek.assert(options.agent === undefined || options.agent === null || typeof options.rejectUnauthorized !== 'boolean', 'options.agent cannot be set to an Agent at the same time as options.rejectUnauthorized is set');\n\n\t    Hoek.assert(options.beforeRedirect === undefined || options.beforeRedirect === null || typeof options.beforeRedirect === 'function', 'options.beforeRedirect must be a function');\n\n\t    Hoek.assert(options.redirected === undefined || options.redirected === null || typeof options.redirected === 'function', 'options.redirected must be a function');\n\n\t    if (options.baseUrl) {\n\t        url = internals.resolveUrl(options.baseUrl, url);\n\t        delete options.baseUrl;\n\t    }\n\n\t    var uri = Url.parse(url);\n\n\t    if (options.socketPath) {\n\t        uri.socketPath = options.socketPath;\n\t        delete options.socketPath;\n\t    }\n\n\t    uri.method = method.toUpperCase();\n\t    uri.headers = options.headers || {};\n\t    var hasContentLength = Object.keys(uri.headers).some(function (key) {\n\n\t        return key.toLowerCase() === 'content-length';\n\t    });\n\n\t    var payloadSupported = uri.method !== 'GET' && uri.method !== 'HEAD' && options.payload !== null && options.payload !== undefined;\n\t    if (payloadSupported && (typeof options.payload === 'string' || Buffer.isBuffer(options.payload)) && !hasContentLength) {\n\n\t        uri.headers = Hoek.clone(uri.headers);\n\t        uri.headers['content-length'] = Buffer.isBuffer(options.payload) ? options.payload.length : Buffer.byteLength(options.payload);\n\t    }\n\n\t    var redirects = options.hasOwnProperty('redirects') ? options.redirects : false; // Needed to allow 0 as valid value when passed recursively\n\n\t    _trace = _trace || [];\n\t    _trace.push({ method: uri.method, url: url });\n\n\t    var client = uri.protocol === 'https:' ? Https : Http;\n\n\t    if (options.rejectUnauthorized !== undefined && uri.protocol === 'https:') {\n\t        uri.agent = options.rejectUnauthorized ? this.agents.https : this.agents.httpsAllowUnauthorized;\n\t    } else if (options.agent || options.agent === false) {\n\t        uri.agent = options.agent;\n\t    } else {\n\t        uri.agent = uri.protocol === 'https:' ? this.agents.https : this.agents.http;\n\t    }\n\n\t    if (options.secureProtocol !== undefined) {\n\t        uri.secureProtocol = options.secureProtocol;\n\t    }\n\n\t    this.emit('request', uri, options);\n\n\t    var start = Date.now();\n\t    var req = client.request(uri);\n\n\t    var shadow = null; // A copy of the streamed request payload when redirects are enabled\n\t    var timeoutId = void 0;\n\n\t    var onError = function onError(err) {\n\n\t        err.trace = _trace;\n\t        return finishOnce(Boom.badGateway('Client request error', err));\n\t    };\n\n\t    req.once('error', onError);\n\n\t    var onResponse = function onResponse(res) {\n\n\t        // Pass-through response\n\n\t        var statusCode = res.statusCode;\n\n\t        if (redirects === false || [301, 302, 307, 308].indexOf(statusCode) === -1) {\n\n\t            return finishOnce(null, res);\n\t        }\n\n\t        // Redirection\n\n\t        var redirectMethod = statusCode === 301 || statusCode === 302 ? 'GET' : uri.method;\n\t        var location = res.headers.location;\n\n\t        res.destroy();\n\n\t        if (redirects === 0) {\n\t            return finishOnce(Boom.badGateway('Maximum redirections reached', _trace));\n\t        }\n\n\t        if (!location) {\n\t            return finishOnce(Boom.badGateway('Received redirection without location', _trace));\n\t        }\n\n\t        if (!/^https?:/i.test(location)) {\n\t            location = Url.resolve(uri.href, location);\n\t        }\n\n\t        var redirectOptions = Hoek.cloneWithShallow(options, internals.shallowOptions);\n\n\t        redirectOptions.payload = shadow || options.payload; // shadow must be ready at this point if set\n\t        redirectOptions.redirects = --redirects;\n\n\t        if (options.beforeRedirect) {\n\t            options.beforeRedirect(redirectMethod, statusCode, location, redirectOptions);\n\t        }\n\n\t        var redirectReq = _this.request(redirectMethod, location, redirectOptions, finishOnce, _trace);\n\n\t        if (options.redirected) {\n\t            options.redirected(statusCode, location, redirectReq);\n\t        }\n\t    };\n\n\t    // Register handlers\n\n\t    var finish = function finish(err, res) {\n\n\t        if (!callback || err) {\n\t            req.abort();\n\t        }\n\n\t        req.removeListener('response', onResponse);\n\t        req.removeListener('error', onError);\n\t        req.on('error', Hoek.ignore);\n\t        clearTimeout(timeoutId);\n\t        _this.emit('response', err, req, res, start, uri);\n\n\t        if (callback) {\n\t            return callback(err, res);\n\t        }\n\t    };\n\n\t    var finishOnce = Hoek.once(finish);\n\n\t    req.once('response', onResponse);\n\n\t    if (options.timeout) {\n\t        timeoutId = setTimeout(function () {\n\n\t            return finishOnce(Boom.gatewayTimeout('Client request timeout'));\n\t        }, options.timeout);\n\t        delete options.timeout;\n\t    }\n\n\t    // Write payload\n\n\t    if (payloadSupported) {\n\t        if (options.payload instanceof Stream) {\n\t            var stream = options.payload;\n\n\t            if (redirects) {\n\t                (function () {\n\t                    var collector = new Tap();\n\t                    collector.once('finish', function () {\n\n\t                        shadow = collector.collect();\n\t                    });\n\n\t                    stream = options.payload.pipe(collector);\n\t                })();\n\t            }\n\n\t            stream.pipe(req);\n\t            return;\n\t        }\n\n\t        req.write(options.payload);\n\t    }\n\n\t    // Custom abort method to detect early aborts\n\n\t    var _abort = req.abort;\n\t    var aborted = false;\n\t    req.abort = function () {\n\n\t        if (!aborted && !req.res && !req.socket) {\n\t            process.nextTick(function () {\n\n\t                // Fake an ECONNRESET error\n\n\t                var error = new Error('socket hang up');\n\t                error.code = 'ECONNRESET';\n\t                finishOnce(error);\n\t            });\n\t        }\n\n\t        aborted = true;\n\t        return _abort.call(req);\n\t    };\n\n\t    // Finalize request\n\n\t    req.end();\n\n\t    return req;\n\t};\n\n\t// read()\n\n\tinternals.Client.prototype.read = function (res, options, callback) {\n\n\t    options = Hoek.applyToDefaultsWithShallow(options || {}, this._defaults, internals.shallowOptions);\n\n\t    // Set stream timeout\n\n\t    var clientTimeout = options.timeout;\n\t    var clientTimeoutId = null;\n\n\t    // Finish once\n\n\t    var finish = function finish(err, buffer) {\n\n\t        clearTimeout(clientTimeoutId);\n\t        reader.removeListener('error', onReaderError);\n\t        reader.removeListener('finish', onReaderFinish);\n\t        res.removeListener('error', onResError);\n\t        res.removeListener('close', onResClose);\n\t        res.on('error', Hoek.ignore);\n\n\t        if (err || !options.json) {\n\n\t            return callback(err, buffer);\n\t        }\n\n\t        // Parse JSON\n\n\t        var result = void 0;\n\t        if (buffer.length === 0) {\n\t            return callback(null, null);\n\t        }\n\n\t        if (options.json === 'force') {\n\t            result = internals.tryParseBuffer(buffer);\n\t            return callback(result.err, result.json);\n\t        }\n\n\t        // mode is \"smart\" or true\n\n\t        var contentType = res.headers && res.headers['content-type'] || '';\n\t        var mime = contentType.split(';')[0].trim().toLowerCase();\n\n\t        if (!internals.jsonRegex.test(mime)) {\n\t            return callback(null, buffer);\n\t        }\n\n\t        result = internals.tryParseBuffer(buffer);\n\t        return callback(result.err, result.json);\n\t    };\n\n\t    var finishOnce = Hoek.once(finish);\n\n\t    if (clientTimeout && clientTimeout > 0) {\n\n\t        clientTimeoutId = setTimeout(function () {\n\n\t            finishOnce(Boom.clientTimeout());\n\t        }, clientTimeout);\n\t    }\n\n\t    // Hander errors\n\n\t    var onResError = function onResError(err) {\n\n\t        return finishOnce(Boom.internal('Payload stream error', err));\n\t    };\n\n\t    var onResClose = function onResClose() {\n\n\t        return finishOnce(Boom.internal('Payload stream closed prematurely'));\n\t    };\n\n\t    res.once('error', onResError);\n\t    res.once('close', onResClose);\n\n\t    // Read payload\n\n\t    var reader = new Recorder({ maxBytes: options.maxBytes });\n\n\t    var onReaderError = function onReaderError(err) {\n\n\t        if (res.destroy) {\n\t            // GZip stream has no destroy() method\n\t            res.destroy();\n\t        }\n\n\t        return finishOnce(err);\n\t    };\n\n\t    reader.once('error', onReaderError);\n\n\t    var onReaderFinish = function onReaderFinish() {\n\n\t        return finishOnce(null, reader.collect());\n\t    };\n\n\t    reader.once('finish', onReaderFinish);\n\n\t    res.pipe(reader);\n\t};\n\n\t// toReadableStream()\n\n\tinternals.Client.prototype.toReadableStream = function (payload, encoding) {\n\n\t    return new Payload(payload, encoding);\n\t};\n\n\t// parseCacheControl()\n\n\tinternals.Client.prototype.parseCacheControl = function (field) {\n\n\t    /*\n\t        Cache-Control   = 1#cache-directive\n\t        cache-directive = token [ \"=\" ( token / quoted-string ) ]\n\t        token           = [^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+\n\t        quoted-string   = \"(?:[^\"\\\\]|\\\\.)*\"\n\t    */\n\n\t    //                             1: directive                                        =   2: token                                              3: quoted-string\n\t    var regex = /(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g;\n\n\t    var header = {};\n\t    var error = field.replace(regex, function ($0, $1, $2, $3) {\n\n\t        var value = $2 || $3;\n\t        header[$1] = value ? value.toLowerCase() : true;\n\t        return '';\n\t    });\n\n\t    if (header['max-age']) {\n\t        try {\n\t            var maxAge = parseInt(header['max-age'], 10);\n\t            if (isNaN(maxAge)) {\n\t                return null;\n\t            }\n\n\t            header['max-age'] = maxAge;\n\t        } catch (err) {}\n\t    }\n\n\t    return error ? null : header;\n\t};\n\n\t// Shortcuts\n\n\tinternals.Client.prototype.get = function (uri, options, callback) {\n\n\t    return this._shortcutWrap('GET', uri, options, callback);\n\t};\n\n\tinternals.Client.prototype.post = function (uri, options, callback) {\n\n\t    return this._shortcutWrap('POST', uri, options, callback);\n\t};\n\n\tinternals.Client.prototype.patch = function (uri, options, callback) {\n\n\t    return this._shortcutWrap('PATCH', uri, options, callback);\n\t};\n\n\tinternals.Client.prototype.put = function (uri, options, callback) {\n\n\t    return this._shortcutWrap('PUT', uri, options, callback);\n\t};\n\n\tinternals.Client.prototype.delete = function (uri, options, callback) {\n\n\t    return this._shortcutWrap('DELETE', uri, options, callback);\n\t};\n\n\t// Wrapper so that shortcut can be optimized with required params\n\n\tinternals.Client.prototype._shortcutWrap = function (method, uri /* [options], callback */) {\n\n\t    var options = typeof arguments[2] === 'function' ? {} : arguments[2];\n\t    var callback = typeof arguments[2] === 'function' ? arguments[2] : arguments[3];\n\n\t    return this._shortcut(method, uri, options, callback);\n\t};\n\n\tinternals.Client.prototype._shortcut = function (method, uri, options, callback) {\n\t    var _this2 = this;\n\n\t    return this.request(method, uri, options, function (err, res) {\n\n\t        if (err) {\n\t            return callback(err);\n\t        }\n\n\t        _this2.read(res, options, function (err, payload) {\n\n\t            return callback(err, res, payload);\n\t        });\n\t    });\n\t};\n\n\tinternals.tryParseBuffer = function (buffer) {\n\n\t    var result = {\n\t        json: null,\n\t        err: null\n\t    };\n\t    try {\n\t        var json = JSON.parse(buffer.toString());\n\t        result.json = json;\n\t    } catch (err) {\n\t        result.err = err;\n\t    }\n\t    return result;\n\t};\n\n\tmodule.exports = new internals.Client();\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8), __webpack_require__(1).Buffer))\n\n/***/ },\n/* 138 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\n\t// Load modules\n\n\tvar Hoek = __webpack_require__(64);\n\tvar Stream = __webpack_require__(12);\n\n\t// Declare internals\n\n\tvar internals = {};\n\n\tmodule.exports = internals.Payload = function (payload, encoding) {\n\n\t    Stream.Readable.call(this);\n\n\t    var data = [].concat(payload || '');\n\t    var size = 0;\n\t    for (var i = 0; i < data.length; ++i) {\n\t        var chunk = data[i];\n\t        size = size + chunk.length;\n\t        data[i] = Buffer.isBuffer(chunk) ? chunk : new Buffer(chunk);\n\t    }\n\n\t    this._data = Buffer.concat(data, size);\n\t    this._position = 0;\n\t    this._encoding = encoding || 'utf8';\n\t};\n\n\tHoek.inherits(internals.Payload, Stream.Readable);\n\n\tinternals.Payload.prototype._read = function (size) {\n\n\t    var chunk = this._data.slice(this._position, this._position + size);\n\t    this.push(chunk, this._encoding);\n\t    this._position = this._position + chunk.length;\n\n\t    if (this._position >= this._data.length) {\n\t        this.push(null);\n\t    }\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 139 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\t// Load modules\n\n\tvar Hoek = __webpack_require__(64);\n\n\t// Declare internals\n\n\tvar internals = {\n\t    STATUS_CODES: Object.setPrototypeOf({\n\t        '100': 'Continue',\n\t        '101': 'Switching Protocols',\n\t        '102': 'Processing',\n\t        '200': 'OK',\n\t        '201': 'Created',\n\t        '202': 'Accepted',\n\t        '203': 'Non-Authoritative Information',\n\t        '204': 'No Content',\n\t        '205': 'Reset Content',\n\t        '206': 'Partial Content',\n\t        '207': 'Multi-Status',\n\t        '300': 'Multiple Choices',\n\t        '301': 'Moved Permanently',\n\t        '302': 'Moved Temporarily',\n\t        '303': 'See Other',\n\t        '304': 'Not Modified',\n\t        '305': 'Use Proxy',\n\t        '307': 'Temporary Redirect',\n\t        '400': 'Bad Request',\n\t        '401': 'Unauthorized',\n\t        '402': 'Payment Required',\n\t        '403': 'Forbidden',\n\t        '404': 'Not Found',\n\t        '405': 'Method Not Allowed',\n\t        '406': 'Not Acceptable',\n\t        '407': 'Proxy Authentication Required',\n\t        '408': 'Request Time-out',\n\t        '409': 'Conflict',\n\t        '410': 'Gone',\n\t        '411': 'Length Required',\n\t        '412': 'Precondition Failed',\n\t        '413': 'Request Entity Too Large',\n\t        '414': 'Request-URI Too Large',\n\t        '415': 'Unsupported Media Type',\n\t        '416': 'Requested Range Not Satisfiable',\n\t        '417': 'Expectation Failed',\n\t        '418': 'I\\'m a teapot',\n\t        '422': 'Unprocessable Entity',\n\t        '423': 'Locked',\n\t        '424': 'Failed Dependency',\n\t        '425': 'Unordered Collection',\n\t        '426': 'Upgrade Required',\n\t        '428': 'Precondition Required',\n\t        '429': 'Too Many Requests',\n\t        '431': 'Request Header Fields Too Large',\n\t        '451': 'Unavailable For Legal Reasons',\n\t        '500': 'Internal Server Error',\n\t        '501': 'Not Implemented',\n\t        '502': 'Bad Gateway',\n\t        '503': 'Service Unavailable',\n\t        '504': 'Gateway Time-out',\n\t        '505': 'HTTP Version Not Supported',\n\t        '506': 'Variant Also Negotiates',\n\t        '507': 'Insufficient Storage',\n\t        '509': 'Bandwidth Limit Exceeded',\n\t        '510': 'Not Extended',\n\t        '511': 'Network Authentication Required'\n\t    }, null)\n\t};\n\n\texports.wrap = function (error, statusCode, message) {\n\n\t    Hoek.assert(error instanceof Error, 'Cannot wrap non-Error object');\n\t    return error.isBoom ? error : internals.initialize(error, statusCode || 500, message);\n\t};\n\n\texports.create = function (statusCode, message, data) {\n\n\t    return internals.create(statusCode, message, data, exports.create);\n\t};\n\n\tinternals.create = function (statusCode, message, data, ctor) {\n\n\t    var error = new Error(message ? message : undefined); // Avoids settings null message\n\t    Error.captureStackTrace(error, ctor); // Filter the stack to our external API\n\t    error.data = data || null;\n\t    internals.initialize(error, statusCode);\n\t    return error;\n\t};\n\n\tinternals.initialize = function (error, statusCode, message) {\n\n\t    var numberCode = parseInt(statusCode, 10);\n\t    Hoek.assert(!isNaN(numberCode) && numberCode >= 400, 'First argument must be a number (400+):', statusCode);\n\n\t    error.isBoom = true;\n\t    error.isServer = numberCode >= 500;\n\n\t    if (!error.hasOwnProperty('data')) {\n\t        error.data = null;\n\t    }\n\n\t    error.output = {\n\t        statusCode: numberCode,\n\t        payload: {},\n\t        headers: {}\n\t    };\n\n\t    error.reformat = internals.reformat;\n\t    error.reformat();\n\n\t    if (!message && !error.message) {\n\n\t        message = error.output.payload.error;\n\t    }\n\n\t    if (message) {\n\t        error.message = message + (error.message ? ': ' + error.message : '');\n\t    }\n\n\t    return error;\n\t};\n\n\tinternals.reformat = function () {\n\n\t    this.output.payload.statusCode = this.output.statusCode;\n\t    this.output.payload.error = internals.STATUS_CODES[this.output.statusCode] || 'Unknown';\n\n\t    if (this.output.statusCode === 500) {\n\t        this.output.payload.message = 'An internal server error occurred'; // Hide actual error from user\n\t    } else if (this.message) {\n\t            this.output.payload.message = this.message;\n\t        }\n\t};\n\n\t// 4xx Client Errors\n\n\texports.badRequest = function (message, data) {\n\n\t    return internals.create(400, message, data, exports.badRequest);\n\t};\n\n\texports.unauthorized = function (message, scheme, attributes) {\n\t    // Or function (message, wwwAuthenticate[])\n\n\t    var err = internals.create(401, message, undefined, exports.unauthorized);\n\n\t    if (!scheme) {\n\t        return err;\n\t    }\n\n\t    var wwwAuthenticate = '';\n\n\t    if (typeof scheme === 'string') {\n\n\t        // function (message, scheme, attributes)\n\n\t        wwwAuthenticate = scheme;\n\n\t        if (attributes || message) {\n\t            err.output.payload.attributes = {};\n\t        }\n\n\t        if (attributes) {\n\t            var names = Object.keys(attributes);\n\t            for (var i = 0; i < names.length; ++i) {\n\t                var name = names[i];\n\t                if (i) {\n\t                    wwwAuthenticate = wwwAuthenticate + ',';\n\t                }\n\n\t                var value = attributes[name];\n\t                if (value === null || value === undefined) {\n\t                    // Value can be zero\n\n\t                    value = '';\n\t                }\n\t                wwwAuthenticate = wwwAuthenticate + ' ' + name + '=\"' + Hoek.escapeHeaderAttribute(value.toString()) + '\"';\n\t                err.output.payload.attributes[name] = value;\n\t            }\n\t        }\n\n\t        if (message) {\n\t            if (attributes) {\n\t                wwwAuthenticate = wwwAuthenticate + ',';\n\t            }\n\t            wwwAuthenticate = wwwAuthenticate + ' error=\"' + Hoek.escapeHeaderAttribute(message) + '\"';\n\t            err.output.payload.attributes.error = message;\n\t        } else {\n\t            err.isMissing = true;\n\t        }\n\t    } else {\n\n\t        // function (message, wwwAuthenticate[])\n\n\t        var wwwArray = scheme;\n\t        for (var _i = 0; _i < wwwArray.length; ++_i) {\n\t            if (_i) {\n\t                wwwAuthenticate = wwwAuthenticate + ', ';\n\t            }\n\n\t            wwwAuthenticate = wwwAuthenticate + wwwArray[_i];\n\t        }\n\t    }\n\n\t    err.output.headers['WWW-Authenticate'] = wwwAuthenticate;\n\n\t    return err;\n\t};\n\n\texports.forbidden = function (message, data) {\n\n\t    return internals.create(403, message, data, exports.forbidden);\n\t};\n\n\texports.notFound = function (message, data) {\n\n\t    return internals.create(404, message, data, exports.notFound);\n\t};\n\n\texports.methodNotAllowed = function (message, data) {\n\n\t    return internals.create(405, message, data, exports.methodNotAllowed);\n\t};\n\n\texports.notAcceptable = function (message, data) {\n\n\t    return internals.create(406, message, data, exports.notAcceptable);\n\t};\n\n\texports.proxyAuthRequired = function (message, data) {\n\n\t    return internals.create(407, message, data, exports.proxyAuthRequired);\n\t};\n\n\texports.clientTimeout = function (message, data) {\n\n\t    return internals.create(408, message, data, exports.clientTimeout);\n\t};\n\n\texports.conflict = function (message, data) {\n\n\t    return internals.create(409, message, data, exports.conflict);\n\t};\n\n\texports.resourceGone = function (message, data) {\n\n\t    return internals.create(410, message, data, exports.resourceGone);\n\t};\n\n\texports.lengthRequired = function (message, data) {\n\n\t    return internals.create(411, message, data, exports.lengthRequired);\n\t};\n\n\texports.preconditionFailed = function (message, data) {\n\n\t    return internals.create(412, message, data, exports.preconditionFailed);\n\t};\n\n\texports.entityTooLarge = function (message, data) {\n\n\t    return internals.create(413, message, data, exports.entityTooLarge);\n\t};\n\n\texports.uriTooLong = function (message, data) {\n\n\t    return internals.create(414, message, data, exports.uriTooLong);\n\t};\n\n\texports.unsupportedMediaType = function (message, data) {\n\n\t    return internals.create(415, message, data, exports.unsupportedMediaType);\n\t};\n\n\texports.rangeNotSatisfiable = function (message, data) {\n\n\t    return internals.create(416, message, data, exports.rangeNotSatisfiable);\n\t};\n\n\texports.expectationFailed = function (message, data) {\n\n\t    return internals.create(417, message, data, exports.expectationFailed);\n\t};\n\n\texports.badData = function (message, data) {\n\n\t    return internals.create(422, message, data, exports.badData);\n\t};\n\n\texports.preconditionRequired = function (message, data) {\n\n\t    return internals.create(428, message, data, exports.preconditionRequired);\n\t};\n\n\texports.tooManyRequests = function (message, data) {\n\n\t    return internals.create(429, message, data, exports.tooManyRequests);\n\t};\n\n\texports.illegal = function (message, data) {\n\n\t    return internals.create(451, message, data, exports.illegal);\n\t};\n\n\t// 5xx Server Errors\n\n\texports.internal = function (message, data, statusCode) {\n\n\t    return internals.serverError(message, data, statusCode, exports.internal);\n\t};\n\n\tinternals.serverError = function (message, data, statusCode, ctor) {\n\n\t    var error = void 0;\n\t    if (data instanceof Error) {\n\t        error = exports.wrap(data, statusCode, message);\n\t    } else {\n\t        error = internals.create(statusCode || 500, message, undefined, ctor);\n\t        error.data = data;\n\t    }\n\n\t    return error;\n\t};\n\n\texports.notImplemented = function (message, data) {\n\n\t    return internals.serverError(message, data, 501, exports.notImplemented);\n\t};\n\n\texports.badGateway = function (message, data) {\n\n\t    return internals.serverError(message, data, 502, exports.badGateway);\n\t};\n\n\texports.serverTimeout = function (message, data) {\n\n\t    return internals.serverError(message, data, 503, exports.serverTimeout);\n\t};\n\n\texports.gatewayTimeout = function (message, data) {\n\n\t    return internals.serverError(message, data, 504, exports.gatewayTimeout);\n\t};\n\n\texports.badImplementation = function (message, data) {\n\n\t    var err = internals.serverError(message, data, 500, exports.badImplementation);\n\t    err.isDeveloperError = true;\n\t    return err;\n\t};\n\n/***/ },\n/* 140 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar r;\n\n\tmodule.exports = function rand(len) {\n\t  if (!r)\n\t    r = new Rand(null);\n\n\t  return r.generate(len);\n\t};\n\n\tfunction Rand(rand) {\n\t  this.rand = rand;\n\t}\n\tmodule.exports.Rand = Rand;\n\n\tRand.prototype.generate = function generate(len) {\n\t  return this._rand(len);\n\t};\n\n\tif (typeof window === 'object') {\n\t  if (window.crypto && window.crypto.getRandomValues) {\n\t    // Modern browsers\n\t    Rand.prototype._rand = function _rand(n) {\n\t      var arr = new Uint8Array(n);\n\t      window.crypto.getRandomValues(arr);\n\t      return arr;\n\t    };\n\t  } else if (window.msCrypto && window.msCrypto.getRandomValues) {\n\t    // IE\n\t    Rand.prototype._rand = function _rand(n) {\n\t      var arr = new Uint8Array(n);\n\t      window.msCrypto.getRandomValues(arr);\n\t      return arr;\n\t    };\n\t  } else {\n\t    // Old junk\n\t    Rand.prototype._rand = function() {\n\t      throw new Error('Not implemented yet');\n\t    };\n\t  }\n\t} else {\n\t  // Node.js or Web worker\n\t  try {\n\t    var crypto = __webpack_require__(180);\n\n\t    Rand.prototype._rand = function _rand(n) {\n\t      return crypto.randomBytes(n);\n\t    };\n\t  } catch (e) {\n\t    // Emulate crypto API using randy\n\t    Rand.prototype._rand = function _rand(n) {\n\t      var res = new Uint8Array(n);\n\t      for (var i = 0; i < res.length; i++)\n\t        res[i] = this.rand.getByte();\n\t      return res;\n\t    };\n\t  }\n\t}\n\n\n/***/ },\n/* 141 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(73)\n\tvar Transform = __webpack_require__(51)\n\tvar inherits = __webpack_require__(2)\n\tvar GHASH = __webpack_require__(258)\n\tvar xor = __webpack_require__(65)\n\tinherits(StreamCipher, Transform)\n\tmodule.exports = StreamCipher\n\n\tfunction StreamCipher (mode, key, iv, decrypt) {\n\t  if (!(this instanceof StreamCipher)) {\n\t    return new StreamCipher(mode, key, iv)\n\t  }\n\t  Transform.call(this)\n\t  this._finID = Buffer.concat([iv, new Buffer([0, 0, 0, 1])])\n\t  iv = Buffer.concat([iv, new Buffer([0, 0, 0, 2])])\n\t  this._cipher = new aes.AES(key)\n\t  this._prev = new Buffer(iv.length)\n\t  this._cache = new Buffer('')\n\t  this._secCache = new Buffer('')\n\t  this._decrypt = decrypt\n\t  this._alen = 0\n\t  this._len = 0\n\t  iv.copy(this._prev)\n\t  this._mode = mode\n\t  var h = new Buffer(4)\n\t  h.fill(0)\n\t  this._ghash = new GHASH(this._cipher.encryptBlock(h))\n\t  this._authTag = null\n\t  this._called = false\n\t}\n\tStreamCipher.prototype._update = function (chunk) {\n\t  if (!this._called && this._alen) {\n\t    var rump = 16 - (this._alen % 16)\n\t    if (rump < 16) {\n\t      rump = new Buffer(rump)\n\t      rump.fill(0)\n\t      this._ghash.update(rump)\n\t    }\n\t  }\n\t  this._called = true\n\t  var out = this._mode.encrypt(this, chunk)\n\t  if (this._decrypt) {\n\t    this._ghash.update(chunk)\n\t  } else {\n\t    this._ghash.update(out)\n\t  }\n\t  this._len += chunk.length\n\t  return out\n\t}\n\tStreamCipher.prototype._final = function () {\n\t  if (this._decrypt && !this._authTag) {\n\t    throw new Error('Unsupported state or unable to authenticate data')\n\t  }\n\t  var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n\t  if (this._decrypt) {\n\t    if (xorTest(tag, this._authTag)) {\n\t      throw new Error('Unsupported state or unable to authenticate data')\n\t    }\n\t  } else {\n\t    this._authTag = tag\n\t  }\n\t  this._cipher.scrub()\n\t}\n\tStreamCipher.prototype.getAuthTag = function getAuthTag () {\n\t  if (!this._decrypt && Buffer.isBuffer(this._authTag)) {\n\t    return this._authTag\n\t  } else {\n\t    throw new Error('Attempting to get auth tag in unsupported state')\n\t  }\n\t}\n\tStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n\t  if (this._decrypt) {\n\t    this._authTag = tag\n\t  } else {\n\t    throw new Error('Attempting to set auth tag in unsupported state')\n\t  }\n\t}\n\tStreamCipher.prototype.setAAD = function setAAD (buf) {\n\t  if (!this._called) {\n\t    this._ghash.update(buf)\n\t    this._alen += buf.length\n\t  } else {\n\t    throw new Error('Attempting to set AAD in unsupported state')\n\t  }\n\t}\n\tfunction xorTest (a, b) {\n\t  var out = 0\n\t  if (a.length !== b.length) {\n\t    out++\n\t  }\n\t  var len = Math.min(a.length, b.length)\n\t  var i = -1\n\t  while (++i < len) {\n\t    out += (a[i] ^ b[i])\n\t  }\n\t  return out\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 142 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar xor = __webpack_require__(65)\n\n\texports.encrypt = function (self, block) {\n\t  var data = xor(block, self._prev)\n\n\t  self._prev = self._cipher.encryptBlock(data)\n\t  return self._prev\n\t}\n\n\texports.decrypt = function (self, block) {\n\t  var pad = self._prev\n\n\t  self._prev = block\n\t  var out = self._cipher.decryptBlock(block)\n\n\t  return xor(out, pad)\n\t}\n\n\n/***/ },\n/* 143 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(65)\n\n\texports.encrypt = function (self, data, decrypt) {\n\t  var out = new Buffer('')\n\t  var len\n\n\t  while (data.length) {\n\t    if (self._cache.length === 0) {\n\t      self._cache = self._cipher.encryptBlock(self._prev)\n\t      self._prev = new Buffer('')\n\t    }\n\n\t    if (self._cache.length <= data.length) {\n\t      len = self._cache.length\n\t      out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n\t      data = data.slice(len)\n\t    } else {\n\t      out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n\t      break\n\t    }\n\t  }\n\n\t  return out\n\t}\n\tfunction encryptStart (self, data, decrypt) {\n\t  var len = data.length\n\t  var out = xor(data, self._cache)\n\t  self._cache = self._cache.slice(len)\n\t  self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n\t  return out\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 144 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {function encryptByte (self, byteParam, decrypt) {\n\t  var pad\n\t  var i = -1\n\t  var len = 8\n\t  var out = 0\n\t  var bit, value\n\t  while (++i < len) {\n\t    pad = self._cipher.encryptBlock(self._prev)\n\t    bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n\t    value = pad[0] ^ bit\n\t    out += ((value & 0x80) >> (i % 8))\n\t    self._prev = shiftIn(self._prev, decrypt ? bit : value)\n\t  }\n\t  return out\n\t}\n\texports.encrypt = function (self, chunk, decrypt) {\n\t  var len = chunk.length\n\t  var out = new Buffer(len)\n\t  var i = -1\n\t  while (++i < len) {\n\t    out[i] = encryptByte(self, chunk[i], decrypt)\n\t  }\n\t  return out\n\t}\n\tfunction shiftIn (buffer, value) {\n\t  var len = buffer.length\n\t  var i = -1\n\t  var out = new Buffer(buffer.length)\n\t  buffer = Buffer.concat([buffer, new Buffer([value])])\n\t  while (++i < len) {\n\t    out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n\t  }\n\t  return out\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 145 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {function encryptByte (self, byteParam, decrypt) {\n\t  var pad = self._cipher.encryptBlock(self._prev)\n\t  var out = pad[0] ^ byteParam\n\t  self._prev = Buffer.concat([self._prev.slice(1), new Buffer([decrypt ? byteParam : out])])\n\t  return out\n\t}\n\texports.encrypt = function (self, chunk, decrypt) {\n\t  var len = chunk.length\n\t  var out = new Buffer(len)\n\t  var i = -1\n\t  while (++i < len) {\n\t    out[i] = encryptByte(self, chunk[i], decrypt)\n\t  }\n\t  return out\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 146 */\n/***/ function(module, exports) {\n\n\texports.encrypt = function (self, block) {\n\t  return self._cipher.encryptBlock(block)\n\t}\n\texports.decrypt = function (self, block) {\n\t  return self._cipher.decryptBlock(block)\n\t}\n\n\n/***/ },\n/* 147 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(65)\n\n\tfunction getBlock (self) {\n\t  self._prev = self._cipher.encryptBlock(self._prev)\n\t  return self._prev\n\t}\n\n\texports.encrypt = function (self, chunk) {\n\t  while (self._cache.length < chunk.length) {\n\t    self._cache = Buffer.concat([self._cache, getBlock(self)])\n\t  }\n\n\t  var pad = self._cache.slice(0, chunk.length)\n\t  self._cache = self._cache.slice(chunk.length)\n\t  return xor(chunk, pad)\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 148 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(73)\n\tvar Transform = __webpack_require__(51)\n\tvar inherits = __webpack_require__(2)\n\n\tinherits(StreamCipher, Transform)\n\tmodule.exports = StreamCipher\n\tfunction StreamCipher (mode, key, iv, decrypt) {\n\t  if (!(this instanceof StreamCipher)) {\n\t    return new StreamCipher(mode, key, iv)\n\t  }\n\t  Transform.call(this)\n\t  this._cipher = new aes.AES(key)\n\t  this._prev = new Buffer(iv.length)\n\t  this._cache = new Buffer('')\n\t  this._secCache = new Buffer('')\n\t  this._decrypt = decrypt\n\t  iv.copy(this._prev)\n\t  this._mode = mode\n\t}\n\tStreamCipher.prototype._update = function (chunk) {\n\t  return this._mode.encrypt(this, chunk, this._decrypt)\n\t}\n\tStreamCipher.prototype._final = function () {\n\t  this._cipher.scrub()\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 149 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict'\n\texports['RSA-SHA224'] = exports.sha224WithRSAEncryption = {\n\t  sign: 'rsa',\n\t  hash: 'sha224',\n\t  id: new Buffer('302d300d06096086480165030402040500041c', 'hex')\n\t}\n\texports['RSA-SHA256'] = exports.sha256WithRSAEncryption = {\n\t  sign: 'rsa',\n\t  hash: 'sha256',\n\t  id: new Buffer('3031300d060960864801650304020105000420', 'hex')\n\t}\n\texports['RSA-SHA384'] = exports.sha384WithRSAEncryption = {\n\t  sign: 'rsa',\n\t  hash: 'sha384',\n\t  id: new Buffer('3041300d060960864801650304020205000430', 'hex')\n\t}\n\texports['RSA-SHA512'] = exports.sha512WithRSAEncryption = {\n\t  sign: 'rsa',\n\t  hash: 'sha512',\n\t  id: new Buffer('3051300d060960864801650304020305000440', 'hex')\n\t}\n\texports['RSA-SHA1'] = {\n\t  sign: 'rsa',\n\t  hash: 'sha1',\n\t  id: new Buffer('3021300906052b0e03021a05000414', 'hex')\n\t}\n\texports['ecdsa-with-SHA1'] = {\n\t  sign: 'ecdsa',\n\t  hash: 'sha1',\n\t  id: new Buffer('', 'hex')\n\t}\n\n\texports.DSA = exports['DSA-SHA1'] = exports['DSA-SHA'] = {\n\t  sign: 'dsa',\n\t  hash: 'sha1',\n\t  id: new Buffer('', 'hex')\n\t}\n\texports['DSA-SHA224'] = exports['DSA-WITH-SHA224'] = {\n\t  sign: 'dsa',\n\t  hash: 'sha224',\n\t  id: new Buffer('', 'hex')\n\t}\n\texports['DSA-SHA256'] = exports['DSA-WITH-SHA256'] = {\n\t  sign: 'dsa',\n\t  hash: 'sha256',\n\t  id: new Buffer('', 'hex')\n\t}\n\texports['DSA-SHA384'] = exports['DSA-WITH-SHA384'] = {\n\t  sign: 'dsa',\n\t  hash: 'sha384',\n\t  id: new Buffer('', 'hex')\n\t}\n\texports['DSA-SHA512'] = exports['DSA-WITH-SHA512'] = {\n\t  sign: 'dsa',\n\t  hash: 'sha512',\n\t  id: new Buffer('', 'hex')\n\t}\n\texports['DSA-RIPEMD160'] = {\n\t  sign: 'dsa',\n\t  hash: 'rmd160',\n\t  id: new Buffer('', 'hex')\n\t}\n\texports['RSA-RIPEMD160'] = exports.ripemd160WithRSA = {\n\t  sign: 'rsa',\n\t  hash: 'rmd160',\n\t  id: new Buffer('3021300906052b2403020105000414', 'hex')\n\t}\n\texports['RSA-MD5'] = exports.md5WithRSAEncryption = {\n\t  sign: 'rsa',\n\t  hash: 'md5',\n\t  id: new Buffer('3020300c06082a864886f70d020505000410', 'hex')\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 150 */\n/***/ function(module, exports) {\n\n\t'use strict'\n\texports['1.3.132.0.10'] = 'secp256k1'\n\n\texports['1.3.132.0.33'] = 'p224'\n\n\texports['1.2.840.10045.3.1.1'] = 'p192'\n\n\texports['1.2.840.10045.3.1.7'] = 'p256'\n\n\texports['1.3.132.0.34'] = 'p384'\n\n\texports['1.3.132.0.35'] = 'p521'\n\n\n/***/ },\n/* 151 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar cof = __webpack_require__(26);\r\n\tmodule.exports = function(it, msg){\r\n\t  if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg);\r\n\t  return +it;\r\n\t};\n\n/***/ },\n/* 152 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n\t'use strict';\n\tvar toObject = __webpack_require__(14)\n\t  , toIndex  = __webpack_require__(46)\n\t  , toLength = __webpack_require__(13);\n\n\tmodule.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){\n\t  var O     = toObject(this)\n\t    , len   = toLength(O.length)\n\t    , to    = toIndex(target, len)\n\t    , from  = toIndex(start, len)\n\t    , end   = arguments.length > 2 ? arguments[2] : undefined\n\t    , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)\n\t    , inc   = 1;\n\t  if(from < to && to < from + count){\n\t    inc  = -1;\n\t    from += count - 1;\n\t    to   += count - 1;\n\t  }\n\t  while(count-- > 0){\n\t    if(from in O)O[to] = O[from];\n\t    else delete O[to];\n\t    to   += inc;\n\t    from += inc;\n\t  } return O;\n\t};\n\n/***/ },\n/* 153 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar forOf = __webpack_require__(66);\n\n\tmodule.exports = function(iter, ITERATOR){\n\t  var result = [];\n\t  forOf(iter, false, result.push, result, ITERATOR);\n\t  return result;\n\t};\n\n\n/***/ },\n/* 154 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar aFunction = __webpack_require__(25)\r\n\t  , toObject  = __webpack_require__(14)\r\n\t  , IObject   = __webpack_require__(67)\r\n\t  , toLength  = __webpack_require__(13);\r\n\r\n\tmodule.exports = function(that, callbackfn, aLen, memo, isRight){\r\n\t  aFunction(callbackfn);\r\n\t  var O      = toObject(that)\r\n\t    , self   = IObject(O)\r\n\t    , length = toLength(O.length)\r\n\t    , index  = isRight ? length - 1 : 0\r\n\t    , i      = isRight ? -1 : 1;\r\n\t  if(aLen < 2)for(;;){\r\n\t    if(index in self){\r\n\t      memo = self[index];\r\n\t      index += i;\r\n\t      break;\r\n\t    }\r\n\t    index += i;\r\n\t    if(isRight ? index < 0 : length <= index){\r\n\t      throw TypeError('Reduce of empty array with no initial value');\r\n\t    }\r\n\t  }\r\n\t  for(;isRight ? index >= 0 : length > index; index += i)if(index in self){\r\n\t    memo = callbackfn(memo, self[index], index, O);\r\n\t  }\r\n\t  return memo;\r\n\t};\n\n/***/ },\n/* 155 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar aFunction  = __webpack_require__(25)\n\t  , isObject   = __webpack_require__(6)\n\t  , invoke     = __webpack_require__(80)\n\t  , arraySlice = [].slice\n\t  , factories  = {};\n\n\tvar construct = function(F, len, args){\n\t  if(!(len in factories)){\n\t    for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';\n\t    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n\t  } return factories[len](F, args);\n\t};\n\n\tmodule.exports = Function.bind || function bind(that /*, args... */){\n\t  var fn       = aFunction(this)\n\t    , partArgs = arraySlice.call(arguments, 1);\n\t  var bound = function(/* args... */){\n\t    var args = partArgs.concat(arraySlice.call(arguments));\n\t    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n\t  };\n\t  if(isObject(fn.prototype))bound.prototype = fn.prototype;\n\t  return bound;\n\t};\n\n/***/ },\n/* 156 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar dP          = __webpack_require__(10).f\n\t  , create      = __webpack_require__(43)\n\t  , hide        = __webpack_require__(19)\n\t  , redefineAll = __webpack_require__(54)\n\t  , ctx         = __webpack_require__(34)\n\t  , anInstance  = __webpack_require__(40)\n\t  , defined     = __webpack_require__(27)\n\t  , forOf       = __webpack_require__(66)\n\t  , $iterDefine = __webpack_require__(106)\n\t  , step        = __webpack_require__(161)\n\t  , setSpecies  = __webpack_require__(55)\n\t  , DESCRIPTORS = __webpack_require__(9)\n\t  , fastKey     = __webpack_require__(37).fastKey\n\t  , SIZE        = DESCRIPTORS ? '_s' : 'size';\n\n\tvar getEntry = function(that, key){\n\t  // fast case\n\t  var index = fastKey(key), entry;\n\t  if(index !== 'F')return that._i[index];\n\t  // frozen object case\n\t  for(entry = that._f; entry; entry = entry.n){\n\t    if(entry.k == key)return entry;\n\t  }\n\t};\n\n\tmodule.exports = {\n\t  getConstructor: function(wrapper, NAME, IS_MAP, ADDER){\n\t    var C = wrapper(function(that, iterable){\n\t      anInstance(that, C, NAME, '_i');\n\t      that._i = create(null); // index\n\t      that._f = undefined;    // first entry\n\t      that._l = undefined;    // last entry\n\t      that[SIZE] = 0;         // size\n\t      if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);\n\t    });\n\t    redefineAll(C.prototype, {\n\t      // 23.1.3.1 Map.prototype.clear()\n\t      // 23.2.3.2 Set.prototype.clear()\n\t      clear: function clear(){\n\t        for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){\n\t          entry.r = true;\n\t          if(entry.p)entry.p = entry.p.n = undefined;\n\t          delete data[entry.i];\n\t        }\n\t        that._f = that._l = undefined;\n\t        that[SIZE] = 0;\n\t      },\n\t      // 23.1.3.3 Map.prototype.delete(key)\n\t      // 23.2.3.4 Set.prototype.delete(value)\n\t      'delete': function(key){\n\t        var that  = this\n\t          , entry = getEntry(that, key);\n\t        if(entry){\n\t          var next = entry.n\n\t            , prev = entry.p;\n\t          delete that._i[entry.i];\n\t          entry.r = true;\n\t          if(prev)prev.n = next;\n\t          if(next)next.p = prev;\n\t          if(that._f == entry)that._f = next;\n\t          if(that._l == entry)that._l = prev;\n\t          that[SIZE]--;\n\t        } return !!entry;\n\t      },\n\t      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n\t      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n\t      forEach: function forEach(callbackfn /*, that = undefined */){\n\t        anInstance(this, C, 'forEach');\n\t        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)\n\t          , entry;\n\t        while(entry = entry ? entry.n : this._f){\n\t          f(entry.v, entry.k, this);\n\t          // revert to the last existing entry\n\t          while(entry && entry.r)entry = entry.p;\n\t        }\n\t      },\n\t      // 23.1.3.7 Map.prototype.has(key)\n\t      // 23.2.3.7 Set.prototype.has(value)\n\t      has: function has(key){\n\t        return !!getEntry(this, key);\n\t      }\n\t    });\n\t    if(DESCRIPTORS)dP(C.prototype, 'size', {\n\t      get: function(){\n\t        return defined(this[SIZE]);\n\t      }\n\t    });\n\t    return C;\n\t  },\n\t  def: function(that, key, value){\n\t    var entry = getEntry(that, key)\n\t      , prev, index;\n\t    // change existing entry\n\t    if(entry){\n\t      entry.v = value;\n\t    // create new entry\n\t    } else {\n\t      that._l = entry = {\n\t        i: index = fastKey(key, true), // <- index\n\t        k: key,                        // <- key\n\t        v: value,                      // <- value\n\t        p: prev = that._l,             // <- previous entry\n\t        n: undefined,                  // <- next entry\n\t        r: false                       // <- removed\n\t      };\n\t      if(!that._f)that._f = entry;\n\t      if(prev)prev.n = entry;\n\t      that[SIZE]++;\n\t      // add to index\n\t      if(index !== 'F')that._i[index] = entry;\n\t    } return that;\n\t  },\n\t  getEntry: getEntry,\n\t  setStrong: function(C, NAME, IS_MAP){\n\t    // add .keys, .values, .entries, [@@iterator]\n\t    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n\t    $iterDefine(C, NAME, function(iterated, kind){\n\t      this._t = iterated;  // target\n\t      this._k = kind;      // kind\n\t      this._l = undefined; // previous\n\t    }, function(){\n\t      var that  = this\n\t        , kind  = that._k\n\t        , entry = that._l;\n\t      // revert to the last existing entry\n\t      while(entry && entry.r)entry = entry.p;\n\t      // get next entry\n\t      if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){\n\t        // or finish the iteration\n\t        that._t = undefined;\n\t        return step(1);\n\t      }\n\t      // return step by kind\n\t      if(kind == 'keys'  )return step(0, entry.k);\n\t      if(kind == 'values')return step(0, entry.v);\n\t      return step(0, [entry.k, entry.v]);\n\t    }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);\n\n\t    // add [@@species], 23.1.2.2, 23.2.2.2\n\t    setSpecies(NAME);\n\t  }\n\t};\n\n/***/ },\n/* 157 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/DavidBruant/Map-Set.prototype.toJSON\n\tvar classof = __webpack_require__(53)\n\t  , from    = __webpack_require__(153);\n\tmodule.exports = function(NAME){\n\t  return function toJSON(){\n\t    if(classof(this) != NAME)throw TypeError(NAME + \"#toJSON isn't generic\");\n\t    return from(this);\n\t  };\n\t};\n\n/***/ },\n/* 158 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar redefineAll       = __webpack_require__(54)\n\t  , getWeak           = __webpack_require__(37).getWeak\n\t  , anObject          = __webpack_require__(3)\n\t  , isObject          = __webpack_require__(6)\n\t  , anInstance        = __webpack_require__(40)\n\t  , forOf             = __webpack_require__(66)\n\t  , createArrayMethod = __webpack_require__(29)\n\t  , $has              = __webpack_require__(16)\n\t  , arrayFind         = createArrayMethod(5)\n\t  , arrayFindIndex    = createArrayMethod(6)\n\t  , id                = 0;\n\n\t// fallback for uncaught frozen keys\n\tvar uncaughtFrozenStore = function(that){\n\t  return that._l || (that._l = new UncaughtFrozenStore);\n\t};\n\tvar UncaughtFrozenStore = function(){\n\t  this.a = [];\n\t};\n\tvar findUncaughtFrozen = function(store, key){\n\t  return arrayFind(store.a, function(it){\n\t    return it[0] === key;\n\t  });\n\t};\n\tUncaughtFrozenStore.prototype = {\n\t  get: function(key){\n\t    var entry = findUncaughtFrozen(this, key);\n\t    if(entry)return entry[1];\n\t  },\n\t  has: function(key){\n\t    return !!findUncaughtFrozen(this, key);\n\t  },\n\t  set: function(key, value){\n\t    var entry = findUncaughtFrozen(this, key);\n\t    if(entry)entry[1] = value;\n\t    else this.a.push([key, value]);\n\t  },\n\t  'delete': function(key){\n\t    var index = arrayFindIndex(this.a, function(it){\n\t      return it[0] === key;\n\t    });\n\t    if(~index)this.a.splice(index, 1);\n\t    return !!~index;\n\t  }\n\t};\n\n\tmodule.exports = {\n\t  getConstructor: function(wrapper, NAME, IS_MAP, ADDER){\n\t    var C = wrapper(function(that, iterable){\n\t      anInstance(that, C, NAME, '_i');\n\t      that._i = id++;      // collection id\n\t      that._l = undefined; // leak store for uncaught frozen objects\n\t      if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);\n\t    });\n\t    redefineAll(C.prototype, {\n\t      // 23.3.3.2 WeakMap.prototype.delete(key)\n\t      // 23.4.3.3 WeakSet.prototype.delete(value)\n\t      'delete': function(key){\n\t        if(!isObject(key))return false;\n\t        var data = getWeak(key);\n\t        if(data === true)return uncaughtFrozenStore(this)['delete'](key);\n\t        return data && $has(data, this._i) && delete data[this._i];\n\t      },\n\t      // 23.3.3.4 WeakMap.prototype.has(key)\n\t      // 23.4.3.4 WeakSet.prototype.has(value)\n\t      has: function has(key){\n\t        if(!isObject(key))return false;\n\t        var data = getWeak(key);\n\t        if(data === true)return uncaughtFrozenStore(this).has(key);\n\t        return data && $has(data, this._i);\n\t      }\n\t    });\n\t    return C;\n\t  },\n\t  def: function(that, key, value){\n\t    var data = getWeak(anObject(key), true);\n\t    if(data === true)uncaughtFrozenStore(that).set(key, value);\n\t    else data[that._i] = value;\n\t    return that;\n\t  },\n\t  ufstore: uncaughtFrozenStore\n\t};\n\n/***/ },\n/* 159 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = !__webpack_require__(9) && !__webpack_require__(4)(function(){\r\n\t  return Object.defineProperty(__webpack_require__(97)('div'), 'a', {get: function(){ return 7; }}).a != 7;\r\n\t});\n\n/***/ },\n/* 160 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// call something on iterator step with safe closing on error\n\tvar anObject = __webpack_require__(3);\n\tmodule.exports = function(iterator, fn, value, entries){\n\t  try {\n\t    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n\t  // 7.4.6 IteratorClose(iterator, completion)\n\t  } catch(e){\n\t    var ret = iterator['return'];\n\t    if(ret !== undefined)anObject(ret.call(iterator));\n\t    throw e;\n\t  }\n\t};\n\n/***/ },\n/* 161 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(done, value){\n\t  return {value: value, done: !!done};\n\t};\n\n/***/ },\n/* 162 */\n/***/ function(module, exports) {\n\n\t// 20.2.2.20 Math.log1p(x)\n\tmodule.exports = Math.log1p || function log1p(x){\n\t  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n\t};\n\n/***/ },\n/* 163 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global    = __webpack_require__(5)\n\t  , macrotask = __webpack_require__(115).set\n\t  , Observer  = global.MutationObserver || global.WebKitMutationObserver\n\t  , process   = global.process\n\t  , Promise   = global.Promise\n\t  , isNode    = __webpack_require__(26)(process) == 'process';\n\n\tmodule.exports = function(){\n\t  var head, last, notify;\n\n\t  var flush = function(){\n\t    var parent, fn;\n\t    if(isNode && (parent = process.domain))parent.exit();\n\t    while(head){\n\t      fn   = head.fn;\n\t      head = head.next;\n\t      try {\n\t        fn();\n\t      } catch(e){\n\t        if(head)notify();\n\t        else last = undefined;\n\t        throw e;\n\t      }\n\t    } last = undefined;\n\t    if(parent)parent.enter();\n\t  };\n\n\t  // Node.js\n\t  if(isNode){\n\t    notify = function(){\n\t      process.nextTick(flush);\n\t    };\n\t  // browsers with MutationObserver\n\t  } else if(Observer){\n\t    var toggle = true\n\t      , node   = document.createTextNode('');\n\t    new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new\n\t    notify = function(){\n\t      node.data = toggle = !toggle;\n\t    };\n\t  // environments with maybe non-completely correct, but existent Promise\n\t  } else if(Promise && Promise.resolve){\n\t    var promise = Promise.resolve();\n\t    notify = function(){\n\t      promise.then(flush);\n\t    };\n\t  // for other environments - macrotask based on:\n\t  // - setImmediate\n\t  // - MessageChannel\n\t  // - window.postMessag\n\t  // - onreadystatechange\n\t  // - setTimeout\n\t  } else {\n\t    notify = function(){\n\t      // strange IE + webpack dev server bug - use .call(global)\n\t      macrotask.call(global, flush);\n\t    };\n\t  }\n\n\t  return function(fn){\n\t    var task = {fn: fn, next: undefined};\n\t    if(last)last.next = task;\n\t    if(!head){\n\t      head = task;\n\t      notify();\n\t    } last = task;\n\t  };\n\t};\n\n/***/ },\n/* 164 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 19.1.2.1 Object.assign(target, source, ...)\n\tvar getKeys  = __webpack_require__(45)\n\t  , gOPS     = __webpack_require__(84)\n\t  , pIE      = __webpack_require__(68)\n\t  , toObject = __webpack_require__(14)\n\t  , IObject  = __webpack_require__(67)\n\t  , $assign  = Object.assign;\n\n\t// should work with symbols and should have deterministic property order (V8 bug)\n\tmodule.exports = !$assign || __webpack_require__(4)(function(){\n\t  var A = {}\n\t    , B = {}\n\t    , S = Symbol()\n\t    , K = 'abcdefghijklmnopqrst';\n\t  A[S] = 7;\n\t  K.split('').forEach(function(k){ B[k] = k; });\n\t  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n\t}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n\t  var T     = toObject(target)\n\t    , aLen  = arguments.length\n\t    , index = 1\n\t    , getSymbols = gOPS.f\n\t    , isEnum     = pIE.f;\n\t  while(aLen > index){\n\t    var S      = IObject(arguments[index++])\n\t      , keys   = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n\t      , length = keys.length\n\t      , j      = 0\n\t      , key;\n\t    while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n\t  } return T;\n\t} : $assign;\n\n/***/ },\n/* 165 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dP       = __webpack_require__(10)\r\n\t  , anObject = __webpack_require__(3)\r\n\t  , getKeys  = __webpack_require__(45);\r\n\r\n\tmodule.exports = __webpack_require__(9) ? Object.defineProperties : function defineProperties(O, Properties){\r\n\t  anObject(O);\r\n\t  var keys   = getKeys(Properties)\r\n\t    , length = keys.length\r\n\t    , i = 0\r\n\t    , P;\r\n\t  while(length > i)dP.f(O, P = keys[i++], Properties[P]);\r\n\t  return O;\r\n\t};\n\n/***/ },\n/* 166 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n\tvar toIObject = __webpack_require__(22)\n\t  , gOPN      = __webpack_require__(44).f\n\t  , toString  = {}.toString;\n\n\tvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n\t  ? Object.getOwnPropertyNames(window) : [];\n\n\tvar getWindowNames = function(it){\n\t  try {\n\t    return gOPN(it);\n\t  } catch(e){\n\t    return windowNames.slice();\n\t  }\n\t};\n\n\tmodule.exports.f = function getOwnPropertyNames(it){\n\t  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n\t};\n\n\n/***/ },\n/* 167 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar has          = __webpack_require__(16)\r\n\t  , toIObject    = __webpack_require__(22)\r\n\t  , arrayIndexOf = __webpack_require__(76)(false)\r\n\t  , IE_PROTO     = __webpack_require__(109)('IE_PROTO');\r\n\r\n\tmodule.exports = function(object, names){\r\n\t  var O      = toIObject(object)\r\n\t    , i      = 0\r\n\t    , result = []\r\n\t    , key;\r\n\t  for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\r\n\t  // Don't enum bug & hidden keys\r\n\t  while(names.length > i)if(has(O, key = names[i++])){\r\n\t    ~arrayIndexOf(result, key) || result.push(key);\r\n\t  }\r\n\t  return result;\r\n\t};\n\n/***/ },\n/* 168 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getKeys   = __webpack_require__(45)\n\t  , toIObject = __webpack_require__(22)\n\t  , isEnum    = __webpack_require__(68).f;\n\tmodule.exports = function(isEntries){\n\t  return function(it){\n\t    var O      = toIObject(it)\n\t      , keys   = getKeys(O)\n\t      , length = keys.length\n\t      , i      = 0\n\t      , result = []\n\t      , key;\n\t    while(length > i)if(isEnum.call(O, key = keys[i++])){\n\t      result.push(isEntries ? [key, O[key]] : O[key]);\n\t    } return result;\n\t  };\n\t};\n\n/***/ },\n/* 169 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// all object keys, includes non-enumerable and symbols\n\tvar gOPN     = __webpack_require__(44)\n\t  , gOPS     = __webpack_require__(84)\n\t  , anObject = __webpack_require__(3)\n\t  , Reflect  = __webpack_require__(5).Reflect;\n\tmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it){\n\t  var keys       = gOPN.f(anObject(it))\n\t    , getSymbols = gOPS.f;\n\t  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n\t};\n\n/***/ },\n/* 170 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $parseFloat = __webpack_require__(5).parseFloat\n\t  , $trim       = __webpack_require__(57).trim;\n\n\tmodule.exports = 1 / $parseFloat(__webpack_require__(114) + '-0') !== -Infinity ? function parseFloat(str){\n\t  var string = $trim(String(str), 3)\n\t    , result = $parseFloat(string);\n\t  return result === 0 && string.charAt(0) == '-' ? -0 : result;\n\t} : $parseFloat;\n\n/***/ },\n/* 171 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $parseInt = __webpack_require__(5).parseInt\n\t  , $trim     = __webpack_require__(57).trim\n\t  , ws        = __webpack_require__(114)\n\t  , hex       = /^[\\-+]?0[xX]/;\n\n\tmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){\n\t  var string = $trim(String(str), 3);\n\t  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n\t} : $parseInt;\n\n/***/ },\n/* 172 */\n/***/ function(module, exports) {\n\n\t// 7.2.9 SameValue(x, y)\n\tmodule.exports = Object.is || function is(x, y){\n\t  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n\t};\n\n/***/ },\n/* 173 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/tc39/proposal-string-pad-start-end\n\tvar toLength = __webpack_require__(13)\n\t  , repeat   = __webpack_require__(113)\n\t  , defined  = __webpack_require__(27);\n\n\tmodule.exports = function(that, maxLength, fillString, left){\n\t  var S            = String(defined(that))\n\t    , stringLength = S.length\n\t    , fillStr      = fillString === undefined ? ' ' : String(fillString)\n\t    , intMaxLength = toLength(maxLength);\n\t  if(intMaxLength <= stringLength || fillStr == '')return S;\n\t  var fillLen = intMaxLength - stringLength\n\t    , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n\t  if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);\n\t  return left ? stringFiller + S : S + stringFiller;\n\t};\n\n\n/***/ },\n/* 174 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports.f = __webpack_require__(7);\n\n/***/ },\n/* 175 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar strong = __webpack_require__(156);\n\n\t// 23.1 Map Objects\n\tmodule.exports = __webpack_require__(77)('Map', function(get){\n\t  return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n\t}, {\n\t  // 23.1.3.6 Map.prototype.get(key)\n\t  get: function get(key){\n\t    var entry = strong.getEntry(this, key);\n\t    return entry && entry.v;\n\t  },\n\t  // 23.1.3.9 Map.prototype.set(key, value)\n\t  set: function set(key, value){\n\t    return strong.def(this, key === 0 ? 0 : key, value);\n\t  }\n\t}, strong, true);\n\n/***/ },\n/* 176 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 21.2.5.3 get RegExp.prototype.flags()\n\tif(__webpack_require__(9) && /./g.flags != 'g')__webpack_require__(10).f(RegExp.prototype, 'flags', {\n\t  configurable: true,\n\t  get: __webpack_require__(79)\n\t});\n\n/***/ },\n/* 177 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar strong = __webpack_require__(156);\n\n\t// 23.2 Set Objects\n\tmodule.exports = __webpack_require__(77)('Set', function(get){\n\t  return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n\t}, {\n\t  // 23.2.3.1 Set.prototype.add(value)\n\t  add: function add(value){\n\t    return strong.def(this, value = value === 0 ? 0 : value, value);\n\t  }\n\t}, strong);\n\n/***/ },\n/* 178 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar each         = __webpack_require__(29)(0)\n\t  , redefine     = __webpack_require__(20)\n\t  , meta         = __webpack_require__(37)\n\t  , assign       = __webpack_require__(164)\n\t  , weak         = __webpack_require__(158)\n\t  , isObject     = __webpack_require__(6)\n\t  , has          = __webpack_require__(16)\n\t  , getWeak      = meta.getWeak\n\t  , isExtensible = Object.isExtensible\n\t  , uncaughtFrozenStore = weak.ufstore\n\t  , tmp          = {}\n\t  , InternalMap;\n\n\tvar wrapper = function(get){\n\t  return function WeakMap(){\n\t    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n\t  };\n\t};\n\n\tvar methods = {\n\t  // 23.3.3.3 WeakMap.prototype.get(key)\n\t  get: function get(key){\n\t    if(isObject(key)){\n\t      var data = getWeak(key);\n\t      if(data === true)return uncaughtFrozenStore(this).get(key);\n\t      return data ? data[this._i] : undefined;\n\t    }\n\t  },\n\t  // 23.3.3.5 WeakMap.prototype.set(key, value)\n\t  set: function set(key, value){\n\t    return weak.def(this, key, value);\n\t  }\n\t};\n\n\t// 23.3 WeakMap Objects\n\tvar $WeakMap = module.exports = __webpack_require__(77)('WeakMap', wrapper, methods, weak, true, true);\n\n\t// IE11 WeakMap frozen keys fix\n\tif(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){\n\t  InternalMap = weak.getConstructor(wrapper);\n\t  assign(InternalMap.prototype, methods);\n\t  meta.NEED = true;\n\t  each(['delete', 'has', 'get', 'set'], function(key){\n\t    var proto  = $WeakMap.prototype\n\t      , method = proto[key];\n\t    redefine(proto, key, function(a, b){\n\t      // store frozen objects on internal weakmap shim\n\t      if(isObject(a) && !isExtensible(a)){\n\t        if(!this._f)this._f = new InternalMap;\n\t        var result = this._f[key](a, b);\n\t        return key == 'set' ? this : result;\n\t      // store all the rest on native weakmap\n\t      } return method.call(this, a, b);\n\t    });\n\t  });\n\t}\n\n/***/ },\n/* 179 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t/*\n\t * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n\t * Digest Algorithm, as defined in RFC 1321.\n\t * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t * Distributed under the BSD License\n\t * See http://pajhome.org.uk/crypt/md5 for more info.\n\t */\n\n\tvar helpers = __webpack_require__(451);\n\n\t/*\n\t * Calculate the MD5 of an array of little-endian words, and a bit length\n\t */\n\tfunction core_md5(x, len)\n\t{\n\t  /* append padding */\n\t  x[len >> 5] |= 0x80 << ((len) % 32);\n\t  x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n\t  var a =  1732584193;\n\t  var b = -271733879;\n\t  var c = -1732584194;\n\t  var d =  271733878;\n\n\t  for(var i = 0; i < x.length; i += 16)\n\t  {\n\t    var olda = a;\n\t    var oldb = b;\n\t    var oldc = c;\n\t    var oldd = d;\n\n\t    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);\n\t    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);\n\t    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);\n\t    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);\n\t    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);\n\t    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);\n\t    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);\n\t    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);\n\t    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);\n\t    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);\n\t    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);\n\t    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);\n\t    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);\n\t    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);\n\t    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);\n\t    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);\n\n\t    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);\n\t    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);\n\t    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);\n\t    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);\n\t    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);\n\t    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);\n\t    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);\n\t    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);\n\t    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);\n\t    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);\n\t    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);\n\t    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);\n\t    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);\n\t    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);\n\t    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);\n\t    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);\n\n\t    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);\n\t    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);\n\t    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);\n\t    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);\n\t    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);\n\t    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);\n\t    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);\n\t    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);\n\t    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);\n\t    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);\n\t    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);\n\t    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);\n\t    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);\n\t    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);\n\t    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);\n\t    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);\n\n\t    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);\n\t    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);\n\t    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);\n\t    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);\n\t    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);\n\t    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);\n\t    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);\n\t    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);\n\t    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);\n\t    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);\n\t    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);\n\t    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);\n\t    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);\n\t    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);\n\t    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);\n\t    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);\n\n\t    a = safe_add(a, olda);\n\t    b = safe_add(b, oldb);\n\t    c = safe_add(c, oldc);\n\t    d = safe_add(d, oldd);\n\t  }\n\t  return Array(a, b, c, d);\n\n\t}\n\n\t/*\n\t * These functions implement the four basic operations the algorithm uses.\n\t */\n\tfunction md5_cmn(q, a, b, x, s, t)\n\t{\n\t  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);\n\t}\n\tfunction md5_ff(a, b, c, d, x, s, t)\n\t{\n\t  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\n\t}\n\tfunction md5_gg(a, b, c, d, x, s, t)\n\t{\n\t  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\n\t}\n\tfunction md5_hh(a, b, c, d, x, s, t)\n\t{\n\t  return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n\t}\n\tfunction md5_ii(a, b, c, d, x, s, t)\n\t{\n\t  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\n\t}\n\n\t/*\n\t * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n\t * to work around bugs in some JS interpreters.\n\t */\n\tfunction safe_add(x, y)\n\t{\n\t  var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n\t  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n\t  return (msw << 16) | (lsw & 0xFFFF);\n\t}\n\n\t/*\n\t * Bitwise rotate a 32-bit number to the left.\n\t */\n\tfunction bit_rol(num, cnt)\n\t{\n\t  return (num << cnt) | (num >>> (32 - cnt));\n\t}\n\n\tmodule.exports = function md5(buf) {\n\t  return helpers.hash(buf, core_md5, 16);\n\t};\n\n/***/ },\n/* 180 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict'\n\n\texports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(70)\n\texports.createHash = exports.Hash = __webpack_require__(58)\n\texports.createHmac = exports.Hmac = __webpack_require__(120)\n\n\tvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(Object.keys(__webpack_require__(149)))\n\texports.getHashes = function () {\n\t  return hashes\n\t}\n\n\tvar p = __webpack_require__(191)\n\texports.pbkdf2 = p.pbkdf2\n\texports.pbkdf2Sync = p.pbkdf2Sync\n\n\tvar aes = __webpack_require__(259)\n\t;[\n\t  'Cipher',\n\t  'createCipher',\n\t  'Cipheriv',\n\t  'createCipheriv',\n\t  'Decipher',\n\t  'createDecipher',\n\t  'Decipheriv',\n\t  'createDecipheriv',\n\t  'getCiphers',\n\t  'listCiphers'\n\t].forEach(function (key) {\n\t  exports[key] = aes[key]\n\t})\n\n\tvar dh = __webpack_require__(457)\n\t;[\n\t  'DiffieHellmanGroup',\n\t  'createDiffieHellmanGroup',\n\t  'getDiffieHellman',\n\t  'createDiffieHellman',\n\t  'DiffieHellman'\n\t].forEach(function (key) {\n\t  exports[key] = dh[key]\n\t})\n\n\tvar sign = __webpack_require__(262)\n\t;[\n\t  'createSign',\n\t  'Sign',\n\t  'createVerify',\n\t  'Verify'\n\t].forEach(function (key) {\n\t  exports[key] = sign[key]\n\t})\n\n\texports.createECDH = __webpack_require__(450)\n\n\tvar publicEncrypt = __webpack_require__(500)\n\n\t;[\n\t  'publicEncrypt',\n\t  'privateEncrypt',\n\t  'publicDecrypt',\n\t  'privateDecrypt'\n\t].forEach(function (key) {\n\t  exports[key] = publicEncrypt[key]\n\t})\n\n\t// the least I can do is make error messages for the rest of the node.js/crypto api.\n\t;[\n\t  'createCredentials'\n\t].forEach(function (name) {\n\t  exports[name] = function () {\n\t    throw new Error([\n\t      'sorry, ' + name + ' is not implemented yet',\n\t      'we accept pull requests',\n\t      'https://github.com/crypto-browserify/crypto-browserify'\n\t    ].join('\\n'))\n\t  }\n\t})\n\n\n/***/ },\n/* 181 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = false;\n\n\t// Only Node.JS has a process variable that is of [[Class]] process\n\ttry {\n\t module.exports = Object.prototype.toString.call(global.process) === '[object process]' \n\t} catch(e) {}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 182 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar randomBytes = __webpack_require__(70);\n\tmodule.exports = findPrime;\n\tfindPrime.simpleSieve = simpleSieve;\n\tfindPrime.fermatTest = fermatTest;\n\tvar BN = __webpack_require__(11);\n\tvar TWENTYFOUR = new BN(24);\n\tvar MillerRabin = __webpack_require__(187);\n\tvar millerRabin = new MillerRabin();\n\tvar ONE = new BN(1);\n\tvar TWO = new BN(2);\n\tvar FIVE = new BN(5);\n\tvar SIXTEEN = new BN(16);\n\tvar EIGHT = new BN(8);\n\tvar TEN = new BN(10);\n\tvar THREE = new BN(3);\n\tvar SEVEN = new BN(7);\n\tvar ELEVEN = new BN(11);\n\tvar FOUR = new BN(4);\n\tvar TWELVE = new BN(12);\n\tvar primes = null;\n\n\tfunction _getPrimes() {\n\t  if (primes !== null)\n\t    return primes;\n\n\t  var limit = 0x100000;\n\t  var res = [];\n\t  res[0] = 2;\n\t  for (var i = 1, k = 3; k < limit; k += 2) {\n\t    var sqrt = Math.ceil(Math.sqrt(k));\n\t    for (var j = 0; j < i && res[j] <= sqrt; j++)\n\t      if (k % res[j] === 0)\n\t        break;\n\n\t    if (i !== j && res[j] <= sqrt)\n\t      continue;\n\n\t    res[i++] = k;\n\t  }\n\t  primes = res;\n\t  return res;\n\t}\n\n\tfunction simpleSieve(p) {\n\t  var primes = _getPrimes();\n\n\t  for (var i = 0; i < primes.length; i++)\n\t    if (p.modn(primes[i]) === 0) {\n\t      if (p.cmpn(primes[i]) === 0) {\n\t        return true;\n\t      } else {\n\t        return false;\n\t      }\n\t    }\n\n\t  return true;\n\t}\n\n\tfunction fermatTest(p) {\n\t  var red = BN.mont(p);\n\t  return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n\t}\n\n\tfunction findPrime(bits, gen) {\n\t  if (bits < 16) {\n\t    // this is what openssl does\n\t    if (gen === 2 || gen === 5) {\n\t      return new BN([0x8c, 0x7b]);\n\t    } else {\n\t      return new BN([0x8c, 0x27]);\n\t    }\n\t  }\n\t  gen = new BN(gen);\n\n\t  var num, n2;\n\n\t  while (true) {\n\t    num = new BN(randomBytes(Math.ceil(bits / 8)));\n\t    while (num.bitLength() > bits) {\n\t      num.ishrn(1);\n\t    }\n\t    if (num.isEven()) {\n\t      num.iadd(ONE);\n\t    }\n\t    if (!num.testn(1)) {\n\t      num.iadd(TWO);\n\t    }\n\t    if (!gen.cmp(TWO)) {\n\t      while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n\t        num.iadd(FOUR);\n\t      }\n\t    } else if (!gen.cmp(FIVE)) {\n\t      while (num.mod(TEN).cmp(THREE)) {\n\t        num.iadd(FOUR);\n\t      }\n\t    }\n\t    n2 = num.shrn(1);\n\t    if (simpleSieve(n2) && simpleSieve(num) &&\n\t      fermatTest(n2) && fermatTest(num) &&\n\t      millerRabin.test(n2) && millerRabin.test(num)) {\n\t      return num;\n\t    }\n\t  }\n\n\t}\n\n\n/***/ },\n/* 183 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {exports.alphasort = alphasort\n\texports.alphasorti = alphasorti\n\texports.setopts = setopts\n\texports.ownProp = ownProp\n\texports.makeAbs = makeAbs\n\texports.finish = finish\n\texports.mark = mark\n\texports.isIgnored = isIgnored\n\texports.childrenIgnored = childrenIgnored\n\n\tfunction ownProp (obj, field) {\n\t  return Object.prototype.hasOwnProperty.call(obj, field)\n\t}\n\n\tvar path = __webpack_require__(59)\n\tvar minimatch = __webpack_require__(123)\n\tvar isAbsolute = __webpack_require__(125)\n\tvar Minimatch = minimatch.Minimatch\n\n\tfunction alphasorti (a, b) {\n\t  return a.toLowerCase().localeCompare(b.toLowerCase())\n\t}\n\n\tfunction alphasort (a, b) {\n\t  return a.localeCompare(b)\n\t}\n\n\tfunction setupIgnores (self, options) {\n\t  self.ignore = options.ignore || []\n\n\t  if (!Array.isArray(self.ignore))\n\t    self.ignore = [self.ignore]\n\n\t  if (self.ignore.length) {\n\t    self.ignore = self.ignore.map(ignoreMap)\n\t  }\n\t}\n\n\t// ignore patterns are always in dot:true mode.\n\tfunction ignoreMap (pattern) {\n\t  var gmatcher = null\n\t  if (pattern.slice(-3) === '/**') {\n\t    var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n\t    gmatcher = new Minimatch(gpattern, { dot: true })\n\t  }\n\n\t  return {\n\t    matcher: new Minimatch(pattern, { dot: true }),\n\t    gmatcher: gmatcher\n\t  }\n\t}\n\n\tfunction setopts (self, pattern, options) {\n\t  if (!options)\n\t    options = {}\n\n\t  // base-matching: just use globstar for that.\n\t  if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n\t    if (options.noglobstar) {\n\t      throw new Error(\"base matching requires globstar\")\n\t    }\n\t    pattern = \"**/\" + pattern\n\t  }\n\n\t  self.silent = !!options.silent\n\t  self.pattern = pattern\n\t  self.strict = options.strict !== false\n\t  self.realpath = !!options.realpath\n\t  self.realpathCache = options.realpathCache || Object.create(null)\n\t  self.follow = !!options.follow\n\t  self.dot = !!options.dot\n\t  self.mark = !!options.mark\n\t  self.nodir = !!options.nodir\n\t  if (self.nodir)\n\t    self.mark = true\n\t  self.sync = !!options.sync\n\t  self.nounique = !!options.nounique\n\t  self.nonull = !!options.nonull\n\t  self.nosort = !!options.nosort\n\t  self.nocase = !!options.nocase\n\t  self.stat = !!options.stat\n\t  self.noprocess = !!options.noprocess\n\n\t  self.maxLength = options.maxLength || Infinity\n\t  self.cache = options.cache || Object.create(null)\n\t  self.statCache = options.statCache || Object.create(null)\n\t  self.symlinks = options.symlinks || Object.create(null)\n\n\t  setupIgnores(self, options)\n\n\t  self.changedCwd = false\n\t  var cwd = process.cwd()\n\t  if (!ownProp(options, \"cwd\"))\n\t    self.cwd = cwd\n\t  else {\n\t    self.cwd = path.resolve(options.cwd)\n\t    self.changedCwd = self.cwd !== cwd\n\t  }\n\n\t  self.root = options.root || path.resolve(self.cwd, \"/\")\n\t  self.root = path.resolve(self.root)\n\t  if (process.platform === \"win32\")\n\t    self.root = self.root.replace(/\\\\/g, \"/\")\n\n\t  self.cwdAbs = makeAbs(self, self.cwd)\n\t  self.nomount = !!options.nomount\n\n\t  // disable comments and negation in Minimatch.\n\t  // Note that they are not supported in Glob itself anyway.\n\t  options.nonegate = true\n\t  options.nocomment = true\n\n\t  self.minimatch = new Minimatch(pattern, options)\n\t  self.options = self.minimatch.options\n\t}\n\n\tfunction finish (self) {\n\t  var nou = self.nounique\n\t  var all = nou ? [] : Object.create(null)\n\n\t  for (var i = 0, l = self.matches.length; i < l; i ++) {\n\t    var matches = self.matches[i]\n\t    if (!matches || Object.keys(matches).length === 0) {\n\t      if (self.nonull) {\n\t        // do like the shell, and spit out the literal glob\n\t        var literal = self.minimatch.globSet[i]\n\t        if (nou)\n\t          all.push(literal)\n\t        else\n\t          all[literal] = true\n\t      }\n\t    } else {\n\t      // had matches\n\t      var m = Object.keys(matches)\n\t      if (nou)\n\t        all.push.apply(all, m)\n\t      else\n\t        m.forEach(function (m) {\n\t          all[m] = true\n\t        })\n\t    }\n\t  }\n\n\t  if (!nou)\n\t    all = Object.keys(all)\n\n\t  if (!self.nosort)\n\t    all = all.sort(self.nocase ? alphasorti : alphasort)\n\n\t  // at *some* point we statted all of these\n\t  if (self.mark) {\n\t    for (var i = 0; i < all.length; i++) {\n\t      all[i] = self._mark(all[i])\n\t    }\n\t    if (self.nodir) {\n\t      all = all.filter(function (e) {\n\t        var notDir = !(/\\/$/.test(e))\n\t        var c = self.cache[e] || self.cache[makeAbs(self, e)]\n\t        if (notDir && c)\n\t          notDir = c !== 'DIR' && !Array.isArray(c)\n\t        return notDir\n\t      })\n\t    }\n\t  }\n\n\t  if (self.ignore.length)\n\t    all = all.filter(function(m) {\n\t      return !isIgnored(self, m)\n\t    })\n\n\t  self.found = all\n\t}\n\n\tfunction mark (self, p) {\n\t  var abs = makeAbs(self, p)\n\t  var c = self.cache[abs]\n\t  var m = p\n\t  if (c) {\n\t    var isDir = c === 'DIR' || Array.isArray(c)\n\t    var slash = p.slice(-1) === '/'\n\n\t    if (isDir && !slash)\n\t      m += '/'\n\t    else if (!isDir && slash)\n\t      m = m.slice(0, -1)\n\n\t    if (m !== p) {\n\t      var mabs = makeAbs(self, m)\n\t      self.statCache[mabs] = self.statCache[abs]\n\t      self.cache[mabs] = self.cache[abs]\n\t    }\n\t  }\n\n\t  return m\n\t}\n\n\t// lotta situps...\n\tfunction makeAbs (self, f) {\n\t  var abs = f\n\t  if (f.charAt(0) === '/') {\n\t    abs = path.join(self.root, f)\n\t  } else if (isAbsolute(f) || f === '') {\n\t    abs = f\n\t  } else if (self.changedCwd) {\n\t    abs = path.resolve(self.cwd, f)\n\t  } else {\n\t    abs = path.resolve(f)\n\t  }\n\n\t  if (process.platform === 'win32')\n\t    abs = abs.replace(/\\\\/g, '/')\n\n\t  return abs\n\t}\n\n\n\t// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n\t// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\n\tfunction isIgnored (self, path) {\n\t  if (!self.ignore.length)\n\t    return false\n\n\t  return self.ignore.some(function(item) {\n\t    return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n\t  })\n\t}\n\n\tfunction childrenIgnored (self, path) {\n\t  if (!self.ignore.length)\n\t    return false\n\n\t  return self.ignore.some(function(item) {\n\t    return !!(item.gmatcher && item.gmatcher.match(path))\n\t  })\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 184 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Approach:\n\t//\n\t// 1. Get the minimatch set\n\t// 2. For each pattern in the set, PROCESS(pattern, false)\n\t// 3. Store matches per-set, then uniq them\n\t//\n\t// PROCESS(pattern, inGlobStar)\n\t// Get the first [n] items from pattern that are all strings\n\t// Join these together.  This is PREFIX.\n\t//   If there is no more remaining, then stat(PREFIX) and\n\t//   add to matches if it succeeds.  END.\n\t//\n\t// If inGlobStar and PREFIX is symlink and points to dir\n\t//   set ENTRIES = []\n\t// else readdir(PREFIX) as ENTRIES\n\t//   If fail, END\n\t//\n\t// with ENTRIES\n\t//   If pattern[n] is GLOBSTAR\n\t//     // handle the case where the globstar match is empty\n\t//     // by pruning it out, and testing the resulting pattern\n\t//     PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n\t//     // handle other cases.\n\t//     for ENTRY in ENTRIES (not dotfiles)\n\t//       // attach globstar + tail onto the entry\n\t//       // Mark that this entry is a globstar match\n\t//       PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n\t//\n\t//   else // not globstar\n\t//     for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n\t//       Test ENTRY against pattern[n]\n\t//       If fails, continue\n\t//       If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n\t//\n\t// Caveat:\n\t//   Cache all stats and readdirs results to minimize syscall.  Since all\n\t//   we ever care about is existence and directory-ness, we can just keep\n\t//   `true` for files, and [children,...] for directories, or `false` for\n\t//   things that don't exist.\n\n\tmodule.exports = glob\n\n\tvar fs = __webpack_require__(130)\n\tvar minimatch = __webpack_require__(123)\n\tvar Minimatch = minimatch.Minimatch\n\tvar inherits = __webpack_require__(2)\n\tvar EE = __webpack_require__(32).EventEmitter\n\tvar path = __webpack_require__(59)\n\tvar assert = __webpack_require__(135)\n\tvar isAbsolute = __webpack_require__(125)\n\tvar globSync = __webpack_require__(474)\n\tvar common = __webpack_require__(183)\n\tvar alphasort = common.alphasort\n\tvar alphasorti = common.alphasorti\n\tvar setopts = common.setopts\n\tvar ownProp = common.ownProp\n\tvar inflight = __webpack_require__(483)\n\tvar util = __webpack_require__(71)\n\tvar childrenIgnored = common.childrenIgnored\n\tvar isIgnored = common.isIgnored\n\n\tvar once = __webpack_require__(189)\n\n\tfunction glob (pattern, options, cb) {\n\t  if (typeof options === 'function') cb = options, options = {}\n\t  if (!options) options = {}\n\n\t  if (options.sync) {\n\t    if (cb)\n\t      throw new TypeError('callback provided to sync glob')\n\t    return globSync(pattern, options)\n\t  }\n\n\t  return new Glob(pattern, options, cb)\n\t}\n\n\tglob.sync = globSync\n\tvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n\t// old api surface\n\tglob.glob = glob\n\n\tfunction extend (origin, add) {\n\t  if (add === null || typeof add !== 'object') {\n\t    return origin\n\t  }\n\n\t  var keys = Object.keys(add)\n\t  var i = keys.length\n\t  while (i--) {\n\t    origin[keys[i]] = add[keys[i]]\n\t  }\n\t  return origin\n\t}\n\n\tglob.hasMagic = function (pattern, options_) {\n\t  var options = extend({}, options_)\n\t  options.noprocess = true\n\n\t  var g = new Glob(pattern, options)\n\t  var set = g.minimatch.set\n\t  if (set.length > 1)\n\t    return true\n\n\t  for (var j = 0; j < set[0].length; j++) {\n\t    if (typeof set[0][j] !== 'string')\n\t      return true\n\t  }\n\n\t  return false\n\t}\n\n\tglob.Glob = Glob\n\tinherits(Glob, EE)\n\tfunction Glob (pattern, options, cb) {\n\t  if (typeof options === 'function') {\n\t    cb = options\n\t    options = null\n\t  }\n\n\t  if (options && options.sync) {\n\t    if (cb)\n\t      throw new TypeError('callback provided to sync glob')\n\t    return new GlobSync(pattern, options)\n\t  }\n\n\t  if (!(this instanceof Glob))\n\t    return new Glob(pattern, options, cb)\n\n\t  setopts(this, pattern, options)\n\t  this._didRealPath = false\n\n\t  // process each pattern in the minimatch set\n\t  var n = this.minimatch.set.length\n\n\t  // The matches are stored as {<filename>: true,...} so that\n\t  // duplicates are automagically pruned.\n\t  // Later, we do an Object.keys() on these.\n\t  // Keep them as a list so we can fill in when nonull is set.\n\t  this.matches = new Array(n)\n\n\t  if (typeof cb === 'function') {\n\t    cb = once(cb)\n\t    this.on('error', cb)\n\t    this.on('end', function (matches) {\n\t      cb(null, matches)\n\t    })\n\t  }\n\n\t  var self = this\n\t  var n = this.minimatch.set.length\n\t  this._processing = 0\n\t  this.matches = new Array(n)\n\n\t  this._emitQueue = []\n\t  this._processQueue = []\n\t  this.paused = false\n\n\t  if (this.noprocess)\n\t    return this\n\n\t  if (n === 0)\n\t    return done()\n\n\t  var sync = true\n\t  for (var i = 0; i < n; i ++) {\n\t    this._process(this.minimatch.set[i], i, false, done)\n\t  }\n\t  sync = false\n\n\t  function done () {\n\t    --self._processing\n\t    if (self._processing <= 0) {\n\t      if (sync) {\n\t        process.nextTick(function () {\n\t          self._finish()\n\t        })\n\t      } else {\n\t        self._finish()\n\t      }\n\t    }\n\t  }\n\t}\n\n\tGlob.prototype._finish = function () {\n\t  assert(this instanceof Glob)\n\t  if (this.aborted)\n\t    return\n\n\t  if (this.realpath && !this._didRealpath)\n\t    return this._realpath()\n\n\t  common.finish(this)\n\t  this.emit('end', this.found)\n\t}\n\n\tGlob.prototype._realpath = function () {\n\t  if (this._didRealpath)\n\t    return\n\n\t  this._didRealpath = true\n\n\t  var n = this.matches.length\n\t  if (n === 0)\n\t    return this._finish()\n\n\t  var self = this\n\t  for (var i = 0; i < this.matches.length; i++)\n\t    this._realpathSet(i, next)\n\n\t  function next () {\n\t    if (--n === 0)\n\t      self._finish()\n\t  }\n\t}\n\n\tGlob.prototype._realpathSet = function (index, cb) {\n\t  var matchset = this.matches[index]\n\t  if (!matchset)\n\t    return cb()\n\n\t  var found = Object.keys(matchset)\n\t  var self = this\n\t  var n = found.length\n\n\t  if (n === 0)\n\t    return cb()\n\n\t  var set = this.matches[index] = Object.create(null)\n\t  found.forEach(function (p, i) {\n\t    // If there's a problem with the stat, then it means that\n\t    // one or more of the links in the realpath couldn't be\n\t    // resolved.  just return the abs value in that case.\n\t    p = self._makeAbs(p)\n\t    fs.realpath(p, self.realpathCache, function (er, real) {\n\t      if (!er)\n\t        set[real] = true\n\t      else if (er.syscall === 'stat')\n\t        set[p] = true\n\t      else\n\t        self.emit('error', er) // srsly wtf right here\n\n\t      if (--n === 0) {\n\t        self.matches[index] = set\n\t        cb()\n\t      }\n\t    })\n\t  })\n\t}\n\n\tGlob.prototype._mark = function (p) {\n\t  return common.mark(this, p)\n\t}\n\n\tGlob.prototype._makeAbs = function (f) {\n\t  return common.makeAbs(this, f)\n\t}\n\n\tGlob.prototype.abort = function () {\n\t  this.aborted = true\n\t  this.emit('abort')\n\t}\n\n\tGlob.prototype.pause = function () {\n\t  if (!this.paused) {\n\t    this.paused = true\n\t    this.emit('pause')\n\t  }\n\t}\n\n\tGlob.prototype.resume = function () {\n\t  if (this.paused) {\n\t    this.emit('resume')\n\t    this.paused = false\n\t    if (this._emitQueue.length) {\n\t      var eq = this._emitQueue.slice(0)\n\t      this._emitQueue.length = 0\n\t      for (var i = 0; i < eq.length; i ++) {\n\t        var e = eq[i]\n\t        this._emitMatch(e[0], e[1])\n\t      }\n\t    }\n\t    if (this._processQueue.length) {\n\t      var pq = this._processQueue.slice(0)\n\t      this._processQueue.length = 0\n\t      for (var i = 0; i < pq.length; i ++) {\n\t        var p = pq[i]\n\t        this._processing--\n\t        this._process(p[0], p[1], p[2], p[3])\n\t      }\n\t    }\n\t  }\n\t}\n\n\tGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n\t  assert(this instanceof Glob)\n\t  assert(typeof cb === 'function')\n\n\t  if (this.aborted)\n\t    return\n\n\t  this._processing++\n\t  if (this.paused) {\n\t    this._processQueue.push([pattern, index, inGlobStar, cb])\n\t    return\n\t  }\n\n\t  //console.error('PROCESS %d', this._processing, pattern)\n\n\t  // Get the first [n] parts of pattern that are all strings.\n\t  var n = 0\n\t  while (typeof pattern[n] === 'string') {\n\t    n ++\n\t  }\n\t  // now n is the index of the first one that is *not* a string.\n\n\t  // see if there's anything else\n\t  var prefix\n\t  switch (n) {\n\t    // if not, then this is rather simple\n\t    case pattern.length:\n\t      this._processSimple(pattern.join('/'), index, cb)\n\t      return\n\n\t    case 0:\n\t      // pattern *starts* with some non-trivial item.\n\t      // going to readdir(cwd), but not include the prefix in matches.\n\t      prefix = null\n\t      break\n\n\t    default:\n\t      // pattern has some string bits in the front.\n\t      // whatever it starts with, whether that's 'absolute' like /foo/bar,\n\t      // or 'relative' like '../baz'\n\t      prefix = pattern.slice(0, n).join('/')\n\t      break\n\t  }\n\n\t  var remain = pattern.slice(n)\n\n\t  // get the list of entries.\n\t  var read\n\t  if (prefix === null)\n\t    read = '.'\n\t  else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n\t    if (!prefix || !isAbsolute(prefix))\n\t      prefix = '/' + prefix\n\t    read = prefix\n\t  } else\n\t    read = prefix\n\n\t  var abs = this._makeAbs(read)\n\n\t  //if ignored, skip _processing\n\t  if (childrenIgnored(this, read))\n\t    return cb()\n\n\t  var isGlobStar = remain[0] === minimatch.GLOBSTAR\n\t  if (isGlobStar)\n\t    this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n\t  else\n\t    this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n\t}\n\n\tGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n\t  var self = this\n\t  this._readdir(abs, inGlobStar, function (er, entries) {\n\t    return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n\t  })\n\t}\n\n\tGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n\t  // if the abs isn't a dir, then nothing can match!\n\t  if (!entries)\n\t    return cb()\n\n\t  // It will only match dot entries if it starts with a dot, or if\n\t  // dot is set.  Stuff like @(.foo|.bar) isn't allowed.\n\t  var pn = remain[0]\n\t  var negate = !!this.minimatch.negate\n\t  var rawGlob = pn._glob\n\t  var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n\t  var matchedEntries = []\n\t  for (var i = 0; i < entries.length; i++) {\n\t    var e = entries[i]\n\t    if (e.charAt(0) !== '.' || dotOk) {\n\t      var m\n\t      if (negate && !prefix) {\n\t        m = !e.match(pn)\n\t      } else {\n\t        m = e.match(pn)\n\t      }\n\t      if (m)\n\t        matchedEntries.push(e)\n\t    }\n\t  }\n\n\t  //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n\t  var len = matchedEntries.length\n\t  // If there are no matched entries, then nothing matches.\n\t  if (len === 0)\n\t    return cb()\n\n\t  // if this is the last remaining pattern bit, then no need for\n\t  // an additional stat *unless* the user has specified mark or\n\t  // stat explicitly.  We know they exist, since readdir returned\n\t  // them.\n\n\t  if (remain.length === 1 && !this.mark && !this.stat) {\n\t    if (!this.matches[index])\n\t      this.matches[index] = Object.create(null)\n\n\t    for (var i = 0; i < len; i ++) {\n\t      var e = matchedEntries[i]\n\t      if (prefix) {\n\t        if (prefix !== '/')\n\t          e = prefix + '/' + e\n\t        else\n\t          e = prefix + e\n\t      }\n\n\t      if (e.charAt(0) === '/' && !this.nomount) {\n\t        e = path.join(this.root, e)\n\t      }\n\t      this._emitMatch(index, e)\n\t    }\n\t    // This was the last one, and no stats were needed\n\t    return cb()\n\t  }\n\n\t  // now test all matched entries as stand-ins for that part\n\t  // of the pattern.\n\t  remain.shift()\n\t  for (var i = 0; i < len; i ++) {\n\t    var e = matchedEntries[i]\n\t    var newPattern\n\t    if (prefix) {\n\t      if (prefix !== '/')\n\t        e = prefix + '/' + e\n\t      else\n\t        e = prefix + e\n\t    }\n\t    this._process([e].concat(remain), index, inGlobStar, cb)\n\t  }\n\t  cb()\n\t}\n\n\tGlob.prototype._emitMatch = function (index, e) {\n\t  if (this.aborted)\n\t    return\n\n\t  if (this.matches[index][e])\n\t    return\n\n\t  if (isIgnored(this, e))\n\t    return\n\n\t  if (this.paused) {\n\t    this._emitQueue.push([index, e])\n\t    return\n\t  }\n\n\t  var abs = this._makeAbs(e)\n\n\t  if (this.nodir) {\n\t    var c = this.cache[abs]\n\t    if (c === 'DIR' || Array.isArray(c))\n\t      return\n\t  }\n\n\t  if (this.mark)\n\t    e = this._mark(e)\n\n\t  this.matches[index][e] = true\n\n\t  var st = this.statCache[abs]\n\t  if (st)\n\t    this.emit('stat', e, st)\n\n\t  this.emit('match', e)\n\t}\n\n\tGlob.prototype._readdirInGlobStar = function (abs, cb) {\n\t  if (this.aborted)\n\t    return\n\n\t  // follow all symlinked directories forever\n\t  // just proceed as if this is a non-globstar situation\n\t  if (this.follow)\n\t    return this._readdir(abs, false, cb)\n\n\t  var lstatkey = 'lstat\\0' + abs\n\t  var self = this\n\t  var lstatcb = inflight(lstatkey, lstatcb_)\n\n\t  if (lstatcb)\n\t    fs.lstat(abs, lstatcb)\n\n\t  function lstatcb_ (er, lstat) {\n\t    if (er)\n\t      return cb()\n\n\t    var isSym = lstat.isSymbolicLink()\n\t    self.symlinks[abs] = isSym\n\n\t    // If it's not a symlink or a dir, then it's definitely a regular file.\n\t    // don't bother doing a readdir in that case.\n\t    if (!isSym && !lstat.isDirectory()) {\n\t      self.cache[abs] = 'FILE'\n\t      cb()\n\t    } else\n\t      self._readdir(abs, false, cb)\n\t  }\n\t}\n\n\tGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n\t  if (this.aborted)\n\t    return\n\n\t  cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n\t  if (!cb)\n\t    return\n\n\t  //console.error('RD %j %j', +inGlobStar, abs)\n\t  if (inGlobStar && !ownProp(this.symlinks, abs))\n\t    return this._readdirInGlobStar(abs, cb)\n\n\t  if (ownProp(this.cache, abs)) {\n\t    var c = this.cache[abs]\n\t    if (!c || c === 'FILE')\n\t      return cb()\n\n\t    if (Array.isArray(c))\n\t      return cb(null, c)\n\t  }\n\n\t  var self = this\n\t  fs.readdir(abs, readdirCb(this, abs, cb))\n\t}\n\n\tfunction readdirCb (self, abs, cb) {\n\t  return function (er, entries) {\n\t    if (er)\n\t      self._readdirError(abs, er, cb)\n\t    else\n\t      self._readdirEntries(abs, entries, cb)\n\t  }\n\t}\n\n\tGlob.prototype._readdirEntries = function (abs, entries, cb) {\n\t  if (this.aborted)\n\t    return\n\n\t  // if we haven't asked to stat everything, then just\n\t  // assume that everything in there exists, so we can avoid\n\t  // having to stat it a second time.\n\t  if (!this.mark && !this.stat) {\n\t    for (var i = 0; i < entries.length; i ++) {\n\t      var e = entries[i]\n\t      if (abs === '/')\n\t        e = abs + e\n\t      else\n\t        e = abs + '/' + e\n\t      this.cache[e] = true\n\t    }\n\t  }\n\n\t  this.cache[abs] = entries\n\t  return cb(null, entries)\n\t}\n\n\tGlob.prototype._readdirError = function (f, er, cb) {\n\t  if (this.aborted)\n\t    return\n\n\t  // handle errors, and cache the information\n\t  switch (er.code) {\n\t    case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n\t    case 'ENOTDIR': // totally normal. means it *does* exist.\n\t      var abs = this._makeAbs(f)\n\t      this.cache[abs] = 'FILE'\n\t      if (abs === this.cwdAbs) {\n\t        var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n\t        error.path = this.cwd\n\t        error.code = er.code\n\t        this.emit('error', error)\n\t        this.abort()\n\t      }\n\t      break\n\n\t    case 'ENOENT': // not terribly unusual\n\t    case 'ELOOP':\n\t    case 'ENAMETOOLONG':\n\t    case 'UNKNOWN':\n\t      this.cache[this._makeAbs(f)] = false\n\t      break\n\n\t    default: // some unusual error.  Treat as failure.\n\t      this.cache[this._makeAbs(f)] = false\n\t      if (this.strict) {\n\t        this.emit('error', er)\n\t        // If the error is handled, then we abort\n\t        // if not, we threw out of here\n\t        this.abort()\n\t      }\n\t      if (!this.silent)\n\t        console.error('glob error', er)\n\t      break\n\t  }\n\n\t  return cb()\n\t}\n\n\tGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n\t  var self = this\n\t  this._readdir(abs, inGlobStar, function (er, entries) {\n\t    self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n\t  })\n\t}\n\n\n\tGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\t  //console.error('pgs2', prefix, remain[0], entries)\n\n\t  // no entries means not a dir, so it can never have matches\n\t  // foo.txt/** doesn't match foo.txt\n\t  if (!entries)\n\t    return cb()\n\n\t  // test without the globstar, and with every child both below\n\t  // and replacing the globstar.\n\t  var remainWithoutGlobStar = remain.slice(1)\n\t  var gspref = prefix ? [ prefix ] : []\n\t  var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n\t  // the noGlobStar pattern exits the inGlobStar state\n\t  this._process(noGlobStar, index, false, cb)\n\n\t  var isSym = this.symlinks[abs]\n\t  var len = entries.length\n\n\t  // If it's a symlink, and we're in a globstar, then stop\n\t  if (isSym && inGlobStar)\n\t    return cb()\n\n\t  for (var i = 0; i < len; i++) {\n\t    var e = entries[i]\n\t    if (e.charAt(0) === '.' && !this.dot)\n\t      continue\n\n\t    // these two cases enter the inGlobStar state\n\t    var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n\t    this._process(instead, index, true, cb)\n\n\t    var below = gspref.concat(entries[i], remain)\n\t    this._process(below, index, true, cb)\n\t  }\n\n\t  cb()\n\t}\n\n\tGlob.prototype._processSimple = function (prefix, index, cb) {\n\t  // XXX review this.  Shouldn't it be doing the mounting etc\n\t  // before doing stat?  kinda weird?\n\t  var self = this\n\t  this._stat(prefix, function (er, exists) {\n\t    self._processSimple2(prefix, index, er, exists, cb)\n\t  })\n\t}\n\tGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n\t  //console.error('ps2', prefix, exists)\n\n\t  if (!this.matches[index])\n\t    this.matches[index] = Object.create(null)\n\n\t  // If it doesn't exist, then just mark the lack of results\n\t  if (!exists)\n\t    return cb()\n\n\t  if (prefix && isAbsolute(prefix) && !this.nomount) {\n\t    var trail = /[\\/\\\\]$/.test(prefix)\n\t    if (prefix.charAt(0) === '/') {\n\t      prefix = path.join(this.root, prefix)\n\t    } else {\n\t      prefix = path.resolve(this.root, prefix)\n\t      if (trail)\n\t        prefix += '/'\n\t    }\n\t  }\n\n\t  if (process.platform === 'win32')\n\t    prefix = prefix.replace(/\\\\/g, '/')\n\n\t  // Mark this as a match\n\t  this._emitMatch(index, prefix)\n\t  cb()\n\t}\n\n\t// Returns either 'DIR', 'FILE', or false\n\tGlob.prototype._stat = function (f, cb) {\n\t  var abs = this._makeAbs(f)\n\t  var needDir = f.slice(-1) === '/'\n\n\t  if (f.length > this.maxLength)\n\t    return cb()\n\n\t  if (!this.stat && ownProp(this.cache, abs)) {\n\t    var c = this.cache[abs]\n\n\t    if (Array.isArray(c))\n\t      c = 'DIR'\n\n\t    // It exists, but maybe not how we need it\n\t    if (!needDir || c === 'DIR')\n\t      return cb(null, c)\n\n\t    if (needDir && c === 'FILE')\n\t      return cb()\n\n\t    // otherwise we have to stat, because maybe c=true\n\t    // if we know it exists, but not what it is.\n\t  }\n\n\t  var exists\n\t  var stat = this.statCache[abs]\n\t  if (stat !== undefined) {\n\t    if (stat === false)\n\t      return cb(null, stat)\n\t    else {\n\t      var type = stat.isDirectory() ? 'DIR' : 'FILE'\n\t      if (needDir && type === 'FILE')\n\t        return cb()\n\t      else\n\t        return cb(null, type, stat)\n\t    }\n\t  }\n\n\t  var self = this\n\t  var statcb = inflight('stat\\0' + abs, lstatcb_)\n\t  if (statcb)\n\t    fs.lstat(abs, statcb)\n\n\t  function lstatcb_ (er, lstat) {\n\t    if (lstat && lstat.isSymbolicLink()) {\n\t      // If it's a symlink, then treat it as the target, unless\n\t      // the target does not exist, then treat it as a file.\n\t      return fs.stat(abs, function (er, stat) {\n\t        if (er)\n\t          self._stat2(f, abs, null, lstat, cb)\n\t        else\n\t          self._stat2(f, abs, er, stat, cb)\n\t      })\n\t    } else {\n\t      self._stat2(f, abs, er, lstat, cb)\n\t    }\n\t  }\n\t}\n\n\tGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n\t  if (er) {\n\t    this.statCache[abs] = false\n\t    return cb()\n\t  }\n\n\t  var needDir = f.slice(-1) === '/'\n\t  this.statCache[abs] = stat\n\n\t  if (abs.slice(-1) === '/' && !stat.isDirectory())\n\t    return cb(null, false, stat)\n\n\t  var c = stat.isDirectory() ? 'DIR' : 'FILE'\n\t  this.cache[abs] = this.cache[abs] || c\n\n\t  if (needDir && c !== 'DIR')\n\t    return cb()\n\n\t  return cb(null, c, stat)\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 185 */\n/***/ function(module, exports) {\n\n\t/**\n\t * lodash 4.1.2 (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t    funcTag = '[object Function]',\n\t    genTag = '[object GeneratorFunction]',\n\t    stringTag = '[object String]';\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t  var index = -1,\n\t      result = Array(n);\n\n\t  while (++index < n) {\n\t    result[index] = iteratee(index);\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t  value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n\t  length = length == null ? MAX_SAFE_INTEGER : length;\n\t  return value > -1 && value % 1 == 0 && value < length;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Built-in value references. */\n\tvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetPrototype = Object.getPrototypeOf,\n\t    nativeKeys = Object.keys;\n\n\t/**\n\t * The base implementation of `_.forEach` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array|Object} Returns `collection`.\n\t */\n\tvar baseEach = createBaseEach(baseForOwn);\n\n\t/**\n\t * The base implementation of `baseForOwn` which iterates over `object`\n\t * properties returned by `keysFunc` invoking `iteratee` for each property.\n\t * Iteratee functions may exit iteration early by explicitly returning `false`.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @returns {Object} Returns `object`.\n\t */\n\tvar baseFor = createBaseFor();\n\n\t/**\n\t * The base implementation of `_.forOwn` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseForOwn(object, iteratee) {\n\t  return object && baseFor(object, iteratee, keys);\n\t}\n\n\t/**\n\t * The base implementation of `_.has` without support for deep paths.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} key The key to check.\n\t * @returns {boolean} Returns `true` if `key` exists, else `false`.\n\t */\n\tfunction baseHas(object, key) {\n\t  // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n\t  // that are composed entirely of index properties, return `false` for\n\t  // `hasOwnProperty` checks of them.\n\t  return hasOwnProperty.call(object, key) ||\n\t    (typeof object == 'object' && key in object && getPrototype(object) === null);\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't skip the constructor\n\t * property of prototypes or treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t  return nativeKeys(Object(object));\n\t}\n\n\t/**\n\t * The base implementation of `_.property` without support for deep paths.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseProperty(key) {\n\t  return function(object) {\n\t    return object == null ? undefined : object[key];\n\t  };\n\t}\n\n\t/**\n\t * Creates a `baseEach` or `baseEachRight` function.\n\t *\n\t * @private\n\t * @param {Function} eachFunc The function to iterate over a collection.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new base function.\n\t */\n\tfunction createBaseEach(eachFunc, fromRight) {\n\t  return function(collection, iteratee) {\n\t    if (collection == null) {\n\t      return collection;\n\t    }\n\t    if (!isArrayLike(collection)) {\n\t      return eachFunc(collection, iteratee);\n\t    }\n\t    var length = collection.length,\n\t        index = fromRight ? length : -1,\n\t        iterable = Object(collection);\n\n\t    while ((fromRight ? index-- : ++index < length)) {\n\t      if (iteratee(iterable[index], index, iterable) === false) {\n\t        break;\n\t      }\n\t    }\n\t    return collection;\n\t  };\n\t}\n\n\t/**\n\t * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n\t *\n\t * @private\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new base function.\n\t */\n\tfunction createBaseFor(fromRight) {\n\t  return function(object, iteratee, keysFunc) {\n\t    var index = -1,\n\t        iterable = Object(object),\n\t        props = keysFunc(object),\n\t        length = props.length;\n\n\t    while (length--) {\n\t      var key = props[fromRight ? length : ++index];\n\t      if (iteratee(iterable[key], key, iterable) === false) {\n\t        break;\n\t      }\n\t    }\n\t    return object;\n\t  };\n\t}\n\n\t/**\n\t * Gets the \"length\" property value of `object`.\n\t *\n\t * **Note:** This function is used to avoid a\n\t * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n\t * Safari on at least iOS 8.1-8.3 ARM64.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {*} Returns the \"length\" value.\n\t */\n\tvar getLength = baseProperty('length');\n\n\t/**\n\t * Gets the `[[Prototype]]` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {null|Object} Returns the `[[Prototype]]`.\n\t */\n\tfunction getPrototype(value) {\n\t  return nativeGetPrototype(Object(value));\n\t}\n\n\t/**\n\t * Creates an array of index keys for `object` values of arrays,\n\t * `arguments` objects, and strings, otherwise `null` is returned.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array|null} Returns index keys, else `null`.\n\t */\n\tfunction indexKeys(object) {\n\t  var length = object ? object.length : undefined;\n\t  if (isLength(length) &&\n\t      (isArray(object) || isString(object) || isArguments(object))) {\n\t    return baseTimes(length, String);\n\t  }\n\t  return null;\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t  var Ctor = value && value.constructor,\n\t      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t  return value === proto;\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t  // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n\t  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @type {Function}\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t  return value != null && isLength(getLength(value)) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t  return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t  // The use of `Object#toString` avoids issues with the `typeof` operator\n\t  // in Safari 8 which returns 'object' for typed array and weak map constructors,\n\t  // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n\t  var tag = isObject(value) ? objectToString.call(value) : '';\n\t  return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This function is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t  return typeof value == 'number' &&\n\t    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n\t * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t  var type = typeof value;\n\t  return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t  return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `String` primitive or object.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isString('abc');\n\t * // => true\n\t *\n\t * _.isString(1);\n\t * // => false\n\t */\n\tfunction isString(value) {\n\t  return typeof value == 'string' ||\n\t    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t *   this.a = 1;\n\t *   this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t  var isProto = isPrototype(object);\n\t  if (!(isProto || isArrayLike(object))) {\n\t    return baseKeys(object);\n\t  }\n\t  var indexes = indexKeys(object),\n\t      skipIndexes = !!indexes,\n\t      result = indexes || [],\n\t      length = result.length;\n\n\t  for (var key in object) {\n\t    if (baseHas(object, key) &&\n\t        !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n\t        !(isProto && key == 'constructor')) {\n\t      result.push(key);\n\t    }\n\t  }\n\t  return result;\n\t}\n\n\tmodule.exports = baseEach;\n\n\n/***/ },\n/* 186 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module, global) {/**\n\t * lodash 4.6.1 (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\tvar stringToPath = __webpack_require__(492);\n\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used to compose bitmasks for comparison styles. */\n\tvar UNORDERED_COMPARE_FLAG = 1,\n\t    PARTIAL_COMPARE_FLAG = 2;\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t    arrayTag = '[object Array]',\n\t    boolTag = '[object Boolean]',\n\t    dateTag = '[object Date]',\n\t    errorTag = '[object Error]',\n\t    funcTag = '[object Function]',\n\t    genTag = '[object GeneratorFunction]',\n\t    mapTag = '[object Map]',\n\t    numberTag = '[object Number]',\n\t    objectTag = '[object Object]',\n\t    promiseTag = '[object Promise]',\n\t    regexpTag = '[object RegExp]',\n\t    setTag = '[object Set]',\n\t    stringTag = '[object String]',\n\t    symbolTag = '[object Symbol]',\n\t    weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t    dataViewTag = '[object DataView]',\n\t    float32Tag = '[object Float32Array]',\n\t    float64Tag = '[object Float64Array]',\n\t    int8Tag = '[object Int8Array]',\n\t    int16Tag = '[object Int16Array]',\n\t    int32Tag = '[object Int32Array]',\n\t    uint8Tag = '[object Uint8Array]',\n\t    uint8ClampedTag = '[object Uint8ClampedArray]',\n\t    uint16Tag = '[object Uint16Array]',\n\t    uint32Tag = '[object Uint32Array]';\n\n\t/** Used to match property names within property paths. */\n\tvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n\t    reIsPlainProp = /^\\w*$/;\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values of typed arrays. */\n\tvar typedArrayTags = {};\n\ttypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n\ttypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n\ttypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n\ttypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n\ttypedArrayTags[uint32Tag] = true;\n\ttypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n\ttypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n\ttypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n\ttypedArrayTags[errorTag] = typedArrayTags[funcTag] =\n\ttypedArrayTags[mapTag] = typedArrayTags[numberTag] =\n\ttypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n\ttypedArrayTags[setTag] = typedArrayTags[stringTag] =\n\ttypedArrayTags[weakMapTag] = false;\n\n\t/** Used to determine if values are of the language type `Object`. */\n\tvar objectTypes = {\n\t  'function': true,\n\t  'object': true\n\t};\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n\t  ? exports\n\t  : undefined;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n\t  ? module\n\t  : undefined;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n\t/** Detect free variable `window`. */\n\tvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n\t/** Detect `this` as the global object. */\n\tvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n\t/**\n\t * Used as a reference to the global object.\n\t *\n\t * The `this` value is used if it's the global object to avoid Greasemonkey's\n\t * restricted `window` object, otherwise the `window` object is used.\n\t */\n\tvar root = freeGlobal ||\n\t  ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n\t    freeSelf || thisGlobal || Function('return this')();\n\n\t/**\n\t * A specialized version of `_.map` for arrays without support for iteratee\n\t * shorthands.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\tfunction arrayMap(array, iteratee) {\n\t  var index = -1,\n\t      length = array.length,\n\t      result = Array(length);\n\n\t  while (++index < length) {\n\t    result[index] = iteratee(array[index], index, array);\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * A specialized version of `_.some` for arrays without support for iteratee\n\t * shorthands.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t *  else `false`.\n\t */\n\tfunction arraySome(array, predicate) {\n\t  var index = -1,\n\t      length = array.length;\n\n\t  while (++index < length) {\n\t    if (predicate(array[index], index, array)) {\n\t      return true;\n\t    }\n\t  }\n\t  return false;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t  var index = -1,\n\t      result = Array(n);\n\n\t  while (++index < n) {\n\t    result[index] = iteratee(index);\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n\t * of key-value pairs for `object` corresponding to the property names of `props`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array} props The property names to get values for.\n\t * @returns {Object} Returns the new array of key-value pairs.\n\t */\n\tfunction baseToPairs(object, props) {\n\t  return arrayMap(props, function(key) {\n\t    return [key, object[key]];\n\t  });\n\t}\n\n\t/**\n\t * Checks if `value` is a global object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n\t */\n\tfunction checkGlobal(value) {\n\t  return (value && value.Object === Object) ? value : null;\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t  // Many host objects are `Object` objects that can coerce to strings\n\t  // despite having improperly defined `toString` methods.\n\t  var result = false;\n\t  if (value != null && typeof value.toString != 'function') {\n\t    try {\n\t      result = !!(value + '');\n\t    } catch (e) {}\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t  value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n\t  length = length == null ? MAX_SAFE_INTEGER : length;\n\t  return value > -1 && value % 1 == 0 && value < length;\n\t}\n\n\t/**\n\t * Converts `map` to an array.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the converted array.\n\t */\n\tfunction mapToArray(map) {\n\t  var index = -1,\n\t      result = Array(map.size);\n\n\t  map.forEach(function(value, key) {\n\t    result[++index] = [key, value];\n\t  });\n\t  return result;\n\t}\n\n\t/**\n\t * Converts `set` to an array.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the converted array.\n\t */\n\tfunction setToArray(set) {\n\t  var index = -1,\n\t      result = Array(set.size);\n\n\t  set.forEach(function(value) {\n\t    result[++index] = value;\n\t  });\n\t  return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t    objectProto = Object.prototype;\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = Function.prototype.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Symbol = root.Symbol,\n\t    Uint8Array = root.Uint8Array,\n\t    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t    splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetPrototype = Object.getPrototypeOf,\n\t    nativeKeys = Object.keys;\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t    Map = getNative(root, 'Map'),\n\t    Promise = getNative(root, 'Promise'),\n\t    Set = getNative(root, 'Set'),\n\t    WeakMap = getNative(root, 'WeakMap'),\n\t    nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t    mapCtorString = toSource(Map),\n\t    promiseCtorString = toSource(Promise),\n\t    setCtorString = toSource(Set),\n\t    weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @returns {Object} Returns the new hash object.\n\t */\n\tfunction Hash() {}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(hash, key) {\n\t  return hashHas(hash, key) && delete hash[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to query.\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(hash, key) {\n\t  if (nativeCreate) {\n\t    var result = hash[key];\n\t    return result === HASH_UNDEFINED ? undefined : result;\n\t  }\n\t  return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to query.\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(hash, key) {\n\t  return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t */\n\tfunction hashSet(hash, key, value) {\n\t  hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t}\n\n\t// Avoid inheriting from `Object.prototype` when possible.\n\tHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [values] The values to cache.\n\t */\n\tfunction MapCache(values) {\n\t  var index = -1,\n\t      length = values ? values.length : 0;\n\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = values[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapClear() {\n\t  this.__data__ = {\n\t    'hash': new Hash,\n\t    'map': Map ? new Map : [],\n\t    'string': new Hash\n\t  };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapDelete(key) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n\t  }\n\t  return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapGet(key) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n\t  }\n\t  return Map ? data.map.get(key) : assocGet(data.map, key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapHas(key) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n\t  }\n\t  return Map ? data.map.has(key) : assocHas(data.map, key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapSet(key, value) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n\t  } else if (Map) {\n\t    data.map.set(key, value);\n\t  } else {\n\t    assocSet(data.map, key, value);\n\t  }\n\t  return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapClear;\n\tMapCache.prototype['delete'] = mapDelete;\n\tMapCache.prototype.get = mapGet;\n\tMapCache.prototype.has = mapHas;\n\tMapCache.prototype.set = mapSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [values] The values to cache.\n\t */\n\tfunction Stack(values) {\n\t  var index = -1,\n\t      length = values ? values.length : 0;\n\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = values[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t  this.__data__ = { 'array': [], 'map': null };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t  var data = this.__data__,\n\t      array = data.array;\n\n\t  return array ? assocDelete(array, key) : data.map['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t  var data = this.__data__,\n\t      array = data.array;\n\n\t  return array ? assocGet(array, key) : data.map.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t  var data = this.__data__,\n\t      array = data.array;\n\n\t  return array ? assocHas(array, key) : data.map.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t  var data = this.__data__,\n\t      array = data.array;\n\n\t  if (array) {\n\t    if (array.length < (LARGE_ARRAY_SIZE - 1)) {\n\t      assocSet(array, key, value);\n\t    } else {\n\t      data.array = null;\n\t      data.map = new MapCache(array);\n\t    }\n\t  }\n\t  var map = data.map;\n\t  if (map) {\n\t    map.set(key, value);\n\t  }\n\t  return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Removes `key` and its value from the associative array.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction assocDelete(array, key) {\n\t  var index = assocIndexOf(array, key);\n\t  if (index < 0) {\n\t    return false;\n\t  }\n\t  var lastIndex = array.length - 1;\n\t  if (index == lastIndex) {\n\t    array.pop();\n\t  } else {\n\t    splice.call(array, index, 1);\n\t  }\n\t  return true;\n\t}\n\n\t/**\n\t * Gets the associative array value for `key`.\n\t *\n\t * @private\n\t * @param {Array} array The array to query.\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction assocGet(array, key) {\n\t  var index = assocIndexOf(array, key);\n\t  return index < 0 ? undefined : array[index][1];\n\t}\n\n\t/**\n\t * Checks if an associative array value for `key` exists.\n\t *\n\t * @private\n\t * @param {Array} array The array to query.\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction assocHas(array, key) {\n\t  return assocIndexOf(array, key) > -1;\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t  var length = array.length;\n\t  while (length--) {\n\t    if (eq(array[length][0], key)) {\n\t      return length;\n\t    }\n\t  }\n\t  return -1;\n\t}\n\n\t/**\n\t * Sets the associative array `key` to `value`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t */\n\tfunction assocSet(array, key, value) {\n\t  var index = assocIndexOf(array, key);\n\t  if (index < 0) {\n\t    array.push([key, value]);\n\t  } else {\n\t    array[index][1] = value;\n\t  }\n\t}\n\n\t/**\n\t * Casts `value` to a path array if it's not one.\n\t *\n\t * @private\n\t * @param {*} value The value to inspect.\n\t * @returns {Array} Returns the cast property path array.\n\t */\n\tfunction baseCastPath(value) {\n\t  return isArray(value) ? value : stringToPath(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.get` without support for default values.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {*} Returns the resolved value.\n\t */\n\tfunction baseGet(object, path) {\n\t  path = isKey(path, object) ? [path] : baseCastPath(path);\n\n\t  var index = 0,\n\t      length = path.length;\n\n\t  while (object != null && index < length) {\n\t    object = object[path[index++]];\n\t  }\n\t  return (index && index == length) ? object : undefined;\n\t}\n\n\t/**\n\t * The base implementation of `_.has` without support for deep paths.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} key The key to check.\n\t * @returns {boolean} Returns `true` if `key` exists, else `false`.\n\t */\n\tfunction baseHas(object, key) {\n\t  // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n\t  // that are composed entirely of index properties, return `false` for\n\t  // `hasOwnProperty` checks of them.\n\t  return hasOwnProperty.call(object, key) ||\n\t    (typeof object == 'object' && key in object && getPrototype(object) === null);\n\t}\n\n\t/**\n\t * The base implementation of `_.hasIn` without support for deep paths.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} key The key to check.\n\t * @returns {boolean} Returns `true` if `key` exists, else `false`.\n\t */\n\tfunction baseHasIn(object, key) {\n\t  return key in Object(object);\n\t}\n\n\t/**\n\t * The base implementation of `_.isEqual` which supports partial comparisons\n\t * and tracks traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @param {boolean} [bitmask] The bitmask of comparison flags.\n\t *  The bitmask may be composed of the following flags:\n\t *     1 - Unordered comparison\n\t *     2 - Partial comparison\n\t * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t */\n\tfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n\t  if (value === other) {\n\t    return true;\n\t  }\n\t  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n\t    return value !== value && other !== other;\n\t  }\n\t  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n\t}\n\n\t/**\n\t * A specialized version of `baseIsEqual` for arrays and objects which performs\n\t * deep comparisons and tracks traversed objects enabling objects with circular\n\t * references to be compared.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n\t *  for more details.\n\t * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n\t  var objIsArr = isArray(object),\n\t      othIsArr = isArray(other),\n\t      objTag = arrayTag,\n\t      othTag = arrayTag;\n\n\t  if (!objIsArr) {\n\t    objTag = getTag(object);\n\t    objTag = objTag == argsTag ? objectTag : objTag;\n\t  }\n\t  if (!othIsArr) {\n\t    othTag = getTag(other);\n\t    othTag = othTag == argsTag ? objectTag : othTag;\n\t  }\n\t  var objIsObj = objTag == objectTag && !isHostObject(object),\n\t      othIsObj = othTag == objectTag && !isHostObject(other),\n\t      isSameTag = objTag == othTag;\n\n\t  if (isSameTag && !objIsObj) {\n\t    stack || (stack = new Stack);\n\t    return (objIsArr || isTypedArray(object))\n\t      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n\t      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n\t  }\n\t  if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n\t    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n\t        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n\t    if (objIsWrapped || othIsWrapped) {\n\t      var objUnwrapped = objIsWrapped ? object.value() : object,\n\t          othUnwrapped = othIsWrapped ? other.value() : other;\n\n\t      stack || (stack = new Stack);\n\t      return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n\t    }\n\t  }\n\t  if (!isSameTag) {\n\t    return false;\n\t  }\n\t  stack || (stack = new Stack);\n\t  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n\t}\n\n\t/**\n\t * The base implementation of `_.isMatch` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Object} object The object to inspect.\n\t * @param {Object} source The object of property values to match.\n\t * @param {Array} matchData The property names, values, and compare flags to match.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n\t */\n\tfunction baseIsMatch(object, source, matchData, customizer) {\n\t  var index = matchData.length,\n\t      length = index,\n\t      noCustomizer = !customizer;\n\n\t  if (object == null) {\n\t    return !length;\n\t  }\n\t  object = Object(object);\n\t  while (index--) {\n\t    var data = matchData[index];\n\t    if ((noCustomizer && data[2])\n\t          ? data[1] !== object[data[0]]\n\t          : !(data[0] in object)\n\t        ) {\n\t      return false;\n\t    }\n\t  }\n\t  while (++index < length) {\n\t    data = matchData[index];\n\t    var key = data[0],\n\t        objValue = object[key],\n\t        srcValue = data[1];\n\n\t    if (noCustomizer && data[2]) {\n\t      if (objValue === undefined && !(key in object)) {\n\t        return false;\n\t      }\n\t    } else {\n\t      var stack = new Stack;\n\t      if (customizer) {\n\t        var result = customizer(objValue, srcValue, key, object, source, stack);\n\t      }\n\t      if (!(result === undefined\n\t            ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n\t            : result\n\t          )) {\n\t        return false;\n\t      }\n\t    }\n\t  }\n\t  return true;\n\t}\n\n\t/**\n\t * The base implementation of `_.iteratee`.\n\t *\n\t * @private\n\t * @param {*} [value=_.identity] The value to convert to an iteratee.\n\t * @returns {Function} Returns the iteratee.\n\t */\n\tfunction baseIteratee(value) {\n\t  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n\t  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n\t  if (typeof value == 'function') {\n\t    return value;\n\t  }\n\t  if (value == null) {\n\t    return identity;\n\t  }\n\t  if (typeof value == 'object') {\n\t    return isArray(value)\n\t      ? baseMatchesProperty(value[0], value[1])\n\t      : baseMatches(value);\n\t  }\n\t  return property(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't skip the constructor\n\t * property of prototypes or treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t  return nativeKeys(Object(object));\n\t}\n\n\t/**\n\t * The base implementation of `_.matches` which doesn't clone `source`.\n\t *\n\t * @private\n\t * @param {Object} source The object of property values to match.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseMatches(source) {\n\t  var matchData = getMatchData(source);\n\t  if (matchData.length == 1 && matchData[0][2]) {\n\t    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n\t  }\n\t  return function(object) {\n\t    return object === source || baseIsMatch(object, source, matchData);\n\t  };\n\t}\n\n\t/**\n\t * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n\t *\n\t * @private\n\t * @param {string} path The path of the property to get.\n\t * @param {*} srcValue The value to match.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseMatchesProperty(path, srcValue) {\n\t  if (isKey(path) && isStrictComparable(srcValue)) {\n\t    return matchesStrictComparable(path, srcValue);\n\t  }\n\t  return function(object) {\n\t    var objValue = get(object, path);\n\t    return (objValue === undefined && objValue === srcValue)\n\t      ? hasIn(object, path)\n\t      : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n\t  };\n\t}\n\n\t/**\n\t * The base implementation of `_.property` without support for deep paths.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseProperty(key) {\n\t  return function(object) {\n\t    return object == null ? undefined : object[key];\n\t  };\n\t}\n\n\t/**\n\t * A specialized version of `baseProperty` which supports deep paths.\n\t *\n\t * @private\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction basePropertyDeep(path) {\n\t  return function(object) {\n\t    return baseGet(object, path);\n\t  };\n\t}\n\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for arrays with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Array} array The array to compare.\n\t * @param {Array} other The other array to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t *  for more details.\n\t * @param {Object} stack Tracks traversed `array` and `other` objects.\n\t * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n\t */\n\tfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n\t  var index = -1,\n\t      isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n\t      isUnordered = bitmask & UNORDERED_COMPARE_FLAG,\n\t      arrLength = array.length,\n\t      othLength = other.length;\n\n\t  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n\t    return false;\n\t  }\n\t  // Assume cyclic values are equal.\n\t  var stacked = stack.get(array);\n\t  if (stacked) {\n\t    return stacked == other;\n\t  }\n\t  var result = true;\n\t  stack.set(array, other);\n\n\t  // Ignore non-index properties.\n\t  while (++index < arrLength) {\n\t    var arrValue = array[index],\n\t        othValue = other[index];\n\n\t    if (customizer) {\n\t      var compared = isPartial\n\t        ? customizer(othValue, arrValue, index, other, array, stack)\n\t        : customizer(arrValue, othValue, index, array, other, stack);\n\t    }\n\t    if (compared !== undefined) {\n\t      if (compared) {\n\t        continue;\n\t      }\n\t      result = false;\n\t      break;\n\t    }\n\t    // Recursively compare arrays (susceptible to call stack limits).\n\t    if (isUnordered) {\n\t      if (!arraySome(other, function(othValue) {\n\t            return arrValue === othValue ||\n\t              equalFunc(arrValue, othValue, customizer, bitmask, stack);\n\t          })) {\n\t        result = false;\n\t        break;\n\t      }\n\t    } else if (!(\n\t          arrValue === othValue ||\n\t            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n\t        )) {\n\t      result = false;\n\t      break;\n\t    }\n\t  }\n\t  stack['delete'](array);\n\t  return result;\n\t}\n\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for comparing objects of\n\t * the same `toStringTag`.\n\t *\n\t * **Note:** This function only supports comparing values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {string} tag The `toStringTag` of the objects to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t *  for more details.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n\t  switch (tag) {\n\t    case dataViewTag:\n\t      if ((object.byteLength != other.byteLength) ||\n\t          (object.byteOffset != other.byteOffset)) {\n\t        return false;\n\t      }\n\t      object = object.buffer;\n\t      other = other.buffer;\n\n\t    case arrayBufferTag:\n\t      if ((object.byteLength != other.byteLength) ||\n\t          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n\t        return false;\n\t      }\n\t      return true;\n\n\t    case boolTag:\n\t    case dateTag:\n\t      // Coerce dates and booleans to numbers, dates to milliseconds and\n\t      // booleans to `1` or `0` treating invalid dates coerced to `NaN` as\n\t      // not equal.\n\t      return +object == +other;\n\n\t    case errorTag:\n\t      return object.name == other.name && object.message == other.message;\n\n\t    case numberTag:\n\t      // Treat `NaN` vs. `NaN` as equal.\n\t      return (object != +object) ? other != +other : object == +other;\n\n\t    case regexpTag:\n\t    case stringTag:\n\t      // Coerce regexes to strings and treat strings, primitives and objects,\n\t      // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring\n\t      // for more details.\n\t      return object == (other + '');\n\n\t    case mapTag:\n\t      var convert = mapToArray;\n\n\t    case setTag:\n\t      var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n\t      convert || (convert = setToArray);\n\n\t      if (object.size != other.size && !isPartial) {\n\t        return false;\n\t      }\n\t      // Assume cyclic values are equal.\n\t      var stacked = stack.get(object);\n\t      if (stacked) {\n\t        return stacked == other;\n\t      }\n\t      bitmask |= UNORDERED_COMPARE_FLAG;\n\t      stack.set(object, other);\n\n\t      // Recursively compare objects (susceptible to call stack limits).\n\t      return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n\n\t    case symbolTag:\n\t      if (symbolValueOf) {\n\t        return symbolValueOf.call(object) == symbolValueOf.call(other);\n\t      }\n\t  }\n\t  return false;\n\t}\n\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for objects with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t *  for more details.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n\t  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n\t      objProps = keys(object),\n\t      objLength = objProps.length,\n\t      othProps = keys(other),\n\t      othLength = othProps.length;\n\n\t  if (objLength != othLength && !isPartial) {\n\t    return false;\n\t  }\n\t  var index = objLength;\n\t  while (index--) {\n\t    var key = objProps[index];\n\t    if (!(isPartial ? key in other : baseHas(other, key))) {\n\t      return false;\n\t    }\n\t  }\n\t  // Assume cyclic values are equal.\n\t  var stacked = stack.get(object);\n\t  if (stacked) {\n\t    return stacked == other;\n\t  }\n\t  var result = true;\n\t  stack.set(object, other);\n\n\t  var skipCtor = isPartial;\n\t  while (++index < objLength) {\n\t    key = objProps[index];\n\t    var objValue = object[key],\n\t        othValue = other[key];\n\n\t    if (customizer) {\n\t      var compared = isPartial\n\t        ? customizer(othValue, objValue, key, other, object, stack)\n\t        : customizer(objValue, othValue, key, object, other, stack);\n\t    }\n\t    // Recursively compare objects (susceptible to call stack limits).\n\t    if (!(compared === undefined\n\t          ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n\t          : compared\n\t        )) {\n\t      result = false;\n\t      break;\n\t    }\n\t    skipCtor || (skipCtor = key == 'constructor');\n\t  }\n\t  if (result && !skipCtor) {\n\t    var objCtor = object.constructor,\n\t        othCtor = other.constructor;\n\n\t    // Non `Object` object instances with different constructors are not equal.\n\t    if (objCtor != othCtor &&\n\t        ('constructor' in object && 'constructor' in other) &&\n\t        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n\t          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n\t      result = false;\n\t    }\n\t  }\n\t  stack['delete'](object);\n\t  return result;\n\t}\n\n\t/**\n\t * Gets the \"length\" property value of `object`.\n\t *\n\t * **Note:** This function is used to avoid a\n\t * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects\n\t * Safari on at least iOS 8.1-8.3 ARM64.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {*} Returns the \"length\" value.\n\t */\n\tvar getLength = baseProperty('length');\n\n\t/**\n\t * Gets the property names, values, and compare flags of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the match data of `object`.\n\t */\n\tfunction getMatchData(object) {\n\t  var result = toPairs(object),\n\t      length = result.length;\n\n\t  while (length--) {\n\t    result[length][2] = isStrictComparable(result[length][1]);\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t  var value = object[key];\n\t  return isNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Gets the `[[Prototype]]` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {null|Object} Returns the `[[Prototype]]`.\n\t */\n\tfunction getPrototype(value) {\n\t  return nativeGetPrototype(Object(value));\n\t}\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction getTag(value) {\n\t  return objectToString.call(value);\n\t}\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t    (Map && getTag(new Map) != mapTag) ||\n\t    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t    (Set && getTag(new Set) != setTag) ||\n\t    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t  getTag = function(value) {\n\t    var result = objectToString.call(value),\n\t        Ctor = result == objectTag ? value.constructor : undefined,\n\t        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t    if (ctorString) {\n\t      switch (ctorString) {\n\t        case dataViewCtorString: return dataViewTag;\n\t        case mapCtorString: return mapTag;\n\t        case promiseCtorString: return promiseTag;\n\t        case setCtorString: return setTag;\n\t        case weakMapCtorString: return weakMapTag;\n\t      }\n\t    }\n\t    return result;\n\t  };\n\t}\n\n\t/**\n\t * Checks if `path` exists on `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path to check.\n\t * @param {Function} hasFunc The function to check properties.\n\t * @returns {boolean} Returns `true` if `path` exists, else `false`.\n\t */\n\tfunction hasPath(object, path, hasFunc) {\n\t  path = isKey(path, object) ? [path] : baseCastPath(path);\n\n\t  var result,\n\t      index = -1,\n\t      length = path.length;\n\n\t  while (++index < length) {\n\t    var key = path[index];\n\t    if (!(result = object != null && hasFunc(object, key))) {\n\t      break;\n\t    }\n\t    object = object[key];\n\t  }\n\t  if (result) {\n\t    return result;\n\t  }\n\t  var length = object ? object.length : 0;\n\t  return !!length && isLength(length) && isIndex(key, length) &&\n\t    (isArray(object) || isString(object) || isArguments(object));\n\t}\n\n\t/**\n\t * Creates an array of index keys for `object` values of arrays,\n\t * `arguments` objects, and strings, otherwise `null` is returned.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array|null} Returns index keys, else `null`.\n\t */\n\tfunction indexKeys(object) {\n\t  var length = object ? object.length : undefined;\n\t  if (isLength(length) &&\n\t      (isArray(object) || isString(object) || isArguments(object))) {\n\t    return baseTimes(length, String);\n\t  }\n\t  return null;\n\t}\n\n\t/**\n\t * Checks if `value` is a property name and not a property path.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {Object} [object] The object to query keys on.\n\t * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n\t */\n\tfunction isKey(value, object) {\n\t  var type = typeof value;\n\t  if (type == 'number' || type == 'symbol') {\n\t    return true;\n\t  }\n\t  return !isArray(value) &&\n\t    (isSymbol(value) || reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n\t      (object != null && value in Object(object)));\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t  var type = typeof value;\n\t  return type == 'number' || type == 'boolean' ||\n\t    (type == 'string' && value != '__proto__') || value == null;\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t  var Ctor = value && value.constructor,\n\t      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t  return value === proto;\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` if suitable for strict\n\t *  equality comparisons, else `false`.\n\t */\n\tfunction isStrictComparable(value) {\n\t  return value === value && !isObject(value);\n\t}\n\n\t/**\n\t * A specialized version of `matchesProperty` for source values suitable\n\t * for strict equality comparisons, i.e. `===`.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @param {*} srcValue The value to match.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction matchesStrictComparable(key, srcValue) {\n\t  return function(object) {\n\t    if (object == null) {\n\t      return false;\n\t    }\n\t    return object[key] === srcValue &&\n\t      (srcValue !== undefined || (key in Object(object)));\n\t  };\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t  if (func != null) {\n\t    try {\n\t      return funcToString.call(func);\n\t    } catch (e) {}\n\t    try {\n\t      return (func + '');\n\t    } catch (e) {}\n\t  }\n\t  return '';\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'fred' };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t  return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t  // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n\t  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @type {Function}\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t  return value != null && isLength(getLength(value)) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t  return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t  // The use of `Object#toString` avoids issues with the `typeof` operator\n\t  // in Safari 8 which returns 'object' for typed array and weak map constructors,\n\t  // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n\t  var tag = isObject(value) ? objectToString.call(value) : '';\n\t  return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This function is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t  return typeof value == 'number' &&\n\t    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t  var type = typeof value;\n\t  return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t  return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Checks if `value` is a native function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isNative(Array.prototype.push);\n\t * // => true\n\t *\n\t * _.isNative(_);\n\t * // => false\n\t */\n\tfunction isNative(value) {\n\t  if (!isObject(value)) {\n\t    return false;\n\t  }\n\t  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t  return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `String` primitive or object.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isString('abc');\n\t * // => true\n\t *\n\t * _.isString(1);\n\t * // => false\n\t */\n\tfunction isString(value) {\n\t  return typeof value == 'string' ||\n\t    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `Symbol` primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isSymbol(Symbol.iterator);\n\t * // => true\n\t *\n\t * _.isSymbol('abc');\n\t * // => false\n\t */\n\tfunction isSymbol(value) {\n\t  return typeof value == 'symbol' ||\n\t    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a typed array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isTypedArray(new Uint8Array);\n\t * // => true\n\t *\n\t * _.isTypedArray([]);\n\t * // => false\n\t */\n\tfunction isTypedArray(value) {\n\t  return isObjectLike(value) &&\n\t    isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n\t}\n\n\t/**\n\t * Gets the value at `path` of `object`. If the resolved value is\n\t * `undefined`, the `defaultValue` is used in its place.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.7.0\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to get.\n\t * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n\t * @returns {*} Returns the resolved value.\n\t * @example\n\t *\n\t * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\t *\n\t * _.get(object, 'a[0].b.c');\n\t * // => 3\n\t *\n\t * _.get(object, ['a', '0', 'b', 'c']);\n\t * // => 3\n\t *\n\t * _.get(object, 'a.b.c', 'default');\n\t * // => 'default'\n\t */\n\tfunction get(object, path, defaultValue) {\n\t  var result = object == null ? undefined : baseGet(object, path);\n\t  return result === undefined ? defaultValue : result;\n\t}\n\n\t/**\n\t * Checks if `path` is a direct or inherited property of `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path to check.\n\t * @returns {boolean} Returns `true` if `path` exists, else `false`.\n\t * @example\n\t *\n\t * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n\t *\n\t * _.hasIn(object, 'a');\n\t * // => true\n\t *\n\t * _.hasIn(object, 'a.b');\n\t * // => true\n\t *\n\t * _.hasIn(object, ['a', 'b']);\n\t * // => true\n\t *\n\t * _.hasIn(object, 'b');\n\t * // => false\n\t */\n\tfunction hasIn(object, path) {\n\t  return object != null && hasPath(object, path, baseHasIn);\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t *   this.a = 1;\n\t *   this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t  var isProto = isPrototype(object);\n\t  if (!(isProto || isArrayLike(object))) {\n\t    return baseKeys(object);\n\t  }\n\t  var indexes = indexKeys(object),\n\t      skipIndexes = !!indexes,\n\t      result = indexes || [],\n\t      length = result.length;\n\n\t  for (var key in object) {\n\t    if (baseHas(object, key) &&\n\t        !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n\t        !(isProto && key == 'constructor')) {\n\t      result.push(key);\n\t    }\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * Creates an array of own enumerable string keyed-value pairs for `object`\n\t * which can be consumed by `_.fromPairs`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @alias entries\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the new array of key-value pairs.\n\t * @example\n\t *\n\t * function Foo() {\n\t *   this.a = 1;\n\t *   this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.toPairs(new Foo);\n\t * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n\t */\n\tfunction toPairs(object) {\n\t  return baseToPairs(object, keys(object));\n\t}\n\n\t/**\n\t * This method returns the first argument given to it.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Util\n\t * @param {*} value Any value.\n\t * @returns {*} Returns `value`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred' };\n\t *\n\t * _.identity(object) === object;\n\t * // => true\n\t */\n\tfunction identity(value) {\n\t  return value;\n\t}\n\n\t/**\n\t * Creates a function that returns the value at `path` of a given object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 2.4.0\n\t * @category Util\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var objects = [\n\t *   { 'a': { 'b': 2 } },\n\t *   { 'a': { 'b': 1 } }\n\t * ];\n\t *\n\t * _.map(objects, _.property('a.b'));\n\t * // => [2, 1]\n\t *\n\t * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n\t * // => [1, 2]\n\t */\n\tfunction property(path) {\n\t  return isKey(path) ? baseProperty(path) : basePropertyDeep(path);\n\t}\n\n\tmodule.exports = baseIteratee;\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(92)(module), (function() { return this; }())))\n\n/***/ },\n/* 187 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar bn = __webpack_require__(11);\n\tvar brorand = __webpack_require__(140);\n\n\tfunction MillerRabin(rand) {\n\t  this.rand = rand || new brorand.Rand();\n\t}\n\tmodule.exports = MillerRabin;\n\n\tMillerRabin.create = function create(rand) {\n\t  return new MillerRabin(rand);\n\t};\n\n\tMillerRabin.prototype._rand = function _rand(n) {\n\t  var len = n.bitLength();\n\t  var buf = this.rand.generate(Math.ceil(len / 8));\n\n\t  // Set low bits\n\t  buf[0] |= 3;\n\n\t  // Mask high bits\n\t  var mask = len & 0x7;\n\t  if (mask !== 0)\n\t    buf[buf.length - 1] >>= 7 - mask;\n\n\t  return new bn(buf);\n\t}\n\n\tMillerRabin.prototype.test = function test(n, k, cb) {\n\t  var len = n.bitLength();\n\t  var red = bn.mont(n);\n\t  var rone = new bn(1).toRed(red);\n\n\t  if (!k)\n\t    k = Math.max(1, (len / 48) | 0);\n\n\t  // Find d and s, (n - 1) = (2 ^ s) * d;\n\t  var n1 = n.subn(1);\n\t  var n2 = n1.subn(1);\n\t  for (var s = 0; !n1.testn(s); s++) {}\n\t  var d = n.shrn(s);\n\n\t  var rn1 = n1.toRed(red);\n\n\t  var prime = true;\n\t  for (; k > 0; k--) {\n\t    var a = this._rand(n2);\n\t    if (cb)\n\t      cb(a);\n\n\t    var x = a.toRed(red).redPow(d);\n\t    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n\t      continue;\n\n\t    for (var i = 1; i < s; i++) {\n\t      x = x.redSqr();\n\n\t      if (x.cmp(rone) === 0)\n\t        return false;\n\t      if (x.cmp(rn1) === 0)\n\t        break;\n\t    }\n\n\t    if (i === s)\n\t      return false;\n\t  }\n\n\t  return prime;\n\t};\n\n\tMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n\t  var len = n.bitLength();\n\t  var red = bn.mont(n);\n\t  var rone = new bn(1).toRed(red);\n\n\t  if (!k)\n\t    k = Math.max(1, (len / 48) | 0);\n\n\t  // Find d and s, (n - 1) = (2 ^ s) * d;\n\t  var n1 = n.subn(1);\n\t  var n2 = n1.subn(1);\n\t  for (var s = 0; !n1.testn(s); s++) {}\n\t  var d = n.shrn(s);\n\n\t  var rn1 = n1.toRed(red);\n\n\t  for (; k > 0; k--) {\n\t    var a = this._rand(n2);\n\n\t    var g = n.gcd(a);\n\t    if (g.cmpn(1) !== 0)\n\t      return g;\n\n\t    var x = a.toRed(red).redPow(d);\n\t    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n\t      continue;\n\n\t    for (var i = 1; i < s; i++) {\n\t      x = x.redSqr();\n\n\t      if (x.cmp(rone) === 0)\n\t        return x.fromRed().subn(1).gcd(n);\n\t      if (x.cmp(rn1) === 0)\n\t        break;\n\t    }\n\n\t    if (i === s) {\n\t      x = x.redSqr();\n\t      return x.fromRed().subn(1).gcd(n);\n\t    }\n\t  }\n\n\t  return false;\n\t};\n\n\n/***/ },\n/* 188 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar through = __webpack_require__(206)\n\tvar split = __webpack_require__(518)\n\tvar EOL = __webpack_require__(190).EOL\n\n\tmodule.exports = parse\n\tmodule.exports.serialize = module.exports.stringify = serialize\n\tmodule.exports.parse = parse\n\n\tfunction parse (opts) {\n\t  opts = opts || {}\n\t  opts.strict = opts.strict !== false\n\n\t  function parseRow (row) {\n\t    try {\n\t      if (row) return JSON.parse(row)\n\t    } catch (e) {\n\t      if (opts.strict) {\n\t        this.emit('error', new Error('Could not parse row ' + row.slice(0, 50) + '...'))\n\t      }\n\t    }\n\t  }\n\n\t  return split(parseRow)\n\t}\n\n\tfunction serialize (opts) {\n\t  return through.obj(opts, function(obj, enc, cb) {\n\t    cb(null, JSON.stringify(obj) + EOL)\n\t  })\n\t}\n\n\n/***/ },\n/* 189 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar wrappy = __webpack_require__(209)\n\tmodule.exports = wrappy(once)\n\n\tonce.proto = once(function () {\n\t  Object.defineProperty(Function.prototype, 'once', {\n\t    value: function () {\n\t      return once(this)\n\t    },\n\t    configurable: true\n\t  })\n\t})\n\n\tfunction once (fn) {\n\t  var f = function () {\n\t    if (f.called) return f.value\n\t    f.called = true\n\t    return f.value = fn.apply(this, arguments)\n\t  }\n\t  f.called = false\n\t  return f\n\t}\n\n\n/***/ },\n/* 190 */\n/***/ function(module, exports) {\n\n\texports.endianness = function () { return 'LE' };\n\n\texports.hostname = function () {\n\t    if (typeof location !== 'undefined') {\n\t        return location.hostname\n\t    }\n\t    else return '';\n\t};\n\n\texports.loadavg = function () { return [] };\n\n\texports.uptime = function () { return 0 };\n\n\texports.freemem = function () {\n\t    return Number.MAX_VALUE;\n\t};\n\n\texports.totalmem = function () {\n\t    return Number.MAX_VALUE;\n\t};\n\n\texports.cpus = function () { return [] };\n\n\texports.type = function () { return 'Browser' };\n\n\texports.release = function () {\n\t    if (typeof navigator !== 'undefined') {\n\t        return navigator.appVersion;\n\t    }\n\t    return '';\n\t};\n\n\texports.networkInterfaces\n\t= exports.getNetworkInterfaces\n\t= function () { return {} };\n\n\texports.arch = function () { return 'javascript' };\n\n\texports.platform = function () { return 'browser' };\n\n\texports.tmpdir = exports.tmpDir = function () {\n\t    return '/tmp';\n\t};\n\n\texports.EOL = '\\n';\n\n\n/***/ },\n/* 191 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var createHmac = __webpack_require__(120)\n\tvar MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\n\texports.pbkdf2 = pbkdf2\n\tfunction pbkdf2 (password, salt, iterations, keylen, digest, callback) {\n\t  if (typeof digest === 'function') {\n\t    callback = digest\n\t    digest = undefined\n\t  }\n\n\t  if (typeof callback !== 'function') {\n\t    throw new Error('No callback provided to pbkdf2')\n\t  }\n\n\t  var result = pbkdf2Sync(password, salt, iterations, keylen, digest)\n\t  setTimeout(function () {\n\t    callback(undefined, result)\n\t  })\n\t}\n\n\texports.pbkdf2Sync = pbkdf2Sync\n\tfunction pbkdf2Sync (password, salt, iterations, keylen, digest) {\n\t  if (typeof iterations !== 'number') {\n\t    throw new TypeError('Iterations not a number')\n\t  }\n\n\t  if (iterations < 0) {\n\t    throw new TypeError('Bad iterations')\n\t  }\n\n\t  if (typeof keylen !== 'number') {\n\t    throw new TypeError('Key length not a number')\n\t  }\n\n\t  if (keylen < 0 || keylen > MAX_ALLOC) {\n\t    throw new TypeError('Bad key length')\n\t  }\n\n\t  digest = digest || 'sha1'\n\n\t  if (!Buffer.isBuffer(password)) password = new Buffer(password, 'binary')\n\t  if (!Buffer.isBuffer(salt)) salt = new Buffer(salt, 'binary')\n\n\t  var hLen\n\t  var l = 1\n\t  var DK = new Buffer(keylen)\n\t  var block1 = new Buffer(salt.length + 4)\n\t  salt.copy(block1, 0, 0, salt.length)\n\n\t  var r\n\t  var T\n\n\t  for (var i = 1; i <= l; i++) {\n\t    block1.writeUInt32BE(i, salt.length)\n\t    var U = createHmac(digest, password).update(block1).digest()\n\n\t    if (!hLen) {\n\t      hLen = U.length\n\t      T = new Buffer(hLen)\n\t      l = Math.ceil(keylen / hLen)\n\t      r = keylen - (l - 1) * hLen\n\t    }\n\n\t    U.copy(T, 0, 0, hLen)\n\n\t    for (var j = 1; j < iterations; j++) {\n\t      U = createHmac(digest, password).update(U).digest()\n\n\t      for (var k = 0; k < hLen; k++) {\n\t        T[k] ^= U[k]\n\t      }\n\t    }\n\n\t    var destPos = (i - 1) * hLen\n\t    var len = (i === l ? r : hLen)\n\t    T.copy(DK, destPos, 0, len)\n\t  }\n\n\t  return DK\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 192 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var createHash = __webpack_require__(58);\n\tmodule.exports = function (seed, len) {\n\t  var t = new Buffer('');\n\t  var  i = 0, c;\n\t  while (t.length < len) {\n\t    c = i2ops(i++);\n\t    t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n\t  }\n\t  return t.slice(0, len);\n\t};\n\n\tfunction i2ops(c) {\n\t  var out = new Buffer(4);\n\t  out.writeUInt32BE(c,0);\n\t  return out;\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 193 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(11);\n\tfunction withPublic(paddedMsg, key) {\n\t  return new Buffer(paddedMsg\n\t    .toRed(bn.mont(key.modulus))\n\t    .redPow(new bn(key.publicExponent))\n\t    .fromRed()\n\t    .toArray());\n\t}\n\n\tmodule.exports = withPublic;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 194 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function xor(a, b) {\n\t  var len = a.length;\n\t  var i = -1;\n\t  while (++i < len) {\n\t    a[i] ^= b[i];\n\t  }\n\t  return a\n\t};\n\n/***/ },\n/* 195 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t// a duplex stream is just a stream that is both readable and writable.\n\t// Since JS doesn't have multiple prototypal inheritance, this class\n\t// prototypally inherits from Readable, and then parasitically from\n\t// Writable.\n\n\tmodule.exports = Duplex;\n\n\t/*<replacement>*/\n\tvar objectKeys = Object.keys || function (obj) {\n\t  var keys = [];\n\t  for (var key in obj) keys.push(key);\n\t  return keys;\n\t}\n\t/*</replacement>*/\n\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tvar Readable = __webpack_require__(507);\n\tvar Writable = __webpack_require__(509);\n\n\tutil.inherits(Duplex, Readable);\n\n\tforEach(objectKeys(Writable.prototype), function(method) {\n\t  if (!Duplex.prototype[method])\n\t    Duplex.prototype[method] = Writable.prototype[method];\n\t});\n\n\tfunction Duplex(options) {\n\t  if (!(this instanceof Duplex))\n\t    return new Duplex(options);\n\n\t  Readable.call(this, options);\n\t  Writable.call(this, options);\n\n\t  if (options && options.readable === false)\n\t    this.readable = false;\n\n\t  if (options && options.writable === false)\n\t    this.writable = false;\n\n\t  this.allowHalfOpen = true;\n\t  if (options && options.allowHalfOpen === false)\n\t    this.allowHalfOpen = false;\n\n\t  this.once('end', onend);\n\t}\n\n\t// the no-half-open enforcer\n\tfunction onend() {\n\t  // if we allow half-open state, or if the writable side ended,\n\t  // then we're ok.\n\t  if (this.allowHalfOpen || this._writableState.ended)\n\t    return;\n\n\t  // no more data can be written.\n\t  // But allow more writes to happen in this tick.\n\t  process.nextTick(this.end.bind(this));\n\t}\n\n\tfunction forEach (xs, f) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    f(xs[i], i);\n\t  }\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 196 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/**\n\t * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n\t * in FIPS 180-2\n\t * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t *\n\t */\n\n\tvar inherits = __webpack_require__(2)\n\tvar Hash = __webpack_require__(61)\n\n\tvar K = [\n\t  0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n\t  0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n\t  0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n\t  0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n\t  0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n\t  0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n\t  0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n\t  0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n\t  0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n\t  0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n\t  0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n\t  0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n\t  0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n\t  0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n\t  0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n\t  0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n\t]\n\n\tvar W = new Array(64)\n\n\tfunction Sha256 () {\n\t  this.init()\n\n\t  this._w = W // new Array(64)\n\n\t  Hash.call(this, 64, 56)\n\t}\n\n\tinherits(Sha256, Hash)\n\n\tSha256.prototype.init = function () {\n\t  this._a = 0x6a09e667\n\t  this._b = 0xbb67ae85\n\t  this._c = 0x3c6ef372\n\t  this._d = 0xa54ff53a\n\t  this._e = 0x510e527f\n\t  this._f = 0x9b05688c\n\t  this._g = 0x1f83d9ab\n\t  this._h = 0x5be0cd19\n\n\t  return this\n\t}\n\n\tfunction ch (x, y, z) {\n\t  return z ^ (x & (y ^ z))\n\t}\n\n\tfunction maj (x, y, z) {\n\t  return (x & y) | (z & (x | y))\n\t}\n\n\tfunction sigma0 (x) {\n\t  return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n\t}\n\n\tfunction sigma1 (x) {\n\t  return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n\t}\n\n\tfunction gamma0 (x) {\n\t  return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n\t}\n\n\tfunction gamma1 (x) {\n\t  return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n\t}\n\n\tSha256.prototype._update = function (M) {\n\t  var W = this._w\n\n\t  var a = this._a | 0\n\t  var b = this._b | 0\n\t  var c = this._c | 0\n\t  var d = this._d | 0\n\t  var e = this._e | 0\n\t  var f = this._f | 0\n\t  var g = this._g | 0\n\t  var h = this._h | 0\n\n\t  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n\t  for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n\t  for (var j = 0; j < 64; ++j) {\n\t    var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n\t    var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n\t    h = g\n\t    g = f\n\t    f = e\n\t    e = (d + T1) | 0\n\t    d = c\n\t    c = b\n\t    b = a\n\t    a = (T1 + T2) | 0\n\t  }\n\n\t  this._a = (a + this._a) | 0\n\t  this._b = (b + this._b) | 0\n\t  this._c = (c + this._c) | 0\n\t  this._d = (d + this._d) | 0\n\t  this._e = (e + this._e) | 0\n\t  this._f = (f + this._f) | 0\n\t  this._g = (g + this._g) | 0\n\t  this._h = (h + this._h) | 0\n\t}\n\n\tSha256.prototype._hash = function () {\n\t  var H = new Buffer(32)\n\n\t  H.writeInt32BE(this._a, 0)\n\t  H.writeInt32BE(this._b, 4)\n\t  H.writeInt32BE(this._c, 8)\n\t  H.writeInt32BE(this._d, 12)\n\t  H.writeInt32BE(this._e, 16)\n\t  H.writeInt32BE(this._f, 20)\n\t  H.writeInt32BE(this._g, 24)\n\t  H.writeInt32BE(this._h, 28)\n\n\t  return H\n\t}\n\n\tmodule.exports = Sha256\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 197 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var inherits = __webpack_require__(2)\n\tvar Hash = __webpack_require__(61)\n\n\tvar K = [\n\t  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n\t  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n\t  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n\t  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n\t  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n\t  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n\t  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n\t  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n\t  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n\t  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n\t  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n\t  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n\t  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n\t  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n\t  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n\t  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n\t  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n\t  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n\t  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n\t  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n\t  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n\t  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n\t  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n\t  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n\t  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n\t  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n\t  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n\t  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n\t  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n\t  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n\t  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n\t  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n\t  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n\t  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n\t  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n\t  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n\t  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n\t  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n\t  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n\t  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n\t]\n\n\tvar W = new Array(160)\n\n\tfunction Sha512 () {\n\t  this.init()\n\t  this._w = W\n\n\t  Hash.call(this, 128, 112)\n\t}\n\n\tinherits(Sha512, Hash)\n\n\tSha512.prototype.init = function () {\n\t  this._ah = 0x6a09e667\n\t  this._bh = 0xbb67ae85\n\t  this._ch = 0x3c6ef372\n\t  this._dh = 0xa54ff53a\n\t  this._eh = 0x510e527f\n\t  this._fh = 0x9b05688c\n\t  this._gh = 0x1f83d9ab\n\t  this._hh = 0x5be0cd19\n\n\t  this._al = 0xf3bcc908\n\t  this._bl = 0x84caa73b\n\t  this._cl = 0xfe94f82b\n\t  this._dl = 0x5f1d36f1\n\t  this._el = 0xade682d1\n\t  this._fl = 0x2b3e6c1f\n\t  this._gl = 0xfb41bd6b\n\t  this._hl = 0x137e2179\n\n\t  return this\n\t}\n\n\tfunction Ch (x, y, z) {\n\t  return z ^ (x & (y ^ z))\n\t}\n\n\tfunction maj (x, y, z) {\n\t  return (x & y) | (z & (x | y))\n\t}\n\n\tfunction sigma0 (x, xl) {\n\t  return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n\t}\n\n\tfunction sigma1 (x, xl) {\n\t  return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n\t}\n\n\tfunction Gamma0 (x, xl) {\n\t  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n\t}\n\n\tfunction Gamma0l (x, xl) {\n\t  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n\t}\n\n\tfunction Gamma1 (x, xl) {\n\t  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n\t}\n\n\tfunction Gamma1l (x, xl) {\n\t  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n\t}\n\n\tfunction getCarry (a, b) {\n\t  return (a >>> 0) < (b >>> 0) ? 1 : 0\n\t}\n\n\tSha512.prototype._update = function (M) {\n\t  var W = this._w\n\n\t  var ah = this._ah | 0\n\t  var bh = this._bh | 0\n\t  var ch = this._ch | 0\n\t  var dh = this._dh | 0\n\t  var eh = this._eh | 0\n\t  var fh = this._fh | 0\n\t  var gh = this._gh | 0\n\t  var hh = this._hh | 0\n\n\t  var al = this._al | 0\n\t  var bl = this._bl | 0\n\t  var cl = this._cl | 0\n\t  var dl = this._dl | 0\n\t  var el = this._el | 0\n\t  var fl = this._fl | 0\n\t  var gl = this._gl | 0\n\t  var hl = this._hl | 0\n\n\t  for (var i = 0; i < 32; i += 2) {\n\t    W[i] = M.readInt32BE(i * 4)\n\t    W[i + 1] = M.readInt32BE(i * 4 + 4)\n\t  }\n\t  for (; i < 160; i += 2) {\n\t    var xh = W[i - 15 * 2]\n\t    var xl = W[i - 15 * 2 + 1]\n\t    var gamma0 = Gamma0(xh, xl)\n\t    var gamma0l = Gamma0l(xl, xh)\n\n\t    xh = W[i - 2 * 2]\n\t    xl = W[i - 2 * 2 + 1]\n\t    var gamma1 = Gamma1(xh, xl)\n\t    var gamma1l = Gamma1l(xl, xh)\n\n\t    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t    var Wi7h = W[i - 7 * 2]\n\t    var Wi7l = W[i - 7 * 2 + 1]\n\n\t    var Wi16h = W[i - 16 * 2]\n\t    var Wi16l = W[i - 16 * 2 + 1]\n\n\t    var Wil = (gamma0l + Wi7l) | 0\n\t    var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n\t    Wil = (Wil + gamma1l) | 0\n\t    Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n\t    Wil = (Wil + Wi16l) | 0\n\t    Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n\t    W[i] = Wih\n\t    W[i + 1] = Wil\n\t  }\n\n\t  for (var j = 0; j < 160; j += 2) {\n\t    Wih = W[j]\n\t    Wil = W[j + 1]\n\n\t    var majh = maj(ah, bh, ch)\n\t    var majl = maj(al, bl, cl)\n\n\t    var sigma0h = sigma0(ah, al)\n\t    var sigma0l = sigma0(al, ah)\n\t    var sigma1h = sigma1(eh, el)\n\t    var sigma1l = sigma1(el, eh)\n\n\t    // t1 = h + sigma1 + ch + K[j] + W[j]\n\t    var Kih = K[j]\n\t    var Kil = K[j + 1]\n\n\t    var chh = Ch(eh, fh, gh)\n\t    var chl = Ch(el, fl, gl)\n\n\t    var t1l = (hl + sigma1l) | 0\n\t    var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n\t    t1l = (t1l + chl) | 0\n\t    t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n\t    t1l = (t1l + Kil) | 0\n\t    t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n\t    t1l = (t1l + Wil) | 0\n\t    t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n\t    // t2 = sigma0 + maj\n\t    var t2l = (sigma0l + majl) | 0\n\t    var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n\t    hh = gh\n\t    hl = gl\n\t    gh = fh\n\t    gl = fl\n\t    fh = eh\n\t    fl = el\n\t    el = (dl + t1l) | 0\n\t    eh = (dh + t1h + getCarry(el, dl)) | 0\n\t    dh = ch\n\t    dl = cl\n\t    ch = bh\n\t    cl = bl\n\t    bh = ah\n\t    bl = al\n\t    al = (t1l + t2l) | 0\n\t    ah = (t1h + t2h + getCarry(al, t1l)) | 0\n\t  }\n\n\t  this._al = (this._al + al) | 0\n\t  this._bl = (this._bl + bl) | 0\n\t  this._cl = (this._cl + cl) | 0\n\t  this._dl = (this._dl + dl) | 0\n\t  this._el = (this._el + el) | 0\n\t  this._fl = (this._fl + fl) | 0\n\t  this._gl = (this._gl + gl) | 0\n\t  this._hl = (this._hl + hl) | 0\n\n\t  this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n\t  this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n\t  this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n\t  this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n\t  this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n\t  this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n\t  this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n\t  this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n\t}\n\n\tSha512.prototype._hash = function () {\n\t  var H = new Buffer(64)\n\n\t  function writeInt64BE (h, l, offset) {\n\t    H.writeInt32BE(h, offset)\n\t    H.writeInt32BE(l, offset + 4)\n\t  }\n\n\t  writeInt64BE(this._ah, this._al, 0)\n\t  writeInt64BE(this._bh, this._bl, 8)\n\t  writeInt64BE(this._ch, this._cl, 16)\n\t  writeInt64BE(this._dh, this._dl, 24)\n\t  writeInt64BE(this._eh, this._el, 32)\n\t  writeInt64BE(this._fh, this._fl, 40)\n\t  writeInt64BE(this._gh, this._gl, 48)\n\t  writeInt64BE(this._hh, this._hl, 56)\n\n\t  return H\n\t}\n\n\tmodule.exports = Sha512\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 198 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// a passthrough stream.\n\t// basically just the most minimal sort of Transform stream.\n\t// Every written chunk gets output as-is.\n\n\t'use strict';\n\n\tmodule.exports = PassThrough;\n\n\tvar Transform = __webpack_require__(126);\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tutil.inherits(PassThrough, Transform);\n\n\tfunction PassThrough(options) {\n\t  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n\t  Transform.call(this, options);\n\t}\n\n\tPassThrough.prototype._transform = function (chunk, encoding, cb) {\n\t  cb(null, chunk);\n\t};\n\n/***/ },\n/* 199 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\n\tmodule.exports = Readable;\n\n\t/*<replacement>*/\n\tvar processNextTick = __webpack_require__(60);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar isArray = __webpack_require__(519);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Buffer = __webpack_require__(1).Buffer;\n\t/*</replacement>*/\n\n\tReadable.ReadableState = ReadableState;\n\n\tvar EE = __webpack_require__(32);\n\n\t/*<replacement>*/\n\tvar EElistenerCount = function (emitter, type) {\n\t  return emitter.listeners(type).length;\n\t};\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Stream;\n\t(function () {\n\t  try {\n\t    Stream = __webpack_require__(12);\n\t  } catch (_) {} finally {\n\t    if (!Stream) Stream = __webpack_require__(32).EventEmitter;\n\t  }\n\t})();\n\t/*</replacement>*/\n\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar debugUtil = __webpack_require__(536);\n\tvar debug = undefined;\n\tif (debugUtil && debugUtil.debuglog) {\n\t  debug = debugUtil.debuglog('stream');\n\t} else {\n\t  debug = function () {};\n\t}\n\t/*</replacement>*/\n\n\tvar StringDecoder;\n\n\tutil.inherits(Readable, Stream);\n\n\tvar Duplex;\n\tfunction ReadableState(options, stream) {\n\t  Duplex = Duplex || __webpack_require__(49);\n\n\t  options = options || {};\n\n\t  // object stream flag. Used to make read(n) ignore n and to\n\t  // make all the buffer merging and length checks go away\n\t  this.objectMode = !!options.objectMode;\n\n\t  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n\t  // the point at which it stops calling _read() to fill the buffer\n\t  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\t  var hwm = options.highWaterMark;\n\t  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\t  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n\t  // cast to ints.\n\t  this.highWaterMark = ~ ~this.highWaterMark;\n\n\t  this.buffer = [];\n\t  this.length = 0;\n\t  this.pipes = null;\n\t  this.pipesCount = 0;\n\t  this.flowing = null;\n\t  this.ended = false;\n\t  this.endEmitted = false;\n\t  this.reading = false;\n\n\t  // a flag to be able to tell if the onwrite cb is called immediately,\n\t  // or on a later tick.  We set this to true at first, because any\n\t  // actions that shouldn't happen until \"later\" should generally also\n\t  // not happen before the first write call.\n\t  this.sync = true;\n\n\t  // whenever we return null, then we set a flag to say\n\t  // that we're awaiting a 'readable' event emission.\n\t  this.needReadable = false;\n\t  this.emittedReadable = false;\n\t  this.readableListening = false;\n\t  this.resumeScheduled = false;\n\n\t  // Crypto is kind of old and crusty.  Historically, its default string\n\t  // encoding is 'binary' so we have to make this configurable.\n\t  // Everything else in the universe uses 'utf8', though.\n\t  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n\t  // when piping, we only care about 'readable' events that happen\n\t  // after read()ing all the bytes and not getting any pushback.\n\t  this.ranOut = false;\n\n\t  // the number of writers that are awaiting a drain event in .pipe()s\n\t  this.awaitDrain = 0;\n\n\t  // if true, a maybeReadMore has been scheduled\n\t  this.readingMore = false;\n\n\t  this.decoder = null;\n\t  this.encoding = null;\n\t  if (options.encoding) {\n\t    if (!StringDecoder) StringDecoder = __webpack_require__(50).StringDecoder;\n\t    this.decoder = new StringDecoder(options.encoding);\n\t    this.encoding = options.encoding;\n\t  }\n\t}\n\n\tvar Duplex;\n\tfunction Readable(options) {\n\t  Duplex = Duplex || __webpack_require__(49);\n\n\t  if (!(this instanceof Readable)) return new Readable(options);\n\n\t  this._readableState = new ReadableState(options, this);\n\n\t  // legacy\n\t  this.readable = true;\n\n\t  if (options && typeof options.read === 'function') this._read = options.read;\n\n\t  Stream.call(this);\n\t}\n\n\t// Manually shove something into the read() buffer.\n\t// This returns true if the highWaterMark has not been hit yet,\n\t// similar to how Writable.write() returns true if you should\n\t// write() some more.\n\tReadable.prototype.push = function (chunk, encoding) {\n\t  var state = this._readableState;\n\n\t  if (!state.objectMode && typeof chunk === 'string') {\n\t    encoding = encoding || state.defaultEncoding;\n\t    if (encoding !== state.encoding) {\n\t      chunk = new Buffer(chunk, encoding);\n\t      encoding = '';\n\t    }\n\t  }\n\n\t  return readableAddChunk(this, state, chunk, encoding, false);\n\t};\n\n\t// Unshift should *always* be something directly out of read()\n\tReadable.prototype.unshift = function (chunk) {\n\t  var state = this._readableState;\n\t  return readableAddChunk(this, state, chunk, '', true);\n\t};\n\n\tReadable.prototype.isPaused = function () {\n\t  return this._readableState.flowing === false;\n\t};\n\n\tfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n\t  var er = chunkInvalid(state, chunk);\n\t  if (er) {\n\t    stream.emit('error', er);\n\t  } else if (chunk === null) {\n\t    state.reading = false;\n\t    onEofChunk(stream, state);\n\t  } else if (state.objectMode || chunk && chunk.length > 0) {\n\t    if (state.ended && !addToFront) {\n\t      var e = new Error('stream.push() after EOF');\n\t      stream.emit('error', e);\n\t    } else if (state.endEmitted && addToFront) {\n\t      var e = new Error('stream.unshift() after end event');\n\t      stream.emit('error', e);\n\t    } else {\n\t      var skipAdd;\n\t      if (state.decoder && !addToFront && !encoding) {\n\t        chunk = state.decoder.write(chunk);\n\t        skipAdd = !state.objectMode && chunk.length === 0;\n\t      }\n\n\t      if (!addToFront) state.reading = false;\n\n\t      // Don't add to the buffer if we've decoded to an empty string chunk and\n\t      // we're not in object mode\n\t      if (!skipAdd) {\n\t        // if we want the data now, just emit it.\n\t        if (state.flowing && state.length === 0 && !state.sync) {\n\t          stream.emit('data', chunk);\n\t          stream.read(0);\n\t        } else {\n\t          // update the buffer info.\n\t          state.length += state.objectMode ? 1 : chunk.length;\n\t          if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n\t          if (state.needReadable) emitReadable(stream);\n\t        }\n\t      }\n\n\t      maybeReadMore(stream, state);\n\t    }\n\t  } else if (!addToFront) {\n\t    state.reading = false;\n\t  }\n\n\t  return needMoreData(state);\n\t}\n\n\t// if it's past the high water mark, we can push in some more.\n\t// Also, if we have no data yet, we can stand some\n\t// more bytes.  This is to work around cases where hwm=0,\n\t// such as the repl.  Also, if the push() triggered a\n\t// readable event, and the user called read(largeNumber) such that\n\t// needReadable was set, then we ought to push more, so that another\n\t// 'readable' event will be triggered.\n\tfunction needMoreData(state) {\n\t  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n\t}\n\n\t// backwards compatibility.\n\tReadable.prototype.setEncoding = function (enc) {\n\t  if (!StringDecoder) StringDecoder = __webpack_require__(50).StringDecoder;\n\t  this._readableState.decoder = new StringDecoder(enc);\n\t  this._readableState.encoding = enc;\n\t  return this;\n\t};\n\n\t// Don't raise the hwm > 8MB\n\tvar MAX_HWM = 0x800000;\n\tfunction computeNewHighWaterMark(n) {\n\t  if (n >= MAX_HWM) {\n\t    n = MAX_HWM;\n\t  } else {\n\t    // Get the next highest power of 2\n\t    n--;\n\t    n |= n >>> 1;\n\t    n |= n >>> 2;\n\t    n |= n >>> 4;\n\t    n |= n >>> 8;\n\t    n |= n >>> 16;\n\t    n++;\n\t  }\n\t  return n;\n\t}\n\n\tfunction howMuchToRead(n, state) {\n\t  if (state.length === 0 && state.ended) return 0;\n\n\t  if (state.objectMode) return n === 0 ? 0 : 1;\n\n\t  if (n === null || isNaN(n)) {\n\t    // only flow one buffer at a time\n\t    if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length;\n\t  }\n\n\t  if (n <= 0) return 0;\n\n\t  // If we're asking for more than the target buffer level,\n\t  // then raise the water mark.  Bump up to the next highest\n\t  // power of 2, to prevent increasing it excessively in tiny\n\t  // amounts.\n\t  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n\n\t  // don't have that much.  return null, unless we've ended.\n\t  if (n > state.length) {\n\t    if (!state.ended) {\n\t      state.needReadable = true;\n\t      return 0;\n\t    } else {\n\t      return state.length;\n\t    }\n\t  }\n\n\t  return n;\n\t}\n\n\t// you can override either this method, or the async _read(n) below.\n\tReadable.prototype.read = function (n) {\n\t  debug('read', n);\n\t  var state = this._readableState;\n\t  var nOrig = n;\n\n\t  if (typeof n !== 'number' || n > 0) state.emittedReadable = false;\n\n\t  // if we're doing read(0) to trigger a readable event, but we\n\t  // already have a bunch of data in the buffer, then just trigger\n\t  // the 'readable' event and move on.\n\t  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n\t    debug('read: emitReadable', state.length, state.ended);\n\t    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n\t    return null;\n\t  }\n\n\t  n = howMuchToRead(n, state);\n\n\t  // if we've ended, and we're now clear, then finish it up.\n\t  if (n === 0 && state.ended) {\n\t    if (state.length === 0) endReadable(this);\n\t    return null;\n\t  }\n\n\t  // All the actual chunk generation logic needs to be\n\t  // *below* the call to _read.  The reason is that in certain\n\t  // synthetic stream cases, such as passthrough streams, _read\n\t  // may be a completely synchronous operation which may change\n\t  // the state of the read buffer, providing enough data when\n\t  // before there was *not* enough.\n\t  //\n\t  // So, the steps are:\n\t  // 1. Figure out what the state of things will be after we do\n\t  // a read from the buffer.\n\t  //\n\t  // 2. If that resulting state will trigger a _read, then call _read.\n\t  // Note that this may be asynchronous, or synchronous.  Yes, it is\n\t  // deeply ugly to write APIs this way, but that still doesn't mean\n\t  // that the Readable class should behave improperly, as streams are\n\t  // designed to be sync/async agnostic.\n\t  // Take note if the _read call is sync or async (ie, if the read call\n\t  // has returned yet), so that we know whether or not it's safe to emit\n\t  // 'readable' etc.\n\t  //\n\t  // 3. Actually pull the requested chunks out of the buffer and return.\n\n\t  // if we need a readable event, then we need to do some reading.\n\t  var doRead = state.needReadable;\n\t  debug('need readable', doRead);\n\n\t  // if we currently have less than the highWaterMark, then also read some\n\t  if (state.length === 0 || state.length - n < state.highWaterMark) {\n\t    doRead = true;\n\t    debug('length less than watermark', doRead);\n\t  }\n\n\t  // however, if we've ended, then there's no point, and if we're already\n\t  // reading, then it's unnecessary.\n\t  if (state.ended || state.reading) {\n\t    doRead = false;\n\t    debug('reading or ended', doRead);\n\t  }\n\n\t  if (doRead) {\n\t    debug('do read');\n\t    state.reading = true;\n\t    state.sync = true;\n\t    // if the length is currently zero, then we *need* a readable event.\n\t    if (state.length === 0) state.needReadable = true;\n\t    // call internal read method\n\t    this._read(state.highWaterMark);\n\t    state.sync = false;\n\t  }\n\n\t  // If _read pushed data synchronously, then `reading` will be false,\n\t  // and we need to re-evaluate how much data we can return to the user.\n\t  if (doRead && !state.reading) n = howMuchToRead(nOrig, state);\n\n\t  var ret;\n\t  if (n > 0) ret = fromList(n, state);else ret = null;\n\n\t  if (ret === null) {\n\t    state.needReadable = true;\n\t    n = 0;\n\t  }\n\n\t  state.length -= n;\n\n\t  // If we have nothing in the buffer, then we want to know\n\t  // as soon as we *do* get something into the buffer.\n\t  if (state.length === 0 && !state.ended) state.needReadable = true;\n\n\t  // If we tried to read() past the EOF, then emit end on the next tick.\n\t  if (nOrig !== n && state.ended && state.length === 0) endReadable(this);\n\n\t  if (ret !== null) this.emit('data', ret);\n\n\t  return ret;\n\t};\n\n\tfunction chunkInvalid(state, chunk) {\n\t  var er = null;\n\t  if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n\t    er = new TypeError('Invalid non-string/buffer chunk');\n\t  }\n\t  return er;\n\t}\n\n\tfunction onEofChunk(stream, state) {\n\t  if (state.ended) return;\n\t  if (state.decoder) {\n\t    var chunk = state.decoder.end();\n\t    if (chunk && chunk.length) {\n\t      state.buffer.push(chunk);\n\t      state.length += state.objectMode ? 1 : chunk.length;\n\t    }\n\t  }\n\t  state.ended = true;\n\n\t  // emit 'readable' now to make sure it gets picked up.\n\t  emitReadable(stream);\n\t}\n\n\t// Don't emit readable right away in sync mode, because this can trigger\n\t// another read() call => stack overflow.  This way, it might trigger\n\t// a nextTick recursion warning, but that's not so bad.\n\tfunction emitReadable(stream) {\n\t  var state = stream._readableState;\n\t  state.needReadable = false;\n\t  if (!state.emittedReadable) {\n\t    debug('emitReadable', state.flowing);\n\t    state.emittedReadable = true;\n\t    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n\t  }\n\t}\n\n\tfunction emitReadable_(stream) {\n\t  debug('emit readable');\n\t  stream.emit('readable');\n\t  flow(stream);\n\t}\n\n\t// at this point, the user has presumably seen the 'readable' event,\n\t// and called read() to consume some data.  that may have triggered\n\t// in turn another _read(n) call, in which case reading = true if\n\t// it's in progress.\n\t// However, if we're not ended, or reading, and the length < hwm,\n\t// then go ahead and try to read some more preemptively.\n\tfunction maybeReadMore(stream, state) {\n\t  if (!state.readingMore) {\n\t    state.readingMore = true;\n\t    processNextTick(maybeReadMore_, stream, state);\n\t  }\n\t}\n\n\tfunction maybeReadMore_(stream, state) {\n\t  var len = state.length;\n\t  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n\t    debug('maybeReadMore read 0');\n\t    stream.read(0);\n\t    if (len === state.length)\n\t      // didn't get any data, stop spinning.\n\t      break;else len = state.length;\n\t  }\n\t  state.readingMore = false;\n\t}\n\n\t// abstract method.  to be overridden in specific implementation classes.\n\t// call cb(er, data) where data is <= n in length.\n\t// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n\t// arbitrary, and perhaps not very meaningful.\n\tReadable.prototype._read = function (n) {\n\t  this.emit('error', new Error('not implemented'));\n\t};\n\n\tReadable.prototype.pipe = function (dest, pipeOpts) {\n\t  var src = this;\n\t  var state = this._readableState;\n\n\t  switch (state.pipesCount) {\n\t    case 0:\n\t      state.pipes = dest;\n\t      break;\n\t    case 1:\n\t      state.pipes = [state.pipes, dest];\n\t      break;\n\t    default:\n\t      state.pipes.push(dest);\n\t      break;\n\t  }\n\t  state.pipesCount += 1;\n\t  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n\t  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n\t  var endFn = doEnd ? onend : cleanup;\n\t  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n\t  dest.on('unpipe', onunpipe);\n\t  function onunpipe(readable) {\n\t    debug('onunpipe');\n\t    if (readable === src) {\n\t      cleanup();\n\t    }\n\t  }\n\n\t  function onend() {\n\t    debug('onend');\n\t    dest.end();\n\t  }\n\n\t  // when the dest drains, it reduces the awaitDrain counter\n\t  // on the source.  This would be more elegant with a .once()\n\t  // handler in flow(), but adding and removing repeatedly is\n\t  // too slow.\n\t  var ondrain = pipeOnDrain(src);\n\t  dest.on('drain', ondrain);\n\n\t  var cleanedUp = false;\n\t  function cleanup() {\n\t    debug('cleanup');\n\t    // cleanup event handlers once the pipe is broken\n\t    dest.removeListener('close', onclose);\n\t    dest.removeListener('finish', onfinish);\n\t    dest.removeListener('drain', ondrain);\n\t    dest.removeListener('error', onerror);\n\t    dest.removeListener('unpipe', onunpipe);\n\t    src.removeListener('end', onend);\n\t    src.removeListener('end', cleanup);\n\t    src.removeListener('data', ondata);\n\n\t    cleanedUp = true;\n\n\t    // if the reader is waiting for a drain event from this\n\t    // specific writer, then it would cause it to never start\n\t    // flowing again.\n\t    // So, if this is awaiting a drain, then we just call it now.\n\t    // If we don't know, then assume that we are waiting for one.\n\t    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n\t  }\n\n\t  src.on('data', ondata);\n\t  function ondata(chunk) {\n\t    debug('ondata');\n\t    var ret = dest.write(chunk);\n\t    if (false === ret) {\n\t      // If the user unpiped during `dest.write()`, it is possible\n\t      // to get stuck in a permanently paused state if that write\n\t      // also returned false.\n\t      if (state.pipesCount === 1 && state.pipes[0] === dest && src.listenerCount('data') === 1 && !cleanedUp) {\n\t        debug('false write response, pause', src._readableState.awaitDrain);\n\t        src._readableState.awaitDrain++;\n\t      }\n\t      src.pause();\n\t    }\n\t  }\n\n\t  // if the dest has an error, then stop piping into it.\n\t  // however, don't suppress the throwing behavior for this.\n\t  function onerror(er) {\n\t    debug('onerror', er);\n\t    unpipe();\n\t    dest.removeListener('error', onerror);\n\t    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n\t  }\n\t  // This is a brutally ugly hack to make sure that our error handler\n\t  // is attached before any userland ones.  NEVER DO THIS.\n\t  if (!dest._events || !dest._events.error) dest.on('error', onerror);else if (isArray(dest._events.error)) dest._events.error.unshift(onerror);else dest._events.error = [onerror, dest._events.error];\n\n\t  // Both close and finish should trigger unpipe, but only once.\n\t  function onclose() {\n\t    dest.removeListener('finish', onfinish);\n\t    unpipe();\n\t  }\n\t  dest.once('close', onclose);\n\t  function onfinish() {\n\t    debug('onfinish');\n\t    dest.removeListener('close', onclose);\n\t    unpipe();\n\t  }\n\t  dest.once('finish', onfinish);\n\n\t  function unpipe() {\n\t    debug('unpipe');\n\t    src.unpipe(dest);\n\t  }\n\n\t  // tell the dest that it's being piped to\n\t  dest.emit('pipe', src);\n\n\t  // start the flow if it hasn't been started already.\n\t  if (!state.flowing) {\n\t    debug('pipe resume');\n\t    src.resume();\n\t  }\n\n\t  return dest;\n\t};\n\n\tfunction pipeOnDrain(src) {\n\t  return function () {\n\t    var state = src._readableState;\n\t    debug('pipeOnDrain', state.awaitDrain);\n\t    if (state.awaitDrain) state.awaitDrain--;\n\t    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n\t      state.flowing = true;\n\t      flow(src);\n\t    }\n\t  };\n\t}\n\n\tReadable.prototype.unpipe = function (dest) {\n\t  var state = this._readableState;\n\n\t  // if we're not piping anywhere, then do nothing.\n\t  if (state.pipesCount === 0) return this;\n\n\t  // just one destination.  most common case.\n\t  if (state.pipesCount === 1) {\n\t    // passed in one, but it's not the right one.\n\t    if (dest && dest !== state.pipes) return this;\n\n\t    if (!dest) dest = state.pipes;\n\n\t    // got a match.\n\t    state.pipes = null;\n\t    state.pipesCount = 0;\n\t    state.flowing = false;\n\t    if (dest) dest.emit('unpipe', this);\n\t    return this;\n\t  }\n\n\t  // slow case. multiple pipe destinations.\n\n\t  if (!dest) {\n\t    // remove all.\n\t    var dests = state.pipes;\n\t    var len = state.pipesCount;\n\t    state.pipes = null;\n\t    state.pipesCount = 0;\n\t    state.flowing = false;\n\n\t    for (var _i = 0; _i < len; _i++) {\n\t      dests[_i].emit('unpipe', this);\n\t    }return this;\n\t  }\n\n\t  // try to find the right one.\n\t  var i = indexOf(state.pipes, dest);\n\t  if (i === -1) return this;\n\n\t  state.pipes.splice(i, 1);\n\t  state.pipesCount -= 1;\n\t  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n\t  dest.emit('unpipe', this);\n\n\t  return this;\n\t};\n\n\t// set up data events if they are asked for\n\t// Ensure readable listeners eventually get something\n\tReadable.prototype.on = function (ev, fn) {\n\t  var res = Stream.prototype.on.call(this, ev, fn);\n\n\t  // If listening to data, and it has not explicitly been paused,\n\t  // then call resume to start the flow of data on the next tick.\n\t  if (ev === 'data' && false !== this._readableState.flowing) {\n\t    this.resume();\n\t  }\n\n\t  if (ev === 'readable' && !this._readableState.endEmitted) {\n\t    var state = this._readableState;\n\t    if (!state.readableListening) {\n\t      state.readableListening = true;\n\t      state.emittedReadable = false;\n\t      state.needReadable = true;\n\t      if (!state.reading) {\n\t        processNextTick(nReadingNextTick, this);\n\t      } else if (state.length) {\n\t        emitReadable(this, state);\n\t      }\n\t    }\n\t  }\n\n\t  return res;\n\t};\n\tReadable.prototype.addListener = Readable.prototype.on;\n\n\tfunction nReadingNextTick(self) {\n\t  debug('readable nexttick read 0');\n\t  self.read(0);\n\t}\n\n\t// pause() and resume() are remnants of the legacy readable stream API\n\t// If the user uses them, then switch into old mode.\n\tReadable.prototype.resume = function () {\n\t  var state = this._readableState;\n\t  if (!state.flowing) {\n\t    debug('resume');\n\t    state.flowing = true;\n\t    resume(this, state);\n\t  }\n\t  return this;\n\t};\n\n\tfunction resume(stream, state) {\n\t  if (!state.resumeScheduled) {\n\t    state.resumeScheduled = true;\n\t    processNextTick(resume_, stream, state);\n\t  }\n\t}\n\n\tfunction resume_(stream, state) {\n\t  if (!state.reading) {\n\t    debug('resume read 0');\n\t    stream.read(0);\n\t  }\n\n\t  state.resumeScheduled = false;\n\t  stream.emit('resume');\n\t  flow(stream);\n\t  if (state.flowing && !state.reading) stream.read(0);\n\t}\n\n\tReadable.prototype.pause = function () {\n\t  debug('call pause flowing=%j', this._readableState.flowing);\n\t  if (false !== this._readableState.flowing) {\n\t    debug('pause');\n\t    this._readableState.flowing = false;\n\t    this.emit('pause');\n\t  }\n\t  return this;\n\t};\n\n\tfunction flow(stream) {\n\t  var state = stream._readableState;\n\t  debug('flow', state.flowing);\n\t  if (state.flowing) {\n\t    do {\n\t      var chunk = stream.read();\n\t    } while (null !== chunk && state.flowing);\n\t  }\n\t}\n\n\t// wrap an old-style stream as the async data source.\n\t// This is *not* part of the readable stream interface.\n\t// It is an ugly unfortunate mess of history.\n\tReadable.prototype.wrap = function (stream) {\n\t  var state = this._readableState;\n\t  var paused = false;\n\n\t  var self = this;\n\t  stream.on('end', function () {\n\t    debug('wrapped end');\n\t    if (state.decoder && !state.ended) {\n\t      var chunk = state.decoder.end();\n\t      if (chunk && chunk.length) self.push(chunk);\n\t    }\n\n\t    self.push(null);\n\t  });\n\n\t  stream.on('data', function (chunk) {\n\t    debug('wrapped data');\n\t    if (state.decoder) chunk = state.decoder.write(chunk);\n\n\t    // don't skip over falsy values in objectMode\n\t    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n\t    var ret = self.push(chunk);\n\t    if (!ret) {\n\t      paused = true;\n\t      stream.pause();\n\t    }\n\t  });\n\n\t  // proxy all the other methods.\n\t  // important when wrapping filters and duplexes.\n\t  for (var i in stream) {\n\t    if (this[i] === undefined && typeof stream[i] === 'function') {\n\t      this[i] = function (method) {\n\t        return function () {\n\t          return stream[method].apply(stream, arguments);\n\t        };\n\t      }(i);\n\t    }\n\t  }\n\n\t  // proxy certain important events.\n\t  var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n\t  forEach(events, function (ev) {\n\t    stream.on(ev, self.emit.bind(self, ev));\n\t  });\n\n\t  // when we try to consume some more bytes, simply unpause the\n\t  // underlying stream.\n\t  self._read = function (n) {\n\t    debug('wrapped _read', n);\n\t    if (paused) {\n\t      paused = false;\n\t      stream.resume();\n\t    }\n\t  };\n\n\t  return self;\n\t};\n\n\t// exposed for testing purposes only.\n\tReadable._fromList = fromList;\n\n\t// Pluck off n bytes from an array of buffers.\n\t// Length is the combined lengths of all the buffers in the list.\n\tfunction fromList(n, state) {\n\t  var list = state.buffer;\n\t  var length = state.length;\n\t  var stringMode = !!state.decoder;\n\t  var objectMode = !!state.objectMode;\n\t  var ret;\n\n\t  // nothing in the list, definitely empty.\n\t  if (list.length === 0) return null;\n\n\t  if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) {\n\t    // read it all, truncate the array.\n\t    if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length);\n\t    list.length = 0;\n\t  } else {\n\t    // read just some of it.\n\t    if (n < list[0].length) {\n\t      // just take a part of the first list item.\n\t      // slice is the same for buffers and strings.\n\t      var buf = list[0];\n\t      ret = buf.slice(0, n);\n\t      list[0] = buf.slice(n);\n\t    } else if (n === list[0].length) {\n\t      // first list is a perfect match\n\t      ret = list.shift();\n\t    } else {\n\t      // complex case.\n\t      // we have enough to cover it, but it spans past the first buffer.\n\t      if (stringMode) ret = '';else ret = new Buffer(n);\n\n\t      var c = 0;\n\t      for (var i = 0, l = list.length; i < l && c < n; i++) {\n\t        var buf = list[0];\n\t        var cpy = Math.min(n - c, buf.length);\n\n\t        if (stringMode) ret += buf.slice(0, cpy);else buf.copy(ret, c, 0, cpy);\n\n\t        if (cpy < buf.length) list[0] = buf.slice(cpy);else list.shift();\n\n\t        c += cpy;\n\t      }\n\t    }\n\t  }\n\n\t  return ret;\n\t}\n\n\tfunction endReadable(stream) {\n\t  var state = stream._readableState;\n\n\t  // If we get here before consuming all the bytes, then that is a\n\t  // bug in node.  Should never happen.\n\t  if (state.length > 0) throw new Error('endReadable called on non-empty stream');\n\n\t  if (!state.endEmitted) {\n\t    state.ended = true;\n\t    processNextTick(endReadableNT, state, stream);\n\t  }\n\t}\n\n\tfunction endReadableNT(state, stream) {\n\t  // Check that we didn't get one last unshift.\n\t  if (!state.endEmitted && state.length === 0) {\n\t    state.endEmitted = true;\n\t    stream.readable = false;\n\t    stream.emit('end');\n\t  }\n\t}\n\n\tfunction forEach(xs, f) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    f(xs[i], i);\n\t  }\n\t}\n\n\tfunction indexOf(xs, x) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    if (xs[i] === x) return i;\n\t  }\n\t  return -1;\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 200 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {var ClientRequest = __webpack_require__(525)\n\tvar extend = __webpack_require__(129)\n\tvar statusCodes = __webpack_require__(267)\n\tvar url = __webpack_require__(207)\n\n\tvar http = exports\n\n\thttp.request = function (opts, cb) {\n\t\tif (typeof opts === 'string')\n\t\t\topts = url.parse(opts)\n\t\telse\n\t\t\topts = extend(opts)\n\n\t\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t\t// the protocol is something else, like 'file:'\n\t\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\t\tvar protocol = opts.protocol || defaultProtocol\n\t\tvar host = opts.hostname || opts.host\n\t\tvar port = opts.port\n\t\tvar path = opts.path || '/'\n\n\t\t// Necessary for IPv6 addresses\n\t\tif (host && host.indexOf(':') !== -1)\n\t\t\thost = '[' + host + ']'\n\n\t\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\t\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\t\topts.method = (opts.method || 'GET').toUpperCase()\n\t\topts.headers = opts.headers || {}\n\n\t\t// Also valid opts.auth, opts.mode\n\n\t\tvar req = new ClientRequest(opts)\n\t\tif (cb)\n\t\t\treq.on('response', cb)\n\t\treturn req\n\t}\n\n\thttp.get = function get (opts, cb) {\n\t\tvar req = http.request(opts, cb)\n\t\treq.end()\n\t\treturn req\n\t}\n\n\thttp.Agent = function () {}\n\thttp.Agent.defaultMaxSockets = 4\n\n\thttp.STATUS_CODES = statusCodes\n\n\thttp.METHODS = [\n\t\t'CHECKOUT',\n\t\t'CONNECT',\n\t\t'COPY',\n\t\t'DELETE',\n\t\t'GET',\n\t\t'HEAD',\n\t\t'LOCK',\n\t\t'M-SEARCH',\n\t\t'MERGE',\n\t\t'MKACTIVITY',\n\t\t'MKCOL',\n\t\t'MOVE',\n\t\t'NOTIFY',\n\t\t'OPTIONS',\n\t\t'PATCH',\n\t\t'POST',\n\t\t'PROPFIND',\n\t\t'PROPPATCH',\n\t\t'PURGE',\n\t\t'PUT',\n\t\t'REPORT',\n\t\t'SEARCH',\n\t\t'SUBSCRIBE',\n\t\t'TRACE',\n\t\t'UNLOCK',\n\t\t'UNSUBSCRIBE'\n\t]\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 201 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableByteStream)\n\n\texports.blobConstructor = false\n\ttry {\n\t\tnew Blob([new ArrayBuffer(1)])\n\t\texports.blobConstructor = true\n\t} catch (e) {}\n\n\tvar xhr = new global.XMLHttpRequest()\n\t// If location.host is empty, e.g. if this page/worker was loaded\n\t// from a Blob, then use example.com to avoid an error\n\txhr.open('GET', global.location.host ? '/' : 'https://example.com')\n\n\tfunction checkTypeSupport (type) {\n\t\ttry {\n\t\t\txhr.responseType = type\n\t\t\treturn xhr.responseType === type\n\t\t} catch (e) {}\n\t\treturn false\n\t}\n\n\t// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n\t// Safari 7.1 appears to have fixed this bug.\n\tvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\n\tvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\n\texports.arraybuffer = haveArrayBuffer && checkTypeSupport('arraybuffer')\n\t// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n\t// be used if it's available, just return false for these to avoid the warnings.\n\texports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\n\texports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\t\tcheckTypeSupport('moz-chunked-arraybuffer')\n\texports.overrideMimeType = isFunction(xhr.overrideMimeType)\n\texports.vbArray = isFunction(global.VBArray)\n\n\tfunction isFunction (value) {\n\t  return typeof value === 'function'\n\t}\n\n\txhr = null // Help gc\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 202 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\n\tmodule.exports = Readable;\n\n\t/*<replacement>*/\n\tvar processNextTick = __webpack_require__(60);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar isArray = __webpack_require__(527);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Buffer = __webpack_require__(1).Buffer;\n\t/*</replacement>*/\n\n\tReadable.ReadableState = ReadableState;\n\n\tvar EE = __webpack_require__(32);\n\n\t/*<replacement>*/\n\tvar EElistenerCount = function (emitter, type) {\n\t  return emitter.listeners(type).length;\n\t};\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Stream;\n\t(function () {\n\t  try {\n\t    Stream = __webpack_require__(12);\n\t  } catch (_) {} finally {\n\t    if (!Stream) Stream = __webpack_require__(32).EventEmitter;\n\t  }\n\t})();\n\t/*</replacement>*/\n\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar debugUtil = __webpack_require__(537);\n\tvar debug = undefined;\n\tif (debugUtil && debugUtil.debuglog) {\n\t  debug = debugUtil.debuglog('stream');\n\t} else {\n\t  debug = function () {};\n\t}\n\t/*</replacement>*/\n\n\tvar StringDecoder;\n\n\tutil.inherits(Readable, Stream);\n\n\tvar Duplex;\n\tfunction ReadableState(options, stream) {\n\t  Duplex = Duplex || __webpack_require__(62);\n\n\t  options = options || {};\n\n\t  // object stream flag. Used to make read(n) ignore n and to\n\t  // make all the buffer merging and length checks go away\n\t  this.objectMode = !!options.objectMode;\n\n\t  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n\t  // the point at which it stops calling _read() to fill the buffer\n\t  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\t  var hwm = options.highWaterMark;\n\t  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\t  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n\t  // cast to ints.\n\t  this.highWaterMark = ~ ~this.highWaterMark;\n\n\t  this.buffer = [];\n\t  this.length = 0;\n\t  this.pipes = null;\n\t  this.pipesCount = 0;\n\t  this.flowing = null;\n\t  this.ended = false;\n\t  this.endEmitted = false;\n\t  this.reading = false;\n\n\t  // a flag to be able to tell if the onwrite cb is called immediately,\n\t  // or on a later tick.  We set this to true at first, because any\n\t  // actions that shouldn't happen until \"later\" should generally also\n\t  // not happen before the first write call.\n\t  this.sync = true;\n\n\t  // whenever we return null, then we set a flag to say\n\t  // that we're awaiting a 'readable' event emission.\n\t  this.needReadable = false;\n\t  this.emittedReadable = false;\n\t  this.readableListening = false;\n\t  this.resumeScheduled = false;\n\n\t  // Crypto is kind of old and crusty.  Historically, its default string\n\t  // encoding is 'binary' so we have to make this configurable.\n\t  // Everything else in the universe uses 'utf8', though.\n\t  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n\t  // when piping, we only care about 'readable' events that happen\n\t  // after read()ing all the bytes and not getting any pushback.\n\t  this.ranOut = false;\n\n\t  // the number of writers that are awaiting a drain event in .pipe()s\n\t  this.awaitDrain = 0;\n\n\t  // if true, a maybeReadMore has been scheduled\n\t  this.readingMore = false;\n\n\t  this.decoder = null;\n\t  this.encoding = null;\n\t  if (options.encoding) {\n\t    if (!StringDecoder) StringDecoder = __webpack_require__(50).StringDecoder;\n\t    this.decoder = new StringDecoder(options.encoding);\n\t    this.encoding = options.encoding;\n\t  }\n\t}\n\n\tvar Duplex;\n\tfunction Readable(options) {\n\t  Duplex = Duplex || __webpack_require__(62);\n\n\t  if (!(this instanceof Readable)) return new Readable(options);\n\n\t  this._readableState = new ReadableState(options, this);\n\n\t  // legacy\n\t  this.readable = true;\n\n\t  if (options && typeof options.read === 'function') this._read = options.read;\n\n\t  Stream.call(this);\n\t}\n\n\t// Manually shove something into the read() buffer.\n\t// This returns true if the highWaterMark has not been hit yet,\n\t// similar to how Writable.write() returns true if you should\n\t// write() some more.\n\tReadable.prototype.push = function (chunk, encoding) {\n\t  var state = this._readableState;\n\n\t  if (!state.objectMode && typeof chunk === 'string') {\n\t    encoding = encoding || state.defaultEncoding;\n\t    if (encoding !== state.encoding) {\n\t      chunk = new Buffer(chunk, encoding);\n\t      encoding = '';\n\t    }\n\t  }\n\n\t  return readableAddChunk(this, state, chunk, encoding, false);\n\t};\n\n\t// Unshift should *always* be something directly out of read()\n\tReadable.prototype.unshift = function (chunk) {\n\t  var state = this._readableState;\n\t  return readableAddChunk(this, state, chunk, '', true);\n\t};\n\n\tReadable.prototype.isPaused = function () {\n\t  return this._readableState.flowing === false;\n\t};\n\n\tfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n\t  var er = chunkInvalid(state, chunk);\n\t  if (er) {\n\t    stream.emit('error', er);\n\t  } else if (chunk === null) {\n\t    state.reading = false;\n\t    onEofChunk(stream, state);\n\t  } else if (state.objectMode || chunk && chunk.length > 0) {\n\t    if (state.ended && !addToFront) {\n\t      var e = new Error('stream.push() after EOF');\n\t      stream.emit('error', e);\n\t    } else if (state.endEmitted && addToFront) {\n\t      var e = new Error('stream.unshift() after end event');\n\t      stream.emit('error', e);\n\t    } else {\n\t      var skipAdd;\n\t      if (state.decoder && !addToFront && !encoding) {\n\t        chunk = state.decoder.write(chunk);\n\t        skipAdd = !state.objectMode && chunk.length === 0;\n\t      }\n\n\t      if (!addToFront) state.reading = false;\n\n\t      // Don't add to the buffer if we've decoded to an empty string chunk and\n\t      // we're not in object mode\n\t      if (!skipAdd) {\n\t        // if we want the data now, just emit it.\n\t        if (state.flowing && state.length === 0 && !state.sync) {\n\t          stream.emit('data', chunk);\n\t          stream.read(0);\n\t        } else {\n\t          // update the buffer info.\n\t          state.length += state.objectMode ? 1 : chunk.length;\n\t          if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n\t          if (state.needReadable) emitReadable(stream);\n\t        }\n\t      }\n\n\t      maybeReadMore(stream, state);\n\t    }\n\t  } else if (!addToFront) {\n\t    state.reading = false;\n\t  }\n\n\t  return needMoreData(state);\n\t}\n\n\t// if it's past the high water mark, we can push in some more.\n\t// Also, if we have no data yet, we can stand some\n\t// more bytes.  This is to work around cases where hwm=0,\n\t// such as the repl.  Also, if the push() triggered a\n\t// readable event, and the user called read(largeNumber) such that\n\t// needReadable was set, then we ought to push more, so that another\n\t// 'readable' event will be triggered.\n\tfunction needMoreData(state) {\n\t  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n\t}\n\n\t// backwards compatibility.\n\tReadable.prototype.setEncoding = function (enc) {\n\t  if (!StringDecoder) StringDecoder = __webpack_require__(50).StringDecoder;\n\t  this._readableState.decoder = new StringDecoder(enc);\n\t  this._readableState.encoding = enc;\n\t  return this;\n\t};\n\n\t// Don't raise the hwm > 8MB\n\tvar MAX_HWM = 0x800000;\n\tfunction computeNewHighWaterMark(n) {\n\t  if (n >= MAX_HWM) {\n\t    n = MAX_HWM;\n\t  } else {\n\t    // Get the next highest power of 2\n\t    n--;\n\t    n |= n >>> 1;\n\t    n |= n >>> 2;\n\t    n |= n >>> 4;\n\t    n |= n >>> 8;\n\t    n |= n >>> 16;\n\t    n++;\n\t  }\n\t  return n;\n\t}\n\n\tfunction howMuchToRead(n, state) {\n\t  if (state.length === 0 && state.ended) return 0;\n\n\t  if (state.objectMode) return n === 0 ? 0 : 1;\n\n\t  if (n === null || isNaN(n)) {\n\t    // only flow one buffer at a time\n\t    if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length;\n\t  }\n\n\t  if (n <= 0) return 0;\n\n\t  // If we're asking for more than the target buffer level,\n\t  // then raise the water mark.  Bump up to the next highest\n\t  // power of 2, to prevent increasing it excessively in tiny\n\t  // amounts.\n\t  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n\n\t  // don't have that much.  return null, unless we've ended.\n\t  if (n > state.length) {\n\t    if (!state.ended) {\n\t      state.needReadable = true;\n\t      return 0;\n\t    } else {\n\t      return state.length;\n\t    }\n\t  }\n\n\t  return n;\n\t}\n\n\t// you can override either this method, or the async _read(n) below.\n\tReadable.prototype.read = function (n) {\n\t  debug('read', n);\n\t  var state = this._readableState;\n\t  var nOrig = n;\n\n\t  if (typeof n !== 'number' || n > 0) state.emittedReadable = false;\n\n\t  // if we're doing read(0) to trigger a readable event, but we\n\t  // already have a bunch of data in the buffer, then just trigger\n\t  // the 'readable' event and move on.\n\t  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n\t    debug('read: emitReadable', state.length, state.ended);\n\t    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n\t    return null;\n\t  }\n\n\t  n = howMuchToRead(n, state);\n\n\t  // if we've ended, and we're now clear, then finish it up.\n\t  if (n === 0 && state.ended) {\n\t    if (state.length === 0) endReadable(this);\n\t    return null;\n\t  }\n\n\t  // All the actual chunk generation logic needs to be\n\t  // *below* the call to _read.  The reason is that in certain\n\t  // synthetic stream cases, such as passthrough streams, _read\n\t  // may be a completely synchronous operation which may change\n\t  // the state of the read buffer, providing enough data when\n\t  // before there was *not* enough.\n\t  //\n\t  // So, the steps are:\n\t  // 1. Figure out what the state of things will be after we do\n\t  // a read from the buffer.\n\t  //\n\t  // 2. If that resulting state will trigger a _read, then call _read.\n\t  // Note that this may be asynchronous, or synchronous.  Yes, it is\n\t  // deeply ugly to write APIs this way, but that still doesn't mean\n\t  // that the Readable class should behave improperly, as streams are\n\t  // designed to be sync/async agnostic.\n\t  // Take note if the _read call is sync or async (ie, if the read call\n\t  // has returned yet), so that we know whether or not it's safe to emit\n\t  // 'readable' etc.\n\t  //\n\t  // 3. Actually pull the requested chunks out of the buffer and return.\n\n\t  // if we need a readable event, then we need to do some reading.\n\t  var doRead = state.needReadable;\n\t  debug('need readable', doRead);\n\n\t  // if we currently have less than the highWaterMark, then also read some\n\t  if (state.length === 0 || state.length - n < state.highWaterMark) {\n\t    doRead = true;\n\t    debug('length less than watermark', doRead);\n\t  }\n\n\t  // however, if we've ended, then there's no point, and if we're already\n\t  // reading, then it's unnecessary.\n\t  if (state.ended || state.reading) {\n\t    doRead = false;\n\t    debug('reading or ended', doRead);\n\t  }\n\n\t  if (doRead) {\n\t    debug('do read');\n\t    state.reading = true;\n\t    state.sync = true;\n\t    // if the length is currently zero, then we *need* a readable event.\n\t    if (state.length === 0) state.needReadable = true;\n\t    // call internal read method\n\t    this._read(state.highWaterMark);\n\t    state.sync = false;\n\t  }\n\n\t  // If _read pushed data synchronously, then `reading` will be false,\n\t  // and we need to re-evaluate how much data we can return to the user.\n\t  if (doRead && !state.reading) n = howMuchToRead(nOrig, state);\n\n\t  var ret;\n\t  if (n > 0) ret = fromList(n, state);else ret = null;\n\n\t  if (ret === null) {\n\t    state.needReadable = true;\n\t    n = 0;\n\t  }\n\n\t  state.length -= n;\n\n\t  // If we have nothing in the buffer, then we want to know\n\t  // as soon as we *do* get something into the buffer.\n\t  if (state.length === 0 && !state.ended) state.needReadable = true;\n\n\t  // If we tried to read() past the EOF, then emit end on the next tick.\n\t  if (nOrig !== n && state.ended && state.length === 0) endReadable(this);\n\n\t  if (ret !== null) this.emit('data', ret);\n\n\t  return ret;\n\t};\n\n\tfunction chunkInvalid(state, chunk) {\n\t  var er = null;\n\t  if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n\t    er = new TypeError('Invalid non-string/buffer chunk');\n\t  }\n\t  return er;\n\t}\n\n\tfunction onEofChunk(stream, state) {\n\t  if (state.ended) return;\n\t  if (state.decoder) {\n\t    var chunk = state.decoder.end();\n\t    if (chunk && chunk.length) {\n\t      state.buffer.push(chunk);\n\t      state.length += state.objectMode ? 1 : chunk.length;\n\t    }\n\t  }\n\t  state.ended = true;\n\n\t  // emit 'readable' now to make sure it gets picked up.\n\t  emitReadable(stream);\n\t}\n\n\t// Don't emit readable right away in sync mode, because this can trigger\n\t// another read() call => stack overflow.  This way, it might trigger\n\t// a nextTick recursion warning, but that's not so bad.\n\tfunction emitReadable(stream) {\n\t  var state = stream._readableState;\n\t  state.needReadable = false;\n\t  if (!state.emittedReadable) {\n\t    debug('emitReadable', state.flowing);\n\t    state.emittedReadable = true;\n\t    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n\t  }\n\t}\n\n\tfunction emitReadable_(stream) {\n\t  debug('emit readable');\n\t  stream.emit('readable');\n\t  flow(stream);\n\t}\n\n\t// at this point, the user has presumably seen the 'readable' event,\n\t// and called read() to consume some data.  that may have triggered\n\t// in turn another _read(n) call, in which case reading = true if\n\t// it's in progress.\n\t// However, if we're not ended, or reading, and the length < hwm,\n\t// then go ahead and try to read some more preemptively.\n\tfunction maybeReadMore(stream, state) {\n\t  if (!state.readingMore) {\n\t    state.readingMore = true;\n\t    processNextTick(maybeReadMore_, stream, state);\n\t  }\n\t}\n\n\tfunction maybeReadMore_(stream, state) {\n\t  var len = state.length;\n\t  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n\t    debug('maybeReadMore read 0');\n\t    stream.read(0);\n\t    if (len === state.length)\n\t      // didn't get any data, stop spinning.\n\t      break;else len = state.length;\n\t  }\n\t  state.readingMore = false;\n\t}\n\n\t// abstract method.  to be overridden in specific implementation classes.\n\t// call cb(er, data) where data is <= n in length.\n\t// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n\t// arbitrary, and perhaps not very meaningful.\n\tReadable.prototype._read = function (n) {\n\t  this.emit('error', new Error('not implemented'));\n\t};\n\n\tReadable.prototype.pipe = function (dest, pipeOpts) {\n\t  var src = this;\n\t  var state = this._readableState;\n\n\t  switch (state.pipesCount) {\n\t    case 0:\n\t      state.pipes = dest;\n\t      break;\n\t    case 1:\n\t      state.pipes = [state.pipes, dest];\n\t      break;\n\t    default:\n\t      state.pipes.push(dest);\n\t      break;\n\t  }\n\t  state.pipesCount += 1;\n\t  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n\t  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n\t  var endFn = doEnd ? onend : cleanup;\n\t  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n\t  dest.on('unpipe', onunpipe);\n\t  function onunpipe(readable) {\n\t    debug('onunpipe');\n\t    if (readable === src) {\n\t      cleanup();\n\t    }\n\t  }\n\n\t  function onend() {\n\t    debug('onend');\n\t    dest.end();\n\t  }\n\n\t  // when the dest drains, it reduces the awaitDrain counter\n\t  // on the source.  This would be more elegant with a .once()\n\t  // handler in flow(), but adding and removing repeatedly is\n\t  // too slow.\n\t  var ondrain = pipeOnDrain(src);\n\t  dest.on('drain', ondrain);\n\n\t  var cleanedUp = false;\n\t  function cleanup() {\n\t    debug('cleanup');\n\t    // cleanup event handlers once the pipe is broken\n\t    dest.removeListener('close', onclose);\n\t    dest.removeListener('finish', onfinish);\n\t    dest.removeListener('drain', ondrain);\n\t    dest.removeListener('error', onerror);\n\t    dest.removeListener('unpipe', onunpipe);\n\t    src.removeListener('end', onend);\n\t    src.removeListener('end', cleanup);\n\t    src.removeListener('data', ondata);\n\n\t    cleanedUp = true;\n\n\t    // if the reader is waiting for a drain event from this\n\t    // specific writer, then it would cause it to never start\n\t    // flowing again.\n\t    // So, if this is awaiting a drain, then we just call it now.\n\t    // If we don't know, then assume that we are waiting for one.\n\t    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n\t  }\n\n\t  src.on('data', ondata);\n\t  function ondata(chunk) {\n\t    debug('ondata');\n\t    var ret = dest.write(chunk);\n\t    if (false === ret) {\n\t      // If the user unpiped during `dest.write()`, it is possible\n\t      // to get stuck in a permanently paused state if that write\n\t      // also returned false.\n\t      if (state.pipesCount === 1 && state.pipes[0] === dest && src.listenerCount('data') === 1 && !cleanedUp) {\n\t        debug('false write response, pause', src._readableState.awaitDrain);\n\t        src._readableState.awaitDrain++;\n\t      }\n\t      src.pause();\n\t    }\n\t  }\n\n\t  // if the dest has an error, then stop piping into it.\n\t  // however, don't suppress the throwing behavior for this.\n\t  function onerror(er) {\n\t    debug('onerror', er);\n\t    unpipe();\n\t    dest.removeListener('error', onerror);\n\t    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n\t  }\n\t  // This is a brutally ugly hack to make sure that our error handler\n\t  // is attached before any userland ones.  NEVER DO THIS.\n\t  if (!dest._events || !dest._events.error) dest.on('error', onerror);else if (isArray(dest._events.error)) dest._events.error.unshift(onerror);else dest._events.error = [onerror, dest._events.error];\n\n\t  // Both close and finish should trigger unpipe, but only once.\n\t  function onclose() {\n\t    dest.removeListener('finish', onfinish);\n\t    unpipe();\n\t  }\n\t  dest.once('close', onclose);\n\t  function onfinish() {\n\t    debug('onfinish');\n\t    dest.removeListener('close', onclose);\n\t    unpipe();\n\t  }\n\t  dest.once('finish', onfinish);\n\n\t  function unpipe() {\n\t    debug('unpipe');\n\t    src.unpipe(dest);\n\t  }\n\n\t  // tell the dest that it's being piped to\n\t  dest.emit('pipe', src);\n\n\t  // start the flow if it hasn't been started already.\n\t  if (!state.flowing) {\n\t    debug('pipe resume');\n\t    src.resume();\n\t  }\n\n\t  return dest;\n\t};\n\n\tfunction pipeOnDrain(src) {\n\t  return function () {\n\t    var state = src._readableState;\n\t    debug('pipeOnDrain', state.awaitDrain);\n\t    if (state.awaitDrain) state.awaitDrain--;\n\t    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n\t      state.flowing = true;\n\t      flow(src);\n\t    }\n\t  };\n\t}\n\n\tReadable.prototype.unpipe = function (dest) {\n\t  var state = this._readableState;\n\n\t  // if we're not piping anywhere, then do nothing.\n\t  if (state.pipesCount === 0) return this;\n\n\t  // just one destination.  most common case.\n\t  if (state.pipesCount === 1) {\n\t    // passed in one, but it's not the right one.\n\t    if (dest && dest !== state.pipes) return this;\n\n\t    if (!dest) dest = state.pipes;\n\n\t    // got a match.\n\t    state.pipes = null;\n\t    state.pipesCount = 0;\n\t    state.flowing = false;\n\t    if (dest) dest.emit('unpipe', this);\n\t    return this;\n\t  }\n\n\t  // slow case. multiple pipe destinations.\n\n\t  if (!dest) {\n\t    // remove all.\n\t    var dests = state.pipes;\n\t    var len = state.pipesCount;\n\t    state.pipes = null;\n\t    state.pipesCount = 0;\n\t    state.flowing = false;\n\n\t    for (var _i = 0; _i < len; _i++) {\n\t      dests[_i].emit('unpipe', this);\n\t    }return this;\n\t  }\n\n\t  // try to find the right one.\n\t  var i = indexOf(state.pipes, dest);\n\t  if (i === -1) return this;\n\n\t  state.pipes.splice(i, 1);\n\t  state.pipesCount -= 1;\n\t  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n\t  dest.emit('unpipe', this);\n\n\t  return this;\n\t};\n\n\t// set up data events if they are asked for\n\t// Ensure readable listeners eventually get something\n\tReadable.prototype.on = function (ev, fn) {\n\t  var res = Stream.prototype.on.call(this, ev, fn);\n\n\t  // If listening to data, and it has not explicitly been paused,\n\t  // then call resume to start the flow of data on the next tick.\n\t  if (ev === 'data' && false !== this._readableState.flowing) {\n\t    this.resume();\n\t  }\n\n\t  if (ev === 'readable' && !this._readableState.endEmitted) {\n\t    var state = this._readableState;\n\t    if (!state.readableListening) {\n\t      state.readableListening = true;\n\t      state.emittedReadable = false;\n\t      state.needReadable = true;\n\t      if (!state.reading) {\n\t        processNextTick(nReadingNextTick, this);\n\t      } else if (state.length) {\n\t        emitReadable(this, state);\n\t      }\n\t    }\n\t  }\n\n\t  return res;\n\t};\n\tReadable.prototype.addListener = Readable.prototype.on;\n\n\tfunction nReadingNextTick(self) {\n\t  debug('readable nexttick read 0');\n\t  self.read(0);\n\t}\n\n\t// pause() and resume() are remnants of the legacy readable stream API\n\t// If the user uses them, then switch into old mode.\n\tReadable.prototype.resume = function () {\n\t  var state = this._readableState;\n\t  if (!state.flowing) {\n\t    debug('resume');\n\t    state.flowing = true;\n\t    resume(this, state);\n\t  }\n\t  return this;\n\t};\n\n\tfunction resume(stream, state) {\n\t  if (!state.resumeScheduled) {\n\t    state.resumeScheduled = true;\n\t    processNextTick(resume_, stream, state);\n\t  }\n\t}\n\n\tfunction resume_(stream, state) {\n\t  if (!state.reading) {\n\t    debug('resume read 0');\n\t    stream.read(0);\n\t  }\n\n\t  state.resumeScheduled = false;\n\t  stream.emit('resume');\n\t  flow(stream);\n\t  if (state.flowing && !state.reading) stream.read(0);\n\t}\n\n\tReadable.prototype.pause = function () {\n\t  debug('call pause flowing=%j', this._readableState.flowing);\n\t  if (false !== this._readableState.flowing) {\n\t    debug('pause');\n\t    this._readableState.flowing = false;\n\t    this.emit('pause');\n\t  }\n\t  return this;\n\t};\n\n\tfunction flow(stream) {\n\t  var state = stream._readableState;\n\t  debug('flow', state.flowing);\n\t  if (state.flowing) {\n\t    do {\n\t      var chunk = stream.read();\n\t    } while (null !== chunk && state.flowing);\n\t  }\n\t}\n\n\t// wrap an old-style stream as the async data source.\n\t// This is *not* part of the readable stream interface.\n\t// It is an ugly unfortunate mess of history.\n\tReadable.prototype.wrap = function (stream) {\n\t  var state = this._readableState;\n\t  var paused = false;\n\n\t  var self = this;\n\t  stream.on('end', function () {\n\t    debug('wrapped end');\n\t    if (state.decoder && !state.ended) {\n\t      var chunk = state.decoder.end();\n\t      if (chunk && chunk.length) self.push(chunk);\n\t    }\n\n\t    self.push(null);\n\t  });\n\n\t  stream.on('data', function (chunk) {\n\t    debug('wrapped data');\n\t    if (state.decoder) chunk = state.decoder.write(chunk);\n\n\t    // don't skip over falsy values in objectMode\n\t    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n\t    var ret = self.push(chunk);\n\t    if (!ret) {\n\t      paused = true;\n\t      stream.pause();\n\t    }\n\t  });\n\n\t  // proxy all the other methods.\n\t  // important when wrapping filters and duplexes.\n\t  for (var i in stream) {\n\t    if (this[i] === undefined && typeof stream[i] === 'function') {\n\t      this[i] = function (method) {\n\t        return function () {\n\t          return stream[method].apply(stream, arguments);\n\t        };\n\t      }(i);\n\t    }\n\t  }\n\n\t  // proxy certain important events.\n\t  var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n\t  forEach(events, function (ev) {\n\t    stream.on(ev, self.emit.bind(self, ev));\n\t  });\n\n\t  // when we try to consume some more bytes, simply unpause the\n\t  // underlying stream.\n\t  self._read = function (n) {\n\t    debug('wrapped _read', n);\n\t    if (paused) {\n\t      paused = false;\n\t      stream.resume();\n\t    }\n\t  };\n\n\t  return self;\n\t};\n\n\t// exposed for testing purposes only.\n\tReadable._fromList = fromList;\n\n\t// Pluck off n bytes from an array of buffers.\n\t// Length is the combined lengths of all the buffers in the list.\n\tfunction fromList(n, state) {\n\t  var list = state.buffer;\n\t  var length = state.length;\n\t  var stringMode = !!state.decoder;\n\t  var objectMode = !!state.objectMode;\n\t  var ret;\n\n\t  // nothing in the list, definitely empty.\n\t  if (list.length === 0) return null;\n\n\t  if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) {\n\t    // read it all, truncate the array.\n\t    if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length);\n\t    list.length = 0;\n\t  } else {\n\t    // read just some of it.\n\t    if (n < list[0].length) {\n\t      // just take a part of the first list item.\n\t      // slice is the same for buffers and strings.\n\t      var buf = list[0];\n\t      ret = buf.slice(0, n);\n\t      list[0] = buf.slice(n);\n\t    } else if (n === list[0].length) {\n\t      // first list is a perfect match\n\t      ret = list.shift();\n\t    } else {\n\t      // complex case.\n\t      // we have enough to cover it, but it spans past the first buffer.\n\t      if (stringMode) ret = '';else ret = new Buffer(n);\n\n\t      var c = 0;\n\t      for (var i = 0, l = list.length; i < l && c < n; i++) {\n\t        var buf = list[0];\n\t        var cpy = Math.min(n - c, buf.length);\n\n\t        if (stringMode) ret += buf.slice(0, cpy);else buf.copy(ret, c, 0, cpy);\n\n\t        if (cpy < buf.length) list[0] = buf.slice(cpy);else list.shift();\n\n\t        c += cpy;\n\t      }\n\t    }\n\t  }\n\n\t  return ret;\n\t}\n\n\tfunction endReadable(stream) {\n\t  var state = stream._readableState;\n\n\t  // If we get here before consuming all the bytes, then that is a\n\t  // bug in node.  Should never happen.\n\t  if (state.length > 0) throw new Error('endReadable called on non-empty stream');\n\n\t  if (!state.endEmitted) {\n\t    state.ended = true;\n\t    processNextTick(endReadableNT, state, stream);\n\t  }\n\t}\n\n\tfunction endReadableNT(state, stream) {\n\t  // Check that we didn't get one last unshift.\n\t  if (!state.endEmitted && state.length === 0) {\n\t    state.endEmitted = true;\n\t    stream.readable = false;\n\t    stream.emit('end');\n\t  }\n\t}\n\n\tfunction forEach(xs, f) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    f(xs[i], i);\n\t  }\n\t}\n\n\tfunction indexOf(xs, x) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    if (xs[i] === x) return i;\n\t  }\n\t  return -1;\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 203 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// a transform stream is a readable/writable stream where you do\n\t// something with the data.  Sometimes it's called a \"filter\",\n\t// but that's not a great name for it, since that implies a thing where\n\t// some bits pass through, and others are simply ignored.  (That would\n\t// be a valid example of a transform, of course.)\n\t//\n\t// While the output is causally related to the input, it's not a\n\t// necessarily symmetric or synchronous transformation.  For example,\n\t// a zlib stream might take multiple plain-text writes(), and then\n\t// emit a single compressed chunk some time in the future.\n\t//\n\t// Here's how this works:\n\t//\n\t// The Transform stream has all the aspects of the readable and writable\n\t// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n\t// internally, and returns false if there's a lot of pending writes\n\t// buffered up.  When you call read(), that calls _read(n) until\n\t// there's enough pending readable data buffered up.\n\t//\n\t// In a transform stream, the written data is placed in a buffer.  When\n\t// _read(n) is called, it transforms the queued up data, calling the\n\t// buffered _write cb's as it consumes chunks.  If consuming a single\n\t// written chunk would result in multiple output chunks, then the first\n\t// outputted bit calls the readcb, and subsequent chunks just go into\n\t// the read buffer, and will cause it to emit 'readable' if necessary.\n\t//\n\t// This way, back-pressure is actually determined by the reading side,\n\t// since _read has to be called to start processing a new chunk.  However,\n\t// a pathological inflate type of transform can cause excessive buffering\n\t// here.  For example, imagine a stream where every byte of input is\n\t// interpreted as an integer from 0-255, and then results in that many\n\t// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n\t// 1kb of data being output.  In this case, you could write a very small\n\t// amount of input, and end up with a very large amount of output.  In\n\t// such a pathological inflating mechanism, there'd be no way to tell\n\t// the system to stop doing the transform.  A single 4MB write could\n\t// cause the system to run out of memory.\n\t//\n\t// However, even in such a pathological case, only a single written chunk\n\t// would be consumed, and then the rest would wait (un-transformed) until\n\t// the results of the previous transformed chunk were consumed.\n\n\t'use strict';\n\n\tmodule.exports = Transform;\n\n\tvar Duplex = __webpack_require__(62);\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tutil.inherits(Transform, Duplex);\n\n\tfunction TransformState(stream) {\n\t  this.afterTransform = function (er, data) {\n\t    return afterTransform(stream, er, data);\n\t  };\n\n\t  this.needTransform = false;\n\t  this.transforming = false;\n\t  this.writecb = null;\n\t  this.writechunk = null;\n\t  this.writeencoding = null;\n\t}\n\n\tfunction afterTransform(stream, er, data) {\n\t  var ts = stream._transformState;\n\t  ts.transforming = false;\n\n\t  var cb = ts.writecb;\n\n\t  if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n\t  ts.writechunk = null;\n\t  ts.writecb = null;\n\n\t  if (data !== null && data !== undefined) stream.push(data);\n\n\t  cb(er);\n\n\t  var rs = stream._readableState;\n\t  rs.reading = false;\n\t  if (rs.needReadable || rs.length < rs.highWaterMark) {\n\t    stream._read(rs.highWaterMark);\n\t  }\n\t}\n\n\tfunction Transform(options) {\n\t  if (!(this instanceof Transform)) return new Transform(options);\n\n\t  Duplex.call(this, options);\n\n\t  this._transformState = new TransformState(this);\n\n\t  // when the writable side finishes, then flush out anything remaining.\n\t  var stream = this;\n\n\t  // start out asking for a readable event once data is transformed.\n\t  this._readableState.needReadable = true;\n\n\t  // we have implemented the _read method, and done the other things\n\t  // that Readable wants before the first _read call, so unset the\n\t  // sync guard flag.\n\t  this._readableState.sync = false;\n\n\t  if (options) {\n\t    if (typeof options.transform === 'function') this._transform = options.transform;\n\n\t    if (typeof options.flush === 'function') this._flush = options.flush;\n\t  }\n\n\t  this.once('prefinish', function () {\n\t    if (typeof this._flush === 'function') this._flush(function (er) {\n\t      done(stream, er);\n\t    });else done(stream);\n\t  });\n\t}\n\n\tTransform.prototype.push = function (chunk, encoding) {\n\t  this._transformState.needTransform = false;\n\t  return Duplex.prototype.push.call(this, chunk, encoding);\n\t};\n\n\t// This is the part where you do stuff!\n\t// override this function in implementation classes.\n\t// 'chunk' is an input chunk.\n\t//\n\t// Call `push(newChunk)` to pass along transformed output\n\t// to the readable side.  You may call 'push' zero or more times.\n\t//\n\t// Call `cb(err)` when you are done with this chunk.  If you pass\n\t// an error, then that'll put the hurt on the whole operation.  If you\n\t// never call cb(), then you'll never get another chunk.\n\tTransform.prototype._transform = function (chunk, encoding, cb) {\n\t  throw new Error('not implemented');\n\t};\n\n\tTransform.prototype._write = function (chunk, encoding, cb) {\n\t  var ts = this._transformState;\n\t  ts.writecb = cb;\n\t  ts.writechunk = chunk;\n\t  ts.writeencoding = encoding;\n\t  if (!ts.transforming) {\n\t    var rs = this._readableState;\n\t    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n\t  }\n\t};\n\n\t// Doesn't matter what the args are here.\n\t// _transform does all the work.\n\t// That we got here means that the readable side wants more data.\n\tTransform.prototype._read = function (n) {\n\t  var ts = this._transformState;\n\n\t  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n\t    ts.transforming = true;\n\t    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n\t  } else {\n\t    // mark that we need a transform, so that any data that comes in\n\t    // will get processed, now that we've asked for it.\n\t    ts.needTransform = true;\n\t  }\n\t};\n\n\tfunction done(stream, er) {\n\t  if (er) return stream.emit('error', er);\n\n\t  // if there's nothing in the write buffer, then that means\n\t  // that nothing more will ever be provided\n\t  var ws = stream._writableState;\n\t  var ts = stream._transformState;\n\n\t  if (ws.length) throw new Error('calling transform done when ws.length != 0');\n\n\t  if (ts.transforming) throw new Error('calling transform done when still transforming');\n\n\t  return stream.push(null);\n\t}\n\n/***/ },\n/* 204 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process, setImmediate) {// A bit simpler than readable streams.\n\t// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n\t// the drain event emission and buffering.\n\n\t'use strict';\n\n\tmodule.exports = Writable;\n\n\t/*<replacement>*/\n\tvar processNextTick = __webpack_require__(60);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Buffer = __webpack_require__(1).Buffer;\n\t/*</replacement>*/\n\n\tWritable.WritableState = WritableState;\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar internalUtil = {\n\t  deprecate: __webpack_require__(208)\n\t};\n\t/*</replacement>*/\n\n\t/*<replacement>*/\n\tvar Stream;\n\t(function () {\n\t  try {\n\t    Stream = __webpack_require__(12);\n\t  } catch (_) {} finally {\n\t    if (!Stream) Stream = __webpack_require__(32).EventEmitter;\n\t  }\n\t})();\n\t/*</replacement>*/\n\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\tutil.inherits(Writable, Stream);\n\n\tfunction nop() {}\n\n\tfunction WriteReq(chunk, encoding, cb) {\n\t  this.chunk = chunk;\n\t  this.encoding = encoding;\n\t  this.callback = cb;\n\t  this.next = null;\n\t}\n\n\tvar Duplex;\n\tfunction WritableState(options, stream) {\n\t  Duplex = Duplex || __webpack_require__(62);\n\n\t  options = options || {};\n\n\t  // object stream flag to indicate whether or not this stream\n\t  // contains buffers or objects.\n\t  this.objectMode = !!options.objectMode;\n\n\t  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n\t  // the point at which write() starts returning false\n\t  // Note: 0 is a valid value, means that we always return false if\n\t  // the entire buffer is not flushed immediately on write()\n\t  var hwm = options.highWaterMark;\n\t  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\t  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n\t  // cast to ints.\n\t  this.highWaterMark = ~ ~this.highWaterMark;\n\n\t  this.needDrain = false;\n\t  // at the start of calling end()\n\t  this.ending = false;\n\t  // when end() has been called, and returned\n\t  this.ended = false;\n\t  // when 'finish' is emitted\n\t  this.finished = false;\n\n\t  // should we decode strings into buffers before passing to _write?\n\t  // this is here so that some node-core streams can optimize string\n\t  // handling at a lower level.\n\t  var noDecode = options.decodeStrings === false;\n\t  this.decodeStrings = !noDecode;\n\n\t  // Crypto is kind of old and crusty.  Historically, its default string\n\t  // encoding is 'binary' so we have to make this configurable.\n\t  // Everything else in the universe uses 'utf8', though.\n\t  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n\t  // not an actual buffer we keep track of, but a measurement\n\t  // of how much we're waiting to get pushed to some underlying\n\t  // socket or file.\n\t  this.length = 0;\n\n\t  // a flag to see when we're in the middle of a write.\n\t  this.writing = false;\n\n\t  // when true all writes will be buffered until .uncork() call\n\t  this.corked = 0;\n\n\t  // a flag to be able to tell if the onwrite cb is called immediately,\n\t  // or on a later tick.  We set this to true at first, because any\n\t  // actions that shouldn't happen until \"later\" should generally also\n\t  // not happen before the first write call.\n\t  this.sync = true;\n\n\t  // a flag to know if we're processing previously buffered items, which\n\t  // may call the _write() callback in the same tick, so that we don't\n\t  // end up in an overlapped onwrite situation.\n\t  this.bufferProcessing = false;\n\n\t  // the callback that's passed to _write(chunk,cb)\n\t  this.onwrite = function (er) {\n\t    onwrite(stream, er);\n\t  };\n\n\t  // the callback that the user supplies to write(chunk,encoding,cb)\n\t  this.writecb = null;\n\n\t  // the amount that is being written when _write is called.\n\t  this.writelen = 0;\n\n\t  this.bufferedRequest = null;\n\t  this.lastBufferedRequest = null;\n\n\t  // number of pending user-supplied write callbacks\n\t  // this must be 0 before 'finish' can be emitted\n\t  this.pendingcb = 0;\n\n\t  // emit prefinish if the only thing we're waiting for is _write cbs\n\t  // This is relevant for synchronous Transform streams\n\t  this.prefinished = false;\n\n\t  // True if the error was already emitted and should not be thrown again\n\t  this.errorEmitted = false;\n\n\t  // count buffered requests\n\t  this.bufferedRequestCount = 0;\n\n\t  // create the two objects needed to store the corked requests\n\t  // they are not a linked list, as no new elements are inserted in there\n\t  this.corkedRequestsFree = new CorkedRequest(this);\n\t  this.corkedRequestsFree.next = new CorkedRequest(this);\n\t}\n\n\tWritableState.prototype.getBuffer = function writableStateGetBuffer() {\n\t  var current = this.bufferedRequest;\n\t  var out = [];\n\t  while (current) {\n\t    out.push(current);\n\t    current = current.next;\n\t  }\n\t  return out;\n\t};\n\n\t(function () {\n\t  try {\n\t    Object.defineProperty(WritableState.prototype, 'buffer', {\n\t      get: internalUtil.deprecate(function () {\n\t        return this.getBuffer();\n\t      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\n\t    });\n\t  } catch (_) {}\n\t})();\n\n\tvar Duplex;\n\tfunction Writable(options) {\n\t  Duplex = Duplex || __webpack_require__(62);\n\n\t  // Writable ctor is applied to Duplexes, though they're not\n\t  // instanceof Writable, they're instanceof Readable.\n\t  if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);\n\n\t  this._writableState = new WritableState(options, this);\n\n\t  // legacy.\n\t  this.writable = true;\n\n\t  if (options) {\n\t    if (typeof options.write === 'function') this._write = options.write;\n\n\t    if (typeof options.writev === 'function') this._writev = options.writev;\n\t  }\n\n\t  Stream.call(this);\n\t}\n\n\t// Otherwise people can pipe Writable streams, which is just wrong.\n\tWritable.prototype.pipe = function () {\n\t  this.emit('error', new Error('Cannot pipe. Not readable.'));\n\t};\n\n\tfunction writeAfterEnd(stream, cb) {\n\t  var er = new Error('write after end');\n\t  // TODO: defer error events consistently everywhere, not just the cb\n\t  stream.emit('error', er);\n\t  processNextTick(cb, er);\n\t}\n\n\t// If we get something that is not a buffer, string, null, or undefined,\n\t// and we're not in objectMode, then that's an error.\n\t// Otherwise stream chunks are all considered to be of length=1, and the\n\t// watermarks determine how many objects to keep in the buffer, rather than\n\t// how many bytes or characters.\n\tfunction validChunk(stream, state, chunk, cb) {\n\t  var valid = true;\n\n\t  if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n\t    var er = new TypeError('Invalid non-string/buffer chunk');\n\t    stream.emit('error', er);\n\t    processNextTick(cb, er);\n\t    valid = false;\n\t  }\n\t  return valid;\n\t}\n\n\tWritable.prototype.write = function (chunk, encoding, cb) {\n\t  var state = this._writableState;\n\t  var ret = false;\n\n\t  if (typeof encoding === 'function') {\n\t    cb = encoding;\n\t    encoding = null;\n\t  }\n\n\t  if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n\t  if (typeof cb !== 'function') cb = nop;\n\n\t  if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {\n\t    state.pendingcb++;\n\t    ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\t  }\n\n\t  return ret;\n\t};\n\n\tWritable.prototype.cork = function () {\n\t  var state = this._writableState;\n\n\t  state.corked++;\n\t};\n\n\tWritable.prototype.uncork = function () {\n\t  var state = this._writableState;\n\n\t  if (state.corked) {\n\t    state.corked--;\n\n\t    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n\t  }\n\t};\n\n\tWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n\t  // node::ParseEncoding() requires lower case.\n\t  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n\t  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n\t  this._writableState.defaultEncoding = encoding;\n\t};\n\n\tfunction decodeChunk(state, chunk, encoding) {\n\t  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n\t    chunk = new Buffer(chunk, encoding);\n\t  }\n\t  return chunk;\n\t}\n\n\t// if we're already writing something, then just put this\n\t// in the queue, and wait our turn.  Otherwise, call _write\n\t// If we return false, then we need a drain event, so set that flag.\n\tfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n\t  chunk = decodeChunk(state, chunk, encoding);\n\n\t  if (Buffer.isBuffer(chunk)) encoding = 'buffer';\n\t  var len = state.objectMode ? 1 : chunk.length;\n\n\t  state.length += len;\n\n\t  var ret = state.length < state.highWaterMark;\n\t  // we must ensure that previous needDrain will not be reset to false.\n\t  if (!ret) state.needDrain = true;\n\n\t  if (state.writing || state.corked) {\n\t    var last = state.lastBufferedRequest;\n\t    state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n\t    if (last) {\n\t      last.next = state.lastBufferedRequest;\n\t    } else {\n\t      state.bufferedRequest = state.lastBufferedRequest;\n\t    }\n\t    state.bufferedRequestCount += 1;\n\t  } else {\n\t    doWrite(stream, state, false, len, chunk, encoding, cb);\n\t  }\n\n\t  return ret;\n\t}\n\n\tfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n\t  state.writelen = len;\n\t  state.writecb = cb;\n\t  state.writing = true;\n\t  state.sync = true;\n\t  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n\t  state.sync = false;\n\t}\n\n\tfunction onwriteError(stream, state, sync, er, cb) {\n\t  --state.pendingcb;\n\t  if (sync) processNextTick(cb, er);else cb(er);\n\n\t  stream._writableState.errorEmitted = true;\n\t  stream.emit('error', er);\n\t}\n\n\tfunction onwriteStateUpdate(state) {\n\t  state.writing = false;\n\t  state.writecb = null;\n\t  state.length -= state.writelen;\n\t  state.writelen = 0;\n\t}\n\n\tfunction onwrite(stream, er) {\n\t  var state = stream._writableState;\n\t  var sync = state.sync;\n\t  var cb = state.writecb;\n\n\t  onwriteStateUpdate(state);\n\n\t  if (er) onwriteError(stream, state, sync, er, cb);else {\n\t    // Check if we're actually ready to finish, but don't emit yet\n\t    var finished = needFinish(state);\n\n\t    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n\t      clearBuffer(stream, state);\n\t    }\n\n\t    if (sync) {\n\t      /*<replacement>*/\n\t      asyncWrite(afterWrite, stream, state, finished, cb);\n\t      /*</replacement>*/\n\t    } else {\n\t        afterWrite(stream, state, finished, cb);\n\t      }\n\t  }\n\t}\n\n\tfunction afterWrite(stream, state, finished, cb) {\n\t  if (!finished) onwriteDrain(stream, state);\n\t  state.pendingcb--;\n\t  cb();\n\t  finishMaybe(stream, state);\n\t}\n\n\t// Must force callback to be called on nextTick, so that we don't\n\t// emit 'drain' before the write() consumer gets the 'false' return\n\t// value, and has a chance to attach a 'drain' listener.\n\tfunction onwriteDrain(stream, state) {\n\t  if (state.length === 0 && state.needDrain) {\n\t    state.needDrain = false;\n\t    stream.emit('drain');\n\t  }\n\t}\n\n\t// if there's something in the buffer waiting, then process it\n\tfunction clearBuffer(stream, state) {\n\t  state.bufferProcessing = true;\n\t  var entry = state.bufferedRequest;\n\n\t  if (stream._writev && entry && entry.next) {\n\t    // Fast case, write everything using _writev()\n\t    var l = state.bufferedRequestCount;\n\t    var buffer = new Array(l);\n\t    var holder = state.corkedRequestsFree;\n\t    holder.entry = entry;\n\n\t    var count = 0;\n\t    while (entry) {\n\t      buffer[count] = entry;\n\t      entry = entry.next;\n\t      count += 1;\n\t    }\n\n\t    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n\t    // doWrite is always async, defer these to save a bit of time\n\t    // as the hot path ends with doWrite\n\t    state.pendingcb++;\n\t    state.lastBufferedRequest = null;\n\t    state.corkedRequestsFree = holder.next;\n\t    holder.next = null;\n\t  } else {\n\t    // Slow case, write chunks one-by-one\n\t    while (entry) {\n\t      var chunk = entry.chunk;\n\t      var encoding = entry.encoding;\n\t      var cb = entry.callback;\n\t      var len = state.objectMode ? 1 : chunk.length;\n\n\t      doWrite(stream, state, false, len, chunk, encoding, cb);\n\t      entry = entry.next;\n\t      // if we didn't call the onwrite immediately, then\n\t      // it means that we need to wait until it does.\n\t      // also, that means that the chunk and cb are currently\n\t      // being processed, so move the buffer counter past them.\n\t      if (state.writing) {\n\t        break;\n\t      }\n\t    }\n\n\t    if (entry === null) state.lastBufferedRequest = null;\n\t  }\n\n\t  state.bufferedRequestCount = 0;\n\t  state.bufferedRequest = entry;\n\t  state.bufferProcessing = false;\n\t}\n\n\tWritable.prototype._write = function (chunk, encoding, cb) {\n\t  cb(new Error('not implemented'));\n\t};\n\n\tWritable.prototype._writev = null;\n\n\tWritable.prototype.end = function (chunk, encoding, cb) {\n\t  var state = this._writableState;\n\n\t  if (typeof chunk === 'function') {\n\t    cb = chunk;\n\t    chunk = null;\n\t    encoding = null;\n\t  } else if (typeof encoding === 'function') {\n\t    cb = encoding;\n\t    encoding = null;\n\t  }\n\n\t  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n\t  // .end() fully uncorks\n\t  if (state.corked) {\n\t    state.corked = 1;\n\t    this.uncork();\n\t  }\n\n\t  // ignore unnecessary end() calls.\n\t  if (!state.ending && !state.finished) endWritable(this, state, cb);\n\t};\n\n\tfunction needFinish(state) {\n\t  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n\t}\n\n\tfunction prefinish(stream, state) {\n\t  if (!state.prefinished) {\n\t    state.prefinished = true;\n\t    stream.emit('prefinish');\n\t  }\n\t}\n\n\tfunction finishMaybe(stream, state) {\n\t  var need = needFinish(state);\n\t  if (need) {\n\t    if (state.pendingcb === 0) {\n\t      prefinish(stream, state);\n\t      state.finished = true;\n\t      stream.emit('finish');\n\t    } else {\n\t      prefinish(stream, state);\n\t    }\n\t  }\n\t  return need;\n\t}\n\n\tfunction endWritable(stream, state, cb) {\n\t  state.ending = true;\n\t  finishMaybe(stream, state);\n\t  if (cb) {\n\t    if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n\t  }\n\t  state.ended = true;\n\t  stream.writable = false;\n\t}\n\n\t// It seems a linked list but it is not\n\t// there will be only 2 of these for each stream\n\tfunction CorkedRequest(state) {\n\t  var _this = this;\n\n\t  this.next = null;\n\t  this.entry = null;\n\n\t  this.finish = function (err) {\n\t    var entry = _this.entry;\n\t    _this.entry = null;\n\t    while (entry) {\n\t      var cb = entry.callback;\n\t      state.pendingcb--;\n\t      cb(err);\n\t      entry = entry.next;\n\t    }\n\t    if (state.corkedRequestsFree) {\n\t      state.corkedRequestsFree.next = _this;\n\t    } else {\n\t      state.corkedRequestsFree = _this;\n\t    }\n\t  };\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8), __webpack_require__(91).setImmediate))\n\n/***/ },\n/* 205 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {var Stream = (function (){\n\t  try {\n\t    return __webpack_require__(12); // hack to fix a circular dependency issue when used with browserify\n\t  } catch(_){}\n\t}());\n\texports = module.exports = __webpack_require__(202);\n\texports.Stream = Stream || exports;\n\texports.Readable = exports;\n\texports.Writable = __webpack_require__(204);\n\texports.Duplex = __webpack_require__(62);\n\texports.Transform = __webpack_require__(203);\n\texports.PassThrough = __webpack_require__(528);\n\n\tif (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {\n\t  module.exports = Stream;\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 206 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {var Transform = __webpack_require__(510)\n\t  , inherits  = __webpack_require__(71).inherits\n\t  , xtend     = __webpack_require__(129)\n\n\tfunction DestroyableTransform(opts) {\n\t  Transform.call(this, opts)\n\t  this._destroyed = false\n\t}\n\n\tinherits(DestroyableTransform, Transform)\n\n\tDestroyableTransform.prototype.destroy = function(err) {\n\t  if (this._destroyed) return\n\t  this._destroyed = true\n\t  \n\t  var self = this\n\t  process.nextTick(function() {\n\t    if (err)\n\t      self.emit('error', err)\n\t    self.emit('close')\n\t  })\n\t}\n\n\t// a noop _transform function\n\tfunction noop (chunk, enc, callback) {\n\t  callback(null, chunk)\n\t}\n\n\n\t// create a new export function, used by both the main export and\n\t// the .ctor export, contains common logic for dealing with arguments\n\tfunction through2 (construct) {\n\t  return function (options, transform, flush) {\n\t    if (typeof options == 'function') {\n\t      flush     = transform\n\t      transform = options\n\t      options   = {}\n\t    }\n\n\t    if (typeof transform != 'function')\n\t      transform = noop\n\n\t    if (typeof flush != 'function')\n\t      flush = null\n\n\t    return construct(options, transform, flush)\n\t  }\n\t}\n\n\n\t// main export, just make me a transform stream!\n\tmodule.exports = through2(function (options, transform, flush) {\n\t  var t2 = new DestroyableTransform(options)\n\n\t  t2._transform = transform\n\n\t  if (flush)\n\t    t2._flush = flush\n\n\t  return t2\n\t})\n\n\n\t// make me a reusable prototype that I can `new`, or implicitly `new`\n\t// with a constructor call\n\tmodule.exports.ctor = through2(function (options, transform, flush) {\n\t  function Through2 (override) {\n\t    if (!(this instanceof Through2))\n\t      return new Through2(override)\n\n\t    this.options = xtend(options, override)\n\n\t    DestroyableTransform.call(this, this.options)\n\t  }\n\n\t  inherits(Through2, DestroyableTransform)\n\n\t  Through2.prototype._transform = transform\n\n\t  if (flush)\n\t    Through2.prototype._flush = flush\n\n\t  return Through2\n\t})\n\n\n\tmodule.exports.obj = through2(function (options, transform, flush) {\n\t  var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options))\n\n\t  t2._transform = transform\n\n\t  if (flush)\n\t    t2._flush = flush\n\n\t  return t2\n\t})\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 207 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t'use strict';\n\n\tvar punycode = __webpack_require__(503);\n\tvar util = __webpack_require__(530);\n\n\texports.parse = urlParse;\n\texports.resolve = urlResolve;\n\texports.resolveObject = urlResolveObject;\n\texports.format = urlFormat;\n\n\texports.Url = Url;\n\n\tfunction Url() {\n\t  this.protocol = null;\n\t  this.slashes = null;\n\t  this.auth = null;\n\t  this.host = null;\n\t  this.port = null;\n\t  this.hostname = null;\n\t  this.hash = null;\n\t  this.search = null;\n\t  this.query = null;\n\t  this.pathname = null;\n\t  this.path = null;\n\t  this.href = null;\n\t}\n\n\t// Reference: RFC 3986, RFC 1808, RFC 2396\n\n\t// define these here so at least they only have to be\n\t// compiled once on the first module load.\n\tvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n\t    portPattern = /:[0-9]*$/,\n\n\t    // Special case for a simple path URL\n\t    simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n\t    // RFC 2396: characters reserved for delimiting URLs.\n\t    // We actually just auto-escape these.\n\t    delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n\t    // RFC 2396: characters not allowed for various reasons.\n\t    unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n\t    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n\t    autoEscape = ['\\''].concat(unwise),\n\t    // Characters that are never ever allowed in a hostname.\n\t    // Note that any invalid chars are also handled, but these\n\t    // are the ones that are *expected* to be seen, so we fast-path\n\t    // them.\n\t    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n\t    hostEndingChars = ['/', '?', '#'],\n\t    hostnameMaxLen = 255,\n\t    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n\t    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n\t    // protocols that can allow \"unsafe\" and \"unwise\" chars.\n\t    unsafeProtocol = {\n\t      'javascript': true,\n\t      'javascript:': true\n\t    },\n\t    // protocols that never have a hostname.\n\t    hostlessProtocol = {\n\t      'javascript': true,\n\t      'javascript:': true\n\t    },\n\t    // protocols that always contain a // bit.\n\t    slashedProtocol = {\n\t      'http': true,\n\t      'https': true,\n\t      'ftp': true,\n\t      'gopher': true,\n\t      'file': true,\n\t      'http:': true,\n\t      'https:': true,\n\t      'ftp:': true,\n\t      'gopher:': true,\n\t      'file:': true\n\t    },\n\t    querystring = __webpack_require__(506);\n\n\tfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n\t  if (url && util.isObject(url) && url instanceof Url) return url;\n\n\t  var u = new Url;\n\t  u.parse(url, parseQueryString, slashesDenoteHost);\n\t  return u;\n\t}\n\n\tUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n\t  if (!util.isString(url)) {\n\t    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n\t  }\n\n\t  // Copy chrome, IE, opera backslash-handling behavior.\n\t  // Back slashes before the query string get converted to forward slashes\n\t  // See: https://code.google.com/p/chromium/issues/detail?id=25916\n\t  var queryIndex = url.indexOf('?'),\n\t      splitter =\n\t          (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n\t      uSplit = url.split(splitter),\n\t      slashRegex = /\\\\/g;\n\t  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n\t  url = uSplit.join(splitter);\n\n\t  var rest = url;\n\n\t  // trim before proceeding.\n\t  // This is to support parse stuff like \"  http://foo.com  \\n\"\n\t  rest = rest.trim();\n\n\t  if (!slashesDenoteHost && url.split('#').length === 1) {\n\t    // Try fast path regexp\n\t    var simplePath = simplePathPattern.exec(rest);\n\t    if (simplePath) {\n\t      this.path = rest;\n\t      this.href = rest;\n\t      this.pathname = simplePath[1];\n\t      if (simplePath[2]) {\n\t        this.search = simplePath[2];\n\t        if (parseQueryString) {\n\t          this.query = querystring.parse(this.search.substr(1));\n\t        } else {\n\t          this.query = this.search.substr(1);\n\t        }\n\t      } else if (parseQueryString) {\n\t        this.search = '';\n\t        this.query = {};\n\t      }\n\t      return this;\n\t    }\n\t  }\n\n\t  var proto = protocolPattern.exec(rest);\n\t  if (proto) {\n\t    proto = proto[0];\n\t    var lowerProto = proto.toLowerCase();\n\t    this.protocol = lowerProto;\n\t    rest = rest.substr(proto.length);\n\t  }\n\n\t  // figure out if it's got a host\n\t  // user@server is *always* interpreted as a hostname, and url\n\t  // resolution will treat //foo/bar as host=foo,path=bar because that's\n\t  // how the browser resolves relative URLs.\n\t  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n\t    var slashes = rest.substr(0, 2) === '//';\n\t    if (slashes && !(proto && hostlessProtocol[proto])) {\n\t      rest = rest.substr(2);\n\t      this.slashes = true;\n\t    }\n\t  }\n\n\t  if (!hostlessProtocol[proto] &&\n\t      (slashes || (proto && !slashedProtocol[proto]))) {\n\n\t    // there's a hostname.\n\t    // the first instance of /, ?, ;, or # ends the host.\n\t    //\n\t    // If there is an @ in the hostname, then non-host chars *are* allowed\n\t    // to the left of the last @ sign, unless some host-ending character\n\t    // comes *before* the @-sign.\n\t    // URLs are obnoxious.\n\t    //\n\t    // ex:\n\t    // http://a@b@c/ => user:a@b host:c\n\t    // http://a@b?@c => user:a host:c path:/?@c\n\n\t    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n\t    // Review our test case against browsers more comprehensively.\n\n\t    // find the first instance of any hostEndingChars\n\t    var hostEnd = -1;\n\t    for (var i = 0; i < hostEndingChars.length; i++) {\n\t      var hec = rest.indexOf(hostEndingChars[i]);\n\t      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n\t        hostEnd = hec;\n\t    }\n\n\t    // at this point, either we have an explicit point where the\n\t    // auth portion cannot go past, or the last @ char is the decider.\n\t    var auth, atSign;\n\t    if (hostEnd === -1) {\n\t      // atSign can be anywhere.\n\t      atSign = rest.lastIndexOf('@');\n\t    } else {\n\t      // atSign must be in auth portion.\n\t      // http://a@b/c@d => host:b auth:a path:/c@d\n\t      atSign = rest.lastIndexOf('@', hostEnd);\n\t    }\n\n\t    // Now we have a portion which is definitely the auth.\n\t    // Pull that off.\n\t    if (atSign !== -1) {\n\t      auth = rest.slice(0, atSign);\n\t      rest = rest.slice(atSign + 1);\n\t      this.auth = decodeURIComponent(auth);\n\t    }\n\n\t    // the host is the remaining to the left of the first non-host char\n\t    hostEnd = -1;\n\t    for (var i = 0; i < nonHostChars.length; i++) {\n\t      var hec = rest.indexOf(nonHostChars[i]);\n\t      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n\t        hostEnd = hec;\n\t    }\n\t    // if we still have not hit it, then the entire thing is a host.\n\t    if (hostEnd === -1)\n\t      hostEnd = rest.length;\n\n\t    this.host = rest.slice(0, hostEnd);\n\t    rest = rest.slice(hostEnd);\n\n\t    // pull out port.\n\t    this.parseHost();\n\n\t    // we've indicated that there is a hostname,\n\t    // so even if it's empty, it has to be present.\n\t    this.hostname = this.hostname || '';\n\n\t    // if hostname begins with [ and ends with ]\n\t    // assume that it's an IPv6 address.\n\t    var ipv6Hostname = this.hostname[0] === '[' &&\n\t        this.hostname[this.hostname.length - 1] === ']';\n\n\t    // validate a little.\n\t    if (!ipv6Hostname) {\n\t      var hostparts = this.hostname.split(/\\./);\n\t      for (var i = 0, l = hostparts.length; i < l; i++) {\n\t        var part = hostparts[i];\n\t        if (!part) continue;\n\t        if (!part.match(hostnamePartPattern)) {\n\t          var newpart = '';\n\t          for (var j = 0, k = part.length; j < k; j++) {\n\t            if (part.charCodeAt(j) > 127) {\n\t              // we replace non-ASCII char with a temporary placeholder\n\t              // we need this to make sure size of hostname is not\n\t              // broken by replacing non-ASCII by nothing\n\t              newpart += 'x';\n\t            } else {\n\t              newpart += part[j];\n\t            }\n\t          }\n\t          // we test again with ASCII char only\n\t          if (!newpart.match(hostnamePartPattern)) {\n\t            var validParts = hostparts.slice(0, i);\n\t            var notHost = hostparts.slice(i + 1);\n\t            var bit = part.match(hostnamePartStart);\n\t            if (bit) {\n\t              validParts.push(bit[1]);\n\t              notHost.unshift(bit[2]);\n\t            }\n\t            if (notHost.length) {\n\t              rest = '/' + notHost.join('.') + rest;\n\t            }\n\t            this.hostname = validParts.join('.');\n\t            break;\n\t          }\n\t        }\n\t      }\n\t    }\n\n\t    if (this.hostname.length > hostnameMaxLen) {\n\t      this.hostname = '';\n\t    } else {\n\t      // hostnames are always lower case.\n\t      this.hostname = this.hostname.toLowerCase();\n\t    }\n\n\t    if (!ipv6Hostname) {\n\t      // IDNA Support: Returns a punycoded representation of \"domain\".\n\t      // It only converts parts of the domain name that\n\t      // have non-ASCII characters, i.e. it doesn't matter if\n\t      // you call it with a domain that already is ASCII-only.\n\t      this.hostname = punycode.toASCII(this.hostname);\n\t    }\n\n\t    var p = this.port ? ':' + this.port : '';\n\t    var h = this.hostname || '';\n\t    this.host = h + p;\n\t    this.href += this.host;\n\n\t    // strip [ and ] from the hostname\n\t    // the host field still retains them, though\n\t    if (ipv6Hostname) {\n\t      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\t      if (rest[0] !== '/') {\n\t        rest = '/' + rest;\n\t      }\n\t    }\n\t  }\n\n\t  // now rest is set to the post-host stuff.\n\t  // chop off any delim chars.\n\t  if (!unsafeProtocol[lowerProto]) {\n\n\t    // First, make 100% sure that any \"autoEscape\" chars get\n\t    // escaped, even if encodeURIComponent doesn't think they\n\t    // need to be.\n\t    for (var i = 0, l = autoEscape.length; i < l; i++) {\n\t      var ae = autoEscape[i];\n\t      if (rest.indexOf(ae) === -1)\n\t        continue;\n\t      var esc = encodeURIComponent(ae);\n\t      if (esc === ae) {\n\t        esc = escape(ae);\n\t      }\n\t      rest = rest.split(ae).join(esc);\n\t    }\n\t  }\n\n\n\t  // chop off from the tail first.\n\t  var hash = rest.indexOf('#');\n\t  if (hash !== -1) {\n\t    // got a fragment string.\n\t    this.hash = rest.substr(hash);\n\t    rest = rest.slice(0, hash);\n\t  }\n\t  var qm = rest.indexOf('?');\n\t  if (qm !== -1) {\n\t    this.search = rest.substr(qm);\n\t    this.query = rest.substr(qm + 1);\n\t    if (parseQueryString) {\n\t      this.query = querystring.parse(this.query);\n\t    }\n\t    rest = rest.slice(0, qm);\n\t  } else if (parseQueryString) {\n\t    // no query string, but parseQueryString still requested\n\t    this.search = '';\n\t    this.query = {};\n\t  }\n\t  if (rest) this.pathname = rest;\n\t  if (slashedProtocol[lowerProto] &&\n\t      this.hostname && !this.pathname) {\n\t    this.pathname = '/';\n\t  }\n\n\t  //to support http.request\n\t  if (this.pathname || this.search) {\n\t    var p = this.pathname || '';\n\t    var s = this.search || '';\n\t    this.path = p + s;\n\t  }\n\n\t  // finally, reconstruct the href based on what has been validated.\n\t  this.href = this.format();\n\t  return this;\n\t};\n\n\t// format a parsed object into a url string\n\tfunction urlFormat(obj) {\n\t  // ensure it's an object, and not a string url.\n\t  // If it's an obj, this is a no-op.\n\t  // this way, you can call url_format() on strings\n\t  // to clean up potentially wonky urls.\n\t  if (util.isString(obj)) obj = urlParse(obj);\n\t  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n\t  return obj.format();\n\t}\n\n\tUrl.prototype.format = function() {\n\t  var auth = this.auth || '';\n\t  if (auth) {\n\t    auth = encodeURIComponent(auth);\n\t    auth = auth.replace(/%3A/i, ':');\n\t    auth += '@';\n\t  }\n\n\t  var protocol = this.protocol || '',\n\t      pathname = this.pathname || '',\n\t      hash = this.hash || '',\n\t      host = false,\n\t      query = '';\n\n\t  if (this.host) {\n\t    host = auth + this.host;\n\t  } else if (this.hostname) {\n\t    host = auth + (this.hostname.indexOf(':') === -1 ?\n\t        this.hostname :\n\t        '[' + this.hostname + ']');\n\t    if (this.port) {\n\t      host += ':' + this.port;\n\t    }\n\t  }\n\n\t  if (this.query &&\n\t      util.isObject(this.query) &&\n\t      Object.keys(this.query).length) {\n\t    query = querystring.stringify(this.query);\n\t  }\n\n\t  var search = this.search || (query && ('?' + query)) || '';\n\n\t  if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n\t  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n\t  // unless they had them to begin with.\n\t  if (this.slashes ||\n\t      (!protocol || slashedProtocol[protocol]) && host !== false) {\n\t    host = '//' + (host || '');\n\t    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n\t  } else if (!host) {\n\t    host = '';\n\t  }\n\n\t  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n\t  if (search && search.charAt(0) !== '?') search = '?' + search;\n\n\t  pathname = pathname.replace(/[?#]/g, function(match) {\n\t    return encodeURIComponent(match);\n\t  });\n\t  search = search.replace('#', '%23');\n\n\t  return protocol + host + pathname + search + hash;\n\t};\n\n\tfunction urlResolve(source, relative) {\n\t  return urlParse(source, false, true).resolve(relative);\n\t}\n\n\tUrl.prototype.resolve = function(relative) {\n\t  return this.resolveObject(urlParse(relative, false, true)).format();\n\t};\n\n\tfunction urlResolveObject(source, relative) {\n\t  if (!source) return relative;\n\t  return urlParse(source, false, true).resolveObject(relative);\n\t}\n\n\tUrl.prototype.resolveObject = function(relative) {\n\t  if (util.isString(relative)) {\n\t    var rel = new Url();\n\t    rel.parse(relative, false, true);\n\t    relative = rel;\n\t  }\n\n\t  var result = new Url();\n\t  var tkeys = Object.keys(this);\n\t  for (var tk = 0; tk < tkeys.length; tk++) {\n\t    var tkey = tkeys[tk];\n\t    result[tkey] = this[tkey];\n\t  }\n\n\t  // hash is always overridden, no matter what.\n\t  // even href=\"\" will remove it.\n\t  result.hash = relative.hash;\n\n\t  // if the relative url is empty, then there's nothing left to do here.\n\t  if (relative.href === '') {\n\t    result.href = result.format();\n\t    return result;\n\t  }\n\n\t  // hrefs like //foo/bar always cut to the protocol.\n\t  if (relative.slashes && !relative.protocol) {\n\t    // take everything except the protocol from relative\n\t    var rkeys = Object.keys(relative);\n\t    for (var rk = 0; rk < rkeys.length; rk++) {\n\t      var rkey = rkeys[rk];\n\t      if (rkey !== 'protocol')\n\t        result[rkey] = relative[rkey];\n\t    }\n\n\t    //urlParse appends trailing / to urls like http://www.example.com\n\t    if (slashedProtocol[result.protocol] &&\n\t        result.hostname && !result.pathname) {\n\t      result.path = result.pathname = '/';\n\t    }\n\n\t    result.href = result.format();\n\t    return result;\n\t  }\n\n\t  if (relative.protocol && relative.protocol !== result.protocol) {\n\t    // if it's a known url protocol, then changing\n\t    // the protocol does weird things\n\t    // first, if it's not file:, then we MUST have a host,\n\t    // and if there was a path\n\t    // to begin with, then we MUST have a path.\n\t    // if it is file:, then the host is dropped,\n\t    // because that's known to be hostless.\n\t    // anything else is assumed to be absolute.\n\t    if (!slashedProtocol[relative.protocol]) {\n\t      var keys = Object.keys(relative);\n\t      for (var v = 0; v < keys.length; v++) {\n\t        var k = keys[v];\n\t        result[k] = relative[k];\n\t      }\n\t      result.href = result.format();\n\t      return result;\n\t    }\n\n\t    result.protocol = relative.protocol;\n\t    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n\t      var relPath = (relative.pathname || '').split('/');\n\t      while (relPath.length && !(relative.host = relPath.shift()));\n\t      if (!relative.host) relative.host = '';\n\t      if (!relative.hostname) relative.hostname = '';\n\t      if (relPath[0] !== '') relPath.unshift('');\n\t      if (relPath.length < 2) relPath.unshift('');\n\t      result.pathname = relPath.join('/');\n\t    } else {\n\t      result.pathname = relative.pathname;\n\t    }\n\t    result.search = relative.search;\n\t    result.query = relative.query;\n\t    result.host = relative.host || '';\n\t    result.auth = relative.auth;\n\t    result.hostname = relative.hostname || relative.host;\n\t    result.port = relative.port;\n\t    // to support http.request\n\t    if (result.pathname || result.search) {\n\t      var p = result.pathname || '';\n\t      var s = result.search || '';\n\t      result.path = p + s;\n\t    }\n\t    result.slashes = result.slashes || relative.slashes;\n\t    result.href = result.format();\n\t    return result;\n\t  }\n\n\t  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n\t      isRelAbs = (\n\t          relative.host ||\n\t          relative.pathname && relative.pathname.charAt(0) === '/'\n\t      ),\n\t      mustEndAbs = (isRelAbs || isSourceAbs ||\n\t                    (result.host && relative.pathname)),\n\t      removeAllDots = mustEndAbs,\n\t      srcPath = result.pathname && result.pathname.split('/') || [],\n\t      relPath = relative.pathname && relative.pathname.split('/') || [],\n\t      psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n\t  // if the url is a non-slashed url, then relative\n\t  // links like ../.. should be able\n\t  // to crawl up to the hostname, as well.  This is strange.\n\t  // result.protocol has already been set by now.\n\t  // Later on, put the first path part into the host field.\n\t  if (psychotic) {\n\t    result.hostname = '';\n\t    result.port = null;\n\t    if (result.host) {\n\t      if (srcPath[0] === '') srcPath[0] = result.host;\n\t      else srcPath.unshift(result.host);\n\t    }\n\t    result.host = '';\n\t    if (relative.protocol) {\n\t      relative.hostname = null;\n\t      relative.port = null;\n\t      if (relative.host) {\n\t        if (relPath[0] === '') relPath[0] = relative.host;\n\t        else relPath.unshift(relative.host);\n\t      }\n\t      relative.host = null;\n\t    }\n\t    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n\t  }\n\n\t  if (isRelAbs) {\n\t    // it's absolute.\n\t    result.host = (relative.host || relative.host === '') ?\n\t                  relative.host : result.host;\n\t    result.hostname = (relative.hostname || relative.hostname === '') ?\n\t                      relative.hostname : result.hostname;\n\t    result.search = relative.search;\n\t    result.query = relative.query;\n\t    srcPath = relPath;\n\t    // fall through to the dot-handling below.\n\t  } else if (relPath.length) {\n\t    // it's relative\n\t    // throw away the existing file, and take the new path instead.\n\t    if (!srcPath) srcPath = [];\n\t    srcPath.pop();\n\t    srcPath = srcPath.concat(relPath);\n\t    result.search = relative.search;\n\t    result.query = relative.query;\n\t  } else if (!util.isNullOrUndefined(relative.search)) {\n\t    // just pull out the search.\n\t    // like href='?foo'.\n\t    // Put this after the other two cases because it simplifies the booleans\n\t    if (psychotic) {\n\t      result.hostname = result.host = srcPath.shift();\n\t      //occationaly the auth can get stuck only in host\n\t      //this especially happens in cases like\n\t      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t      var authInHost = result.host && result.host.indexOf('@') > 0 ?\n\t                       result.host.split('@') : false;\n\t      if (authInHost) {\n\t        result.auth = authInHost.shift();\n\t        result.host = result.hostname = authInHost.shift();\n\t      }\n\t    }\n\t    result.search = relative.search;\n\t    result.query = relative.query;\n\t    //to support http.request\n\t    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n\t      result.path = (result.pathname ? result.pathname : '') +\n\t                    (result.search ? result.search : '');\n\t    }\n\t    result.href = result.format();\n\t    return result;\n\t  }\n\n\t  if (!srcPath.length) {\n\t    // no path at all.  easy.\n\t    // we've already handled the other stuff above.\n\t    result.pathname = null;\n\t    //to support http.request\n\t    if (result.search) {\n\t      result.path = '/' + result.search;\n\t    } else {\n\t      result.path = null;\n\t    }\n\t    result.href = result.format();\n\t    return result;\n\t  }\n\n\t  // if a url ENDs in . or .., then it must get a trailing slash.\n\t  // however, if it ends in anything else non-slashy,\n\t  // then it must NOT get a trailing slash.\n\t  var last = srcPath.slice(-1)[0];\n\t  var hasTrailingSlash = (\n\t      (result.host || relative.host || srcPath.length > 1) &&\n\t      (last === '.' || last === '..') || last === '');\n\n\t  // strip single dots, resolve double dots to parent dir\n\t  // if the path tries to go above the root, `up` ends up > 0\n\t  var up = 0;\n\t  for (var i = srcPath.length; i >= 0; i--) {\n\t    last = srcPath[i];\n\t    if (last === '.') {\n\t      srcPath.splice(i, 1);\n\t    } else if (last === '..') {\n\t      srcPath.splice(i, 1);\n\t      up++;\n\t    } else if (up) {\n\t      srcPath.splice(i, 1);\n\t      up--;\n\t    }\n\t  }\n\n\t  // if the path is allowed to go above the root, restore leading ..s\n\t  if (!mustEndAbs && !removeAllDots) {\n\t    for (; up--; up) {\n\t      srcPath.unshift('..');\n\t    }\n\t  }\n\n\t  if (mustEndAbs && srcPath[0] !== '' &&\n\t      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n\t    srcPath.unshift('');\n\t  }\n\n\t  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n\t    srcPath.push('');\n\t  }\n\n\t  var isAbsolute = srcPath[0] === '' ||\n\t      (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n\t  // put the host back\n\t  if (psychotic) {\n\t    result.hostname = result.host = isAbsolute ? '' :\n\t                                    srcPath.length ? srcPath.shift() : '';\n\t    //occationaly the auth can get stuck only in host\n\t    //this especially happens in cases like\n\t    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t    var authInHost = result.host && result.host.indexOf('@') > 0 ?\n\t                     result.host.split('@') : false;\n\t    if (authInHost) {\n\t      result.auth = authInHost.shift();\n\t      result.host = result.hostname = authInHost.shift();\n\t    }\n\t  }\n\n\t  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n\t  if (mustEndAbs && !isAbsolute) {\n\t    srcPath.unshift('');\n\t  }\n\n\t  if (!srcPath.length) {\n\t    result.pathname = null;\n\t    result.path = null;\n\t  } else {\n\t    result.pathname = srcPath.join('/');\n\t  }\n\n\t  //to support request.http\n\t  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n\t    result.path = (result.pathname ? result.pathname : '') +\n\t                  (result.search ? result.search : '');\n\t  }\n\t  result.auth = relative.auth || result.auth;\n\t  result.slashes = result.slashes || relative.slashes;\n\t  result.href = result.format();\n\t  return result;\n\t};\n\n\tUrl.prototype.parseHost = function() {\n\t  var host = this.host;\n\t  var port = portPattern.exec(host);\n\t  if (port) {\n\t    port = port[0];\n\t    if (port !== ':') {\n\t      this.port = port.substr(1);\n\t    }\n\t    host = host.substr(0, host.length - port.length);\n\t  }\n\t  if (host) this.hostname = host;\n\t};\n\n\n/***/ },\n/* 208 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\n\t/**\n\t * Module exports.\n\t */\n\n\tmodule.exports = deprecate;\n\n\t/**\n\t * Mark that a method should not be used.\n\t * Returns a modified function which warns once by default.\n\t *\n\t * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n\t *\n\t * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n\t * will throw an Error when invoked.\n\t *\n\t * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n\t * will invoke `console.trace()` instead of `console.error()`.\n\t *\n\t * @param {Function} fn - the function to deprecate\n\t * @param {String} msg - the string to print to the console when `fn` is invoked\n\t * @returns {Function} a new \"deprecated\" version of `fn`\n\t * @api public\n\t */\n\n\tfunction deprecate (fn, msg) {\n\t  if (config('noDeprecation')) {\n\t    return fn;\n\t  }\n\n\t  var warned = false;\n\t  function deprecated() {\n\t    if (!warned) {\n\t      if (config('throwDeprecation')) {\n\t        throw new Error(msg);\n\t      } else if (config('traceDeprecation')) {\n\t        console.trace(msg);\n\t      } else {\n\t        console.warn(msg);\n\t      }\n\t      warned = true;\n\t    }\n\t    return fn.apply(this, arguments);\n\t  }\n\n\t  return deprecated;\n\t}\n\n\t/**\n\t * Checks `localStorage` for boolean values for the given `name`.\n\t *\n\t * @param {String} name\n\t * @returns {Boolean}\n\t * @api private\n\t */\n\n\tfunction config (name) {\n\t  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n\t  try {\n\t    if (!global.localStorage) return false;\n\t  } catch (_) {\n\t    return false;\n\t  }\n\t  var val = global.localStorage[name];\n\t  if (null == val) return false;\n\t  return String(val).toLowerCase() === 'true';\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 209 */\n/***/ function(module, exports) {\n\n\t// Returns a wrapper function that returns a wrapped callback\n\t// The wrapper function should do some stuff, and return a\n\t// presumably different callback function.\n\t// This makes sure that own properties are retained, so that\n\t// decorations and such are not lost along the way.\n\tmodule.exports = wrappy\n\tfunction wrappy (fn, cb) {\n\t  if (fn && cb) return wrappy(fn)(cb)\n\n\t  if (typeof fn !== 'function')\n\t    throw new TypeError('need wrapper function')\n\n\t  Object.keys(fn).forEach(function (k) {\n\t    wrapper[k] = fn[k]\n\t  })\n\n\t  return wrapper\n\n\t  function wrapper() {\n\t    var args = new Array(arguments.length)\n\t    for (var i = 0; i < args.length; i++) {\n\t      args[i] = arguments[i]\n\t    }\n\t    var ret = fn.apply(this, args)\n\t    var cb = args[args.length-1]\n\t    if (typeof ret === 'function' && ret !== cb) {\n\t      Object.keys(cb).forEach(function (k) {\n\t        ret[k] = cb[k]\n\t      })\n\t    }\n\t    return ret\n\t  }\n\t}\n\n\n/***/ },\n/* 210 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar multiaddr = __webpack_require__(496);\n\n\tvar loadCommands = __webpack_require__(249);\n\tvar getConfig = __webpack_require__(247);\n\tvar getRequestAPI = __webpack_require__(250);\n\n\tfunction IpfsAPI(hostOrMultiaddr, port, opts) {\n\t  var config = getConfig();\n\n\t  try {\n\t    var maddr = multiaddr(hostOrMultiaddr).nodeAddress();\n\t    config.host = maddr.address;\n\t    config.port = maddr.port;\n\t  } catch (e) {\n\t    if (typeof hostOrMultiaddr === 'string') {\n\t      config.host = hostOrMultiaddr;\n\t      config.port = port && (typeof port === 'undefined' ? 'undefined' : _typeof(port)) !== 'object' ? port : config.port;\n\t    }\n\t  }\n\n\t  var lastIndex = arguments.length;\n\t  while (!opts && lastIndex-- > 0) {\n\t    opts = arguments[lastIndex];\n\t    if (opts) break;\n\t  }\n\n\t  Object.assign(config, opts);\n\n\t  // autoconfigure in browser\n\t  if (!config.host && typeof window !== 'undefined') {\n\t    var split = window.location.host.split(':');\n\t    config.host = split[0];\n\t    config.port = split[1];\n\t  }\n\n\t  var requestAPI = getRequestAPI(config);\n\t  var cmds = loadCommands(requestAPI);\n\t  cmds.send = requestAPI;\n\t  cmds.Buffer = Buffer;\n\n\t  return cmds;\n\t}\n\n\texports = module.exports = IpfsAPI;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 211 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/*istanbul ignore next*/\"use strict\";\n\n\t/*istanbul ignore next*/__webpack_require__(449);\n\n\t/*istanbul ignore next*/__webpack_require__(251);\n\n\t/*istanbul ignore next*/__webpack_require__(269);\n\n\t/* eslint max-len: 0 */\n\n\tif (global._babelPolyfill) {\n\t  throw new Error(\"only one instance of babel-polyfill is allowed\");\n\t}\n\tglobal._babelPolyfill = true;\n\n\t// Should be removed in the next major release:\n\n\tvar DEFINE_PROPERTY = \"defineProperty\";\n\tfunction define(O, key, value) {\n\t  O[key] || Object[DEFINE_PROPERTY](O, key, {\n\t    writable: true,\n\t    configurable: true,\n\t    value: value\n\t  });\n\t}\n\n\tdefine(String.prototype, \"padLeft\", \"\".padStart);\n\tdefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\t\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n\t  [][key] && define(Array, key, Function.call.bind([][key]));\n\t});\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 212 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar asn1 = __webpack_require__(72);\n\tvar inherits = __webpack_require__(2);\n\n\tvar api = exports;\n\n\tapi.define = function define(name, body) {\n\t  return new Entity(name, body);\n\t};\n\n\tfunction Entity(name, body) {\n\t  this.name = name;\n\t  this.body = body;\n\n\t  this.decoders = {};\n\t  this.encoders = {};\n\t};\n\n\tEntity.prototype._createNamed = function createNamed(base) {\n\t  var named;\n\t  try {\n\t    named = __webpack_require__(535).runInThisContext(\n\t      '(function ' + this.name + '(entity) {\\n' +\n\t      '  this._initNamed(entity);\\n' +\n\t      '})'\n\t    );\n\t  } catch (e) {\n\t    named = function (entity) {\n\t      this._initNamed(entity);\n\t    };\n\t  }\n\t  inherits(named, base);\n\t  named.prototype._initNamed = function initnamed(entity) {\n\t    base.call(this, entity);\n\t  };\n\n\t  return new named(this);\n\t};\n\n\tEntity.prototype._getDecoder = function _getDecoder(enc) {\n\t  enc = enc || 'der';\n\t  // Lazily create decoder\n\t  if (!this.decoders.hasOwnProperty(enc))\n\t    this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n\t  return this.decoders[enc];\n\t};\n\n\tEntity.prototype.decode = function decode(data, enc, options) {\n\t  return this._getDecoder(enc).decode(data, options);\n\t};\n\n\tEntity.prototype._getEncoder = function _getEncoder(enc) {\n\t  enc = enc || 'der';\n\t  // Lazily create encoder\n\t  if (!this.encoders.hasOwnProperty(enc))\n\t    this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n\t  return this.encoders[enc];\n\t};\n\n\tEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n\t  return this._getEncoder(enc).encode(data, reporter);\n\t};\n\n\n/***/ },\n/* 213 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Reporter = __webpack_require__(63).Reporter;\n\tvar EncoderBuffer = __webpack_require__(63).EncoderBuffer;\n\tvar DecoderBuffer = __webpack_require__(63).DecoderBuffer;\n\tvar assert = __webpack_require__(69);\n\n\t// Supported tags\n\tvar tags = [\n\t  'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n\t  'gentime', 'utctime', 'null_', 'enum', 'int',\n\t  'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n\t  'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n\t];\n\n\t// Public methods list\n\tvar methods = [\n\t  'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n\t  'any', 'contains'\n\t].concat(tags);\n\n\t// Overrided methods list\n\tvar overrided = [\n\t  '_peekTag', '_decodeTag', '_use',\n\t  '_decodeStr', '_decodeObjid', '_decodeTime',\n\t  '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n\t  '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n\t  '_encodeNull', '_encodeInt', '_encodeBool'\n\t];\n\n\tfunction Node(enc, parent) {\n\t  var state = {};\n\t  this._baseState = state;\n\n\t  state.enc = enc;\n\n\t  state.parent = parent || null;\n\t  state.children = null;\n\n\t  // State\n\t  state.tag = null;\n\t  state.args = null;\n\t  state.reverseArgs = null;\n\t  state.choice = null;\n\t  state.optional = false;\n\t  state.any = false;\n\t  state.obj = false;\n\t  state.use = null;\n\t  state.useDecoder = null;\n\t  state.key = null;\n\t  state['default'] = null;\n\t  state.explicit = null;\n\t  state.implicit = null;\n\t  state.contains = null;\n\n\t  // Should create new instance on each method\n\t  if (!state.parent) {\n\t    state.children = [];\n\t    this._wrap();\n\t  }\n\t}\n\tmodule.exports = Node;\n\n\tvar stateProps = [\n\t  'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n\t  'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n\t  'implicit'\n\t];\n\n\tNode.prototype.clone = function clone() {\n\t  var state = this._baseState;\n\t  var cstate = {};\n\t  stateProps.forEach(function(prop) {\n\t    cstate[prop] = state[prop];\n\t  });\n\t  var res = new this.constructor(cstate.parent);\n\t  res._baseState = cstate;\n\t  return res;\n\t};\n\n\tNode.prototype._wrap = function wrap() {\n\t  var state = this._baseState;\n\t  methods.forEach(function(method) {\n\t    this[method] = function _wrappedMethod() {\n\t      var clone = new this.constructor(this);\n\t      state.children.push(clone);\n\t      return clone[method].apply(clone, arguments);\n\t    };\n\t  }, this);\n\t};\n\n\tNode.prototype._init = function init(body) {\n\t  var state = this._baseState;\n\n\t  assert(state.parent === null);\n\t  body.call(this);\n\n\t  // Filter children\n\t  state.children = state.children.filter(function(child) {\n\t    return child._baseState.parent === this;\n\t  }, this);\n\t  assert.equal(state.children.length, 1, 'Root node can have only one child');\n\t};\n\n\tNode.prototype._useArgs = function useArgs(args) {\n\t  var state = this._baseState;\n\n\t  // Filter children and args\n\t  var children = args.filter(function(arg) {\n\t    return arg instanceof this.constructor;\n\t  }, this);\n\t  args = args.filter(function(arg) {\n\t    return !(arg instanceof this.constructor);\n\t  }, this);\n\n\t  if (children.length !== 0) {\n\t    assert(state.children === null);\n\t    state.children = children;\n\n\t    // Replace parent to maintain backward link\n\t    children.forEach(function(child) {\n\t      child._baseState.parent = this;\n\t    }, this);\n\t  }\n\t  if (args.length !== 0) {\n\t    assert(state.args === null);\n\t    state.args = args;\n\t    state.reverseArgs = args.map(function(arg) {\n\t      if (typeof arg !== 'object' || arg.constructor !== Object)\n\t        return arg;\n\n\t      var res = {};\n\t      Object.keys(arg).forEach(function(key) {\n\t        if (key == (key | 0))\n\t          key |= 0;\n\t        var value = arg[key];\n\t        res[value] = key;\n\t      });\n\t      return res;\n\t    });\n\t  }\n\t};\n\n\t//\n\t// Overrided methods\n\t//\n\n\toverrided.forEach(function(method) {\n\t  Node.prototype[method] = function _overrided() {\n\t    var state = this._baseState;\n\t    throw new Error(method + ' not implemented for encoding: ' + state.enc);\n\t  };\n\t});\n\n\t//\n\t// Public methods\n\t//\n\n\ttags.forEach(function(tag) {\n\t  Node.prototype[tag] = function _tagMethod() {\n\t    var state = this._baseState;\n\t    var args = Array.prototype.slice.call(arguments);\n\n\t    assert(state.tag === null);\n\t    state.tag = tag;\n\n\t    this._useArgs(args);\n\n\t    return this;\n\t  };\n\t});\n\n\tNode.prototype.use = function use(item) {\n\t  var state = this._baseState;\n\n\t  assert(state.use === null);\n\t  state.use = item;\n\n\t  return this;\n\t};\n\n\tNode.prototype.optional = function optional() {\n\t  var state = this._baseState;\n\n\t  state.optional = true;\n\n\t  return this;\n\t};\n\n\tNode.prototype.def = function def(val) {\n\t  var state = this._baseState;\n\n\t  assert(state['default'] === null);\n\t  state['default'] = val;\n\t  state.optional = true;\n\n\t  return this;\n\t};\n\n\tNode.prototype.explicit = function explicit(num) {\n\t  var state = this._baseState;\n\n\t  assert(state.explicit === null && state.implicit === null);\n\t  state.explicit = num;\n\n\t  return this;\n\t};\n\n\tNode.prototype.implicit = function implicit(num) {\n\t  var state = this._baseState;\n\n\t  assert(state.explicit === null && state.implicit === null);\n\t  state.implicit = num;\n\n\t  return this;\n\t};\n\n\tNode.prototype.obj = function obj() {\n\t  var state = this._baseState;\n\t  var args = Array.prototype.slice.call(arguments);\n\n\t  state.obj = true;\n\n\t  if (args.length !== 0)\n\t    this._useArgs(args);\n\n\t  return this;\n\t};\n\n\tNode.prototype.key = function key(newKey) {\n\t  var state = this._baseState;\n\n\t  assert(state.key === null);\n\t  state.key = newKey;\n\n\t  return this;\n\t};\n\n\tNode.prototype.any = function any() {\n\t  var state = this._baseState;\n\n\t  state.any = true;\n\n\t  return this;\n\t};\n\n\tNode.prototype.choice = function choice(obj) {\n\t  var state = this._baseState;\n\n\t  assert(state.choice === null);\n\t  state.choice = obj;\n\t  this._useArgs(Object.keys(obj).map(function(key) {\n\t    return obj[key];\n\t  }));\n\n\t  return this;\n\t};\n\n\tNode.prototype.contains = function contains(item) {\n\t  var state = this._baseState;\n\n\t  assert(state.use === null);\n\t  state.contains = item;\n\n\t  return this;\n\t};\n\n\t//\n\t// Decoding\n\t//\n\n\tNode.prototype._decode = function decode(input) {\n\t  var state = this._baseState;\n\n\t  // Decode root node\n\t  if (state.parent === null)\n\t    return input.wrapResult(state.children[0]._decode(input));\n\n\t  var result = state['default'];\n\t  var present = true;\n\n\t  var prevKey;\n\t  if (state.key !== null)\n\t    prevKey = input.enterKey(state.key);\n\n\t  // Check if tag is there\n\t  if (state.optional) {\n\t    var tag = null;\n\t    if (state.explicit !== null)\n\t      tag = state.explicit;\n\t    else if (state.implicit !== null)\n\t      tag = state.implicit;\n\t    else if (state.tag !== null)\n\t      tag = state.tag;\n\n\t    if (tag === null && !state.any) {\n\t      // Trial and Error\n\t      var save = input.save();\n\t      try {\n\t        if (state.choice === null)\n\t          this._decodeGeneric(state.tag, input);\n\t        else\n\t          this._decodeChoice(input);\n\t        present = true;\n\t      } catch (e) {\n\t        present = false;\n\t      }\n\t      input.restore(save);\n\t    } else {\n\t      present = this._peekTag(input, tag, state.any);\n\n\t      if (input.isError(present))\n\t        return present;\n\t    }\n\t  }\n\n\t  // Push object on stack\n\t  var prevObj;\n\t  if (state.obj && present)\n\t    prevObj = input.enterObject();\n\n\t  if (present) {\n\t    // Unwrap explicit values\n\t    if (state.explicit !== null) {\n\t      var explicit = this._decodeTag(input, state.explicit);\n\t      if (input.isError(explicit))\n\t        return explicit;\n\t      input = explicit;\n\t    }\n\n\t    // Unwrap implicit and normal values\n\t    if (state.use === null && state.choice === null) {\n\t      if (state.any)\n\t        var save = input.save();\n\t      var body = this._decodeTag(\n\t        input,\n\t        state.implicit !== null ? state.implicit : state.tag,\n\t        state.any\n\t      );\n\t      if (input.isError(body))\n\t        return body;\n\n\t      if (state.any)\n\t        result = input.raw(save);\n\t      else\n\t        input = body;\n\t    }\n\n\t    // Select proper method for tag\n\t    if (state.any)\n\t      result = result;\n\t    else if (state.choice === null)\n\t      result = this._decodeGeneric(state.tag, input);\n\t    else\n\t      result = this._decodeChoice(input);\n\n\t    if (input.isError(result))\n\t      return result;\n\n\t    // Decode children\n\t    if (!state.any && state.choice === null && state.children !== null) {\n\t      state.children.forEach(function decodeChildren(child) {\n\t        // NOTE: We are ignoring errors here, to let parser continue with other\n\t        // parts of encoded data\n\t        child._decode(input);\n\t      });\n\t    }\n\n\t    // Decode contained/encoded by schema, only in bit or octet strings\n\t    if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n\t      var data = new DecoderBuffer(result);\n\t      result = this._getUse(state.contains, input._reporterState.obj)._decode(data);\n\t    }\n\t  }\n\n\t  // Pop object\n\t  if (state.obj && present)\n\t    result = input.leaveObject(prevObj);\n\n\t  // Set key\n\t  if (state.key !== null && (result !== null || present === true))\n\t    input.leaveKey(prevKey, state.key, result);\n\n\t  return result;\n\t};\n\n\tNode.prototype._decodeGeneric = function decodeGeneric(tag, input) {\n\t  var state = this._baseState;\n\n\t  if (tag === 'seq' || tag === 'set')\n\t    return null;\n\t  if (tag === 'seqof' || tag === 'setof')\n\t    return this._decodeList(input, tag, state.args[0]);\n\t  else if (/str$/.test(tag))\n\t    return this._decodeStr(input, tag);\n\t  else if (tag === 'objid' && state.args)\n\t    return this._decodeObjid(input, state.args[0], state.args[1]);\n\t  else if (tag === 'objid')\n\t    return this._decodeObjid(input, null, null);\n\t  else if (tag === 'gentime' || tag === 'utctime')\n\t    return this._decodeTime(input, tag);\n\t  else if (tag === 'null_')\n\t    return this._decodeNull(input);\n\t  else if (tag === 'bool')\n\t    return this._decodeBool(input);\n\t  else if (tag === 'int' || tag === 'enum')\n\t    return this._decodeInt(input, state.args && state.args[0]);\n\t  else if (state.use !== null)\n\t    return this._getUse(state.use, input._reporterState.obj)._decode(input);\n\t  else\n\t    return input.error('unknown tag: ' + tag);\n\t};\n\n\tNode.prototype._getUse = function _getUse(entity, obj) {\n\n\t  var state = this._baseState;\n\t  // Create altered use decoder if implicit is set\n\t  state.useDecoder = this._use(entity, obj);\n\t  assert(state.useDecoder._baseState.parent === null);\n\t  state.useDecoder = state.useDecoder._baseState.children[0];\n\t  if (state.implicit !== state.useDecoder._baseState.implicit) {\n\t    state.useDecoder = state.useDecoder.clone();\n\t    state.useDecoder._baseState.implicit = state.implicit;\n\t  }\n\t  return state.useDecoder;\n\t};\n\n\tNode.prototype._decodeChoice = function decodeChoice(input) {\n\t  var state = this._baseState;\n\t  var result = null;\n\t  var match = false;\n\n\t  Object.keys(state.choice).some(function(key) {\n\t    var save = input.save();\n\t    var node = state.choice[key];\n\t    try {\n\t      var value = node._decode(input);\n\t      if (input.isError(value))\n\t        return false;\n\n\t      result = { type: key, value: value };\n\t      match = true;\n\t    } catch (e) {\n\t      input.restore(save);\n\t      return false;\n\t    }\n\t    return true;\n\t  }, this);\n\n\t  if (!match)\n\t    return input.error('Choice not matched');\n\n\t  return result;\n\t};\n\n\t//\n\t// Encoding\n\t//\n\n\tNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n\t  return new EncoderBuffer(data, this.reporter);\n\t};\n\n\tNode.prototype._encode = function encode(data, reporter, parent) {\n\t  var state = this._baseState;\n\t  if (state['default'] !== null && state['default'] === data)\n\t    return;\n\n\t  var result = this._encodeValue(data, reporter, parent);\n\t  if (result === undefined)\n\t    return;\n\n\t  if (this._skipDefault(result, reporter, parent))\n\t    return;\n\n\t  return result;\n\t};\n\n\tNode.prototype._encodeValue = function encode(data, reporter, parent) {\n\t  var state = this._baseState;\n\n\t  // Decode root node\n\t  if (state.parent === null)\n\t    return state.children[0]._encode(data, reporter || new Reporter());\n\n\t  var result = null;\n\n\t  // Set reporter to share it with a child class\n\t  this.reporter = reporter;\n\n\t  // Check if data is there\n\t  if (state.optional && data === undefined) {\n\t    if (state['default'] !== null)\n\t      data = state['default']\n\t    else\n\t      return;\n\t  }\n\n\t  // Encode children first\n\t  var content = null;\n\t  var primitive = false;\n\t  if (state.any) {\n\t    // Anything that was given is translated to buffer\n\t    result = this._createEncoderBuffer(data);\n\t  } else if (state.choice) {\n\t    result = this._encodeChoice(data, reporter);\n\t  } else if (state.contains) {\n\t    content = this._getUse(state.contains, parent)._encode(data, reporter);\n\t    primitive = true;\n\t  } else if (state.children) {\n\t    content = state.children.map(function(child) {\n\t      if (child._baseState.tag === 'null_')\n\t        return child._encode(null, reporter, data);\n\n\t      if (child._baseState.key === null)\n\t        return reporter.error('Child should have a key');\n\t      var prevKey = reporter.enterKey(child._baseState.key);\n\n\t      if (typeof data !== 'object')\n\t        return reporter.error('Child expected, but input is not object');\n\n\t      var res = child._encode(data[child._baseState.key], reporter, data);\n\t      reporter.leaveKey(prevKey);\n\n\t      return res;\n\t    }, this).filter(function(child) {\n\t      return child;\n\t    });\n\t    content = this._createEncoderBuffer(content);\n\t  } else {\n\t    if (state.tag === 'seqof' || state.tag === 'setof') {\n\t      // TODO(indutny): this should be thrown on DSL level\n\t      if (!(state.args && state.args.length === 1))\n\t        return reporter.error('Too many args for : ' + state.tag);\n\n\t      if (!Array.isArray(data))\n\t        return reporter.error('seqof/setof, but data is not Array');\n\n\t      var child = this.clone();\n\t      child._baseState.implicit = null;\n\t      content = this._createEncoderBuffer(data.map(function(item) {\n\t        var state = this._baseState;\n\n\t        return this._getUse(state.args[0], data)._encode(item, reporter);\n\t      }, child));\n\t    } else if (state.use !== null) {\n\t      result = this._getUse(state.use, parent)._encode(data, reporter);\n\t    } else {\n\t      content = this._encodePrimitive(state.tag, data);\n\t      primitive = true;\n\t    }\n\t  }\n\n\t  // Encode data itself\n\t  var result;\n\t  if (!state.any && state.choice === null) {\n\t    var tag = state.implicit !== null ? state.implicit : state.tag;\n\t    var cls = state.implicit === null ? 'universal' : 'context';\n\n\t    if (tag === null) {\n\t      if (state.use === null)\n\t        reporter.error('Tag could be ommited only for .use()');\n\t    } else {\n\t      if (state.use === null)\n\t        result = this._encodeComposite(tag, primitive, cls, content);\n\t    }\n\t  }\n\n\t  // Wrap in explicit\n\t  if (state.explicit !== null)\n\t    result = this._encodeComposite(state.explicit, false, 'context', result);\n\n\t  return result;\n\t};\n\n\tNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n\t  var state = this._baseState;\n\n\t  var node = state.choice[data.type];\n\t  if (!node) {\n\t    assert(\n\t        false,\n\t        data.type + ' not found in ' +\n\t            JSON.stringify(Object.keys(state.choice)));\n\t  }\n\t  return node._encode(data.value, reporter);\n\t};\n\n\tNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n\t  var state = this._baseState;\n\n\t  if (/str$/.test(tag))\n\t    return this._encodeStr(data, tag);\n\t  else if (tag === 'objid' && state.args)\n\t    return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n\t  else if (tag === 'objid')\n\t    return this._encodeObjid(data, null, null);\n\t  else if (tag === 'gentime' || tag === 'utctime')\n\t    return this._encodeTime(data, tag);\n\t  else if (tag === 'null_')\n\t    return this._encodeNull();\n\t  else if (tag === 'int' || tag === 'enum')\n\t    return this._encodeInt(data, state.args && state.reverseArgs[0]);\n\t  else if (tag === 'bool')\n\t    return this._encodeBool(data);\n\t  else\n\t    throw new Error('Unsupported tag: ' + tag);\n\t};\n\n\tNode.prototype._isNumstr = function isNumstr(str) {\n\t  return /^[0-9 ]*$/.test(str);\n\t};\n\n\tNode.prototype._isPrintstr = function isPrintstr(str) {\n\t  return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n\t};\n\n\n/***/ },\n/* 214 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar inherits = __webpack_require__(2);\n\n\tfunction Reporter(options) {\n\t  this._reporterState = {\n\t    obj: null,\n\t    path: [],\n\t    options: options || {},\n\t    errors: []\n\t  };\n\t}\n\texports.Reporter = Reporter;\n\n\tReporter.prototype.isError = function isError(obj) {\n\t  return obj instanceof ReporterError;\n\t};\n\n\tReporter.prototype.save = function save() {\n\t  var state = this._reporterState;\n\n\t  return { obj: state.obj, pathLen: state.path.length };\n\t};\n\n\tReporter.prototype.restore = function restore(data) {\n\t  var state = this._reporterState;\n\n\t  state.obj = data.obj;\n\t  state.path = state.path.slice(0, data.pathLen);\n\t};\n\n\tReporter.prototype.enterKey = function enterKey(key) {\n\t  return this._reporterState.path.push(key);\n\t};\n\n\tReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n\t  var state = this._reporterState;\n\n\t  state.path = state.path.slice(0, index - 1);\n\t  if (state.obj !== null)\n\t    state.obj[key] = value;\n\t};\n\n\tReporter.prototype.enterObject = function enterObject() {\n\t  var state = this._reporterState;\n\n\t  var prev = state.obj;\n\t  state.obj = {};\n\t  return prev;\n\t};\n\n\tReporter.prototype.leaveObject = function leaveObject(prev) {\n\t  var state = this._reporterState;\n\n\t  var now = state.obj;\n\t  state.obj = prev;\n\t  return now;\n\t};\n\n\tReporter.prototype.error = function error(msg) {\n\t  var err;\n\t  var state = this._reporterState;\n\n\t  var inherited = msg instanceof ReporterError;\n\t  if (inherited) {\n\t    err = msg;\n\t  } else {\n\t    err = new ReporterError(state.path.map(function(elem) {\n\t      return '[' + JSON.stringify(elem) + ']';\n\t    }).join(''), msg.message || msg, msg.stack);\n\t  }\n\n\t  if (!state.options.partial)\n\t    throw err;\n\n\t  if (!inherited)\n\t    state.errors.push(err);\n\n\t  return err;\n\t};\n\n\tReporter.prototype.wrapResult = function wrapResult(result) {\n\t  var state = this._reporterState;\n\t  if (!state.options.partial)\n\t    return result;\n\n\t  return {\n\t    result: this.isError(result) ? null : result,\n\t    errors: state.errors\n\t  };\n\t};\n\n\tfunction ReporterError(path, msg) {\n\t  this.path = path;\n\t  this.rethrow(msg);\n\t};\n\tinherits(ReporterError, Error);\n\n\tReporterError.prototype.rethrow = function rethrow(msg) {\n\t  this.message = msg + ' at: ' + (this.path || '(shallow)');\n\t  Error.captureStackTrace(this, ReporterError);\n\n\t  return this;\n\t};\n\n\n/***/ },\n/* 215 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar constants = __webpack_require__(132);\n\n\texports.tagClass = {\n\t  0: 'universal',\n\t  1: 'application',\n\t  2: 'context',\n\t  3: 'private'\n\t};\n\texports.tagClassByName = constants._reverse(exports.tagClass);\n\n\texports.tag = {\n\t  0x00: 'end',\n\t  0x01: 'bool',\n\t  0x02: 'int',\n\t  0x03: 'bitstr',\n\t  0x04: 'octstr',\n\t  0x05: 'null_',\n\t  0x06: 'objid',\n\t  0x07: 'objDesc',\n\t  0x08: 'external',\n\t  0x09: 'real',\n\t  0x0a: 'enum',\n\t  0x0b: 'embed',\n\t  0x0c: 'utf8str',\n\t  0x0d: 'relativeOid',\n\t  0x10: 'seq',\n\t  0x11: 'set',\n\t  0x12: 'numstr',\n\t  0x13: 'printstr',\n\t  0x14: 't61str',\n\t  0x15: 'videostr',\n\t  0x16: 'ia5str',\n\t  0x17: 'utctime',\n\t  0x18: 'gentime',\n\t  0x19: 'graphstr',\n\t  0x1a: 'iso646str',\n\t  0x1b: 'genstr',\n\t  0x1c: 'unistr',\n\t  0x1d: 'charstr',\n\t  0x1e: 'bmpstr'\n\t};\n\texports.tagByName = constants._reverse(exports.tag);\n\n\n/***/ },\n/* 216 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar decoders = exports;\n\n\tdecoders.der = __webpack_require__(133);\n\tdecoders.pem = __webpack_require__(217);\n\n\n/***/ },\n/* 217 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar inherits = __webpack_require__(2);\n\tvar Buffer = __webpack_require__(1).Buffer;\n\n\tvar DERDecoder = __webpack_require__(133);\n\n\tfunction PEMDecoder(entity) {\n\t  DERDecoder.call(this, entity);\n\t  this.enc = 'pem';\n\t};\n\tinherits(PEMDecoder, DERDecoder);\n\tmodule.exports = PEMDecoder;\n\n\tPEMDecoder.prototype.decode = function decode(data, options) {\n\t  var lines = data.toString().split(/[\\r\\n]+/g);\n\n\t  var label = options.label.toUpperCase();\n\n\t  var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n\t  var start = -1;\n\t  var end = -1;\n\t  for (var i = 0; i < lines.length; i++) {\n\t    var match = lines[i].match(re);\n\t    if (match === null)\n\t      continue;\n\n\t    if (match[2] !== label)\n\t      continue;\n\n\t    if (start === -1) {\n\t      if (match[1] !== 'BEGIN')\n\t        break;\n\t      start = i;\n\t    } else {\n\t      if (match[1] !== 'END')\n\t        break;\n\t      end = i;\n\t      break;\n\t    }\n\t  }\n\t  if (start === -1 || end === -1)\n\t    throw new Error('PEM section not found for: ' + label);\n\n\t  var base64 = lines.slice(start + 1, end).join('');\n\t  // Remove excessive symbols\n\t  base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n\t  var input = new Buffer(base64, 'base64');\n\t  return DERDecoder.prototype.decode.call(this, input, options);\n\t};\n\n\n/***/ },\n/* 218 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar encoders = exports;\n\n\tencoders.der = __webpack_require__(134);\n\tencoders.pem = __webpack_require__(219);\n\n\n/***/ },\n/* 219 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar inherits = __webpack_require__(2);\n\n\tvar DEREncoder = __webpack_require__(134);\n\n\tfunction PEMEncoder(entity) {\n\t  DEREncoder.call(this, entity);\n\t  this.enc = 'pem';\n\t};\n\tinherits(PEMEncoder, DEREncoder);\n\tmodule.exports = PEMEncoder;\n\n\tPEMEncoder.prototype.encode = function encode(data, options) {\n\t  var buf = DEREncoder.prototype.encode.call(this, data);\n\n\t  var p = buf.toString('base64');\n\t  var out = [ '-----BEGIN ' + options.label + '-----' ];\n\t  for (var i = 0; i < p.length; i += 64)\n\t    out.push(p.slice(i, i + 64));\n\t  out.push('-----END ' + options.label + '-----');\n\t  return out.join('\\n');\n\t};\n\n\n/***/ },\n/* 220 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar Stringify = __webpack_require__(222);\n\tvar Parse = __webpack_require__(221);\n\n\tmodule.exports = {\n\t    stringify: Stringify,\n\t    parse: Parse\n\t};\n\n/***/ },\n/* 221 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar Utils = __webpack_require__(136);\n\n\tvar internals = {\n\t    delimiter: '&',\n\t    depth: 5,\n\t    arrayLimit: 20,\n\t    parameterLimit: 1000,\n\t    strictNullHandling: false,\n\t    plainObjects: false,\n\t    allowPrototypes: false,\n\t    allowDots: false\n\t};\n\n\tinternals.parseValues = function (str, options) {\n\t    var obj = {};\n\t    var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);\n\n\t    for (var i = 0; i < parts.length; ++i) {\n\t        var part = parts[i];\n\t        var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;\n\n\t        if (pos === -1) {\n\t            obj[Utils.decode(part)] = '';\n\n\t            if (options.strictNullHandling) {\n\t                obj[Utils.decode(part)] = null;\n\t            }\n\t        } else {\n\t            var key = Utils.decode(part.slice(0, pos));\n\t            var val = Utils.decode(part.slice(pos + 1));\n\n\t            if (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t                obj[key] = [].concat(obj[key]).concat(val);\n\t            } else {\n\t                obj[key] = val;\n\t            }\n\t        }\n\t    }\n\n\t    return obj;\n\t};\n\n\tinternals.parseObject = function (chain, val, options) {\n\t    if (!chain.length) {\n\t        return val;\n\t    }\n\n\t    var root = chain.shift();\n\n\t    var obj;\n\t    if (root === '[]') {\n\t        obj = [];\n\t        obj = obj.concat(internals.parseObject(chain, val, options));\n\t    } else {\n\t        obj = options.plainObjects ? Object.create(null) : {};\n\t        var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;\n\t        var index = parseInt(cleanRoot, 10);\n\t        if (!isNaN(index) && root !== cleanRoot && String(index) === cleanRoot && index >= 0 && options.parseArrays && index <= options.arrayLimit) {\n\t            obj = [];\n\t            obj[index] = internals.parseObject(chain, val, options);\n\t        } else {\n\t            obj[cleanRoot] = internals.parseObject(chain, val, options);\n\t        }\n\t    }\n\n\t    return obj;\n\t};\n\n\tinternals.parseKeys = function (givenKey, val, options) {\n\t    if (!givenKey) {\n\t        return;\n\t    }\n\n\t    // Transform dot notation to bracket notation\n\t    var key = options.allowDots ? givenKey.replace(/\\.([^\\.\\[]+)/g, '[$1]') : givenKey;\n\n\t    // The regex chunks\n\n\t    var parent = /^([^\\[\\]]*)/;\n\t    var child = /(\\[[^\\[\\]]*\\])/g;\n\n\t    // Get the parent\n\n\t    var segment = parent.exec(key);\n\n\t    // Stash the parent if it exists\n\n\t    var keys = [];\n\t    if (segment[1]) {\n\t        // If we aren't using plain objects, optionally prefix keys\n\t        // that would overwrite object prototype properties\n\t        if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1])) {\n\t            if (!options.allowPrototypes) {\n\t                return;\n\t            }\n\t        }\n\n\t        keys.push(segment[1]);\n\t    }\n\n\t    // Loop through children appending to the array until we hit depth\n\n\t    var i = 0;\n\t    while ((segment = child.exec(key)) !== null && i < options.depth) {\n\t        i += 1;\n\t        if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1].replace(/\\[|\\]/g, ''))) {\n\t            if (!options.allowPrototypes) {\n\t                continue;\n\t            }\n\t        }\n\t        keys.push(segment[1]);\n\t    }\n\n\t    // If there's a remainder, just add whatever is left\n\n\t    if (segment) {\n\t        keys.push('[' + key.slice(segment.index) + ']');\n\t    }\n\n\t    return internals.parseObject(keys, val, options);\n\t};\n\n\tmodule.exports = function (str, opts) {\n\t    var options = opts || {};\n\t    options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter;\n\t    options.depth = typeof options.depth === 'number' ? options.depth : internals.depth;\n\t    options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit;\n\t    options.parseArrays = options.parseArrays !== false;\n\t    options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : internals.allowDots;\n\t    options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : internals.plainObjects;\n\t    options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : internals.allowPrototypes;\n\t    options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit;\n\t    options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;\n\n\t    if (str === '' || str === null || typeof str === 'undefined') {\n\t        return options.plainObjects ? Object.create(null) : {};\n\t    }\n\n\t    var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str;\n\t    var obj = options.plainObjects ? Object.create(null) : {};\n\n\t    // Iterate over the keys and setup the new object\n\n\t    var keys = Object.keys(tempObj);\n\t    for (var i = 0; i < keys.length; ++i) {\n\t        var key = keys[i];\n\t        var newObj = internals.parseKeys(key, tempObj[key], options);\n\t        obj = Utils.merge(obj, newObj, options);\n\t    }\n\n\t    return Utils.compact(obj);\n\t};\n\n/***/ },\n/* 222 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar Utils = __webpack_require__(136);\n\n\tvar internals = {\n\t    delimiter: '&',\n\t    arrayPrefixGenerators: {\n\t        brackets: function brackets(prefix) {\n\t            return prefix + '[]';\n\t        },\n\t        indices: function indices(prefix, key) {\n\t            return prefix + '[' + key + ']';\n\t        },\n\t        repeat: function repeat(prefix) {\n\t            return prefix;\n\t        }\n\t    },\n\t    strictNullHandling: false,\n\t    skipNulls: false,\n\t    encode: true\n\t};\n\n\tinternals.stringify = function (object, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter, sort, allowDots) {\n\t    var obj = object;\n\t    if (typeof filter === 'function') {\n\t        obj = filter(prefix, obj);\n\t    } else if (Utils.isBuffer(obj)) {\n\t        obj = String(obj);\n\t    } else if (obj instanceof Date) {\n\t        obj = obj.toISOString();\n\t    } else if (obj === null) {\n\t        if (strictNullHandling) {\n\t            return encode ? Utils.encode(prefix) : prefix;\n\t        }\n\n\t        obj = '';\n\t    }\n\n\t    if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean') {\n\t        if (encode) {\n\t            return [Utils.encode(prefix) + '=' + Utils.encode(obj)];\n\t        }\n\t        return [prefix + '=' + obj];\n\t    }\n\n\t    var values = [];\n\n\t    if (typeof obj === 'undefined') {\n\t        return values;\n\t    }\n\n\t    var objKeys;\n\t    if (Array.isArray(filter)) {\n\t        objKeys = filter;\n\t    } else {\n\t        var keys = Object.keys(obj);\n\t        objKeys = sort ? keys.sort(sort) : keys;\n\t    }\n\n\t    for (var i = 0; i < objKeys.length; ++i) {\n\t        var key = objKeys[i];\n\n\t        if (skipNulls && obj[key] === null) {\n\t            continue;\n\t        }\n\n\t        if (Array.isArray(obj)) {\n\t            values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encode, filter, sort, allowDots));\n\t        } else {\n\t            values = values.concat(internals.stringify(obj[key], prefix + (allowDots ? '.' + key : '[' + key + ']'), generateArrayPrefix, strictNullHandling, skipNulls, encode, filter, sort, allowDots));\n\t        }\n\t    }\n\n\t    return values;\n\t};\n\n\tmodule.exports = function (object, opts) {\n\t    var obj = object;\n\t    var options = opts || {};\n\t    var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;\n\t    var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;\n\t    var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : internals.skipNulls;\n\t    var encode = typeof options.encode === 'boolean' ? options.encode : internals.encode;\n\t    var sort = typeof options.sort === 'function' ? options.sort : null;\n\t    var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n\t    var objKeys;\n\t    var filter;\n\t    if (typeof options.filter === 'function') {\n\t        filter = options.filter;\n\t        obj = filter('', obj);\n\t    } else if (Array.isArray(options.filter)) {\n\t        objKeys = filter = options.filter;\n\t    }\n\n\t    var keys = [];\n\n\t    if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' || obj === null) {\n\t        return '';\n\t    }\n\n\t    var arrayFormat;\n\t    if (options.arrayFormat in internals.arrayPrefixGenerators) {\n\t        arrayFormat = options.arrayFormat;\n\t    } else if ('indices' in options) {\n\t        arrayFormat = options.indices ? 'indices' : 'repeat';\n\t    } else {\n\t        arrayFormat = 'indices';\n\t    }\n\n\t    var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat];\n\n\t    if (!objKeys) {\n\t        objKeys = Object.keys(obj);\n\t    }\n\n\t    if (sort) {\n\t        objKeys.sort(sort);\n\t    }\n\n\t    for (var i = 0; i < objKeys.length; ++i) {\n\t        var key = objKeys[i];\n\n\t        if (skipNulls && obj[key] === null) {\n\t            continue;\n\t        }\n\n\t        keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter, sort, allowDots));\n\t    }\n\n\t    return keys.join(delimiter);\n\t};\n\n/***/ },\n/* 223 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\n\t// Load modules\n\n\tvar Boom = __webpack_require__(139);\n\tvar Hoek = __webpack_require__(64);\n\tvar Stream = __webpack_require__(12);\n\n\t// Declare internals\n\n\tvar internals = {};\n\n\tmodule.exports = internals.Recorder = function (options) {\n\n\t    Stream.Writable.call(this);\n\n\t    this.settings = options; // No need to clone since called internally with new object\n\t    this.buffers = [];\n\t    this.length = 0;\n\t};\n\n\tHoek.inherits(internals.Recorder, Stream.Writable);\n\n\tinternals.Recorder.prototype._write = function (chunk, encoding, next) {\n\n\t    if (this.settings.maxBytes && this.length + chunk.length > this.settings.maxBytes) {\n\n\t        return this.emit('error', Boom.badRequest('Payload content length greater than maximum allowed: ' + this.settings.maxBytes));\n\t    }\n\n\t    this.length = this.length + chunk.length;\n\t    this.buffers.push(chunk);\n\t    next();\n\t};\n\n\tinternals.Recorder.prototype.collect = function () {\n\n\t    var buffer = this.buffers.length === 0 ? new Buffer(0) : this.buffers.length === 1 ? this.buffers[0] : Buffer.concat(this.buffers, this.length);\n\t    return buffer;\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 224 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\t// Load modules\n\n\tvar Hoek = __webpack_require__(64);\n\tvar Stream = __webpack_require__(12);\n\tvar Payload = __webpack_require__(138);\n\n\t// Declare internals\n\n\tvar internals = {};\n\n\tmodule.exports = internals.Tap = function () {\n\n\t    Stream.Transform.call(this);\n\t    this.buffers = [];\n\t};\n\n\tHoek.inherits(internals.Tap, Stream.Transform);\n\n\tinternals.Tap.prototype._transform = function (chunk, encoding, next) {\n\n\t    this.buffers.push(chunk);\n\t    next(null, chunk);\n\t};\n\n\tinternals.Tap.prototype.collect = function () {\n\n\t    return new Payload(this.buffers);\n\t};\n\n/***/ },\n/* 225 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\n\t// Declare internals\n\n\tvar internals = {};\n\n\texports.escapeJavaScript = function (input) {\n\n\t    if (!input) {\n\t        return '';\n\t    }\n\n\t    var escaped = '';\n\n\t    for (var i = 0; i < input.length; ++i) {\n\n\t        var charCode = input.charCodeAt(i);\n\n\t        if (internals.isSafe(charCode)) {\n\t            escaped += input[i];\n\t        } else {\n\t            escaped += internals.escapeJavaScriptChar(charCode);\n\t        }\n\t    }\n\n\t    return escaped;\n\t};\n\n\texports.escapeHtml = function (input) {\n\n\t    if (!input) {\n\t        return '';\n\t    }\n\n\t    var escaped = '';\n\n\t    for (var i = 0; i < input.length; ++i) {\n\n\t        var charCode = input.charCodeAt(i);\n\n\t        if (internals.isSafe(charCode)) {\n\t            escaped += input[i];\n\t        } else {\n\t            escaped += internals.escapeHtmlChar(charCode);\n\t        }\n\t    }\n\n\t    return escaped;\n\t};\n\n\tinternals.escapeJavaScriptChar = function (charCode) {\n\n\t    if (charCode >= 256) {\n\t        return '\\\\u' + internals.padLeft('' + charCode, 4);\n\t    }\n\n\t    var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex');\n\t    return '\\\\x' + internals.padLeft(hexValue, 2);\n\t};\n\n\tinternals.escapeHtmlChar = function (charCode) {\n\n\t    var namedEscape = internals.namedHtml[charCode];\n\t    if (typeof namedEscape !== 'undefined') {\n\t        return namedEscape;\n\t    }\n\n\t    if (charCode >= 256) {\n\t        return '&#' + charCode + ';';\n\t    }\n\n\t    var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex');\n\t    return '&#x' + internals.padLeft(hexValue, 2) + ';';\n\t};\n\n\tinternals.padLeft = function (str, len) {\n\n\t    while (str.length < len) {\n\t        str = '0' + str;\n\t    }\n\n\t    return str;\n\t};\n\n\tinternals.isSafe = function (charCode) {\n\n\t    return typeof internals.safeCharCodes[charCode] !== 'undefined';\n\t};\n\n\tinternals.namedHtml = {\n\t    '38': '&amp;',\n\t    '60': '&lt;',\n\t    '62': '&gt;',\n\t    '34': '&quot;',\n\t    '160': '&nbsp;',\n\t    '162': '&cent;',\n\t    '163': '&pound;',\n\t    '164': '&curren;',\n\t    '169': '&copy;',\n\t    '174': '&reg;'\n\t};\n\n\tinternals.safeCharCodes = function () {\n\n\t    var safe = {};\n\n\t    for (var i = 32; i < 123; ++i) {\n\n\t        if (i >= 97 || // a-z\n\t        i >= 65 && i <= 90 || // A-Z\n\t        i >= 48 && i <= 57 || // 0-9\n\t        i === 32 || // space\n\t        i === 46 || // .\n\t        i === 44 || // ,\n\t        i === 45 || // -\n\t        i === 58 || // :\n\t        i === 95) {\n\t            // _\n\n\t            safe[i] = null;\n\t        }\n\t    }\n\n\t    return safe;\n\t}();\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 226 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar Wreck = __webpack_require__(137);\n\n\tmodule.exports = function (send) {\n\t  return function add(files, opts, cb) {\n\t    if (typeof opts === 'function' && cb === undefined) {\n\t      cb = opts;\n\t      opts = {};\n\t    }\n\n\t    if (typeof files === 'string' && files.startsWith('http')) {\n\t      return Wreck.request('GET', files, null, function (err, res) {\n\t        if (err) return cb(err);\n\n\t        send('add', null, opts, res, cb);\n\t      });\n\t    }\n\n\t    return send('add', null, opts, files, cb);\n\t  };\n\t};\n\n/***/ },\n/* 227 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    wantlist: function wantlist(cb) {\n\t      return send('bitswap/wantlist', {}, null, null, cb);\n\t    },\n\t    stat: function stat(cb) {\n\t      return send('bitswap/stat', {}, null, null, cb);\n\t    },\n\n\t    unwant: argCommand(send, 'bitswap/unwant')\n\t  };\n\t};\n\n/***/ },\n/* 228 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    get: argCommand(send, 'block/get'),\n\t    stat: argCommand(send, 'block/stat'),\n\t    put: function put(file, cb) {\n\t      if (Array.isArray(file)) {\n\t        return cb(null, new Error('block.put() only accepts 1 file'));\n\t      }\n\t      return send('block/put', null, null, file, cb);\n\t    }\n\t  };\n\t};\n\n/***/ },\n/* 229 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return argCommand(send, 'cat');\n\t};\n\n/***/ },\n/* 230 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar command = __webpack_require__(15).command;\n\n\tmodule.exports = function (send) {\n\t  return command(send, 'commands');\n\t};\n\n/***/ },\n/* 231 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    get: argCommand(send, 'config'),\n\t    set: function set(key, value, opts, cb) {\n\t      if (typeof opts === 'function') {\n\t        cb = opts;\n\t        opts = {};\n\t      }\n\n\t      if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n\t        value = JSON.stringify(value);\n\t        opts = { json: true };\n\t      } else if (typeof value === 'boolean') {\n\t        value = value.toString();\n\t        opts = { bool: true };\n\t      }\n\n\t      return send('config', [key, value], opts, null, cb);\n\t    },\n\t    show: function show(cb) {\n\t      return send('config/show', null, null, null, true, cb);\n\t    },\n\t    replace: function replace(file, cb) {\n\t      return send('config/replace', null, null, file, cb);\n\t    }\n\t  };\n\t};\n\n/***/ },\n/* 232 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    findprovs: argCommand(send, 'dht/findprovs'),\n\t    get: function get(key, opts, cb) {\n\t      if (typeof opts === 'function' && !cb) {\n\t        cb = opts;\n\t        opts = null;\n\t      }\n\n\t      var handleResult = function handleResult(done, err, res) {\n\t        if (err) return done(err);\n\t        if (!res) return done(new Error('empty response'));\n\t        if (res.length === 0) return done(new Error('no value returned for key'));\n\n\t        // Inconsistent return values in the browser vs node\n\t        if (Array.isArray(res)) {\n\t          res = res[0];\n\t        }\n\n\t        if (res.Type === 5) {\n\t          done(null, res.Extra);\n\t        } else {\n\t          var error = new Error('key was not found (type 6)');\n\t          done(error);\n\t        }\n\t      };\n\n\t      if (typeof cb !== 'function' && typeof Promise !== 'undefined') {\n\t        var _ret = function () {\n\t          var done = function done(err, res) {\n\t            if (err) throw err;\n\t            return res;\n\t          };\n\n\t          return {\n\t            v: send('dht/get', key, opts).then(function (res) {\n\t              return handleResult(done, null, res);\n\t            }, function (err) {\n\t              return handleResult(done, err);\n\t            })\n\t          };\n\t        }();\n\n\t        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n\t      }\n\n\t      return send('dht/get', key, opts, null, handleResult.bind(null, cb));\n\t    },\n\t    put: function put(key, value, opts, cb) {\n\t      if (typeof opts === 'function' && !cb) {\n\t        cb = opts;\n\t        opts = null;\n\t      }\n\n\t      return send('dht/put', [key, value], opts, null, cb);\n\t    }\n\t  };\n\t};\n\n/***/ },\n/* 233 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar command = __webpack_require__(15).command;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    net: command(send, 'diag/net'),\n\t    sys: command(send, 'diag/sys'),\n\t    cmds: command(send, 'diag/sys')\n\t  };\n\t};\n\n/***/ },\n/* 234 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    cp: argCommand(send, 'files/cp'),\n\t    ls: argCommand(send, 'files/ls'),\n\t    mkdir: argCommand(send, 'files/mkdir'),\n\t    stat: argCommand(send, 'files/stat'),\n\t    rm: function rm(path, opts, cb) {\n\t      if (typeof opts === 'function' && !cb) {\n\t        cb = opts;\n\t        opts = {};\n\t      }\n\t      return send('files/rm', path, opts, null, cb);\n\t    },\n\t    read: argCommand(send, 'files/read'),\n\t    write: function write(pathDst, files, opts, cb) {\n\t      if (typeof opts === 'function' && cb === undefined) {\n\t        cb = opts;\n\t        opts = {};\n\t      }\n\n\t      return send('files/write', pathDst, opts, files, cb);\n\t    },\n\t    mv: argCommand(send, 'files/mv')\n\t  };\n\t};\n\n/***/ },\n/* 235 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function (send) {\n\t  return function id(idParam, cb) {\n\t    if (typeof idParam === 'function') {\n\t      cb = idParam;\n\t      idParam = null;\n\t    }\n\t    return send('id', idParam, null, null, cb);\n\t  };\n\t};\n\n/***/ },\n/* 236 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar ndjson = __webpack_require__(188);\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    tail: function tail(cb) {\n\t      if (typeof cb !== 'function' && typeof Promise !== 'undefined') {\n\t        return send('log/tail', null, {}, null, false).then(function (res) {\n\t          return res.pipe(ndjson.parse());\n\t        });\n\t      }\n\n\t      return send('log/tail', null, {}, null, false, function (err, res) {\n\t        if (err) return cb(err);\n\t        cb(null, res.pipe(ndjson.parse()));\n\t      });\n\t    }\n\t  };\n\t};\n\n/***/ },\n/* 237 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return argCommand(send, 'ls');\n\t};\n\n/***/ },\n/* 238 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function (send) {\n\t  return function mount(ipfs, ipns, cb) {\n\t    if (typeof ipfs === 'function') {\n\t      cb = ipfs;\n\t      ipfs = null;\n\t    } else if (typeof ipns === 'function') {\n\t      cb = ipns;\n\t      ipns = null;\n\t    }\n\t    var opts = {};\n\t    if (ipfs) opts.f = ipfs;\n\t    if (ipns) opts.n = ipns;\n\t    return send('mount', null, opts, null, cb);\n\t  };\n\t};\n\n/***/ },\n/* 239 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    publish: argCommand(send, 'name/publish'),\n\t    resolve: argCommand(send, 'name/resolve')\n\t  };\n\t};\n\n/***/ },\n/* 240 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar argCommand = __webpack_require__(15).argCommand;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    get: argCommand(send, 'object/get'),\n\t    put: function put(file, encoding, cb) {\n\t      if (typeof encoding === 'function') {\n\t        return cb(null, new Error(\"Must specify an object encoding ('json' or 'protobuf')\"));\n\t      }\n\t      return send('object/put', encoding, null, file, cb);\n\t    },\n\n\t    data: argCommand(send, 'object/data'),\n\t    links: argCommand(send, 'object/links'),\n\t    stat: argCommand(send, 'object/stat'),\n\t    new: argCommand(send, 'object/new'),\n\t    patch: {\n\t      rmLink: function rmLink(root, link, cb) {\n\t        return send('object/patch/rm-link', [root, link], null, null, cb);\n\t      },\n\t      setData: function setData(root, data, cb) {\n\t        return send('object/patch/set-data', [root], null, data, cb);\n\t      },\n\t      appendData: function appendData(root, data, cb) {\n\t        return send('object/patch/append-data', [root], null, data, cb);\n\t      },\n\t      addLink: function addLink(root, name, ref, cb) {\n\t        return send('object/patch/add-link', [root, name, ref], null, null, cb);\n\t      }\n\t    }\n\t  };\n\t};\n\n/***/ },\n/* 241 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    add: function add(hash, opts, cb) {\n\t      if (typeof opts === 'function') {\n\t        cb = opts;\n\t        opts = null;\n\t      }\n\n\t      return send('pin/add', hash, opts, null, cb);\n\t    },\n\t    remove: function remove(hash, opts, cb) {\n\t      if (typeof opts === 'function') {\n\t        cb = opts;\n\t        opts = null;\n\t      }\n\n\t      return send('pin/rm', hash, opts, null, cb);\n\t    },\n\t    list: function list(type, cb) {\n\t      if (typeof type === 'function') {\n\t        cb = type;\n\t        type = null;\n\t      }\n\t      var opts = null;\n\t      var hash = null;\n\t      if (typeof type === 'string') {\n\t        opts = { type: type };\n\t      } else if (type && type.hash) {\n\t        hash = type.hash;\n\t        type.hash = null;\n\t        opts = type;\n\t      }\n\n\t      return send('pin/ls', hash, opts, null, cb);\n\t    }\n\t  };\n\t};\n\n/***/ },\n/* 242 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function (send) {\n\t  return function ping(id, cb) {\n\t    if (typeof cb !== 'function' && typeof Promise !== 'undefined') {\n\t      return send('ping', id, { n: 1 }, null).then(function (res) {\n\t        return res[1];\n\t      });\n\t    }\n\n\t    return send('ping', id, { n: 1 }, null, function (err, res) {\n\t      if (err) return cb(err, null);\n\t      cb(null, res[1]);\n\t    });\n\t  };\n\t};\n\n/***/ },\n/* 243 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar cmds = __webpack_require__(15);\n\n\tmodule.exports = function (send) {\n\t  var refs = cmds.argCommand(send, 'refs');\n\t  refs.local = cmds.command(send, 'refs/local');\n\n\t  return refs;\n\t};\n\n/***/ },\n/* 244 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar cmds = __webpack_require__(15);\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    peers: cmds.command(send, 'swarm/peers'),\n\t    connect: cmds.argCommand(send, 'swarm/connect'),\n\t    disconnect: cmds.argCommand(send, 'swarm/disconnect'),\n\t    addrs: cmds.command(send, 'swarm/addrs'),\n\t    localAddrs: cmds.command(send, 'swarm/addrs/local')\n\t  };\n\t};\n\n/***/ },\n/* 245 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar command = __webpack_require__(15).command;\n\n\tmodule.exports = function (send) {\n\t  return {\n\t    apply: command(send, 'update'),\n\t    check: command(send, 'update/check'),\n\t    log: command(send, 'update/log')\n\t  };\n\t};\n\n/***/ },\n/* 246 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar command = __webpack_require__(15).command;\n\n\tmodule.exports = function (send) {\n\t  return command(send, 'version');\n\t};\n\n/***/ },\n/* 247 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar pkg = __webpack_require__(490);\n\n\texports = module.exports = function () {\n\t  return {\n\t    'api-path': '/api/v0/',\n\t    'user-agent': '/node-' + pkg.name + '/' + pkg.version + '/',\n\t    host: 'localhost',\n\t    port: '5001',\n\t    protocol: 'http'\n\t  };\n\t};\n\n/***/ },\n/* 248 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar isNode = __webpack_require__(181);\n\tvar Multipart = __webpack_require__(497);\n\tvar flatmap = __webpack_require__(473);\n\n\tfunction headers(file) {\n\t  var name = file.path || '';\n\t  var header = {\n\t    'Content-Disposition': 'file; filename=\"' + name + '\"'\n\t  };\n\n\t  if (file.dir) {\n\t    header['Content-Type'] = 'application/x-directory';\n\t  } else if (file.symlink) {\n\t    header['Content-Type'] = 'application/symlink';\n\t  } else {\n\t    header['Content-Type'] = 'application/octet-stream';\n\t  }\n\n\t  return header;\n\t}\n\n\tfunction strip(name, base) {\n\t  var smallBase = base.split('/').slice(0, -1).join('/') + '/';\n\t  return name.replace(smallBase, '');\n\t}\n\n\tfunction loadPaths(opts, file) {\n\t  var path = __webpack_require__(59);\n\t  var fs = __webpack_require__(130);\n\t  var glob = __webpack_require__(184);\n\n\t  var followSymlinks = opts.followSymlinks != null ? opts.followSymlinks : true;\n\n\t  file = path.resolve(file);\n\t  var stats = fs.statSync(file);\n\n\t  if (stats.isDirectory() && !opts.recursive) {\n\t    throw new Error('Can only add directories using --recursive');\n\t  }\n\n\t  if (stats.isDirectory() && opts.recursive) {\n\t    var _ret = function () {\n\t      var mg = new glob.sync.GlobSync(file + '/**/*', {\n\t        follow: followSymlinks\n\t      });\n\n\t      return {\n\t        v: mg.found.map(function (name) {\n\t          // symlinks\n\t          if (mg.symlinks[name] === true) {\n\t            return {\n\t              path: strip(name, file),\n\t              symlink: true,\n\t              dir: false,\n\t              content: fs.readlinkSync(name)\n\t            };\n\t          }\n\n\t          // files\n\t          if (mg.cache[name] === 'FILE') {\n\t            return {\n\t              path: strip(name, file),\n\t              symlink: false,\n\t              dir: false,\n\t              content: fs.createReadStream(name)\n\t            };\n\t          }\n\n\t          // directories\n\t          if (mg.cache[name] === 'DIR' || mg.cache[name] instanceof Array) {\n\t            return {\n\t              path: strip(name, file),\n\t              symlink: false,\n\t              dir: true\n\t            };\n\t          }\n\n\t          // files inside symlinks and others\n\t          return;\n\t        })\n\t        // filter out null files\n\t        .filter(Boolean)\n\t      };\n\t    }();\n\n\t    if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n\t  }\n\n\t  return {\n\t    path: file,\n\t    content: fs.createReadStream(file)\n\t  };\n\t}\n\n\tfunction getFilesStream(files, opts) {\n\t  if (!files) return null;\n\n\t  var mp = new Multipart();\n\n\t  flatmap(files, function (file) {\n\t    if (typeof file === 'string') {\n\t      if (!isNode) {\n\t        throw new Error('Can not add paths in node');\n\t      }\n\n\t      return loadPaths(opts, file);\n\t    }\n\n\t    if (file.path && (file.content || file.dir)) {\n\t      return file;\n\t    }\n\n\t    return {\n\t      path: '',\n\t      symlink: false,\n\t      dir: false,\n\t      content: file\n\t    };\n\t  }).forEach(function (file) {\n\t    mp.addPart({\n\t      headers: headers(file),\n\t      body: file.content\n\t    });\n\t  });\n\n\t  return mp;\n\t}\n\n\texports = module.exports = getFilesStream;\n\n/***/ },\n/* 249 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction requireCommands() {\n\t  return {\n\t    add: __webpack_require__(226),\n\t    bitswap: __webpack_require__(227),\n\t    block: __webpack_require__(228),\n\t    cat: __webpack_require__(229),\n\t    commands: __webpack_require__(230),\n\t    config: __webpack_require__(231),\n\t    dht: __webpack_require__(232),\n\t    diag: __webpack_require__(233),\n\t    id: __webpack_require__(235),\n\t    files: __webpack_require__(234),\n\t    log: __webpack_require__(236),\n\t    ls: __webpack_require__(237),\n\t    mount: __webpack_require__(238),\n\t    name: __webpack_require__(239),\n\t    object: __webpack_require__(240),\n\t    pin: __webpack_require__(241),\n\t    ping: __webpack_require__(242),\n\t    refs: __webpack_require__(243),\n\t    swarm: __webpack_require__(244),\n\t    update: __webpack_require__(245),\n\t    version: __webpack_require__(246)\n\t  };\n\t}\n\n\tfunction loadCommands(send) {\n\t  var files = requireCommands();\n\t  var cmds = {};\n\n\t  Object.keys(files).forEach(function (file) {\n\t    cmds[file] = files[file](send);\n\t  });\n\n\t  return cmds;\n\t}\n\n\tmodule.exports = loadCommands;\n\n/***/ },\n/* 250 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\tvar Wreck = __webpack_require__(137);\n\tvar Qs = __webpack_require__(220);\n\tvar ndjson = __webpack_require__(188);\n\tvar getFilesStream = __webpack_require__(248);\n\n\tvar isNode = __webpack_require__(181);\n\n\t// -- Internal\n\n\tfunction parseChunkedJson(res, cb) {\n\t  var parsed = [];\n\t  res.pipe(ndjson.parse()).on('data', parsed.push.bind(parsed)).on('end', function () {\n\t    return cb(null, parsed);\n\t  });\n\t}\n\n\tfunction onRes(buffer, cb) {\n\t  return function (err, res) {\n\t    if (err) {\n\t      return cb(err);\n\t    }\n\n\t    var stream = Boolean(res.headers['x-stream-output']);\n\t    var chunkedObjects = Boolean(res.headers['x-chunked-output']);\n\t    var isJson = res.headers['content-type'] && res.headers['content-type'].indexOf('application/json') === 0;\n\n\t    if (res.statusCode >= 400 || !res.statusCode) {\n\t      var _ret = function () {\n\t        var error = new Error('Server responded with ' + res.statusCode);\n\n\t        return {\n\t          v: Wreck.read(res, { json: true }, function (err, payload) {\n\t            if (err) {\n\t              return cb(err);\n\t            }\n\t            if (payload) {\n\t              error.code = payload.Code;\n\t              error.message = payload.Message || payload.toString();\n\t            }\n\t            cb(error);\n\t          })\n\t        };\n\t      }();\n\n\t      if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n\t    }\n\n\t    if (stream && !buffer) return cb(null, res);\n\n\t    if (chunkedObjects) {\n\t      if (isJson) return parseChunkedJson(res, cb);\n\n\t      return Wreck.read(res, null, cb);\n\t    }\n\n\t    Wreck.read(res, { json: isJson }, cb);\n\t  };\n\t}\n\n\tfunction requestAPI(config, path, args, qs, files, buffer, cb) {\n\t  qs = qs || {};\n\t  if (Array.isArray(path)) path = path.join('/');\n\t  if (args && !Array.isArray(args)) args = [args];\n\t  if (args) qs.arg = args;\n\t  if (files && !Array.isArray(files)) files = [files];\n\n\t  if (qs.r) {\n\t    qs.recursive = qs.r;\n\t    // From IPFS 0.4.0, it throws an error when both r and recursive are passed\n\t    delete qs.r;\n\t  }\n\n\t  if (!isNode && qs.recursive && path === 'add') {\n\t    return cb(new Error('Recursive uploads are not supported in the browser'));\n\t  }\n\n\t  qs['stream-channels'] = true;\n\n\t  var stream = void 0;\n\t  if (files) {\n\t    stream = getFilesStream(files, qs);\n\t  }\n\n\t  // this option is only used internally, not passed to daemon\n\t  delete qs.followSymlinks;\n\n\t  var port = config.port ? ':' + config.port : '';\n\n\t  var opts = {\n\t    method: files ? 'POST' : 'GET',\n\t    uri: config.protocol + '://' + config.host + port + config['api-path'] + path + '?' + Qs.stringify(qs, { arrayFormat: 'repeat' }),\n\t    headers: {}\n\t  };\n\n\t  if (isNode) {\n\t    // Browsers do not allow you to modify the user agent\n\t    opts.headers['User-Agent'] = config['user-agent'];\n\t  }\n\n\t  if (files) {\n\t    if (!stream.boundary) {\n\t      return cb(new Error('No boundary in multipart stream'));\n\t    }\n\n\t    opts.headers['Content-Type'] = 'multipart/form-data; boundary=' + stream.boundary;\n\t    opts.downstreamRes = stream;\n\t    opts.payload = stream;\n\t  }\n\n\t  return Wreck.request(opts.method, opts.uri, opts, onRes(buffer, cb));\n\t}\n\n\t// -- Interface\n\n\texports = module.exports = function getRequestAPI(config) {\n\t  return function (path, args, qs, files, buffer, cb) {\n\t    if (typeof buffer === 'function') {\n\t      cb = buffer;\n\t      buffer = false;\n\t    }\n\n\t    if (typeof cb !== 'function' && typeof Promise !== 'undefined') {\n\t      return new Promise(function (resolve, reject) {\n\t        requestAPI(config, path, args, qs, files, buffer, function (err, res) {\n\t          if (err) return reject(err);\n\t          resolve(res);\n\t        });\n\t      });\n\t    }\n\n\t    return requestAPI(config, path, args, qs, files, buffer, cb);\n\t  };\n\t};\n\n/***/ },\n/* 251 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global, process) {/**\n\t * Copyright (c) 2014, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n\t * additional grant of patent rights can be found in the PATENTS file in\n\t * the same directory.\n\t */\n\n\t!(function(global) {\n\t  \"use strict\";\n\n\t  var hasOwn = Object.prototype.hasOwnProperty;\n\t  var undefined; // More compressible than void 0.\n\t  var iteratorSymbol =\n\t    typeof Symbol === \"function\" && Symbol.iterator || \"@@iterator\";\n\n\t  var inModule = typeof module === \"object\";\n\t  var runtime = global.regeneratorRuntime;\n\t  if (runtime) {\n\t    if (inModule) {\n\t      // If regeneratorRuntime is defined globally and we're in a module,\n\t      // make the exports object identical to regeneratorRuntime.\n\t      module.exports = runtime;\n\t    }\n\t    // Don't bother evaluating the rest of this file if the runtime was\n\t    // already defined globally.\n\t    return;\n\t  }\n\n\t  // Define the runtime globally (as expected by generated code) as either\n\t  // module.exports (if we're in a module) or a new, empty object.\n\t  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n\t  function wrap(innerFn, outerFn, self, tryLocsList) {\n\t    // If outerFn provided, then outerFn.prototype instanceof Generator.\n\t    var generator = Object.create((outerFn || Generator).prototype);\n\t    var context = new Context(tryLocsList || []);\n\n\t    // The ._invoke method unifies the implementations of the .next,\n\t    // .throw, and .return methods.\n\t    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n\t    return generator;\n\t  }\n\t  runtime.wrap = wrap;\n\n\t  // Try/catch helper to minimize deoptimizations. Returns a completion\n\t  // record like context.tryEntries[i].completion. This interface could\n\t  // have been (and was previously) designed to take a closure to be\n\t  // invoked without arguments, but in all the cases we care about we\n\t  // already have an existing method we want to call, so there's no need\n\t  // to create a new function object. We can even get away with assuming\n\t  // the method takes exactly one argument, since that happens to be true\n\t  // in every case, so we don't have to touch the arguments object. The\n\t  // only additional allocation required is the completion record, which\n\t  // has a stable shape and so hopefully should be cheap to allocate.\n\t  function tryCatch(fn, obj, arg) {\n\t    try {\n\t      return { type: \"normal\", arg: fn.call(obj, arg) };\n\t    } catch (err) {\n\t      return { type: \"throw\", arg: err };\n\t    }\n\t  }\n\n\t  var GenStateSuspendedStart = \"suspendedStart\";\n\t  var GenStateSuspendedYield = \"suspendedYield\";\n\t  var GenStateExecuting = \"executing\";\n\t  var GenStateCompleted = \"completed\";\n\n\t  // Returning this object from the innerFn has the same effect as\n\t  // breaking out of the dispatch switch statement.\n\t  var ContinueSentinel = {};\n\n\t  // Dummy constructor functions that we use as the .constructor and\n\t  // .constructor.prototype properties for functions that return Generator\n\t  // objects. For full spec compliance, you may wish to configure your\n\t  // minifier not to mangle the names of these two functions.\n\t  function Generator() {}\n\t  function GeneratorFunction() {}\n\t  function GeneratorFunctionPrototype() {}\n\n\t  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;\n\t  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n\t  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n\t  GeneratorFunction.displayName = \"GeneratorFunction\";\n\n\t  // Helper for defining the .next, .throw, and .return methods of the\n\t  // Iterator interface in terms of a single ._invoke method.\n\t  function defineIteratorMethods(prototype) {\n\t    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n\t      prototype[method] = function(arg) {\n\t        return this._invoke(method, arg);\n\t      };\n\t    });\n\t  }\n\n\t  runtime.isGeneratorFunction = function(genFun) {\n\t    var ctor = typeof genFun === \"function\" && genFun.constructor;\n\t    return ctor\n\t      ? ctor === GeneratorFunction ||\n\t        // For the native GeneratorFunction constructor, the best we can\n\t        // do is to check its .name property.\n\t        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n\t      : false;\n\t  };\n\n\t  runtime.mark = function(genFun) {\n\t    if (Object.setPrototypeOf) {\n\t      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n\t    } else {\n\t      genFun.__proto__ = GeneratorFunctionPrototype;\n\t    }\n\t    genFun.prototype = Object.create(Gp);\n\t    return genFun;\n\t  };\n\n\t  // Within the body of any async function, `await x` is transformed to\n\t  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n\t  // `value instanceof AwaitArgument` to determine if the yielded value is\n\t  // meant to be awaited. Some may consider the name of this method too\n\t  // cutesy, but they are curmudgeons.\n\t  runtime.awrap = function(arg) {\n\t    return new AwaitArgument(arg);\n\t  };\n\n\t  function AwaitArgument(arg) {\n\t    this.arg = arg;\n\t  }\n\n\t  function AsyncIterator(generator) {\n\t    // This invoke function is written in a style that assumes some\n\t    // calling function (or Promise) will handle exceptions.\n\t    function invoke(method, arg) {\n\t      var result = generator[method](arg);\n\t      var value = result.value;\n\t      return value instanceof AwaitArgument\n\t        ? Promise.resolve(value.arg).then(invokeNext, invokeThrow)\n\t        : Promise.resolve(value).then(function(unwrapped) {\n\t            // When a yielded Promise is resolved, its final value becomes\n\t            // the .value of the Promise<{value,done}> result for the\n\t            // current iteration. If the Promise is rejected, however, the\n\t            // result for this iteration will be rejected with the same\n\t            // reason. Note that rejections of yielded Promises are not\n\t            // thrown back into the generator function, as is the case\n\t            // when an awaited Promise is rejected. This difference in\n\t            // behavior between yield and await is important, because it\n\t            // allows the consumer to decide what to do with the yielded\n\t            // rejection (swallow it and continue, manually .throw it back\n\t            // into the generator, abandon iteration, whatever). With\n\t            // await, by contrast, there is no opportunity to examine the\n\t            // rejection reason outside the generator function, so the\n\t            // only option is to throw it from the await expression, and\n\t            // let the generator function handle the exception.\n\t            result.value = unwrapped;\n\t            return result;\n\t          });\n\t    }\n\n\t    if (typeof process === \"object\" && process.domain) {\n\t      invoke = process.domain.bind(invoke);\n\t    }\n\n\t    var invokeNext = invoke.bind(generator, \"next\");\n\t    var invokeThrow = invoke.bind(generator, \"throw\");\n\t    var invokeReturn = invoke.bind(generator, \"return\");\n\t    var previousPromise;\n\n\t    function enqueue(method, arg) {\n\t      function callInvokeWithMethodAndArg() {\n\t        return invoke(method, arg);\n\t      }\n\n\t      return previousPromise =\n\t        // If enqueue has been called before, then we want to wait until\n\t        // all previous Promises have been resolved before calling invoke,\n\t        // so that results are always delivered in the correct order. If\n\t        // enqueue has not been called before, then it is important to\n\t        // call invoke immediately, without waiting on a callback to fire,\n\t        // so that the async generator function has the opportunity to do\n\t        // any necessary setup in a predictable way. This predictability\n\t        // is why the Promise constructor synchronously invokes its\n\t        // executor callback, and why async functions synchronously\n\t        // execute code before the first await. Since we implement simple\n\t        // async functions in terms of async generators, it is especially\n\t        // important to get this right, even though it requires care.\n\t        previousPromise ? previousPromise.then(\n\t          callInvokeWithMethodAndArg,\n\t          // Avoid propagating failures to Promises returned by later\n\t          // invocations of the iterator.\n\t          callInvokeWithMethodAndArg\n\t        ) : new Promise(function (resolve) {\n\t          resolve(callInvokeWithMethodAndArg());\n\t        });\n\t    }\n\n\t    // Define the unified helper method that is used to implement .next,\n\t    // .throw, and .return (see defineIteratorMethods).\n\t    this._invoke = enqueue;\n\t  }\n\n\t  defineIteratorMethods(AsyncIterator.prototype);\n\n\t  // Note that simple async functions are implemented on top of\n\t  // AsyncIterator objects; they just return a Promise for the value of\n\t  // the final result produced by the iterator.\n\t  runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n\t    var iter = new AsyncIterator(\n\t      wrap(innerFn, outerFn, self, tryLocsList)\n\t    );\n\n\t    return runtime.isGeneratorFunction(outerFn)\n\t      ? iter // If outerFn is a generator, return the full iterator.\n\t      : iter.next().then(function(result) {\n\t          return result.done ? result.value : iter.next();\n\t        });\n\t  };\n\n\t  function makeInvokeMethod(innerFn, self, context) {\n\t    var state = GenStateSuspendedStart;\n\n\t    return function invoke(method, arg) {\n\t      if (state === GenStateExecuting) {\n\t        throw new Error(\"Generator is already running\");\n\t      }\n\n\t      if (state === GenStateCompleted) {\n\t        if (method === \"throw\") {\n\t          throw arg;\n\t        }\n\n\t        // Be forgiving, per 25.3.3.3.3 of the spec:\n\t        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\t        return doneResult();\n\t      }\n\n\t      while (true) {\n\t        var delegate = context.delegate;\n\t        if (delegate) {\n\t          if (method === \"return\" ||\n\t              (method === \"throw\" && delegate.iterator[method] === undefined)) {\n\t            // A return or throw (when the delegate iterator has no throw\n\t            // method) always terminates the yield* loop.\n\t            context.delegate = null;\n\n\t            // If the delegate iterator has a return method, give it a\n\t            // chance to clean up.\n\t            var returnMethod = delegate.iterator[\"return\"];\n\t            if (returnMethod) {\n\t              var record = tryCatch(returnMethod, delegate.iterator, arg);\n\t              if (record.type === \"throw\") {\n\t                // If the return method threw an exception, let that\n\t                // exception prevail over the original return or throw.\n\t                method = \"throw\";\n\t                arg = record.arg;\n\t                continue;\n\t              }\n\t            }\n\n\t            if (method === \"return\") {\n\t              // Continue with the outer return, now that the delegate\n\t              // iterator has been terminated.\n\t              continue;\n\t            }\n\t          }\n\n\t          var record = tryCatch(\n\t            delegate.iterator[method],\n\t            delegate.iterator,\n\t            arg\n\t          );\n\n\t          if (record.type === \"throw\") {\n\t            context.delegate = null;\n\n\t            // Like returning generator.throw(uncaught), but without the\n\t            // overhead of an extra function call.\n\t            method = \"throw\";\n\t            arg = record.arg;\n\t            continue;\n\t          }\n\n\t          // Delegate generator ran and handled its own exceptions so\n\t          // regardless of what the method was, we continue as if it is\n\t          // \"next\" with an undefined arg.\n\t          method = \"next\";\n\t          arg = undefined;\n\n\t          var info = record.arg;\n\t          if (info.done) {\n\t            context[delegate.resultName] = info.value;\n\t            context.next = delegate.nextLoc;\n\t          } else {\n\t            state = GenStateSuspendedYield;\n\t            return info;\n\t          }\n\n\t          context.delegate = null;\n\t        }\n\n\t        if (method === \"next\") {\n\t          context._sent = arg;\n\n\t          if (state === GenStateSuspendedYield) {\n\t            context.sent = arg;\n\t          } else {\n\t            context.sent = undefined;\n\t          }\n\t        } else if (method === \"throw\") {\n\t          if (state === GenStateSuspendedStart) {\n\t            state = GenStateCompleted;\n\t            throw arg;\n\t          }\n\n\t          if (context.dispatchException(arg)) {\n\t            // If the dispatched exception was caught by a catch block,\n\t            // then let that catch block handle the exception normally.\n\t            method = \"next\";\n\t            arg = undefined;\n\t          }\n\n\t        } else if (method === \"return\") {\n\t          context.abrupt(\"return\", arg);\n\t        }\n\n\t        state = GenStateExecuting;\n\n\t        var record = tryCatch(innerFn, self, context);\n\t        if (record.type === \"normal\") {\n\t          // If an exception is thrown from innerFn, we leave state ===\n\t          // GenStateExecuting and loop back for another invocation.\n\t          state = context.done\n\t            ? GenStateCompleted\n\t            : GenStateSuspendedYield;\n\n\t          var info = {\n\t            value: record.arg,\n\t            done: context.done\n\t          };\n\n\t          if (record.arg === ContinueSentinel) {\n\t            if (context.delegate && method === \"next\") {\n\t              // Deliberately forget the last sent value so that we don't\n\t              // accidentally pass it on to the delegate.\n\t              arg = undefined;\n\t            }\n\t          } else {\n\t            return info;\n\t          }\n\n\t        } else if (record.type === \"throw\") {\n\t          state = GenStateCompleted;\n\t          // Dispatch the exception by looping back around to the\n\t          // context.dispatchException(arg) call above.\n\t          method = \"throw\";\n\t          arg = record.arg;\n\t        }\n\t      }\n\t    };\n\t  }\n\n\t  // Define Generator.prototype.{next,throw,return} in terms of the\n\t  // unified ._invoke helper method.\n\t  defineIteratorMethods(Gp);\n\n\t  Gp[iteratorSymbol] = function() {\n\t    return this;\n\t  };\n\n\t  Gp.toString = function() {\n\t    return \"[object Generator]\";\n\t  };\n\n\t  function pushTryEntry(locs) {\n\t    var entry = { tryLoc: locs[0] };\n\n\t    if (1 in locs) {\n\t      entry.catchLoc = locs[1];\n\t    }\n\n\t    if (2 in locs) {\n\t      entry.finallyLoc = locs[2];\n\t      entry.afterLoc = locs[3];\n\t    }\n\n\t    this.tryEntries.push(entry);\n\t  }\n\n\t  function resetTryEntry(entry) {\n\t    var record = entry.completion || {};\n\t    record.type = \"normal\";\n\t    delete record.arg;\n\t    entry.completion = record;\n\t  }\n\n\t  function Context(tryLocsList) {\n\t    // The root entry object (effectively a try statement without a catch\n\t    // or a finally block) gives us a place to store values thrown from\n\t    // locations where there is no enclosing try statement.\n\t    this.tryEntries = [{ tryLoc: \"root\" }];\n\t    tryLocsList.forEach(pushTryEntry, this);\n\t    this.reset(true);\n\t  }\n\n\t  runtime.keys = function(object) {\n\t    var keys = [];\n\t    for (var key in object) {\n\t      keys.push(key);\n\t    }\n\t    keys.reverse();\n\n\t    // Rather than returning an object with a next method, we keep\n\t    // things simple and return the next function itself.\n\t    return function next() {\n\t      while (keys.length) {\n\t        var key = keys.pop();\n\t        if (key in object) {\n\t          next.value = key;\n\t          next.done = false;\n\t          return next;\n\t        }\n\t      }\n\n\t      // To avoid creating an additional object, we just hang the .value\n\t      // and .done properties off the next function object itself. This\n\t      // also ensures that the minifier will not anonymize the function.\n\t      next.done = true;\n\t      return next;\n\t    };\n\t  };\n\n\t  function values(iterable) {\n\t    if (iterable) {\n\t      var iteratorMethod = iterable[iteratorSymbol];\n\t      if (iteratorMethod) {\n\t        return iteratorMethod.call(iterable);\n\t      }\n\n\t      if (typeof iterable.next === \"function\") {\n\t        return iterable;\n\t      }\n\n\t      if (!isNaN(iterable.length)) {\n\t        var i = -1, next = function next() {\n\t          while (++i < iterable.length) {\n\t            if (hasOwn.call(iterable, i)) {\n\t              next.value = iterable[i];\n\t              next.done = false;\n\t              return next;\n\t            }\n\t          }\n\n\t          next.value = undefined;\n\t          next.done = true;\n\n\t          return next;\n\t        };\n\n\t        return next.next = next;\n\t      }\n\t    }\n\n\t    // Return an iterator with no values.\n\t    return { next: doneResult };\n\t  }\n\t  runtime.values = values;\n\n\t  function doneResult() {\n\t    return { value: undefined, done: true };\n\t  }\n\n\t  Context.prototype = {\n\t    constructor: Context,\n\n\t    reset: function(skipTempReset) {\n\t      this.prev = 0;\n\t      this.next = 0;\n\t      this.sent = undefined;\n\t      this.done = false;\n\t      this.delegate = null;\n\n\t      this.tryEntries.forEach(resetTryEntry);\n\n\t      if (!skipTempReset) {\n\t        for (var name in this) {\n\t          // Not sure about the optimal order of these conditions:\n\t          if (name.charAt(0) === \"t\" &&\n\t              hasOwn.call(this, name) &&\n\t              !isNaN(+name.slice(1))) {\n\t            this[name] = undefined;\n\t          }\n\t        }\n\t      }\n\t    },\n\n\t    stop: function() {\n\t      this.done = true;\n\n\t      var rootEntry = this.tryEntries[0];\n\t      var rootRecord = rootEntry.completion;\n\t      if (rootRecord.type === \"throw\") {\n\t        throw rootRecord.arg;\n\t      }\n\n\t      return this.rval;\n\t    },\n\n\t    dispatchException: function(exception) {\n\t      if (this.done) {\n\t        throw exception;\n\t      }\n\n\t      var context = this;\n\t      function handle(loc, caught) {\n\t        record.type = \"throw\";\n\t        record.arg = exception;\n\t        context.next = loc;\n\t        return !!caught;\n\t      }\n\n\t      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n\t        var entry = this.tryEntries[i];\n\t        var record = entry.completion;\n\n\t        if (entry.tryLoc === \"root\") {\n\t          // Exception thrown outside of any try block that could handle\n\t          // it, so set the completion value of the entire function to\n\t          // throw the exception.\n\t          return handle(\"end\");\n\t        }\n\n\t        if (entry.tryLoc <= this.prev) {\n\t          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n\t          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n\t          if (hasCatch && hasFinally) {\n\t            if (this.prev < entry.catchLoc) {\n\t              return handle(entry.catchLoc, true);\n\t            } else if (this.prev < entry.finallyLoc) {\n\t              return handle(entry.finallyLoc);\n\t            }\n\n\t          } else if (hasCatch) {\n\t            if (this.prev < entry.catchLoc) {\n\t              return handle(entry.catchLoc, true);\n\t            }\n\n\t          } else if (hasFinally) {\n\t            if (this.prev < entry.finallyLoc) {\n\t              return handle(entry.finallyLoc);\n\t            }\n\n\t          } else {\n\t            throw new Error(\"try statement without catch or finally\");\n\t          }\n\t        }\n\t      }\n\t    },\n\n\t    abrupt: function(type, arg) {\n\t      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n\t        var entry = this.tryEntries[i];\n\t        if (entry.tryLoc <= this.prev &&\n\t            hasOwn.call(entry, \"finallyLoc\") &&\n\t            this.prev < entry.finallyLoc) {\n\t          var finallyEntry = entry;\n\t          break;\n\t        }\n\t      }\n\n\t      if (finallyEntry &&\n\t          (type === \"break\" ||\n\t           type === \"continue\") &&\n\t          finallyEntry.tryLoc <= arg &&\n\t          arg <= finallyEntry.finallyLoc) {\n\t        // Ignore the finally entry if control is not jumping to a\n\t        // location outside the try/catch block.\n\t        finallyEntry = null;\n\t      }\n\n\t      var record = finallyEntry ? finallyEntry.completion : {};\n\t      record.type = type;\n\t      record.arg = arg;\n\n\t      if (finallyEntry) {\n\t        this.next = finallyEntry.finallyLoc;\n\t      } else {\n\t        this.complete(record);\n\t      }\n\n\t      return ContinueSentinel;\n\t    },\n\n\t    complete: function(record, afterLoc) {\n\t      if (record.type === \"throw\") {\n\t        throw record.arg;\n\t      }\n\n\t      if (record.type === \"break\" ||\n\t          record.type === \"continue\") {\n\t        this.next = record.arg;\n\t      } else if (record.type === \"return\") {\n\t        this.rval = record.arg;\n\t        this.next = \"end\";\n\t      } else if (record.type === \"normal\" && afterLoc) {\n\t        this.next = afterLoc;\n\t      }\n\t    },\n\n\t    finish: function(finallyLoc) {\n\t      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n\t        var entry = this.tryEntries[i];\n\t        if (entry.finallyLoc === finallyLoc) {\n\t          this.complete(entry.completion, entry.afterLoc);\n\t          resetTryEntry(entry);\n\t          return ContinueSentinel;\n\t        }\n\t      }\n\t    },\n\n\t    \"catch\": function(tryLoc) {\n\t      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n\t        var entry = this.tryEntries[i];\n\t        if (entry.tryLoc === tryLoc) {\n\t          var record = entry.completion;\n\t          if (record.type === \"throw\") {\n\t            var thrown = record.arg;\n\t            resetTryEntry(entry);\n\t          }\n\t          return thrown;\n\t        }\n\t      }\n\n\t      // The context.catch method must only be called with a location\n\t      // argument that corresponds to a known catch block.\n\t      throw new Error(\"illegal catch attempt\");\n\t    },\n\n\t    delegateYield: function(iterable, resultName, nextLoc) {\n\t      this.delegate = {\n\t        iterator: values(iterable),\n\t        resultName: resultName,\n\t        nextLoc: nextLoc\n\t      };\n\n\t      return ContinueSentinel;\n\t    }\n\t  };\n\t})(\n\t  // Among the various tricks for obtaining a reference to the global\n\t  // object, this seems to be the most reliable technique that does not\n\t  // use indirect eval (which violates Content Security Policy).\n\t  typeof global === \"object\" ? global :\n\t  typeof window === \"object\" ? window :\n\t  typeof self === \"object\" ? self : this\n\t);\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(8)))\n\n/***/ },\n/* 252 */\n/***/ function(module, exports) {\n\n\tmodule.exports = balanced;\n\tfunction balanced(a, b, str) {\n\t  if (a instanceof RegExp) a = maybeMatch(a, str);\n\t  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n\t  var r = range(a, b, str);\n\n\t  return r && {\n\t    start: r[0],\n\t    end: r[1],\n\t    pre: str.slice(0, r[0]),\n\t    body: str.slice(r[0] + a.length, r[1]),\n\t    post: str.slice(r[1] + b.length)\n\t  };\n\t}\n\n\tfunction maybeMatch(reg, str) {\n\t  var m = str.match(reg);\n\t  return m ? m[0] : null;\n\t}\n\n\tbalanced.range = range;\n\tfunction range(a, b, str) {\n\t  var begs, beg, left, right, result;\n\t  var ai = str.indexOf(a);\n\t  var bi = str.indexOf(b, ai + 1);\n\t  var i = ai;\n\n\t  if (ai >= 0 && bi > 0) {\n\t    begs = [];\n\t    left = str.length;\n\n\t    while (i < str.length && i >= 0 && ! result) {\n\t      if (i == ai) {\n\t        begs.push(i);\n\t        ai = str.indexOf(a, i + 1);\n\t      } else if (begs.length == 1) {\n\t        result = [ begs.pop(), bi ];\n\t      } else {\n\t        beg = begs.pop();\n\t        if (beg < left) {\n\t          left = beg;\n\t          right = bi;\n\t        }\n\n\t        bi = str.indexOf(b, i + 1);\n\t      }\n\n\t      i = ai < bi && ai >= 0 ? ai : bi;\n\t    }\n\n\t    if (begs.length) {\n\t      result = [ left, right ];\n\t    }\n\t  }\n\n\t  return result;\n\t}\n\n\n/***/ },\n/* 253 */\n/***/ function(module, exports) {\n\n\t// base-x encoding\n\t// Forked from https://github.com/cryptocoinjs/bs58\n\t// Originally written by Mike Hearn for BitcoinJ\n\t// Copyright (c) 2011 Google Inc\n\t// Ported to JavaScript by Stefan Thomas\n\t// Merged Buffer refactorings from base58-native by Stephen Pair\n\t// Copyright (c) 2013 BitPay Inc\n\n\tmodule.exports = function base (ALPHABET) {\n\t  var ALPHABET_MAP = {}\n\t  var BASE = ALPHABET.length\n\t  var LEADER = ALPHABET.charAt(0)\n\n\t  // pre-compute lookup table\n\t  for (var i = 0; i < ALPHABET.length; i++) {\n\t    ALPHABET_MAP[ALPHABET.charAt(i)] = i\n\t  }\n\n\t  function encode (source) {\n\t    if (source.length === 0) return ''\n\n\t    var digits = [0]\n\t    for (var i = 0; i < source.length; ++i) {\n\t      for (var j = 0, carry = source[i]; j < digits.length; ++j) {\n\t        carry += digits[j] << 8\n\t        digits[j] = carry % BASE\n\t        carry = (carry / BASE) | 0\n\t      }\n\n\t      while (carry > 0) {\n\t        digits.push(carry % BASE)\n\t        carry = (carry / BASE) | 0\n\t      }\n\t    }\n\n\t    // deal with leading zeros\n\t    for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n\t      digits.push(0)\n\t    }\n\n\t    // convert digits to a string\n\t    for (var ii = 0, jj = digits.length - 1; ii <= jj; ++ii, --jj) {\n\t      var tmp = ALPHABET[digits[ii]]\n\t      digits[ii] = ALPHABET[digits[jj]]\n\t      digits[jj] = tmp\n\t    }\n\n\t    return digits.join('')\n\t  }\n\n\t  function decode (string) {\n\t    if (string.length === 0) return []\n\n\t    var bytes = [0]\n\t    for (var i = 0; i < string.length; i++) {\n\t      var value = ALPHABET_MAP[string[i]]\n\t      if (value === undefined) throw new Error('Non-base' + BASE + ' character')\n\n\t      for (var j = 0, carry = value; j < bytes.length; ++j) {\n\t        carry += bytes[j] * BASE\n\t        bytes[j] = carry & 0xff\n\t        carry >>= 8\n\t      }\n\n\t      while (carry > 0) {\n\t        bytes.push(carry & 0xff)\n\t        carry >>= 8\n\t      }\n\t    }\n\n\t    // deal with leading zeros\n\t    for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {\n\t      bytes.push(0)\n\t    }\n\n\t    return bytes.reverse()\n\t  }\n\n\t  return {\n\t    encode: encode,\n\t    decode: decode\n\t  }\n\t}\n\n\n/***/ },\n/* 254 */\n/***/ function(module, exports) {\n\n\t'use strict'\n\n\texports.toByteArray = toByteArray\n\texports.fromByteArray = fromByteArray\n\n\tvar lookup = []\n\tvar revLookup = []\n\tvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\n\tfunction init () {\n\t  var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\t  for (var i = 0, len = code.length; i < len; ++i) {\n\t    lookup[i] = code[i]\n\t    revLookup[code.charCodeAt(i)] = i\n\t  }\n\n\t  revLookup['-'.charCodeAt(0)] = 62\n\t  revLookup['_'.charCodeAt(0)] = 63\n\t}\n\n\tinit()\n\n\tfunction toByteArray (b64) {\n\t  var i, j, l, tmp, placeHolders, arr\n\t  var len = b64.length\n\n\t  if (len % 4 > 0) {\n\t    throw new Error('Invalid string. Length must be a multiple of 4')\n\t  }\n\n\t  // the number of equal signs (place holders)\n\t  // if there are two placeholders, than the two characters before it\n\t  // represent one byte\n\t  // if there is only one, then the three characters before it represent 2 bytes\n\t  // this is just a cheap hack to not do indexOf twice\n\t  placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n\n\t  // base64 is 4/3 + up to two characters of the original data\n\t  arr = new Arr(len * 3 / 4 - placeHolders)\n\n\t  // if there are placeholders, only get up to the last complete 4 chars\n\t  l = placeHolders > 0 ? len - 4 : len\n\n\t  var L = 0\n\n\t  for (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n\t    arr[L++] = (tmp >> 16) & 0xFF\n\t    arr[L++] = (tmp >> 8) & 0xFF\n\t    arr[L++] = tmp & 0xFF\n\t  }\n\n\t  if (placeHolders === 2) {\n\t    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n\t    arr[L++] = tmp & 0xFF\n\t  } else if (placeHolders === 1) {\n\t    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n\t    arr[L++] = (tmp >> 8) & 0xFF\n\t    arr[L++] = tmp & 0xFF\n\t  }\n\n\t  return arr\n\t}\n\n\tfunction tripletToBase64 (num) {\n\t  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n\t}\n\n\tfunction encodeChunk (uint8, start, end) {\n\t  var tmp\n\t  var output = []\n\t  for (var i = start; i < end; i += 3) {\n\t    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t    output.push(tripletToBase64(tmp))\n\t  }\n\t  return output.join('')\n\t}\n\n\tfunction fromByteArray (uint8) {\n\t  var tmp\n\t  var len = uint8.length\n\t  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n\t  var output = ''\n\t  var parts = []\n\t  var maxChunkLength = 16383 // must be multiple of 3\n\n\t  // go through the array every three bytes, we'll deal with trailing stuff later\n\t  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n\t    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n\t  }\n\n\t  // pad the end with zeros, but make sure to not forget the extra bytes\n\t  if (extraBytes === 1) {\n\t    tmp = uint8[len - 1]\n\t    output += lookup[tmp >> 2]\n\t    output += lookup[(tmp << 4) & 0x3F]\n\t    output += '=='\n\t  } else if (extraBytes === 2) {\n\t    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n\t    output += lookup[tmp >> 10]\n\t    output += lookup[(tmp >> 4) & 0x3F]\n\t    output += lookup[(tmp << 2) & 0x3F]\n\t    output += '='\n\t  }\n\n\t  parts.push(output)\n\n\t  return parts.join('')\n\t}\n\n\n/***/ },\n/* 255 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar concatMap = __webpack_require__(268);\n\tvar balanced = __webpack_require__(252);\n\n\tmodule.exports = expandTop;\n\n\tvar escSlash = '\\0SLASH'+Math.random()+'\\0';\n\tvar escOpen = '\\0OPEN'+Math.random()+'\\0';\n\tvar escClose = '\\0CLOSE'+Math.random()+'\\0';\n\tvar escComma = '\\0COMMA'+Math.random()+'\\0';\n\tvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\n\tfunction numeric(str) {\n\t  return parseInt(str, 10) == str\n\t    ? parseInt(str, 10)\n\t    : str.charCodeAt(0);\n\t}\n\n\tfunction escapeBraces(str) {\n\t  return str.split('\\\\\\\\').join(escSlash)\n\t            .split('\\\\{').join(escOpen)\n\t            .split('\\\\}').join(escClose)\n\t            .split('\\\\,').join(escComma)\n\t            .split('\\\\.').join(escPeriod);\n\t}\n\n\tfunction unescapeBraces(str) {\n\t  return str.split(escSlash).join('\\\\')\n\t            .split(escOpen).join('{')\n\t            .split(escClose).join('}')\n\t            .split(escComma).join(',')\n\t            .split(escPeriod).join('.');\n\t}\n\n\n\t// Basically just str.split(\",\"), but handling cases\n\t// where we have nested braced sections, which should be\n\t// treated as individual members, like {a,{b,c},d}\n\tfunction parseCommaParts(str) {\n\t  if (!str)\n\t    return [''];\n\n\t  var parts = [];\n\t  var m = balanced('{', '}', str);\n\n\t  if (!m)\n\t    return str.split(',');\n\n\t  var pre = m.pre;\n\t  var body = m.body;\n\t  var post = m.post;\n\t  var p = pre.split(',');\n\n\t  p[p.length-1] += '{' + body + '}';\n\t  var postParts = parseCommaParts(post);\n\t  if (post.length) {\n\t    p[p.length-1] += postParts.shift();\n\t    p.push.apply(p, postParts);\n\t  }\n\n\t  parts.push.apply(parts, p);\n\n\t  return parts;\n\t}\n\n\tfunction expandTop(str) {\n\t  if (!str)\n\t    return [];\n\n\t  return expand(escapeBraces(str), true).map(unescapeBraces);\n\t}\n\n\tfunction identity(e) {\n\t  return e;\n\t}\n\n\tfunction embrace(str) {\n\t  return '{' + str + '}';\n\t}\n\tfunction isPadded(el) {\n\t  return /^-?0\\d/.test(el);\n\t}\n\n\tfunction lte(i, y) {\n\t  return i <= y;\n\t}\n\tfunction gte(i, y) {\n\t  return i >= y;\n\t}\n\n\tfunction expand(str, isTop) {\n\t  var expansions = [];\n\n\t  var m = balanced('{', '}', str);\n\t  if (!m || /\\$$/.test(m.pre)) return [str];\n\n\t  var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n\t  var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n\t  var isSequence = isNumericSequence || isAlphaSequence;\n\t  var isOptions = /^(.*,)+(.+)?$/.test(m.body);\n\t  if (!isSequence && !isOptions) {\n\t    // {a},b}\n\t    if (m.post.match(/,.*\\}/)) {\n\t      str = m.pre + '{' + m.body + escClose + m.post;\n\t      return expand(str);\n\t    }\n\t    return [str];\n\t  }\n\n\t  var n;\n\t  if (isSequence) {\n\t    n = m.body.split(/\\.\\./);\n\t  } else {\n\t    n = parseCommaParts(m.body);\n\t    if (n.length === 1) {\n\t      // x{{a,b}}y ==> x{a}y x{b}y\n\t      n = expand(n[0], false).map(embrace);\n\t      if (n.length === 1) {\n\t        var post = m.post.length\n\t          ? expand(m.post, false)\n\t          : [''];\n\t        return post.map(function(p) {\n\t          return m.pre + n[0] + p;\n\t        });\n\t      }\n\t    }\n\t  }\n\n\t  // at this point, n is the parts, and we know it's not a comma set\n\t  // with a single entry.\n\n\t  // no need to expand pre, since it is guaranteed to be free of brace-sets\n\t  var pre = m.pre;\n\t  var post = m.post.length\n\t    ? expand(m.post, false)\n\t    : [''];\n\n\t  var N;\n\n\t  if (isSequence) {\n\t    var x = numeric(n[0]);\n\t    var y = numeric(n[1]);\n\t    var width = Math.max(n[0].length, n[1].length)\n\t    var incr = n.length == 3\n\t      ? Math.abs(numeric(n[2]))\n\t      : 1;\n\t    var test = lte;\n\t    var reverse = y < x;\n\t    if (reverse) {\n\t      incr *= -1;\n\t      test = gte;\n\t    }\n\t    var pad = n.some(isPadded);\n\n\t    N = [];\n\n\t    for (var i = x; test(i, y); i += incr) {\n\t      var c;\n\t      if (isAlphaSequence) {\n\t        c = String.fromCharCode(i);\n\t        if (c === '\\\\')\n\t          c = '';\n\t      } else {\n\t        c = String(i);\n\t        if (pad) {\n\t          var need = width - c.length;\n\t          if (need > 0) {\n\t            var z = new Array(need + 1).join('0');\n\t            if (i < 0)\n\t              c = '-' + z + c.slice(1);\n\t            else\n\t              c = z + c;\n\t          }\n\t        }\n\t      }\n\t      N.push(c);\n\t    }\n\t  } else {\n\t    N = concatMap(n, function(el) { return expand(el, false) });\n\t  }\n\n\t  for (var j = 0; j < N.length; j++) {\n\t    for (var k = 0; k < post.length; k++) {\n\t      var expansion = pre + N[j] + post[k];\n\t      if (!isTop || isSequence || expansion)\n\t        expansions.push(expansion);\n\t    }\n\t  }\n\n\t  return expansions;\n\t}\n\n\n\n/***/ },\n/* 256 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(73)\n\tvar Transform = __webpack_require__(51)\n\tvar inherits = __webpack_require__(2)\n\tvar modes = __webpack_require__(74)\n\tvar StreamCipher = __webpack_require__(148)\n\tvar AuthCipher = __webpack_require__(141)\n\tvar ebtk = __webpack_require__(89)\n\n\tinherits(Decipher, Transform)\n\tfunction Decipher (mode, key, iv) {\n\t  if (!(this instanceof Decipher)) {\n\t    return new Decipher(mode, key, iv)\n\t  }\n\t  Transform.call(this)\n\t  this._cache = new Splitter()\n\t  this._last = void 0\n\t  this._cipher = new aes.AES(key)\n\t  this._prev = new Buffer(iv.length)\n\t  iv.copy(this._prev)\n\t  this._mode = mode\n\t  this._autopadding = true\n\t}\n\tDecipher.prototype._update = function (data) {\n\t  this._cache.add(data)\n\t  var chunk\n\t  var thing\n\t  var out = []\n\t  while ((chunk = this._cache.get(this._autopadding))) {\n\t    thing = this._mode.decrypt(this, chunk)\n\t    out.push(thing)\n\t  }\n\t  return Buffer.concat(out)\n\t}\n\tDecipher.prototype._final = function () {\n\t  var chunk = this._cache.flush()\n\t  if (this._autopadding) {\n\t    return unpad(this._mode.decrypt(this, chunk))\n\t  } else if (chunk) {\n\t    throw new Error('data not multiple of block length')\n\t  }\n\t}\n\tDecipher.prototype.setAutoPadding = function (setTo) {\n\t  this._autopadding = !!setTo\n\t  return this\n\t}\n\tfunction Splitter () {\n\t  if (!(this instanceof Splitter)) {\n\t    return new Splitter()\n\t  }\n\t  this.cache = new Buffer('')\n\t}\n\tSplitter.prototype.add = function (data) {\n\t  this.cache = Buffer.concat([this.cache, data])\n\t}\n\n\tSplitter.prototype.get = function (autoPadding) {\n\t  var out\n\t  if (autoPadding) {\n\t    if (this.cache.length > 16) {\n\t      out = this.cache.slice(0, 16)\n\t      this.cache = this.cache.slice(16)\n\t      return out\n\t    }\n\t  } else {\n\t    if (this.cache.length >= 16) {\n\t      out = this.cache.slice(0, 16)\n\t      this.cache = this.cache.slice(16)\n\t      return out\n\t    }\n\t  }\n\t  return null\n\t}\n\tSplitter.prototype.flush = function () {\n\t  if (this.cache.length) {\n\t    return this.cache\n\t  }\n\t}\n\tfunction unpad (last) {\n\t  var padded = last[15]\n\t  var i = -1\n\t  while (++i < padded) {\n\t    if (last[(i + (16 - padded))] !== padded) {\n\t      throw new Error('unable to decrypt data')\n\t    }\n\t  }\n\t  if (padded === 16) {\n\t    return\n\t  }\n\t  return last.slice(0, 16 - padded)\n\t}\n\n\tvar modelist = {\n\t  ECB: __webpack_require__(146),\n\t  CBC: __webpack_require__(142),\n\t  CFB: __webpack_require__(143),\n\t  CFB8: __webpack_require__(145),\n\t  CFB1: __webpack_require__(144),\n\t  OFB: __webpack_require__(147),\n\t  CTR: __webpack_require__(75),\n\t  GCM: __webpack_require__(75)\n\t}\n\n\tfunction createDecipheriv (suite, password, iv) {\n\t  var config = modes[suite.toLowerCase()]\n\t  if (!config) {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t  if (typeof iv === 'string') {\n\t    iv = new Buffer(iv)\n\t  }\n\t  if (typeof password === 'string') {\n\t    password = new Buffer(password)\n\t  }\n\t  if (password.length !== config.key / 8) {\n\t    throw new TypeError('invalid key length ' + password.length)\n\t  }\n\t  if (iv.length !== config.iv) {\n\t    throw new TypeError('invalid iv length ' + iv.length)\n\t  }\n\t  if (config.type === 'stream') {\n\t    return new StreamCipher(modelist[config.mode], password, iv, true)\n\t  } else if (config.type === 'auth') {\n\t    return new AuthCipher(modelist[config.mode], password, iv, true)\n\t  }\n\t  return new Decipher(modelist[config.mode], password, iv)\n\t}\n\n\tfunction createDecipher (suite, password) {\n\t  var config = modes[suite.toLowerCase()]\n\t  if (!config) {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t  var keys = ebtk(password, false, config.key, config.iv)\n\t  return createDecipheriv(suite, keys.key, keys.iv)\n\t}\n\texports.createDecipher = createDecipher\n\texports.createDecipheriv = createDecipheriv\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 257 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(73)\n\tvar Transform = __webpack_require__(51)\n\tvar inherits = __webpack_require__(2)\n\tvar modes = __webpack_require__(74)\n\tvar ebtk = __webpack_require__(89)\n\tvar StreamCipher = __webpack_require__(148)\n\tvar AuthCipher = __webpack_require__(141)\n\tinherits(Cipher, Transform)\n\tfunction Cipher (mode, key, iv) {\n\t  if (!(this instanceof Cipher)) {\n\t    return new Cipher(mode, key, iv)\n\t  }\n\t  Transform.call(this)\n\t  this._cache = new Splitter()\n\t  this._cipher = new aes.AES(key)\n\t  this._prev = new Buffer(iv.length)\n\t  iv.copy(this._prev)\n\t  this._mode = mode\n\t  this._autopadding = true\n\t}\n\tCipher.prototype._update = function (data) {\n\t  this._cache.add(data)\n\t  var chunk\n\t  var thing\n\t  var out = []\n\t  while ((chunk = this._cache.get())) {\n\t    thing = this._mode.encrypt(this, chunk)\n\t    out.push(thing)\n\t  }\n\t  return Buffer.concat(out)\n\t}\n\tCipher.prototype._final = function () {\n\t  var chunk = this._cache.flush()\n\t  if (this._autopadding) {\n\t    chunk = this._mode.encrypt(this, chunk)\n\t    this._cipher.scrub()\n\t    return chunk\n\t  } else if (chunk.toString('hex') !== '10101010101010101010101010101010') {\n\t    this._cipher.scrub()\n\t    throw new Error('data not multiple of block length')\n\t  }\n\t}\n\tCipher.prototype.setAutoPadding = function (setTo) {\n\t  this._autopadding = !!setTo\n\t  return this\n\t}\n\n\tfunction Splitter () {\n\t  if (!(this instanceof Splitter)) {\n\t    return new Splitter()\n\t  }\n\t  this.cache = new Buffer('')\n\t}\n\tSplitter.prototype.add = function (data) {\n\t  this.cache = Buffer.concat([this.cache, data])\n\t}\n\n\tSplitter.prototype.get = function () {\n\t  if (this.cache.length > 15) {\n\t    var out = this.cache.slice(0, 16)\n\t    this.cache = this.cache.slice(16)\n\t    return out\n\t  }\n\t  return null\n\t}\n\tSplitter.prototype.flush = function () {\n\t  var len = 16 - this.cache.length\n\t  var padBuff = new Buffer(len)\n\n\t  var i = -1\n\t  while (++i < len) {\n\t    padBuff.writeUInt8(len, i)\n\t  }\n\t  var out = Buffer.concat([this.cache, padBuff])\n\t  return out\n\t}\n\tvar modelist = {\n\t  ECB: __webpack_require__(146),\n\t  CBC: __webpack_require__(142),\n\t  CFB: __webpack_require__(143),\n\t  CFB8: __webpack_require__(145),\n\t  CFB1: __webpack_require__(144),\n\t  OFB: __webpack_require__(147),\n\t  CTR: __webpack_require__(75),\n\t  GCM: __webpack_require__(75)\n\t}\n\n\tfunction createCipheriv (suite, password, iv) {\n\t  var config = modes[suite.toLowerCase()]\n\t  if (!config) {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t  if (typeof iv === 'string') {\n\t    iv = new Buffer(iv)\n\t  }\n\t  if (typeof password === 'string') {\n\t    password = new Buffer(password)\n\t  }\n\t  if (password.length !== config.key / 8) {\n\t    throw new TypeError('invalid key length ' + password.length)\n\t  }\n\t  if (iv.length !== config.iv) {\n\t    throw new TypeError('invalid iv length ' + iv.length)\n\t  }\n\t  if (config.type === 'stream') {\n\t    return new StreamCipher(modelist[config.mode], password, iv)\n\t  } else if (config.type === 'auth') {\n\t    return new AuthCipher(modelist[config.mode], password, iv)\n\t  }\n\t  return new Cipher(modelist[config.mode], password, iv)\n\t}\n\tfunction createCipher (suite, password) {\n\t  var config = modes[suite.toLowerCase()]\n\t  if (!config) {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t  var keys = ebtk(password, false, config.key, config.iv)\n\t  return createCipheriv(suite, keys.key, keys.iv)\n\t}\n\n\texports.createCipheriv = createCipheriv\n\texports.createCipher = createCipher\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 258 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var zeros = new Buffer(16)\n\tzeros.fill(0)\n\tmodule.exports = GHASH\n\tfunction GHASH (key) {\n\t  this.h = key\n\t  this.state = new Buffer(16)\n\t  this.state.fill(0)\n\t  this.cache = new Buffer('')\n\t}\n\t// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n\t// by Juho Vähä-Herttua\n\tGHASH.prototype.ghash = function (block) {\n\t  var i = -1\n\t  while (++i < block.length) {\n\t    this.state[i] ^= block[i]\n\t  }\n\t  this._multiply()\n\t}\n\n\tGHASH.prototype._multiply = function () {\n\t  var Vi = toArray(this.h)\n\t  var Zi = [0, 0, 0, 0]\n\t  var j, xi, lsb_Vi\n\t  var i = -1\n\t  while (++i < 128) {\n\t    xi = (this.state[~~(i / 8)] & (1 << (7 - i % 8))) !== 0\n\t    if (xi) {\n\t      // Z_i+1 = Z_i ^ V_i\n\t      Zi = xor(Zi, Vi)\n\t    }\n\n\t    // Store the value of LSB(V_i)\n\t    lsb_Vi = (Vi[3] & 1) !== 0\n\n\t    // V_i+1 = V_i >> 1\n\t    for (j = 3; j > 0; j--) {\n\t      Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n\t    }\n\t    Vi[0] = Vi[0] >>> 1\n\n\t    // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n\t    if (lsb_Vi) {\n\t      Vi[0] = Vi[0] ^ (0xe1 << 24)\n\t    }\n\t  }\n\t  this.state = fromArray(Zi)\n\t}\n\tGHASH.prototype.update = function (buf) {\n\t  this.cache = Buffer.concat([this.cache, buf])\n\t  var chunk\n\t  while (this.cache.length >= 16) {\n\t    chunk = this.cache.slice(0, 16)\n\t    this.cache = this.cache.slice(16)\n\t    this.ghash(chunk)\n\t  }\n\t}\n\tGHASH.prototype.final = function (abl, bl) {\n\t  if (this.cache.length) {\n\t    this.ghash(Buffer.concat([this.cache, zeros], 16))\n\t  }\n\t  this.ghash(fromArray([\n\t    0, abl,\n\t    0, bl\n\t  ]))\n\t  return this.state\n\t}\n\n\tfunction toArray (buf) {\n\t  return [\n\t    buf.readUInt32BE(0),\n\t    buf.readUInt32BE(4),\n\t    buf.readUInt32BE(8),\n\t    buf.readUInt32BE(12)\n\t  ]\n\t}\n\tfunction fromArray (out) {\n\t  out = out.map(fixup_uint32)\n\t  var buf = new Buffer(16)\n\t  buf.writeUInt32BE(out[0], 0)\n\t  buf.writeUInt32BE(out[1], 4)\n\t  buf.writeUInt32BE(out[2], 8)\n\t  buf.writeUInt32BE(out[3], 12)\n\t  return buf\n\t}\n\tvar uint_max = Math.pow(2, 32)\n\tfunction fixup_uint32 (x) {\n\t  var ret, x_pos\n\t  ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x\n\t  return ret\n\t}\n\tfunction xor (a, b) {\n\t  return [\n\t    a[0] ^ b[0],\n\t    a[1] ^ b[1],\n\t    a[2] ^ b[2],\n\t    a[3] ^ b[3]\n\t  ]\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 259 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ebtk = __webpack_require__(89)\n\tvar aes = __webpack_require__(93)\n\tvar DES = __webpack_require__(260)\n\tvar desModes = __webpack_require__(261)\n\tvar aesModes = __webpack_require__(74)\n\tfunction createCipher (suite, password) {\n\t  var keyLen, ivLen\n\t  suite = suite.toLowerCase()\n\t  if (aesModes[suite]) {\n\t    keyLen = aesModes[suite].key\n\t    ivLen = aesModes[suite].iv\n\t  } else if (desModes[suite]) {\n\t    keyLen = desModes[suite].key * 8\n\t    ivLen = desModes[suite].iv\n\t  } else {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t  var keys = ebtk(password, false, keyLen, ivLen)\n\t  return createCipheriv(suite, keys.key, keys.iv)\n\t}\n\tfunction createDecipher (suite, password) {\n\t  var keyLen, ivLen\n\t  suite = suite.toLowerCase()\n\t  if (aesModes[suite]) {\n\t    keyLen = aesModes[suite].key\n\t    ivLen = aesModes[suite].iv\n\t  } else if (desModes[suite]) {\n\t    keyLen = desModes[suite].key * 8\n\t    ivLen = desModes[suite].iv\n\t  } else {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t  var keys = ebtk(password, false, keyLen, ivLen)\n\t  return createDecipheriv(suite, keys.key, keys.iv)\n\t}\n\n\tfunction createCipheriv (suite, key, iv) {\n\t  suite = suite.toLowerCase()\n\t  if (aesModes[suite]) {\n\t    return aes.createCipheriv(suite, key, iv)\n\t  } else if (desModes[suite]) {\n\t    return new DES({\n\t      key: key,\n\t      iv: iv,\n\t      mode: suite\n\t    })\n\t  } else {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t}\n\tfunction createDecipheriv (suite, key, iv) {\n\t  suite = suite.toLowerCase()\n\t  if (aesModes[suite]) {\n\t    return aes.createDecipheriv(suite, key, iv)\n\t  } else if (desModes[suite]) {\n\t    return new DES({\n\t      key: key,\n\t      iv: iv,\n\t      mode: suite,\n\t      decrypt: true\n\t    })\n\t  } else {\n\t    throw new TypeError('invalid suite type')\n\t  }\n\t}\n\texports.createCipher = exports.Cipher = createCipher\n\texports.createCipheriv = exports.Cipheriv = createCipheriv\n\texports.createDecipher = exports.Decipher = createDecipher\n\texports.createDecipheriv = exports.Decipheriv = createDecipheriv\n\tfunction getCiphers () {\n\t  return Object.keys(desModes).concat(aes.getCiphers())\n\t}\n\texports.listCiphers = exports.getCiphers = getCiphers\n\n\n/***/ },\n/* 260 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var CipherBase = __webpack_require__(51)\n\tvar des = __webpack_require__(121)\n\tvar inherits = __webpack_require__(2)\n\n\tvar modes = {\n\t  'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n\t  'des-ede3': des.EDE,\n\t  'des-ede-cbc': des.CBC.instantiate(des.EDE),\n\t  'des-ede': des.EDE,\n\t  'des-cbc': des.CBC.instantiate(des.DES),\n\t  'des-ecb': des.DES\n\t}\n\tmodes.des = modes['des-cbc']\n\tmodes.des3 = modes['des-ede3-cbc']\n\tmodule.exports = DES\n\tinherits(DES, CipherBase)\n\tfunction DES (opts) {\n\t  CipherBase.call(this)\n\t  var modeName = opts.mode.toLowerCase()\n\t  var mode = modes[modeName]\n\t  var type\n\t  if (opts.decrypt) {\n\t    type = 'decrypt'\n\t  } else {\n\t    type = 'encrypt'\n\t  }\n\t  var key = opts.key\n\t  if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n\t    key = Buffer.concat([key, key.slice(0, 8)])\n\t  }\n\t  var iv = opts.iv\n\t  this._des = mode.create({\n\t    key: key,\n\t    iv: iv,\n\t    type: type\n\t  })\n\t}\n\tDES.prototype._update = function (data) {\n\t  return new Buffer(this._des.update(data))\n\t}\n\tDES.prototype._final = function () {\n\t  return new Buffer(this._des.final())\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 261 */\n/***/ function(module, exports) {\n\n\texports['des-ecb'] = {\n\t  key: 8,\n\t  iv: 0\n\t}\n\texports['des-cbc'] = exports.des = {\n\t  key: 8,\n\t  iv: 8\n\t}\n\texports['des-ede3-cbc'] = exports.des3 = {\n\t  key: 24,\n\t  iv: 8\n\t}\n\texports['des-ede3'] = {\n\t  key: 24,\n\t  iv: 0\n\t}\n\texports['des-ede-cbc'] = {\n\t  key: 16,\n\t  iv: 8\n\t}\n\texports['des-ede'] = {\n\t  key: 16,\n\t  iv: 0\n\t}\n\n\n/***/ },\n/* 262 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var _algos = __webpack_require__(149)\n\tvar createHash = __webpack_require__(58)\n\tvar inherits = __webpack_require__(2)\n\tvar sign = __webpack_require__(263)\n\tvar stream = __webpack_require__(12)\n\tvar verify = __webpack_require__(264)\n\n\tvar algos = {}\n\tObject.keys(_algos).forEach(function (key) {\n\t  algos[key] = algos[key.toLowerCase()] = _algos[key]\n\t})\n\n\tfunction Sign (algorithm) {\n\t  stream.Writable.call(this)\n\n\t  var data = algos[algorithm]\n\t  if (!data) {\n\t    throw new Error('Unknown message digest')\n\t  }\n\n\t  this._hashType = data.hash\n\t  this._hash = createHash(data.hash)\n\t  this._tag = data.id\n\t  this._signType = data.sign\n\t}\n\tinherits(Sign, stream.Writable)\n\n\tSign.prototype._write = function _write (data, _, done) {\n\t  this._hash.update(data)\n\t  done()\n\t}\n\n\tSign.prototype.update = function update (data, enc) {\n\t  if (typeof data === 'string') {\n\t    data = new Buffer(data, enc)\n\t  }\n\n\t  this._hash.update(data)\n\t  return this\n\t}\n\n\tSign.prototype.sign = function signMethod (key, enc) {\n\t  this.end()\n\t  var hash = this._hash.digest()\n\t  var sig = sign(Buffer.concat([this._tag, hash]), key, this._hashType, this._signType)\n\n\t  return enc ? sig.toString(enc) : sig\n\t}\n\n\tfunction Verify (algorithm) {\n\t  stream.Writable.call(this)\n\n\t  var data = algos[algorithm]\n\t  if (!data) {\n\t    throw new Error('Unknown message digest')\n\t  }\n\n\t  this._hash = createHash(data.hash)\n\t  this._tag = data.id\n\t  this._signType = data.sign\n\t}\n\tinherits(Verify, stream.Writable)\n\n\tVerify.prototype._write = function _write (data, _, done) {\n\t  this._hash.update(data)\n\n\t  done()\n\t}\n\n\tVerify.prototype.update = function update (data, enc) {\n\t  if (typeof data === 'string') {\n\t    data = new Buffer(data, enc)\n\t  }\n\n\t  this._hash.update(data)\n\t  return this\n\t}\n\n\tVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n\t  if (typeof sig === 'string') {\n\t    sig = new Buffer(sig, enc)\n\t  }\n\n\t  this.end()\n\t  var hash = this._hash.digest()\n\n\t  return verify(sig, Buffer.concat([this._tag, hash]), key, this._signType)\n\t}\n\n\tfunction createSign (algorithm) {\n\t  return new Sign(algorithm)\n\t}\n\n\tfunction createVerify (algorithm) {\n\t  return new Verify(algorithm)\n\t}\n\n\tmodule.exports = {\n\t  Sign: createSign,\n\t  Verify: createVerify,\n\t  createSign: createSign,\n\t  createVerify: createVerify\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 263 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\n\tvar createHmac = __webpack_require__(120)\n\tvar crt = __webpack_require__(94)\n\tvar curves = __webpack_require__(150)\n\tvar elliptic = __webpack_require__(18)\n\tvar parseKeys = __webpack_require__(90)\n\n\tvar BN = __webpack_require__(11)\n\tvar EC = elliptic.ec\n\n\tfunction sign (hash, key, hashType, signType) {\n\t  var priv = parseKeys(key)\n\t  if (priv.curve) {\n\t    if (signType !== 'ecdsa') throw new Error('wrong private key type')\n\n\t    return ecSign(hash, priv)\n\t  } else if (priv.type === 'dsa') {\n\t    if (signType !== 'dsa') {\n\t      throw new Error('wrong private key type')\n\t    }\n\t    return dsaSign(hash, priv, hashType)\n\t  } else {\n\t    if (signType !== 'rsa') throw new Error('wrong private key type')\n\t  }\n\n\t  var len = priv.modulus.byteLength()\n\t  var pad = [ 0, 1 ]\n\t  while (hash.length + pad.length + 1 < len) {\n\t    pad.push(0xff)\n\t  }\n\t  pad.push(0x00)\n\t  var i = -1\n\t  while (++i < hash.length) {\n\t    pad.push(hash[i])\n\t  }\n\n\t  var out = crt(pad, priv)\n\t  return out\n\t}\n\n\tfunction ecSign (hash, priv) {\n\t  var curveId = curves[priv.curve.join('.')]\n\t  if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n\t  var curve = new EC(curveId)\n\t  var key = curve.genKeyPair()\n\n\t  key._importPrivate(priv.privateKey)\n\t  var out = key.sign(hash)\n\n\t  return new Buffer(out.toDER())\n\t}\n\n\tfunction dsaSign (hash, priv, algo) {\n\t  var x = priv.params.priv_key\n\t  var p = priv.params.p\n\t  var q = priv.params.q\n\t  var g = priv.params.g\n\t  var r = new BN(0)\n\t  var k\n\t  var H = bits2int(hash, q).mod(q)\n\t  var s = false\n\t  var kv = getKey(x, q, hash, algo)\n\t  while (s === false) {\n\t    k = makeKey(q, kv, algo)\n\t    r = makeR(g, k, p, q)\n\t    s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n\t    if (!s.cmpn(0)) {\n\t      s = false\n\t      r = new BN(0)\n\t    }\n\t  }\n\t  return toDER(r, s)\n\t}\n\n\tfunction toDER (r, s) {\n\t  r = r.toArray()\n\t  s = s.toArray()\n\n\t  // Pad values\n\t  if (r[0] & 0x80) {\n\t    r = [ 0 ].concat(r)\n\t  }\n\t  // Pad values\n\t  if (s[0] & 0x80) {\n\t    s = [0].concat(s)\n\t  }\n\n\t  var total = r.length + s.length + 4\n\t  var res = [ 0x30, total, 0x02, r.length ]\n\t  res = res.concat(r, [ 0x02, s.length ], s)\n\t  return new Buffer(res)\n\t}\n\n\tfunction getKey (x, q, hash, algo) {\n\t  x = new Buffer(x.toArray())\n\t  if (x.length < q.byteLength()) {\n\t    var zeros = new Buffer(q.byteLength() - x.length)\n\t    zeros.fill(0)\n\t    x = Buffer.concat([zeros, x])\n\t  }\n\t  var hlen = hash.length\n\t  var hbits = bits2octets(hash, q)\n\t  var v = new Buffer(hlen)\n\t  v.fill(1)\n\t  var k = new Buffer(hlen)\n\t  k.fill(0)\n\t  k = createHmac(algo, k)\n\t    .update(v)\n\t    .update(new Buffer([0]))\n\t    .update(x)\n\t    .update(hbits)\n\t    .digest()\n\t  v = createHmac(algo, k)\n\t    .update(v)\n\t    .digest()\n\t  k = createHmac(algo, k)\n\t    .update(v)\n\t    .update(new Buffer([1]))\n\t    .update(x)\n\t    .update(hbits)\n\t    .digest()\n\t  v = createHmac(algo, k)\n\t    .update(v)\n\t    .digest()\n\t  return {\n\t    k: k,\n\t    v: v\n\t  }\n\t}\n\n\tfunction bits2int (obits, q) {\n\t  var bits = new BN(obits)\n\t  var shift = (obits.length << 3) - q.bitLength()\n\t  if (shift > 0) {\n\t    bits.ishrn(shift)\n\t  }\n\t  return bits\n\t}\n\n\tfunction bits2octets (bits, q) {\n\t  bits = bits2int(bits, q)\n\t  bits = bits.mod(q)\n\t  var out = new Buffer(bits.toArray())\n\t  if (out.length < q.byteLength()) {\n\t    var zeros = new Buffer(q.byteLength() - out.length)\n\t    zeros.fill(0)\n\t    out = Buffer.concat([zeros, out])\n\t  }\n\t  return out\n\t}\n\n\tfunction makeKey (q, kv, algo) {\n\t  var t, k\n\n\t  do {\n\t    t = new Buffer('')\n\n\t    while (t.length * 8 < q.bitLength()) {\n\t      kv.v = createHmac(algo, kv.k)\n\t        .update(kv.v)\n\t        .digest()\n\t      t = Buffer.concat([t, kv.v])\n\t    }\n\n\t    k = bits2int(t, q)\n\t    kv.k = createHmac(algo, kv.k)\n\t      .update(kv.v)\n\t      .update(new Buffer([0]))\n\t      .digest()\n\t    kv.v = createHmac(algo, kv.k)\n\t      .update(kv.v)\n\t      .digest()\n\t  } while (k.cmp(q) !== -1)\n\n\t  return k\n\t}\n\n\tfunction makeR (g, k, p, q) {\n\t  return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n\t}\n\n\tmodule.exports = sign\n\tmodule.exports.getKey = getKey\n\tmodule.exports.makeKey = makeKey\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 264 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\n\tvar curves = __webpack_require__(150)\n\tvar elliptic = __webpack_require__(18)\n\tvar parseKeys = __webpack_require__(90)\n\n\tvar BN = __webpack_require__(11)\n\tvar EC = elliptic.ec\n\n\tfunction verify (sig, hash, key, signType) {\n\t  var pub = parseKeys(key)\n\t  if (pub.type === 'ec') {\n\t    if (signType !== 'ecdsa') {\n\t      throw new Error('wrong public key type')\n\t    }\n\t    return ecVerify(sig, hash, pub)\n\t  } else if (pub.type === 'dsa') {\n\t    if (signType !== 'dsa') {\n\t      throw new Error('wrong public key type')\n\t    }\n\t    return dsaVerify(sig, hash, pub)\n\t  } else {\n\t    if (signType !== 'rsa') {\n\t      throw new Error('wrong public key type')\n\t    }\n\t  }\n\t  var len = pub.modulus.byteLength()\n\t  var pad = [ 1 ]\n\t  var padNum = 0\n\t  while (hash.length + pad.length + 2 < len) {\n\t    pad.push(0xff)\n\t    padNum++\n\t  }\n\t  pad.push(0x00)\n\t  var i = -1\n\t  while (++i < hash.length) {\n\t    pad.push(hash[i])\n\t  }\n\t  pad = new Buffer(pad)\n\t  var red = BN.mont(pub.modulus)\n\t  sig = new BN(sig).toRed(red)\n\n\t  sig = sig.redPow(new BN(pub.publicExponent))\n\n\t  sig = new Buffer(sig.fromRed().toArray())\n\t  var out = 0\n\t  if (padNum < 8) {\n\t    out = 1\n\t  }\n\t  len = Math.min(sig.length, pad.length)\n\t  if (sig.length !== pad.length) {\n\t    out = 1\n\t  }\n\n\t  i = -1\n\t  while (++i < len) {\n\t    out |= (sig[i] ^ pad[i])\n\t  }\n\t  return out === 0\n\t}\n\n\tfunction ecVerify (sig, hash, pub) {\n\t  var curveId = curves[pub.data.algorithm.curve.join('.')]\n\t  if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n\t  var curve = new EC(curveId)\n\t  var pubkey = pub.data.subjectPrivateKey.data\n\n\t  return curve.verify(hash, sig, pubkey)\n\t}\n\n\tfunction dsaVerify (sig, hash, pub) {\n\t  var p = pub.data.p\n\t  var q = pub.data.q\n\t  var g = pub.data.g\n\t  var y = pub.data.pub_key\n\t  var unpacked = parseKeys.signature.decode(sig, 'der')\n\t  var s = unpacked.s\n\t  var r = unpacked.r\n\t  checkValue(s, q)\n\t  checkValue(r, q)\n\t  var montp = BN.mont(p)\n\t  var w = s.invm(q)\n\t  var v = g.toRed(montp)\n\t    .redPow(new BN(hash).mul(w).mod(q))\n\t    .fromRed()\n\t    .mul(\n\t      y.toRed(montp)\n\t        .redPow(r.mul(w).mod(q))\n\t        .fromRed()\n\t  ).mod(p).mod(q)\n\t  return !v.cmp(r)\n\t}\n\n\tfunction checkValue (b, q) {\n\t  if (b.cmpn(0) <= 0) {\n\t    throw new Error('invalid sig')\n\t  }\n\t  if (b.cmp(q) >= q) {\n\t    throw new Error('invalid sig')\n\t  }\n\t}\n\n\tmodule.exports = verify\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 265 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar basex = __webpack_require__(253)\n\tvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\tvar base58 = basex(ALPHABET)\n\n\tmodule.exports = {\n\t  encode: base58.encode,\n\t  decode: base58.decode\n\t}\n\n\n/***/ },\n/* 266 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\n\tmodule.exports = Array.isArray || function (arr) {\n\t  return toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ },\n/* 267 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t  \"100\": \"Continue\",\n\t  \"101\": \"Switching Protocols\",\n\t  \"102\": \"Processing\",\n\t  \"200\": \"OK\",\n\t  \"201\": \"Created\",\n\t  \"202\": \"Accepted\",\n\t  \"203\": \"Non-Authoritative Information\",\n\t  \"204\": \"No Content\",\n\t  \"205\": \"Reset Content\",\n\t  \"206\": \"Partial Content\",\n\t  \"207\": \"Multi-Status\",\n\t  \"208\": \"Already Reported\",\n\t  \"226\": \"IM Used\",\n\t  \"300\": \"Multiple Choices\",\n\t  \"301\": \"Moved Permanently\",\n\t  \"302\": \"Found\",\n\t  \"303\": \"See Other\",\n\t  \"304\": \"Not Modified\",\n\t  \"305\": \"Use Proxy\",\n\t  \"307\": \"Temporary Redirect\",\n\t  \"308\": \"Permanent Redirect\",\n\t  \"400\": \"Bad Request\",\n\t  \"401\": \"Unauthorized\",\n\t  \"402\": \"Payment Required\",\n\t  \"403\": \"Forbidden\",\n\t  \"404\": \"Not Found\",\n\t  \"405\": \"Method Not Allowed\",\n\t  \"406\": \"Not Acceptable\",\n\t  \"407\": \"Proxy Authentication Required\",\n\t  \"408\": \"Request Timeout\",\n\t  \"409\": \"Conflict\",\n\t  \"410\": \"Gone\",\n\t  \"411\": \"Length Required\",\n\t  \"412\": \"Precondition Failed\",\n\t  \"413\": \"Payload Too Large\",\n\t  \"414\": \"URI Too Long\",\n\t  \"415\": \"Unsupported Media Type\",\n\t  \"416\": \"Range Not Satisfiable\",\n\t  \"417\": \"Expectation Failed\",\n\t  \"418\": \"I'm a teapot\",\n\t  \"421\": \"Misdirected Request\",\n\t  \"422\": \"Unprocessable Entity\",\n\t  \"423\": \"Locked\",\n\t  \"424\": \"Failed Dependency\",\n\t  \"425\": \"Unordered Collection\",\n\t  \"426\": \"Upgrade Required\",\n\t  \"428\": \"Precondition Required\",\n\t  \"429\": \"Too Many Requests\",\n\t  \"431\": \"Request Header Fields Too Large\",\n\t  \"500\": \"Internal Server Error\",\n\t  \"501\": \"Not Implemented\",\n\t  \"502\": \"Bad Gateway\",\n\t  \"503\": \"Service Unavailable\",\n\t  \"504\": \"Gateway Timeout\",\n\t  \"505\": \"HTTP Version Not Supported\",\n\t  \"506\": \"Variant Also Negotiates\",\n\t  \"507\": \"Insufficient Storage\",\n\t  \"508\": \"Loop Detected\",\n\t  \"509\": \"Bandwidth Limit Exceeded\",\n\t  \"510\": \"Not Extended\",\n\t  \"511\": \"Network Authentication Required\"\n\t}\n\n\n/***/ },\n/* 268 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function (xs, fn) {\n\t    var res = [];\n\t    for (var i = 0; i < xs.length; i++) {\n\t        var x = fn(xs[i], i);\n\t        if (isArray(x)) res.push.apply(res, x);\n\t        else res.push(x);\n\t    }\n\t    return res;\n\t};\n\n\tvar isArray = Array.isArray || function (xs) {\n\t    return Object.prototype.toString.call(xs) === '[object Array]';\n\t};\n\n\n/***/ },\n/* 269 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(279);\n\tmodule.exports = __webpack_require__(33).RegExp.escape;\n\n/***/ },\n/* 270 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(6)\r\n\t  , isArray  = __webpack_require__(103)\r\n\t  , SPECIES  = __webpack_require__(7)('species');\r\n\r\n\tmodule.exports = function(original){\r\n\t  var C;\r\n\t  if(isArray(original)){\r\n\t    C = original.constructor;\r\n\t    // cross-realm fallback\r\n\t    if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;\r\n\t    if(isObject(C)){\r\n\t      C = C[SPECIES];\r\n\t      if(C === null)C = undefined;\r\n\t    }\r\n\t  } return C === undefined ? Array : C;\r\n\t};\n\n/***/ },\n/* 271 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\n\tvar speciesConstructor = __webpack_require__(270);\n\n\tmodule.exports = function(original, length){\n\t  return new (speciesConstructor(original))(length);\n\t};\n\n/***/ },\n/* 272 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar anObject    = __webpack_require__(3)\r\n\t  , toPrimitive = __webpack_require__(31)\r\n\t  , NUMBER      = 'number';\r\n\r\n\tmodule.exports = function(hint){\r\n\t  if(hint !== 'string' && hint !== NUMBER && hint !== 'default')throw TypeError('Incorrect hint');\r\n\t  return toPrimitive(anObject(this), hint != NUMBER);\r\n\t};\n\n/***/ },\n/* 273 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// all enumerable object keys, includes symbols\n\tvar getKeys = __webpack_require__(45)\n\t  , gOPS    = __webpack_require__(84)\n\t  , pIE     = __webpack_require__(68);\n\tmodule.exports = function(it){\n\t  var result     = getKeys(it)\n\t    , getSymbols = gOPS.f;\n\t  if(getSymbols){\n\t    var symbols = getSymbols(it)\n\t      , isEnum  = pIE.f\n\t      , i       = 0\n\t      , key;\n\t    while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n\t  } return result;\n\t};\n\n/***/ },\n/* 274 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getKeys   = __webpack_require__(45)\n\t  , toIObject = __webpack_require__(22);\n\tmodule.exports = function(object, el){\n\t  var O      = toIObject(object)\n\t    , keys   = getKeys(O)\n\t    , length = keys.length\n\t    , index  = 0\n\t    , key;\n\t  while(length > index)if(O[key = keys[index++]] === el)return key;\n\t};\n\n/***/ },\n/* 275 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar path      = __webpack_require__(276)\n\t  , invoke    = __webpack_require__(80)\n\t  , aFunction = __webpack_require__(25);\n\tmodule.exports = function(/* ...pargs */){\n\t  var fn     = aFunction(this)\n\t    , length = arguments.length\n\t    , pargs  = Array(length)\n\t    , i      = 0\n\t    , _      = path._\n\t    , holder = false;\n\t  while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;\n\t  return function(/* ...args */){\n\t    var that = this\n\t      , aLen = arguments.length\n\t      , j = 0, k = 0, args;\n\t    if(!holder && !aLen)return invoke(fn, pargs, that);\n\t    args = pargs.slice();\n\t    if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];\n\t    while(aLen > k)args.push(arguments[k++]);\n\t    return invoke(fn, args, that);\n\t  };\n\t};\n\n/***/ },\n/* 276 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(5);\n\n/***/ },\n/* 277 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(regExp, replace){\n\t  var replacer = replace === Object(replace) ? function(part){\n\t    return replace[part];\n\t  } : replace;\n\t  return function(it){\n\t    return String(it).replace(regExp, replacer);\n\t  };\n\t};\n\n/***/ },\n/* 278 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar classof   = __webpack_require__(53)\n\t  , ITERATOR  = __webpack_require__(7)('iterator')\n\t  , Iterators = __webpack_require__(41);\n\tmodule.exports = __webpack_require__(33).isIterable = function(it){\n\t  var O = Object(it);\n\t  return O[ITERATOR] !== undefined\n\t    || '@@iterator' in O\n\t    || Iterators.hasOwnProperty(classof(O));\n\t};\n\n/***/ },\n/* 279 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/benjamingr/RexExp.escape\n\tvar $export = __webpack_require__(0)\n\t  , $re     = __webpack_require__(277)(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n\t$export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }});\n\n\n/***/ },\n/* 280 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.P, 'Array', {copyWithin: __webpack_require__(152)});\n\n\t__webpack_require__(52)('copyWithin');\n\n/***/ },\n/* 281 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export = __webpack_require__(0)\r\n\t  , $every  = __webpack_require__(29)(4);\r\n\r\n\t$export($export.P + $export.F * !__webpack_require__(28)([].every, true), 'Array', {\r\n\t  // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\r\n\t  every: function every(callbackfn /* , thisArg */){\r\n\t    return $every(this, callbackfn, arguments[1]);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 282 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.P, 'Array', {fill: __webpack_require__(95)});\n\n\t__webpack_require__(52)('fill');\n\n/***/ },\n/* 283 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $export = __webpack_require__(0)\n\t  , $filter = __webpack_require__(29)(2);\n\n\t$export($export.P + $export.F * !__webpack_require__(28)([].filter, true), 'Array', {\n\t  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n\t  filter: function filter(callbackfn /* , thisArg */){\n\t    return $filter(this, callbackfn, arguments[1]);\n\t  }\n\t});\n\n/***/ },\n/* 284 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\n\tvar $export = __webpack_require__(0)\n\t  , $find   = __webpack_require__(29)(6)\n\t  , KEY     = 'findIndex'\n\t  , forced  = true;\n\t// Shouldn't skip holes\n\tif(KEY in [])Array(1)[KEY](function(){ forced = false; });\n\t$export($export.P + $export.F * forced, 'Array', {\n\t  findIndex: function findIndex(callbackfn/*, that = undefined */){\n\t    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t  }\n\t});\n\t__webpack_require__(52)(KEY);\n\n/***/ },\n/* 285 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\n\tvar $export = __webpack_require__(0)\n\t  , $find   = __webpack_require__(29)(5)\n\t  , KEY     = 'find'\n\t  , forced  = true;\n\t// Shouldn't skip holes\n\tif(KEY in [])Array(1)[KEY](function(){ forced = false; });\n\t$export($export.P + $export.F * forced, 'Array', {\n\t  find: function find(callbackfn/*, that = undefined */){\n\t    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n\t  }\n\t});\n\t__webpack_require__(52)(KEY);\n\n/***/ },\n/* 286 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export  = __webpack_require__(0)\r\n\t  , $forEach = __webpack_require__(29)(0)\r\n\t  , STRICT   = __webpack_require__(28)([].forEach, true);\r\n\r\n\t$export($export.P + $export.F * !STRICT, 'Array', {\r\n\t  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\r\n\t  forEach: function forEach(callbackfn /* , thisArg */){\r\n\t    return $forEach(this, callbackfn, arguments[1]);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 287 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar ctx            = __webpack_require__(34)\n\t  , $export        = __webpack_require__(0)\n\t  , toObject       = __webpack_require__(14)\n\t  , call           = __webpack_require__(160)\n\t  , isArrayIter    = __webpack_require__(102)\n\t  , toLength       = __webpack_require__(13)\n\t  , createProperty = __webpack_require__(96)\n\t  , getIterFn      = __webpack_require__(118);\n\n\t$export($export.S + $export.F * !__webpack_require__(82)(function(iter){ Array.from(iter); }), 'Array', {\n\t  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n\t  from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){\n\t    var O       = toObject(arrayLike)\n\t      , C       = typeof this == 'function' ? this : Array\n\t      , aLen    = arguments.length\n\t      , mapfn   = aLen > 1 ? arguments[1] : undefined\n\t      , mapping = mapfn !== undefined\n\t      , index   = 0\n\t      , iterFn  = getIterFn(O)\n\t      , length, result, step, iterator;\n\t    if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n\t    // if object isn't iterable or it's array with default iterator - use simple case\n\t    if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){\n\t      for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){\n\t        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n\t      }\n\t    } else {\n\t      length = toLength(O.length);\n\t      for(result = new C(length); length > index; index++){\n\t        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n\t      }\n\t    }\n\t    result.length = index;\n\t    return result;\n\t  }\n\t});\n\n\n/***/ },\n/* 288 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export       = __webpack_require__(0)\r\n\t  , $indexOf      = __webpack_require__(76)(false)\r\n\t  , $native       = [].indexOf\r\n\t  , NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\r\n\r\n\t$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(28)($native)), 'Array', {\r\n\t  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\r\n\t  indexOf: function indexOf(searchElement /*, fromIndex = 0 */){\r\n\t    return NEGATIVE_ZERO\r\n\t      // convert -0 to +0\r\n\t      ? $native.apply(this, arguments) || 0\r\n\t      : $indexOf(this, searchElement, arguments[1]);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 289 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\r\n\tvar $export = __webpack_require__(0);\r\n\r\n\t$export($export.S, 'Array', {isArray: __webpack_require__(103)});\n\n/***/ },\n/* 290 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\t// 22.1.3.13 Array.prototype.join(separator)\r\n\tvar $export   = __webpack_require__(0)\r\n\t  , toIObject = __webpack_require__(22)\r\n\t  , arrayJoin = [].join;\r\n\r\n\t// fallback for not array-like strings\r\n\t$export($export.P + $export.F * (__webpack_require__(67) != Object || !__webpack_require__(28)(arrayJoin)), 'Array', {\r\n\t  join: function join(separator){\r\n\t    return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 291 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export       = __webpack_require__(0)\r\n\t  , toIObject     = __webpack_require__(22)\r\n\t  , toInteger     = __webpack_require__(39)\r\n\t  , toLength      = __webpack_require__(13)\r\n\t  , $native       = [].lastIndexOf\r\n\t  , NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\r\n\r\n\t$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(28)($native)), 'Array', {\r\n\t  // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\r\n\t  lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){\r\n\t    // convert -0 to +0\r\n\t    if(NEGATIVE_ZERO)return $native.apply(this, arguments) || 0;\r\n\t    var O      = toIObject(this)\r\n\t      , length = toLength(O.length)\r\n\t      , index  = length - 1;\r\n\t    if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));\r\n\t    if(index < 0)index = length + index;\r\n\t    for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index || 0;\r\n\t    return -1;\r\n\t  }\r\n\t});\n\n/***/ },\n/* 292 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export = __webpack_require__(0)\r\n\t  , $map    = __webpack_require__(29)(1);\r\n\r\n\t$export($export.P + $export.F * !__webpack_require__(28)([].map, true), 'Array', {\r\n\t  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\r\n\t  map: function map(callbackfn /* , thisArg */){\r\n\t    return $map(this, callbackfn, arguments[1]);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 293 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $export        = __webpack_require__(0)\n\t  , createProperty = __webpack_require__(96);\n\n\t// WebKit Array.of isn't generic\n\t$export($export.S + $export.F * __webpack_require__(4)(function(){\n\t  function F(){}\n\t  return !(Array.of.call(F) instanceof F);\n\t}), 'Array', {\n\t  // 22.1.2.3 Array.of( ...items)\n\t  of: function of(/* ...args */){\n\t    var index  = 0\n\t      , aLen   = arguments.length\n\t      , result = new (typeof this == 'function' ? this : Array)(aLen);\n\t    while(aLen > index)createProperty(result, index, arguments[index++]);\n\t    result.length = aLen;\n\t    return result;\n\t  }\n\t});\n\n/***/ },\n/* 294 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export = __webpack_require__(0)\r\n\t  , $reduce = __webpack_require__(154);\r\n\r\n\t$export($export.P + $export.F * !__webpack_require__(28)([].reduceRight, true), 'Array', {\r\n\t  // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\r\n\t  reduceRight: function reduceRight(callbackfn /* , initialValue */){\r\n\t    return $reduce(this, callbackfn, arguments.length, arguments[1], true);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 295 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export = __webpack_require__(0)\r\n\t  , $reduce = __webpack_require__(154);\r\n\r\n\t$export($export.P + $export.F * !__webpack_require__(28)([].reduce, true), 'Array', {\r\n\t  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\r\n\t  reduce: function reduce(callbackfn /* , initialValue */){\r\n\t    return $reduce(this, callbackfn, arguments.length, arguments[1], false);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 296 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export    = __webpack_require__(0)\r\n\t  , html       = __webpack_require__(100)\r\n\t  , cof        = __webpack_require__(26)\r\n\t  , toIndex    = __webpack_require__(46)\r\n\t  , toLength   = __webpack_require__(13)\r\n\t  , arraySlice = [].slice;\r\n\r\n\t// fallback for not array-like ES3 strings and DOM objects\r\n\t$export($export.P + $export.F * __webpack_require__(4)(function(){\r\n\t  if(html)arraySlice.call(html);\r\n\t}), 'Array', {\r\n\t  slice: function slice(begin, end){\r\n\t    var len   = toLength(this.length)\r\n\t      , klass = cof(this);\r\n\t    end = end === undefined ? len : end;\r\n\t    if(klass == 'Array')return arraySlice.call(this, begin, end);\r\n\t    var start  = toIndex(begin, len)\r\n\t      , upTo   = toIndex(end, len)\r\n\t      , size   = toLength(upTo - start)\r\n\t      , cloned = Array(size)\r\n\t      , i      = 0;\r\n\t    for(; i < size; i++)cloned[i] = klass == 'String'\r\n\t      ? this.charAt(start + i)\r\n\t      : this[start + i];\r\n\t    return cloned;\r\n\t  }\r\n\t});\n\n/***/ },\n/* 297 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export = __webpack_require__(0)\r\n\t  , $some   = __webpack_require__(29)(3);\r\n\r\n\t$export($export.P + $export.F * !__webpack_require__(28)([].some, true), 'Array', {\r\n\t  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\r\n\t  some: function some(callbackfn /* , thisArg */){\r\n\t    return $some(this, callbackfn, arguments[1]);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 298 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export   = __webpack_require__(0)\r\n\t  , aFunction = __webpack_require__(25)\r\n\t  , toObject  = __webpack_require__(14)\r\n\t  , fails     = __webpack_require__(4)\r\n\t  , $sort     = [].sort\r\n\t  , test      = [1, 2, 3];\r\n\r\n\t$export($export.P + $export.F * (fails(function(){\r\n\t  // IE8-\r\n\t  test.sort(undefined);\r\n\t}) || !fails(function(){\r\n\t  // V8 bug\r\n\t  test.sort(null);\r\n\t  // Old WebKit\r\n\t}) || !__webpack_require__(28)($sort)), 'Array', {\r\n\t  // 22.1.3.25 Array.prototype.sort(comparefn)\r\n\t  sort: function sort(comparefn){\r\n\t    return comparefn === undefined\r\n\t      ? $sort.call(toObject(this))\r\n\t      : $sort.call(toObject(this), aFunction(comparefn));\r\n\t  }\r\n\t});\n\n/***/ },\n/* 299 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(55)('Array');\n\n/***/ },\n/* 300 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.3.3.1 / 15.9.4.4 Date.now()\r\n\tvar $export = __webpack_require__(0);\r\n\r\n\t$export($export.S, 'Date', {now: function(){ return new Date().getTime(); }});\n\n/***/ },\n/* 301 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\t// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\r\n\tvar $export = __webpack_require__(0)\r\n\t  , fails   = __webpack_require__(4)\r\n\t  , getTime = Date.prototype.getTime;\r\n\r\n\tvar lz = function(num){\r\n\t  return num > 9 ? num : '0' + num;\r\n\t};\r\n\r\n\t// PhantomJS / old WebKit has a broken implementations\r\n\t$export($export.P + $export.F * (fails(function(){\r\n\t  return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';\r\n\t}) || !fails(function(){\r\n\t  new Date(NaN).toISOString();\r\n\t})), 'Date', {\r\n\t  toISOString: function toISOString(){\r\n\t    if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');\r\n\t    var d = this\r\n\t      , y = d.getUTCFullYear()\r\n\t      , m = d.getUTCMilliseconds()\r\n\t      , s = y < 0 ? '-' : y > 9999 ? '+' : '';\r\n\t    return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\r\n\t      '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\r\n\t      'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\r\n\t      ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\r\n\t  }\r\n\t});\n\n/***/ },\n/* 302 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $export     = __webpack_require__(0)\n\t  , toObject    = __webpack_require__(14)\n\t  , toPrimitive = __webpack_require__(31);\n\n\t$export($export.P + $export.F * __webpack_require__(4)(function(){\n\t  return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1;\n\t}), 'Date', {\n\t  toJSON: function toJSON(key){\n\t    var O  = toObject(this)\n\t      , pv = toPrimitive(O);\n\t    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n\t  }\n\t});\n\n/***/ },\n/* 303 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar TO_PRIMITIVE = __webpack_require__(7)('toPrimitive')\r\n\t  , proto        = Date.prototype;\r\n\r\n\tif(!(TO_PRIMITIVE in proto))__webpack_require__(19)(proto, TO_PRIMITIVE, __webpack_require__(272));\n\n/***/ },\n/* 304 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar DateProto    = Date.prototype\n\t  , INVALID_DATE = 'Invalid Date'\n\t  , TO_STRING    = 'toString'\n\t  , $toString    = DateProto[TO_STRING]\n\t  , getTime      = DateProto.getTime;\n\tif(new Date(NaN) + '' != INVALID_DATE){\n\t  __webpack_require__(20)(DateProto, TO_STRING, function toString(){\n\t    var value = getTime.call(this);\n\t    return value === value ? $toString.call(this) : INVALID_DATE;\n\t  });\n\t}\n\n/***/ },\n/* 305 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\r\n\tvar $export = __webpack_require__(0);\r\n\r\n\t$export($export.P, 'Function', {bind: __webpack_require__(155)});\n\n/***/ },\n/* 306 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar isObject       = __webpack_require__(6)\n\t  , getPrototypeOf = __webpack_require__(24)\n\t  , HAS_INSTANCE   = __webpack_require__(7)('hasInstance')\n\t  , FunctionProto  = Function.prototype;\n\t// 19.2.3.6 Function.prototype[@@hasInstance](V)\n\tif(!(HAS_INSTANCE in FunctionProto))__webpack_require__(10).f(FunctionProto, HAS_INSTANCE, {value: function(O){\n\t  if(typeof this != 'function' || !isObject(O))return false;\n\t  if(!isObject(this.prototype))return O instanceof this;\n\t  // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n\t  while(O = getPrototypeOf(O))if(this.prototype === O)return true;\n\t  return false;\n\t}});\n\n/***/ },\n/* 307 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar dP         = __webpack_require__(10).f\n\t  , createDesc = __webpack_require__(38)\n\t  , has        = __webpack_require__(16)\n\t  , FProto     = Function.prototype\n\t  , nameRE     = /^\\s*function ([^ (]*)/\n\t  , NAME       = 'name';\n\n\tvar isExtensible = Object.isExtensible || function(){\n\t  return true;\n\t};\n\n\t// 19.2.4.2 name\n\tNAME in FProto || __webpack_require__(9) && dP(FProto, NAME, {\n\t  configurable: true,\n\t  get: function(){\n\t    try {\n\t      var that = this\n\t        , name = ('' + that).match(nameRE)[1];\n\t      has(that, NAME) || !isExtensible(that) || dP(that, NAME, createDesc(5, name));\n\t      return name;\n\t    } catch(e){\n\t      return '';\n\t    }\n\t  }\n\t});\n\n/***/ },\n/* 308 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.3 Math.acosh(x)\n\tvar $export = __webpack_require__(0)\n\t  , log1p   = __webpack_require__(162)\n\t  , sqrt    = Math.sqrt\n\t  , $acosh  = Math.acosh;\n\n\t$export($export.S + $export.F * !($acosh\n\t  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n\t  && Math.floor($acosh(Number.MAX_VALUE)) == 710\n\t  // Tor Browser bug: Math.acosh(Infinity) -> NaN \n\t  && $acosh(Infinity) == Infinity\n\t), 'Math', {\n\t  acosh: function acosh(x){\n\t    return (x = +x) < 1 ? NaN : x > 94906265.62425156\n\t      ? Math.log(x) + Math.LN2\n\t      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n\t  }\n\t});\n\n/***/ },\n/* 309 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.5 Math.asinh(x)\n\tvar $export = __webpack_require__(0)\n\t  , $asinh  = Math.asinh;\n\n\tfunction asinh(x){\n\t  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n\t}\n\n\t// Tor Browser bug: Math.asinh(0) -> -0 \n\t$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', {asinh: asinh});\n\n/***/ },\n/* 310 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.7 Math.atanh(x)\n\tvar $export = __webpack_require__(0)\n\t  , $atanh  = Math.atanh;\n\n\t// Tor Browser bug: Math.atanh(-0) -> 0 \n\t$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n\t  atanh: function atanh(x){\n\t    return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n\t  }\n\t});\n\n/***/ },\n/* 311 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.9 Math.cbrt(x)\n\tvar $export = __webpack_require__(0)\n\t  , sign    = __webpack_require__(108);\n\n\t$export($export.S, 'Math', {\n\t  cbrt: function cbrt(x){\n\t    return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n\t  }\n\t});\n\n/***/ },\n/* 312 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.11 Math.clz32(x)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  clz32: function clz32(x){\n\t    return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n\t  }\n\t});\n\n/***/ },\n/* 313 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.12 Math.cosh(x)\n\tvar $export = __webpack_require__(0)\n\t  , exp     = Math.exp;\n\n\t$export($export.S, 'Math', {\n\t  cosh: function cosh(x){\n\t    return (exp(x = +x) + exp(-x)) / 2;\n\t  }\n\t});\n\n/***/ },\n/* 314 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.14 Math.expm1(x)\n\tvar $export = __webpack_require__(0)\n\t  , $expm1  = __webpack_require__(107);\n\n\t$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', {expm1: $expm1});\n\n/***/ },\n/* 315 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.16 Math.fround(x)\n\tvar $export   = __webpack_require__(0)\n\t  , sign      = __webpack_require__(108)\n\t  , pow       = Math.pow\n\t  , EPSILON   = pow(2, -52)\n\t  , EPSILON32 = pow(2, -23)\n\t  , MAX32     = pow(2, 127) * (2 - EPSILON32)\n\t  , MIN32     = pow(2, -126);\n\n\tvar roundTiesToEven = function(n){\n\t  return n + 1 / EPSILON - 1 / EPSILON;\n\t};\n\n\n\t$export($export.S, 'Math', {\n\t  fround: function fround(x){\n\t    var $abs  = Math.abs(x)\n\t      , $sign = sign(x)\n\t      , a, result;\n\t    if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n\t    a = (1 + EPSILON32 / EPSILON) * $abs;\n\t    result = a - (a - $abs);\n\t    if(result > MAX32 || result != result)return $sign * Infinity;\n\t    return $sign * result;\n\t  }\n\t});\n\n/***/ },\n/* 316 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\n\tvar $export = __webpack_require__(0)\n\t  , abs     = Math.abs;\n\n\t$export($export.S, 'Math', {\n\t  hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars\n\t    var sum  = 0\n\t      , i    = 0\n\t      , aLen = arguments.length\n\t      , larg = 0\n\t      , arg, div;\n\t    while(i < aLen){\n\t      arg = abs(arguments[i++]);\n\t      if(larg < arg){\n\t        div  = larg / arg;\n\t        sum  = sum * div * div + 1;\n\t        larg = arg;\n\t      } else if(arg > 0){\n\t        div  = arg / larg;\n\t        sum += div * div;\n\t      } else sum += arg;\n\t    }\n\t    return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n\t  }\n\t});\n\n/***/ },\n/* 317 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.18 Math.imul(x, y)\n\tvar $export = __webpack_require__(0)\n\t  , $imul   = Math.imul;\n\n\t// some WebKit versions fails with big numbers, some has wrong arity\n\t$export($export.S + $export.F * __webpack_require__(4)(function(){\n\t  return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n\t}), 'Math', {\n\t  imul: function imul(x, y){\n\t    var UINT16 = 0xffff\n\t      , xn = +x\n\t      , yn = +y\n\t      , xl = UINT16 & xn\n\t      , yl = UINT16 & yn;\n\t    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n\t  }\n\t});\n\n/***/ },\n/* 318 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.21 Math.log10(x)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  log10: function log10(x){\n\t    return Math.log(x) / Math.LN10;\n\t  }\n\t});\n\n/***/ },\n/* 319 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.20 Math.log1p(x)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {log1p: __webpack_require__(162)});\n\n/***/ },\n/* 320 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.22 Math.log2(x)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  log2: function log2(x){\n\t    return Math.log(x) / Math.LN2;\n\t  }\n\t});\n\n/***/ },\n/* 321 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.28 Math.sign(x)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {sign: __webpack_require__(108)});\n\n/***/ },\n/* 322 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.30 Math.sinh(x)\n\tvar $export = __webpack_require__(0)\n\t  , expm1   = __webpack_require__(107)\n\t  , exp     = Math.exp;\n\n\t// V8 near Chromium 38 has a problem with very small numbers\n\t$export($export.S + $export.F * __webpack_require__(4)(function(){\n\t  return !Math.sinh(-2e-17) != -2e-17;\n\t}), 'Math', {\n\t  sinh: function sinh(x){\n\t    return Math.abs(x = +x) < 1\n\t      ? (expm1(x) - expm1(-x)) / 2\n\t      : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n\t  }\n\t});\n\n/***/ },\n/* 323 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.33 Math.tanh(x)\n\tvar $export = __webpack_require__(0)\n\t  , expm1   = __webpack_require__(107)\n\t  , exp     = Math.exp;\n\n\t$export($export.S, 'Math', {\n\t  tanh: function tanh(x){\n\t    var a = expm1(x = +x)\n\t      , b = expm1(-x);\n\t    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n\t  }\n\t});\n\n/***/ },\n/* 324 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.2.2.34 Math.trunc(x)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  trunc: function trunc(it){\n\t    return (it > 0 ? Math.floor : Math.ceil)(it);\n\t  }\n\t});\n\n/***/ },\n/* 325 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar global            = __webpack_require__(5)\n\t  , has               = __webpack_require__(16)\n\t  , cof               = __webpack_require__(26)\n\t  , inheritIfRequired = __webpack_require__(101)\n\t  , toPrimitive       = __webpack_require__(31)\n\t  , fails             = __webpack_require__(4)\n\t  , gOPN              = __webpack_require__(44).f\n\t  , gOPD              = __webpack_require__(23).f\n\t  , dP                = __webpack_require__(10).f\n\t  , $trim             = __webpack_require__(57).trim\n\t  , NUMBER            = 'Number'\n\t  , $Number           = global[NUMBER]\n\t  , Base              = $Number\n\t  , proto             = $Number.prototype\n\t  // Opera ~12 has broken Object#toString\n\t  , BROKEN_COF        = cof(__webpack_require__(43)(proto)) == NUMBER\n\t  , TRIM              = 'trim' in String.prototype;\n\n\t// 7.1.3 ToNumber(argument)\n\tvar toNumber = function(argument){\n\t  var it = toPrimitive(argument, false);\n\t  if(typeof it == 'string' && it.length > 2){\n\t    it = TRIM ? it.trim() : $trim(it, 3);\n\t    var first = it.charCodeAt(0)\n\t      , third, radix, maxCode;\n\t    if(first === 43 || first === 45){\n\t      third = it.charCodeAt(2);\n\t      if(third === 88 || third === 120)return NaN; // Number('+0x1') should be NaN, old V8 fix\n\t    } else if(first === 48){\n\t      switch(it.charCodeAt(1)){\n\t        case 66 : case 98  : radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n\t        case 79 : case 111 : radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n\t        default : return +it;\n\t      }\n\t      for(var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++){\n\t        code = digits.charCodeAt(i);\n\t        // parseInt parses a string to a first unavailable symbol\n\t        // but ToNumber should return NaN if a string contains unavailable symbols\n\t        if(code < 48 || code > maxCode)return NaN;\n\t      } return parseInt(digits, radix);\n\t    }\n\t  } return +it;\n\t};\n\n\tif(!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')){\n\t  $Number = function Number(value){\n\t    var it = arguments.length < 1 ? 0 : value\n\t      , that = this;\n\t    return that instanceof $Number\n\t      // check on 1..constructor(foo) case\n\t      && (BROKEN_COF ? fails(function(){ proto.valueOf.call(that); }) : cof(that) != NUMBER)\n\t        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n\t  };\n\t  for(var keys = __webpack_require__(9) ? gOPN(Base) : (\n\t    // ES3:\n\t    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n\t    // ES6 (in case, if modules with ES6 Number statics required before):\n\t    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n\t    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n\t  ).split(','), j = 0, key; keys.length > j; j++){\n\t    if(has(Base, key = keys[j]) && !has($Number, key)){\n\t      dP($Number, key, gOPD(Base, key));\n\t    }\n\t  }\n\t  $Number.prototype = proto;\n\t  proto.constructor = $Number;\n\t  __webpack_require__(20)(global, NUMBER, $Number);\n\t}\n\n/***/ },\n/* 326 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.1 Number.EPSILON\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});\n\n/***/ },\n/* 327 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.2 Number.isFinite(number)\n\tvar $export   = __webpack_require__(0)\n\t  , _isFinite = __webpack_require__(5).isFinite;\n\n\t$export($export.S, 'Number', {\n\t  isFinite: function isFinite(it){\n\t    return typeof it == 'number' && _isFinite(it);\n\t  }\n\t});\n\n/***/ },\n/* 328 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.3 Number.isInteger(number)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Number', {isInteger: __webpack_require__(104)});\n\n/***/ },\n/* 329 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.4 Number.isNaN(number)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Number', {\n\t  isNaN: function isNaN(number){\n\t    return number != number;\n\t  }\n\t});\n\n/***/ },\n/* 330 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.5 Number.isSafeInteger(number)\n\tvar $export   = __webpack_require__(0)\n\t  , isInteger = __webpack_require__(104)\n\t  , abs       = Math.abs;\n\n\t$export($export.S, 'Number', {\n\t  isSafeInteger: function isSafeInteger(number){\n\t    return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n\t  }\n\t});\n\n/***/ },\n/* 331 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.6 Number.MAX_SAFE_INTEGER\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});\n\n/***/ },\n/* 332 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 20.1.2.10 Number.MIN_SAFE_INTEGER\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});\n\n/***/ },\n/* 333 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export     = __webpack_require__(0)\n\t  , $parseFloat = __webpack_require__(170);\n\t// 20.1.2.12 Number.parseFloat(string)\n\t$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat});\n\n/***/ },\n/* 334 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export   = __webpack_require__(0)\n\t  , $parseInt = __webpack_require__(171);\n\t// 20.1.2.13 Number.parseInt(string, radix)\n\t$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt});\n\n/***/ },\n/* 335 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export      = __webpack_require__(0)\r\n\t  , anInstance   = __webpack_require__(40)\r\n\t  , toInteger    = __webpack_require__(39)\r\n\t  , aNumberValue = __webpack_require__(151)\r\n\t  , repeat       = __webpack_require__(113)\r\n\t  , $toFixed     = 1..toFixed\r\n\t  , floor        = Math.floor\r\n\t  , data         = [0, 0, 0, 0, 0, 0]\r\n\t  , ERROR        = 'Number.toFixed: incorrect invocation!'\r\n\t  , ZERO         = '0';\r\n\r\n\tvar multiply = function(n, c){\r\n\t  var i  = -1\r\n\t    , c2 = c;\r\n\t  while(++i < 6){\r\n\t    c2 += n * data[i];\r\n\t    data[i] = c2 % 1e7;\r\n\t    c2 = floor(c2 / 1e7);\r\n\t  }\r\n\t};\r\n\tvar divide = function(n){\r\n\t  var i = 6\r\n\t    , c = 0;\r\n\t  while(--i >= 0){\r\n\t    c += data[i];\r\n\t    data[i] = floor(c / n);\r\n\t    c = (c % n) * 1e7;\r\n\t  }\r\n\t};\r\n\tvar numToString = function(){\r\n\t  var i = 6\r\n\t    , s = '';\r\n\t  while(--i >= 0){\r\n\t    if(s !== '' || i === 0 || data[i] !== 0){\r\n\t      var t = String(data[i]);\r\n\t      s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\r\n\t    }\r\n\t  } return s;\r\n\t};\r\n\tvar pow = function(x, n, acc){\r\n\t  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\r\n\t};\r\n\tvar log = function(x){\r\n\t  var n  = 0\r\n\t    , x2 = x;\r\n\t  while(x2 >= 4096){\r\n\t    n += 12;\r\n\t    x2 /= 4096;\r\n\t  }\r\n\t  while(x2 >= 2){\r\n\t    n  += 1;\r\n\t    x2 /= 2;\r\n\t  } return n;\r\n\t};\r\n\r\n\t$export($export.P + $export.F * (!!$toFixed && (\r\n\t  0.00008.toFixed(3) !== '0.000' ||\r\n\t  0.9.toFixed(0) !== '1' ||\r\n\t  1.255.toFixed(2) !== '1.25' ||\r\n\t  1000000000000000128..toFixed(0) !== '1000000000000000128'\r\n\t) || !__webpack_require__(4)(function(){\r\n\t  // V8 ~ Android 4.3-\r\n\t  $toFixed.call({});\r\n\t})), 'Number', {\r\n\t  toFixed: function toFixed(fractionDigits){\r\n\t    var x = aNumberValue(this, ERROR)\r\n\t      , f = toInteger(fractionDigits)\r\n\t      , s = ''\r\n\t      , m = ZERO\r\n\t      , e, z, j, k;\r\n\t    if(f < 0 || f > 20)throw RangeError(ERROR);\r\n\t    if(x != x)return 'NaN';\r\n\t    if(x <= -1e21 || x >= 1e21)return String(x);\r\n\t    if(x < 0){\r\n\t      s = '-';\r\n\t      x = -x;\r\n\t    }\r\n\t    if(x > 1e-21){\r\n\t      e = log(x * pow(2, 69, 1)) - 69;\r\n\t      z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\r\n\t      z *= 0x10000000000000;\r\n\t      e = 52 - e;\r\n\t      if(e > 0){\r\n\t        multiply(0, z);\r\n\t        j = f;\r\n\t        while(j >= 7){\r\n\t          multiply(1e7, 0);\r\n\t          j -= 7;\r\n\t        }\r\n\t        multiply(pow(10, j, 1), 0);\r\n\t        j = e - 1;\r\n\t        while(j >= 23){\r\n\t          divide(1 << 23);\r\n\t          j -= 23;\r\n\t        }\r\n\t        divide(1 << j);\r\n\t        multiply(1, 1);\r\n\t        divide(2);\r\n\t        m = numToString();\r\n\t      } else {\r\n\t        multiply(0, z);\r\n\t        multiply(1 << -e, 0);\r\n\t        m = numToString() + repeat.call(ZERO, f);\r\n\t      }\r\n\t    }\r\n\t    if(f > 0){\r\n\t      k = m.length;\r\n\t      m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\r\n\t    } else {\r\n\t      m = s + m;\r\n\t    } return m;\r\n\t  }\r\n\t});\n\n/***/ },\n/* 336 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export      = __webpack_require__(0)\r\n\t  , $fails       = __webpack_require__(4)\r\n\t  , aNumberValue = __webpack_require__(151)\r\n\t  , $toPrecision = 1..toPrecision;\r\n\r\n\t$export($export.P + $export.F * ($fails(function(){\r\n\t  // IE7-\r\n\t  return $toPrecision.call(1, undefined) !== '1';\r\n\t}) || !$fails(function(){\r\n\t  // V8 ~ Android 4.3-\r\n\t  $toPrecision.call({});\r\n\t})), 'Number', {\r\n\t  toPrecision: function toPrecision(precision){\r\n\t    var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\r\n\t    return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision); \r\n\t  }\r\n\t});\n\n/***/ },\n/* 337 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.3.1 Object.assign(target, source)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S + $export.F, 'Object', {assign: __webpack_require__(164)});\n\n/***/ },\n/* 338 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0)\r\n\t// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\r\n\t$export($export.S, 'Object', {create: __webpack_require__(43)});\n\n/***/ },\n/* 339 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0);\r\n\t// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\r\n\t$export($export.S + $export.F * !__webpack_require__(9), 'Object', {defineProperties: __webpack_require__(165)});\n\n/***/ },\n/* 340 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0);\r\n\t// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\r\n\t$export($export.S + $export.F * !__webpack_require__(9), 'Object', {defineProperty: __webpack_require__(10).f});\n\n/***/ },\n/* 341 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.5 Object.freeze(O)\n\tvar isObject = __webpack_require__(6)\n\t  , meta     = __webpack_require__(37).onFreeze;\n\n\t__webpack_require__(30)('freeze', function($freeze){\n\t  return function freeze(it){\n\t    return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n\t  };\n\t});\n\n/***/ },\n/* 342 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n\tvar toIObject                 = __webpack_require__(22)\n\t  , $getOwnPropertyDescriptor = __webpack_require__(23).f;\n\n\t__webpack_require__(30)('getOwnPropertyDescriptor', function(){\n\t  return function getOwnPropertyDescriptor(it, key){\n\t    return $getOwnPropertyDescriptor(toIObject(it), key);\n\t  };\n\t});\n\n/***/ },\n/* 343 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.7 Object.getOwnPropertyNames(O)\n\t__webpack_require__(30)('getOwnPropertyNames', function(){\n\t  return __webpack_require__(166).f;\n\t});\n\n/***/ },\n/* 344 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.9 Object.getPrototypeOf(O)\n\tvar toObject        = __webpack_require__(14)\n\t  , $getPrototypeOf = __webpack_require__(24);\n\n\t__webpack_require__(30)('getPrototypeOf', function(){\n\t  return function getPrototypeOf(it){\n\t    return $getPrototypeOf(toObject(it));\n\t  };\n\t});\n\n/***/ },\n/* 345 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.11 Object.isExtensible(O)\n\tvar isObject = __webpack_require__(6);\n\n\t__webpack_require__(30)('isExtensible', function($isExtensible){\n\t  return function isExtensible(it){\n\t    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n\t  };\n\t});\n\n/***/ },\n/* 346 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.12 Object.isFrozen(O)\n\tvar isObject = __webpack_require__(6);\n\n\t__webpack_require__(30)('isFrozen', function($isFrozen){\n\t  return function isFrozen(it){\n\t    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n\t  };\n\t});\n\n/***/ },\n/* 347 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.13 Object.isSealed(O)\n\tvar isObject = __webpack_require__(6);\n\n\t__webpack_require__(30)('isSealed', function($isSealed){\n\t  return function isSealed(it){\n\t    return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n\t  };\n\t});\n\n/***/ },\n/* 348 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.3.10 Object.is(value1, value2)\n\tvar $export = __webpack_require__(0);\n\t$export($export.S, 'Object', {is: __webpack_require__(172)});\n\n/***/ },\n/* 349 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.14 Object.keys(O)\n\tvar toObject = __webpack_require__(14)\n\t  , $keys    = __webpack_require__(45);\n\n\t__webpack_require__(30)('keys', function(){\n\t  return function keys(it){\n\t    return $keys(toObject(it));\n\t  };\n\t});\n\n/***/ },\n/* 350 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.15 Object.preventExtensions(O)\n\tvar isObject = __webpack_require__(6)\n\t  , meta     = __webpack_require__(37).onFreeze;\n\n\t__webpack_require__(30)('preventExtensions', function($preventExtensions){\n\t  return function preventExtensions(it){\n\t    return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n\t  };\n\t});\n\n/***/ },\n/* 351 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.2.17 Object.seal(O)\n\tvar isObject = __webpack_require__(6)\n\t  , meta     = __webpack_require__(37).onFreeze;\n\n\t__webpack_require__(30)('seal', function($seal){\n\t  return function seal(it){\n\t    return $seal && isObject(it) ? $seal(meta(it)) : it;\n\t  };\n\t});\n\n/***/ },\n/* 352 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.3.19 Object.setPrototypeOf(O, proto)\n\tvar $export = __webpack_require__(0);\n\t$export($export.S, 'Object', {setPrototypeOf: __webpack_require__(85).set});\n\n/***/ },\n/* 353 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 19.1.3.6 Object.prototype.toString()\n\tvar classof = __webpack_require__(53)\n\t  , test    = {};\n\ttest[__webpack_require__(7)('toStringTag')] = 'z';\n\tif(test + '' != '[object z]'){\n\t  __webpack_require__(20)(Object.prototype, 'toString', function toString(){\n\t    return '[object ' + classof(this) + ']';\n\t  }, true);\n\t}\n\n/***/ },\n/* 354 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export     = __webpack_require__(0)\r\n\t  , $parseFloat = __webpack_require__(170);\r\n\t// 18.2.4 parseFloat(string)\r\n\t$export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});\n\n/***/ },\n/* 355 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export   = __webpack_require__(0)\r\n\t  , $parseInt = __webpack_require__(171);\r\n\t// 18.2.5 parseInt(string, radix)\r\n\t$export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});\n\n/***/ },\n/* 356 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar LIBRARY            = __webpack_require__(42)\n\t  , global             = __webpack_require__(5)\n\t  , ctx                = __webpack_require__(34)\n\t  , classof            = __webpack_require__(53)\n\t  , $export            = __webpack_require__(0)\n\t  , isObject           = __webpack_require__(6)\n\t  , anObject           = __webpack_require__(3)\n\t  , aFunction          = __webpack_require__(25)\n\t  , anInstance         = __webpack_require__(40)\n\t  , forOf              = __webpack_require__(66)\n\t  , setProto           = __webpack_require__(85).set\n\t  , speciesConstructor = __webpack_require__(110)\n\t  , task               = __webpack_require__(115).set\n\t  , microtask          = __webpack_require__(163)()\n\t  , PROMISE            = 'Promise'\n\t  , TypeError          = global.TypeError\n\t  , process            = global.process\n\t  , $Promise           = global[PROMISE]\n\t  , process            = global.process\n\t  , isNode             = classof(process) == 'process'\n\t  , empty              = function(){ /* empty */ }\n\t  , Internal, GenericPromiseCapability, Wrapper;\n\n\tvar USE_NATIVE = !!function(){\n\t  try {\n\t    // correct subclassing with @@species support\n\t    var promise     = $Promise.resolve(1)\n\t      , FakePromise = (promise.constructor = {})[__webpack_require__(7)('species')] = function(exec){ exec(empty, empty); };\n\t    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n\t    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n\t  } catch(e){ /* empty */ }\n\t}();\n\n\t// helpers\n\tvar sameConstructor = function(a, b){\n\t  // with library wrapper special case\n\t  return a === b || a === $Promise && b === Wrapper;\n\t};\n\tvar isThenable = function(it){\n\t  var then;\n\t  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n\t};\n\tvar newPromiseCapability = function(C){\n\t  return sameConstructor($Promise, C)\n\t    ? new PromiseCapability(C)\n\t    : new GenericPromiseCapability(C);\n\t};\n\tvar PromiseCapability = GenericPromiseCapability = function(C){\n\t  var resolve, reject;\n\t  this.promise = new C(function($$resolve, $$reject){\n\t    if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');\n\t    resolve = $$resolve;\n\t    reject  = $$reject;\n\t  });\n\t  this.resolve = aFunction(resolve);\n\t  this.reject  = aFunction(reject);\n\t};\n\tvar perform = function(exec){\n\t  try {\n\t    exec();\n\t  } catch(e){\n\t    return {error: e};\n\t  }\n\t};\n\tvar notify = function(promise, isReject){\n\t  if(promise._n)return;\n\t  promise._n = true;\n\t  var chain = promise._c;\n\t  microtask(function(){\n\t    var value = promise._v\n\t      , ok    = promise._s == 1\n\t      , i     = 0;\n\t    var run = function(reaction){\n\t      var handler = ok ? reaction.ok : reaction.fail\n\t        , resolve = reaction.resolve\n\t        , reject  = reaction.reject\n\t        , domain  = reaction.domain\n\t        , result, then;\n\t      try {\n\t        if(handler){\n\t          if(!ok){\n\t            if(promise._h == 2)onHandleUnhandled(promise);\n\t            promise._h = 1;\n\t          }\n\t          if(handler === true)result = value;\n\t          else {\n\t            if(domain)domain.enter();\n\t            result = handler(value);\n\t            if(domain)domain.exit();\n\t          }\n\t          if(result === reaction.promise){\n\t            reject(TypeError('Promise-chain cycle'));\n\t          } else if(then = isThenable(result)){\n\t            then.call(result, resolve, reject);\n\t          } else resolve(result);\n\t        } else reject(value);\n\t      } catch(e){\n\t        reject(e);\n\t      }\n\t    };\n\t    while(chain.length > i)run(chain[i++]); // variable length - can't use forEach\n\t    promise._c = [];\n\t    promise._n = false;\n\t    if(isReject && !promise._h)onUnhandled(promise);\n\t  });\n\t};\n\tvar onUnhandled = function(promise){\n\t  task.call(global, function(){\n\t    var value = promise._v\n\t      , abrupt, handler, console;\n\t    if(isUnhandled(promise)){\n\t      abrupt = perform(function(){\n\t        if(isNode){\n\t          process.emit('unhandledRejection', value, promise);\n\t        } else if(handler = global.onunhandledrejection){\n\t          handler({promise: promise, reason: value});\n\t        } else if((console = global.console) && console.error){\n\t          console.error('Unhandled promise rejection', value);\n\t        }\n\t      });\n\t      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n\t      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n\t    } promise._a = undefined;\n\t    if(abrupt)throw abrupt.error;\n\t  });\n\t};\n\tvar isUnhandled = function(promise){\n\t  if(promise._h == 1)return false;\n\t  var chain = promise._a || promise._c\n\t    , i     = 0\n\t    , reaction;\n\t  while(chain.length > i){\n\t    reaction = chain[i++];\n\t    if(reaction.fail || !isUnhandled(reaction.promise))return false;\n\t  } return true;\n\t};\n\tvar onHandleUnhandled = function(promise){\n\t  task.call(global, function(){\n\t    var handler;\n\t    if(isNode){\n\t      process.emit('rejectionHandled', promise);\n\t    } else if(handler = global.onrejectionhandled){\n\t      handler({promise: promise, reason: promise._v});\n\t    }\n\t  });\n\t};\n\tvar $reject = function(value){\n\t  var promise = this;\n\t  if(promise._d)return;\n\t  promise._d = true;\n\t  promise = promise._w || promise; // unwrap\n\t  promise._v = value;\n\t  promise._s = 2;\n\t  if(!promise._a)promise._a = promise._c.slice();\n\t  notify(promise, true);\n\t};\n\tvar $resolve = function(value){\n\t  var promise = this\n\t    , then;\n\t  if(promise._d)return;\n\t  promise._d = true;\n\t  promise = promise._w || promise; // unwrap\n\t  try {\n\t    if(promise === value)throw TypeError(\"Promise can't be resolved itself\");\n\t    if(then = isThenable(value)){\n\t      microtask(function(){\n\t        var wrapper = {_w: promise, _d: false}; // wrap\n\t        try {\n\t          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n\t        } catch(e){\n\t          $reject.call(wrapper, e);\n\t        }\n\t      });\n\t    } else {\n\t      promise._v = value;\n\t      promise._s = 1;\n\t      notify(promise, false);\n\t    }\n\t  } catch(e){\n\t    $reject.call({_w: promise, _d: false}, e); // wrap\n\t  }\n\t};\n\n\t// constructor polyfill\n\tif(!USE_NATIVE){\n\t  // 25.4.3.1 Promise(executor)\n\t  $Promise = function Promise(executor){\n\t    anInstance(this, $Promise, PROMISE, '_h');\n\t    aFunction(executor);\n\t    Internal.call(this);\n\t    try {\n\t      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n\t    } catch(err){\n\t      $reject.call(this, err);\n\t    }\n\t  };\n\t  Internal = function Promise(executor){\n\t    this._c = [];             // <- awaiting reactions\n\t    this._a = undefined;      // <- checked in isUnhandled reactions\n\t    this._s = 0;              // <- state\n\t    this._d = false;          // <- done\n\t    this._v = undefined;      // <- value\n\t    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n\t    this._n = false;          // <- notify\n\t  };\n\t  Internal.prototype = __webpack_require__(54)($Promise.prototype, {\n\t    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n\t    then: function then(onFulfilled, onRejected){\n\t      var reaction    = newPromiseCapability(speciesConstructor(this, $Promise));\n\t      reaction.ok     = typeof onFulfilled == 'function' ? onFulfilled : true;\n\t      reaction.fail   = typeof onRejected == 'function' && onRejected;\n\t      reaction.domain = isNode ? process.domain : undefined;\n\t      this._c.push(reaction);\n\t      if(this._a)this._a.push(reaction);\n\t      if(this._s)notify(this, false);\n\t      return reaction.promise;\n\t    },\n\t    // 25.4.5.1 Promise.prototype.catch(onRejected)\n\t    'catch': function(onRejected){\n\t      return this.then(undefined, onRejected);\n\t    }\n\t  });\n\t  PromiseCapability = function(){\n\t    var promise  = new Internal;\n\t    this.promise = promise;\n\t    this.resolve = ctx($resolve, promise, 1);\n\t    this.reject  = ctx($reject, promise, 1);\n\t  };\n\t}\n\n\t$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});\n\t__webpack_require__(56)($Promise, PROMISE);\n\t__webpack_require__(55)(PROMISE);\n\tWrapper = __webpack_require__(33)[PROMISE];\n\n\t// statics\n\t$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n\t  // 25.4.4.5 Promise.reject(r)\n\t  reject: function reject(r){\n\t    var capability = newPromiseCapability(this)\n\t      , $$reject   = capability.reject;\n\t    $$reject(r);\n\t    return capability.promise;\n\t  }\n\t});\n\t$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n\t  // 25.4.4.6 Promise.resolve(x)\n\t  resolve: function resolve(x){\n\t    // instanceof instead of internal slot check because we should fix it without replacement native Promise core\n\t    if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;\n\t    var capability = newPromiseCapability(this)\n\t      , $$resolve  = capability.resolve;\n\t    $$resolve(x);\n\t    return capability.promise;\n\t  }\n\t});\n\t$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(82)(function(iter){\n\t  $Promise.all(iter)['catch'](empty);\n\t})), PROMISE, {\n\t  // 25.4.4.1 Promise.all(iterable)\n\t  all: function all(iterable){\n\t    var C          = this\n\t      , capability = newPromiseCapability(C)\n\t      , resolve    = capability.resolve\n\t      , reject     = capability.reject;\n\t    var abrupt = perform(function(){\n\t      var values    = []\n\t        , index     = 0\n\t        , remaining = 1;\n\t      forOf(iterable, false, function(promise){\n\t        var $index        = index++\n\t          , alreadyCalled = false;\n\t        values.push(undefined);\n\t        remaining++;\n\t        C.resolve(promise).then(function(value){\n\t          if(alreadyCalled)return;\n\t          alreadyCalled  = true;\n\t          values[$index] = value;\n\t          --remaining || resolve(values);\n\t        }, reject);\n\t      });\n\t      --remaining || resolve(values);\n\t    });\n\t    if(abrupt)reject(abrupt.error);\n\t    return capability.promise;\n\t  },\n\t  // 25.4.4.4 Promise.race(iterable)\n\t  race: function race(iterable){\n\t    var C          = this\n\t      , capability = newPromiseCapability(C)\n\t      , reject     = capability.reject;\n\t    var abrupt = perform(function(){\n\t      forOf(iterable, false, function(promise){\n\t        C.resolve(promise).then(capability.resolve, reject);\n\t      });\n\t    });\n\t    if(abrupt)reject(abrupt.error);\n\t    return capability.promise;\n\t  }\n\t});\n\n/***/ },\n/* 357 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\n\tvar $export = __webpack_require__(0)\n\t  , _apply  = Function.apply;\n\n\t$export($export.S, 'Reflect', {\n\t  apply: function apply(target, thisArgument, argumentsList){\n\t    return _apply.call(target, thisArgument, argumentsList);\n\t  }\n\t});\n\n/***/ },\n/* 358 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\n\tvar $export   = __webpack_require__(0)\n\t  , create    = __webpack_require__(43)\n\t  , aFunction = __webpack_require__(25)\n\t  , anObject  = __webpack_require__(3)\n\t  , isObject  = __webpack_require__(6)\n\t  , bind      = __webpack_require__(155);\n\n\t// MS Edge supports only 2 arguments\n\t// FF Nightly sets third argument as `new.target`, but does not create `this` from it\n\t$export($export.S + $export.F * __webpack_require__(4)(function(){\n\t  function F(){}\n\t  return !(Reflect.construct(function(){}, [], F) instanceof F);\n\t}), 'Reflect', {\n\t  construct: function construct(Target, args /*, newTarget*/){\n\t    aFunction(Target);\n\t    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n\t    if(Target == newTarget){\n\t      // w/o altered newTarget, optimization for 0-4 arguments\n\t      if(args != undefined)switch(anObject(args).length){\n\t        case 0: return new Target;\n\t        case 1: return new Target(args[0]);\n\t        case 2: return new Target(args[0], args[1]);\n\t        case 3: return new Target(args[0], args[1], args[2]);\n\t        case 4: return new Target(args[0], args[1], args[2], args[3]);\n\t      }\n\t      // w/o altered newTarget, lot of arguments case\n\t      var $args = [null];\n\t      $args.push.apply($args, args);\n\t      return new (bind.apply(Target, $args));\n\t    }\n\t    // with altered newTarget, not support built-in constructors\n\t    var proto    = newTarget.prototype\n\t      , instance = create(isObject(proto) ? proto : Object.prototype)\n\t      , result   = Function.apply.call(Target, instance, args);\n\t    return isObject(result) ? result : instance;\n\t  }\n\t});\n\n/***/ },\n/* 359 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\n\tvar dP          = __webpack_require__(10)\n\t  , $export     = __webpack_require__(0)\n\t  , anObject    = __webpack_require__(3)\n\t  , toPrimitive = __webpack_require__(31);\n\n\t// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n\t$export($export.S + $export.F * __webpack_require__(4)(function(){\n\t  Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});\n\t}), 'Reflect', {\n\t  defineProperty: function defineProperty(target, propertyKey, attributes){\n\t    anObject(target);\n\t    propertyKey = toPrimitive(propertyKey, true);\n\t    anObject(attributes);\n\t    try {\n\t      dP.f(target, propertyKey, attributes);\n\t      return true;\n\t    } catch(e){\n\t      return false;\n\t    }\n\t  }\n\t});\n\n/***/ },\n/* 360 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.4 Reflect.deleteProperty(target, propertyKey)\n\tvar $export  = __webpack_require__(0)\n\t  , gOPD     = __webpack_require__(23).f\n\t  , anObject = __webpack_require__(3);\n\n\t$export($export.S, 'Reflect', {\n\t  deleteProperty: function deleteProperty(target, propertyKey){\n\t    var desc = gOPD(anObject(target), propertyKey);\n\t    return desc && !desc.configurable ? false : delete target[propertyKey];\n\t  }\n\t});\n\n/***/ },\n/* 361 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 26.1.5 Reflect.enumerate(target)\n\tvar $export  = __webpack_require__(0)\n\t  , anObject = __webpack_require__(3);\n\tvar Enumerate = function(iterated){\n\t  this._t = anObject(iterated); // target\n\t  this._i = 0;                  // next index\n\t  var keys = this._k = []       // keys\n\t    , key;\n\t  for(key in iterated)keys.push(key);\n\t};\n\t__webpack_require__(105)(Enumerate, 'Object', function(){\n\t  var that = this\n\t    , keys = that._k\n\t    , key;\n\t  do {\n\t    if(that._i >= keys.length)return {value: undefined, done: true};\n\t  } while(!((key = keys[that._i++]) in that._t));\n\t  return {value: key, done: false};\n\t});\n\n\t$export($export.S, 'Reflect', {\n\t  enumerate: function enumerate(target){\n\t    return new Enumerate(target);\n\t  }\n\t});\n\n/***/ },\n/* 362 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\n\tvar gOPD     = __webpack_require__(23)\n\t  , $export  = __webpack_require__(0)\n\t  , anObject = __webpack_require__(3);\n\n\t$export($export.S, 'Reflect', {\n\t  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){\n\t    return gOPD.f(anObject(target), propertyKey);\n\t  }\n\t});\n\n/***/ },\n/* 363 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.8 Reflect.getPrototypeOf(target)\n\tvar $export  = __webpack_require__(0)\n\t  , getProto = __webpack_require__(24)\n\t  , anObject = __webpack_require__(3);\n\n\t$export($export.S, 'Reflect', {\n\t  getPrototypeOf: function getPrototypeOf(target){\n\t    return getProto(anObject(target));\n\t  }\n\t});\n\n/***/ },\n/* 364 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.6 Reflect.get(target, propertyKey [, receiver])\n\tvar gOPD           = __webpack_require__(23)\n\t  , getPrototypeOf = __webpack_require__(24)\n\t  , has            = __webpack_require__(16)\n\t  , $export        = __webpack_require__(0)\n\t  , isObject       = __webpack_require__(6)\n\t  , anObject       = __webpack_require__(3);\n\n\tfunction get(target, propertyKey/*, receiver*/){\n\t  var receiver = arguments.length < 3 ? target : arguments[2]\n\t    , desc, proto;\n\t  if(anObject(target) === receiver)return target[propertyKey];\n\t  if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')\n\t    ? desc.value\n\t    : desc.get !== undefined\n\t      ? desc.get.call(receiver)\n\t      : undefined;\n\t  if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);\n\t}\n\n\t$export($export.S, 'Reflect', {get: get});\n\n/***/ },\n/* 365 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.9 Reflect.has(target, propertyKey)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Reflect', {\n\t  has: function has(target, propertyKey){\n\t    return propertyKey in target;\n\t  }\n\t});\n\n/***/ },\n/* 366 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.10 Reflect.isExtensible(target)\n\tvar $export       = __webpack_require__(0)\n\t  , anObject      = __webpack_require__(3)\n\t  , $isExtensible = Object.isExtensible;\n\n\t$export($export.S, 'Reflect', {\n\t  isExtensible: function isExtensible(target){\n\t    anObject(target);\n\t    return $isExtensible ? $isExtensible(target) : true;\n\t  }\n\t});\n\n/***/ },\n/* 367 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.11 Reflect.ownKeys(target)\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Reflect', {ownKeys: __webpack_require__(169)});\n\n/***/ },\n/* 368 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.12 Reflect.preventExtensions(target)\n\tvar $export            = __webpack_require__(0)\n\t  , anObject           = __webpack_require__(3)\n\t  , $preventExtensions = Object.preventExtensions;\n\n\t$export($export.S, 'Reflect', {\n\t  preventExtensions: function preventExtensions(target){\n\t    anObject(target);\n\t    try {\n\t      if($preventExtensions)$preventExtensions(target);\n\t      return true;\n\t    } catch(e){\n\t      return false;\n\t    }\n\t  }\n\t});\n\n/***/ },\n/* 369 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.14 Reflect.setPrototypeOf(target, proto)\n\tvar $export  = __webpack_require__(0)\n\t  , setProto = __webpack_require__(85);\n\n\tif(setProto)$export($export.S, 'Reflect', {\n\t  setPrototypeOf: function setPrototypeOf(target, proto){\n\t    setProto.check(target, proto);\n\t    try {\n\t      setProto.set(target, proto);\n\t      return true;\n\t    } catch(e){\n\t      return false;\n\t    }\n\t  }\n\t});\n\n/***/ },\n/* 370 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\n\tvar dP             = __webpack_require__(10)\n\t  , gOPD           = __webpack_require__(23)\n\t  , getPrototypeOf = __webpack_require__(24)\n\t  , has            = __webpack_require__(16)\n\t  , $export        = __webpack_require__(0)\n\t  , createDesc     = __webpack_require__(38)\n\t  , anObject       = __webpack_require__(3)\n\t  , isObject       = __webpack_require__(6);\n\n\tfunction set(target, propertyKey, V/*, receiver*/){\n\t  var receiver = arguments.length < 4 ? target : arguments[3]\n\t    , ownDesc  = gOPD.f(anObject(target), propertyKey)\n\t    , existingDescriptor, proto;\n\t  if(!ownDesc){\n\t    if(isObject(proto = getPrototypeOf(target))){\n\t      return set(proto, propertyKey, V, receiver);\n\t    }\n\t    ownDesc = createDesc(0);\n\t  }\n\t  if(has(ownDesc, 'value')){\n\t    if(ownDesc.writable === false || !isObject(receiver))return false;\n\t    existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n\t    existingDescriptor.value = V;\n\t    dP.f(receiver, propertyKey, existingDescriptor);\n\t    return true;\n\t  }\n\t  return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n\t}\n\n\t$export($export.S, 'Reflect', {set: set});\n\n/***/ },\n/* 371 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar global            = __webpack_require__(5)\n\t  , inheritIfRequired = __webpack_require__(101)\n\t  , dP                = __webpack_require__(10).f\n\t  , gOPN              = __webpack_require__(44).f\n\t  , isRegExp          = __webpack_require__(81)\n\t  , $flags            = __webpack_require__(79)\n\t  , $RegExp           = global.RegExp\n\t  , Base              = $RegExp\n\t  , proto             = $RegExp.prototype\n\t  , re1               = /a/g\n\t  , re2               = /a/g\n\t  // \"new\" creates a new object, old webkit buggy here\n\t  , CORRECT_NEW       = new $RegExp(re1) !== re1;\n\n\tif(__webpack_require__(9) && (!CORRECT_NEW || __webpack_require__(4)(function(){\n\t  re2[__webpack_require__(7)('match')] = false;\n\t  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n\t  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n\t}))){\n\t  $RegExp = function RegExp(p, f){\n\t    var tiRE = this instanceof $RegExp\n\t      , piRE = isRegExp(p)\n\t      , fiU  = f === undefined;\n\t    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n\t      : inheritIfRequired(CORRECT_NEW\n\t        ? new Base(piRE && !fiU ? p.source : p, f)\n\t        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n\t      , tiRE ? this : proto, $RegExp);\n\t  };\n\t  var proxy = function(key){\n\t    key in $RegExp || dP($RegExp, key, {\n\t      configurable: true,\n\t      get: function(){ return Base[key]; },\n\t      set: function(it){ Base[key] = it; }\n\t    });\n\t  };\n\t  for(var keys = gOPN(Base), i = 0; keys.length > i; )proxy(keys[i++]);\n\t  proto.constructor = $RegExp;\n\t  $RegExp.prototype = proto;\n\t  __webpack_require__(20)(global, 'RegExp', $RegExp);\n\t}\n\n\t__webpack_require__(55)('RegExp');\n\n/***/ },\n/* 372 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// @@match logic\n\t__webpack_require__(78)('match', 1, function(defined, MATCH, $match){\n\t  // 21.1.3.11 String.prototype.match(regexp)\n\t  return [function match(regexp){\n\t    'use strict';\n\t    var O  = defined(this)\n\t      , fn = regexp == undefined ? undefined : regexp[MATCH];\n\t    return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n\t  }, $match];\n\t});\n\n/***/ },\n/* 373 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// @@replace logic\n\t__webpack_require__(78)('replace', 2, function(defined, REPLACE, $replace){\n\t  // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n\t  return [function replace(searchValue, replaceValue){\n\t    'use strict';\n\t    var O  = defined(this)\n\t      , fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n\t    return fn !== undefined\n\t      ? fn.call(searchValue, O, replaceValue)\n\t      : $replace.call(String(O), searchValue, replaceValue);\n\t  }, $replace];\n\t});\n\n/***/ },\n/* 374 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// @@search logic\n\t__webpack_require__(78)('search', 1, function(defined, SEARCH, $search){\n\t  // 21.1.3.15 String.prototype.search(regexp)\n\t  return [function search(regexp){\n\t    'use strict';\n\t    var O  = defined(this)\n\t      , fn = regexp == undefined ? undefined : regexp[SEARCH];\n\t    return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n\t  }, $search];\n\t});\n\n/***/ },\n/* 375 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// @@split logic\n\t__webpack_require__(78)('split', 2, function(defined, SPLIT, $split){\n\t  'use strict';\n\t  var isRegExp   = __webpack_require__(81)\n\t    , _split     = $split\n\t    , $push      = [].push\n\t    , $SPLIT     = 'split'\n\t    , LENGTH     = 'length'\n\t    , LAST_INDEX = 'lastIndex';\n\t  if(\n\t    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n\t    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n\t    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n\t    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n\t    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n\t    ''[$SPLIT](/.?/)[LENGTH]\n\t  ){\n\t    var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n\t    // based on es5-shim implementation, need to rework it\n\t    $split = function(separator, limit){\n\t      var string = String(this);\n\t      if(separator === undefined && limit === 0)return [];\n\t      // If `separator` is not a regex, use native split\n\t      if(!isRegExp(separator))return _split.call(string, separator, limit);\n\t      var output = [];\n\t      var flags = (separator.ignoreCase ? 'i' : '') +\n\t                  (separator.multiline ? 'm' : '') +\n\t                  (separator.unicode ? 'u' : '') +\n\t                  (separator.sticky ? 'y' : '');\n\t      var lastLastIndex = 0;\n\t      var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n\t      // Make `global` and avoid `lastIndex` issues by working with a copy\n\t      var separatorCopy = new RegExp(separator.source, flags + 'g');\n\t      var separator2, match, lastIndex, lastLength, i;\n\t      // Doesn't need flags gy, but they don't hurt\n\t      if(!NPCG)separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n\t      while(match = separatorCopy.exec(string)){\n\t        // `separatorCopy.lastIndex` is not reliable cross-browser\n\t        lastIndex = match.index + match[0][LENGTH];\n\t        if(lastIndex > lastLastIndex){\n\t          output.push(string.slice(lastLastIndex, match.index));\n\t          // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n\t          if(!NPCG && match[LENGTH] > 1)match[0].replace(separator2, function(){\n\t            for(i = 1; i < arguments[LENGTH] - 2; i++)if(arguments[i] === undefined)match[i] = undefined;\n\t          });\n\t          if(match[LENGTH] > 1 && match.index < string[LENGTH])$push.apply(output, match.slice(1));\n\t          lastLength = match[0][LENGTH];\n\t          lastLastIndex = lastIndex;\n\t          if(output[LENGTH] >= splitLimit)break;\n\t        }\n\t        if(separatorCopy[LAST_INDEX] === match.index)separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n\t      }\n\t      if(lastLastIndex === string[LENGTH]){\n\t        if(lastLength || !separatorCopy.test(''))output.push('');\n\t      } else output.push(string.slice(lastLastIndex));\n\t      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n\t    };\n\t  // Chakra, V8\n\t  } else if('0'[$SPLIT](undefined, 0)[LENGTH]){\n\t    $split = function(separator, limit){\n\t      return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n\t    };\n\t  }\n\t  // 21.1.3.17 String.prototype.split(separator, limit)\n\t  return [function split(separator, limit){\n\t    var O  = defined(this)\n\t      , fn = separator == undefined ? undefined : separator[SPLIT];\n\t    return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n\t  }, $split];\n\t});\n\n/***/ },\n/* 376 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\t__webpack_require__(176);\r\n\tvar anObject    = __webpack_require__(3)\r\n\t  , $flags      = __webpack_require__(79)\r\n\t  , DESCRIPTORS = __webpack_require__(9)\r\n\t  , TO_STRING   = 'toString'\r\n\t  , $toString   = /./[TO_STRING];\r\n\r\n\tvar define = function(fn){\r\n\t  __webpack_require__(20)(RegExp.prototype, TO_STRING, fn, true);\r\n\t};\r\n\r\n\t// 21.2.5.14 RegExp.prototype.toString()\r\n\tif(__webpack_require__(4)(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){\r\n\t  define(function toString(){\r\n\t    var R = anObject(this);\r\n\t    return '/'.concat(R.source, '/',\r\n\t      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\r\n\t  });\r\n\t// FF44- RegExp#toString has a wrong name\r\n\t} else if($toString.name != TO_STRING){\r\n\t  define(function toString(){\r\n\t    return $toString.call(this);\r\n\t  });\r\n\t}\n\n/***/ },\n/* 377 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.2 String.prototype.anchor(name)\n\t__webpack_require__(21)('anchor', function(createHTML){\n\t  return function anchor(name){\n\t    return createHTML(this, 'a', 'name', name);\n\t  }\n\t});\n\n/***/ },\n/* 378 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.3 String.prototype.big()\n\t__webpack_require__(21)('big', function(createHTML){\n\t  return function big(){\n\t    return createHTML(this, 'big', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 379 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.4 String.prototype.blink()\n\t__webpack_require__(21)('blink', function(createHTML){\n\t  return function blink(){\n\t    return createHTML(this, 'blink', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 380 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.5 String.prototype.bold()\n\t__webpack_require__(21)('bold', function(createHTML){\n\t  return function bold(){\n\t    return createHTML(this, 'b', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 381 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $export = __webpack_require__(0)\n\t  , $at     = __webpack_require__(111)(false);\n\t$export($export.P, 'String', {\n\t  // 21.1.3.3 String.prototype.codePointAt(pos)\n\t  codePointAt: function codePointAt(pos){\n\t    return $at(this, pos);\n\t  }\n\t});\n\n/***/ },\n/* 382 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n\t'use strict';\n\tvar $export   = __webpack_require__(0)\n\t  , toLength  = __webpack_require__(13)\n\t  , context   = __webpack_require__(112)\n\t  , ENDS_WITH = 'endsWith'\n\t  , $endsWith = ''[ENDS_WITH];\n\n\t$export($export.P + $export.F * __webpack_require__(99)(ENDS_WITH), 'String', {\n\t  endsWith: function endsWith(searchString /*, endPosition = @length */){\n\t    var that = context(this, searchString, ENDS_WITH)\n\t      , endPosition = arguments.length > 1 ? arguments[1] : undefined\n\t      , len    = toLength(that.length)\n\t      , end    = endPosition === undefined ? len : Math.min(toLength(endPosition), len)\n\t      , search = String(searchString);\n\t    return $endsWith\n\t      ? $endsWith.call(that, search, end)\n\t      : that.slice(end - search.length, end) === search;\n\t  }\n\t});\n\n/***/ },\n/* 383 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.6 String.prototype.fixed()\n\t__webpack_require__(21)('fixed', function(createHTML){\n\t  return function fixed(){\n\t    return createHTML(this, 'tt', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 384 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.7 String.prototype.fontcolor(color)\n\t__webpack_require__(21)('fontcolor', function(createHTML){\n\t  return function fontcolor(color){\n\t    return createHTML(this, 'font', 'color', color);\n\t  }\n\t});\n\n/***/ },\n/* 385 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.8 String.prototype.fontsize(size)\n\t__webpack_require__(21)('fontsize', function(createHTML){\n\t  return function fontsize(size){\n\t    return createHTML(this, 'font', 'size', size);\n\t  }\n\t});\n\n/***/ },\n/* 386 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export        = __webpack_require__(0)\n\t  , toIndex        = __webpack_require__(46)\n\t  , fromCharCode   = String.fromCharCode\n\t  , $fromCodePoint = String.fromCodePoint;\n\n\t// length should be 1, old FF problem\n\t$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n\t  // 21.1.2.2 String.fromCodePoint(...codePoints)\n\t  fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars\n\t    var res  = []\n\t      , aLen = arguments.length\n\t      , i    = 0\n\t      , code;\n\t    while(aLen > i){\n\t      code = +arguments[i++];\n\t      if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');\n\t      res.push(code < 0x10000\n\t        ? fromCharCode(code)\n\t        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n\t      );\n\t    } return res.join('');\n\t  }\n\t});\n\n/***/ },\n/* 387 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\t'use strict';\n\tvar $export  = __webpack_require__(0)\n\t  , context  = __webpack_require__(112)\n\t  , INCLUDES = 'includes';\n\n\t$export($export.P + $export.F * __webpack_require__(99)(INCLUDES), 'String', {\n\t  includes: function includes(searchString /*, position = 0 */){\n\t    return !!~context(this, searchString, INCLUDES)\n\t      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n\t  }\n\t});\n\n/***/ },\n/* 388 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.9 String.prototype.italics()\n\t__webpack_require__(21)('italics', function(createHTML){\n\t  return function italics(){\n\t    return createHTML(this, 'i', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 389 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $at  = __webpack_require__(111)(true);\n\n\t// 21.1.3.27 String.prototype[@@iterator]()\n\t__webpack_require__(106)(String, 'String', function(iterated){\n\t  this._t = String(iterated); // target\n\t  this._i = 0;                // next index\n\t// 21.1.5.2.1 %StringIteratorPrototype%.next()\n\t}, function(){\n\t  var O     = this._t\n\t    , index = this._i\n\t    , point;\n\t  if(index >= O.length)return {value: undefined, done: true};\n\t  point = $at(O, index);\n\t  this._i += point.length;\n\t  return {value: point, done: false};\n\t});\n\n/***/ },\n/* 390 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.10 String.prototype.link(url)\n\t__webpack_require__(21)('link', function(createHTML){\n\t  return function link(url){\n\t    return createHTML(this, 'a', 'href', url);\n\t  }\n\t});\n\n/***/ },\n/* 391 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export   = __webpack_require__(0)\n\t  , toIObject = __webpack_require__(22)\n\t  , toLength  = __webpack_require__(13);\n\n\t$export($export.S, 'String', {\n\t  // 21.1.2.4 String.raw(callSite, ...substitutions)\n\t  raw: function raw(callSite){\n\t    var tpl  = toIObject(callSite.raw)\n\t      , len  = toLength(tpl.length)\n\t      , aLen = arguments.length\n\t      , res  = []\n\t      , i    = 0;\n\t    while(len > i){\n\t      res.push(String(tpl[i++]));\n\t      if(i < aLen)res.push(String(arguments[i]));\n\t    } return res.join('');\n\t  }\n\t});\n\n/***/ },\n/* 392 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.P, 'String', {\n\t  // 21.1.3.13 String.prototype.repeat(count)\n\t  repeat: __webpack_require__(113)\n\t});\n\n/***/ },\n/* 393 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.11 String.prototype.small()\n\t__webpack_require__(21)('small', function(createHTML){\n\t  return function small(){\n\t    return createHTML(this, 'small', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 394 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\t'use strict';\n\tvar $export     = __webpack_require__(0)\n\t  , toLength    = __webpack_require__(13)\n\t  , context     = __webpack_require__(112)\n\t  , STARTS_WITH = 'startsWith'\n\t  , $startsWith = ''[STARTS_WITH];\n\n\t$export($export.P + $export.F * __webpack_require__(99)(STARTS_WITH), 'String', {\n\t  startsWith: function startsWith(searchString /*, position = 0 */){\n\t    var that   = context(this, searchString, STARTS_WITH)\n\t      , index  = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length))\n\t      , search = String(searchString);\n\t    return $startsWith\n\t      ? $startsWith.call(that, search, index)\n\t      : that.slice(index, index + search.length) === search;\n\t  }\n\t});\n\n/***/ },\n/* 395 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.12 String.prototype.strike()\n\t__webpack_require__(21)('strike', function(createHTML){\n\t  return function strike(){\n\t    return createHTML(this, 'strike', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 396 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.13 String.prototype.sub()\n\t__webpack_require__(21)('sub', function(createHTML){\n\t  return function sub(){\n\t    return createHTML(this, 'sub', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 397 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// B.2.3.14 String.prototype.sup()\n\t__webpack_require__(21)('sup', function(createHTML){\n\t  return function sup(){\n\t    return createHTML(this, 'sup', '', '');\n\t  }\n\t});\n\n/***/ },\n/* 398 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// 21.1.3.25 String.prototype.trim()\n\t__webpack_require__(57)('trim', function($trim){\n\t  return function trim(){\n\t    return $trim(this, 3);\n\t  };\n\t});\n\n/***/ },\n/* 399 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// ECMAScript 6 symbols shim\n\tvar global         = __webpack_require__(5)\n\t  , has            = __webpack_require__(16)\n\t  , DESCRIPTORS    = __webpack_require__(9)\n\t  , $export        = __webpack_require__(0)\n\t  , redefine       = __webpack_require__(20)\n\t  , META           = __webpack_require__(37).KEY\n\t  , $fails         = __webpack_require__(4)\n\t  , shared         = __webpack_require__(86)\n\t  , setToStringTag = __webpack_require__(56)\n\t  , uid            = __webpack_require__(47)\n\t  , wks            = __webpack_require__(7)\n\t  , wksExt         = __webpack_require__(174)\n\t  , wksDefine      = __webpack_require__(117)\n\t  , keyOf          = __webpack_require__(274)\n\t  , enumKeys       = __webpack_require__(273)\n\t  , isArray        = __webpack_require__(103)\n\t  , anObject       = __webpack_require__(3)\n\t  , toIObject      = __webpack_require__(22)\n\t  , toPrimitive    = __webpack_require__(31)\n\t  , createDesc     = __webpack_require__(38)\n\t  , _create        = __webpack_require__(43)\n\t  , gOPNExt        = __webpack_require__(166)\n\t  , $GOPD          = __webpack_require__(23)\n\t  , $DP            = __webpack_require__(10)\n\t  , $keys          = __webpack_require__(45)\n\t  , gOPD           = $GOPD.f\n\t  , dP             = $DP.f\n\t  , gOPN           = gOPNExt.f\n\t  , $Symbol        = global.Symbol\n\t  , $JSON          = global.JSON\n\t  , _stringify     = $JSON && $JSON.stringify\n\t  , PROTOTYPE      = 'prototype'\n\t  , HIDDEN         = wks('_hidden')\n\t  , TO_PRIMITIVE   = wks('toPrimitive')\n\t  , isEnum         = {}.propertyIsEnumerable\n\t  , SymbolRegistry = shared('symbol-registry')\n\t  , AllSymbols     = shared('symbols')\n\t  , ObjectProto    = Object[PROTOTYPE]\n\t  , USE_NATIVE     = typeof $Symbol == 'function'\n\t  , QObject        = global.QObject;\n\t// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\tvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n\t// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\tvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n\t  return _create(dP({}, 'a', {\n\t    get: function(){ return dP(this, 'a', {value: 7}).a; }\n\t  })).a != 7;\n\t}) ? function(it, key, D){\n\t  var protoDesc = gOPD(ObjectProto, key);\n\t  if(protoDesc)delete ObjectProto[key];\n\t  dP(it, key, D);\n\t  if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n\t} : dP;\n\n\tvar wrap = function(tag){\n\t  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n\t  sym._k = tag;\n\t  return sym;\n\t};\n\n\tvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n\t  return typeof it == 'symbol';\n\t} : function(it){\n\t  return it instanceof $Symbol;\n\t};\n\n\tvar $defineProperty = function defineProperty(it, key, D){\n\t  anObject(it);\n\t  key = toPrimitive(key, true);\n\t  anObject(D);\n\t  if(has(AllSymbols, key)){\n\t    if(!D.enumerable){\n\t      if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n\t      it[HIDDEN][key] = true;\n\t    } else {\n\t      if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n\t      D = _create(D, {enumerable: createDesc(0, false)});\n\t    } return setSymbolDesc(it, key, D);\n\t  } return dP(it, key, D);\n\t};\n\tvar $defineProperties = function defineProperties(it, P){\n\t  anObject(it);\n\t  var keys = enumKeys(P = toIObject(P))\n\t    , i    = 0\n\t    , l = keys.length\n\t    , key;\n\t  while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n\t  return it;\n\t};\n\tvar $create = function create(it, P){\n\t  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n\t};\n\tvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n\t  var E = isEnum.call(this, key = toPrimitive(key, true));\n\t  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n\t};\n\tvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n\t  var D = gOPD(it = toIObject(it), key = toPrimitive(key, true));\n\t  if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n\t  return D;\n\t};\n\tvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n\t  var names  = gOPN(toIObject(it))\n\t    , result = []\n\t    , i      = 0\n\t    , key;\n\t  while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n\t  return result;\n\t};\n\tvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n\t  var names  = gOPN(toIObject(it))\n\t    , result = []\n\t    , i      = 0\n\t    , key;\n\t  while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);\n\t  return result;\n\t};\n\n\t// 19.4.1.1 Symbol([description])\n\tif(!USE_NATIVE){\n\t  $Symbol = function Symbol(){\n\t    if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n\t    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n\t    DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {\n\t      configurable: true,\n\t      set: function(value){\n\t        if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n\t        setSymbolDesc(this, tag, createDesc(1, value));\n\t      }\n\t    });\n\t    return wrap(tag);\n\t  };\n\t  redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n\t    return this._k;\n\t  });\n\n\t  $GOPD.f = $getOwnPropertyDescriptor;\n\t  $DP.f   = $defineProperty;\n\t  __webpack_require__(44).f = gOPNExt.f = $getOwnPropertyNames;\n\t  __webpack_require__(68).f  = $propertyIsEnumerable;\n\t  __webpack_require__(84).f = $getOwnPropertySymbols;\n\n\t  if(DESCRIPTORS && !__webpack_require__(42)){\n\t    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n\t  }\n\n\t  wksExt.f = function(name){\n\t    return wrap(wks(name));\n\t  }\n\t}\n\n\t$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\n\tfor(var symbols = (\n\t  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n\t  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n\t).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\n\tfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\n\t$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n\t  // 19.4.2.1 Symbol.for(key)\n\t  'for': function(key){\n\t    return has(SymbolRegistry, key += '')\n\t      ? SymbolRegistry[key]\n\t      : SymbolRegistry[key] = $Symbol(key);\n\t  },\n\t  // 19.4.2.5 Symbol.keyFor(sym)\n\t  keyFor: function keyFor(key){\n\t    if(isSymbol(key))return keyOf(SymbolRegistry, key);\n\t    throw TypeError(key + ' is not a symbol!');\n\t  },\n\t  useSetter: function(){ setter = true; },\n\t  useSimple: function(){ setter = false; }\n\t});\n\n\t$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n\t  // 19.1.2.2 Object.create(O [, Properties])\n\t  create: $create,\n\t  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n\t  defineProperty: $defineProperty,\n\t  // 19.1.2.3 Object.defineProperties(O, Properties)\n\t  defineProperties: $defineProperties,\n\t  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n\t  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n\t  // 19.1.2.7 Object.getOwnPropertyNames(O)\n\t  getOwnPropertyNames: $getOwnPropertyNames,\n\t  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n\t  getOwnPropertySymbols: $getOwnPropertySymbols\n\t});\n\n\t// 24.3.2 JSON.stringify(value [, replacer [, space]])\n\t$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n\t  var S = $Symbol();\n\t  // MS Edge converts symbol values to JSON as {}\n\t  // WebKit converts symbol values to JSON as null\n\t  // V8 throws on boxed symbols\n\t  return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n\t})), 'JSON', {\n\t  stringify: function stringify(it){\n\t    if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n\t    var args = [it]\n\t      , i    = 1\n\t      , replacer, $replacer;\n\t    while(arguments.length > i)args.push(arguments[i++]);\n\t    replacer = args[1];\n\t    if(typeof replacer == 'function')$replacer = replacer;\n\t    if($replacer || !isArray(replacer))replacer = function(key, value){\n\t      if($replacer)value = $replacer.call(this, key, value);\n\t      if(!isSymbol(value))return value;\n\t    };\n\t    args[1] = replacer;\n\t    return _stringify.apply($JSON, args);\n\t  }\n\t});\n\n\t// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n\t$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(19)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n\t// 19.4.3.5 Symbol.prototype[@@toStringTag]\n\tsetToStringTag($Symbol, 'Symbol');\n\t// 20.2.1.9 Math[@@toStringTag]\n\tsetToStringTag(Math, 'Math', true);\n\t// 24.3.3 JSON[@@toStringTag]\n\tsetToStringTag(global.JSON, 'JSON', true);\n\n/***/ },\n/* 400 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar $export      = __webpack_require__(0)\n\t  , $typed       = __webpack_require__(87)\n\t  , buffer       = __webpack_require__(116)\n\t  , anObject     = __webpack_require__(3)\n\t  , toIndex      = __webpack_require__(46)\n\t  , toLength     = __webpack_require__(13)\n\t  , isObject     = __webpack_require__(6)\n\t  , TYPED_ARRAY  = __webpack_require__(7)('typed_array')\n\t  , ArrayBuffer  = __webpack_require__(5).ArrayBuffer\n\t  , speciesConstructor = __webpack_require__(110)\n\t  , $ArrayBuffer = buffer.ArrayBuffer\n\t  , $DataView    = buffer.DataView\n\t  , $isView      = $typed.ABV && ArrayBuffer.isView\n\t  , $slice       = $ArrayBuffer.prototype.slice\n\t  , VIEW         = $typed.VIEW\n\t  , ARRAY_BUFFER = 'ArrayBuffer';\n\n\t$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});\n\n\t$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n\t  // 24.1.3.1 ArrayBuffer.isView(arg)\n\t  isView: function isView(it){\n\t    return $isView && $isView(it) || isObject(it) && VIEW in it;\n\t  }\n\t});\n\n\t$export($export.P + $export.U + $export.F * __webpack_require__(4)(function(){\n\t  return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n\t}), ARRAY_BUFFER, {\n\t  // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n\t  slice: function slice(start, end){\n\t    if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix\n\t    var len    = anObject(this).byteLength\n\t      , first  = toIndex(start, len)\n\t      , final  = toIndex(end === undefined ? len : end, len)\n\t      , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))\n\t      , viewS  = new $DataView(this)\n\t      , viewT  = new $DataView(result)\n\t      , index  = 0;\n\t    while(first < final){\n\t      viewT.setUint8(index++, viewS.getUint8(first++));\n\t    } return result;\n\t  }\n\t});\n\n\t__webpack_require__(55)(ARRAY_BUFFER);\n\n/***/ },\n/* 401 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0);\n\t$export($export.G + $export.W + $export.F * !__webpack_require__(87).ABV, {\n\t  DataView: __webpack_require__(116).DataView\n\t});\n\n/***/ },\n/* 402 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Float32', 4, function(init){\n\t  return function Float32Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 403 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Float64', 8, function(init){\n\t  return function Float64Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 404 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Int16', 2, function(init){\n\t  return function Int16Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 405 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Int32', 4, function(init){\n\t  return function Int32Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 406 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Int8', 1, function(init){\n\t  return function Int8Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 407 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Uint16', 2, function(init){\n\t  return function Uint16Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 408 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Uint32', 4, function(init){\n\t  return function Uint32Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 409 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Uint8', 1, function(init){\n\t  return function Uint8Array(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t});\n\n/***/ },\n/* 410 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(36)('Uint8', 1, function(init){\n\t  return function Uint8ClampedArray(data, byteOffset, length){\n\t    return init(this, data, byteOffset, length);\n\t  };\n\t}, true);\n\n/***/ },\n/* 411 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar weak = __webpack_require__(158);\n\n\t// 23.4 WeakSet Objects\n\t__webpack_require__(77)('WeakSet', function(get){\n\t  return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n\t}, {\n\t  // 23.4.3.1 WeakSet.prototype.add(value)\n\t  add: function add(value){\n\t    return weak.def(this, value, true);\n\t  }\n\t}, weak, false, true);\n\n/***/ },\n/* 412 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// https://github.com/tc39/Array.prototype.includes\n\tvar $export   = __webpack_require__(0)\n\t  , $includes = __webpack_require__(76)(true);\n\n\t$export($export.P, 'Array', {\n\t  includes: function includes(el /*, fromIndex = 0 */){\n\t    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n\t  }\n\t});\n\n\t__webpack_require__(52)('includes');\n\n/***/ },\n/* 413 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\r\n\tvar $export   = __webpack_require__(0)\r\n\t  , microtask = __webpack_require__(163)()\r\n\t  , process   = __webpack_require__(5).process\r\n\t  , isNode    = __webpack_require__(26)(process) == 'process';\r\n\r\n\t$export($export.G, {\r\n\t  asap: function asap(fn){\r\n\t    var domain = isNode && process.domain;\r\n\t    microtask(domain ? domain.bind(fn) : fn);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 414 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/ljharb/proposal-is-error\n\tvar $export = __webpack_require__(0)\n\t  , cof     = __webpack_require__(26);\n\n\t$export($export.S, 'Error', {\n\t  isError: function isError(it){\n\t    return cof(it) === 'Error';\n\t  }\n\t});\n\n/***/ },\n/* 415 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/DavidBruant/Map-Set.prototype.toJSON\n\tvar $export  = __webpack_require__(0);\n\n\t$export($export.P + $export.R, 'Map', {toJSON: __webpack_require__(157)('Map')});\n\n/***/ },\n/* 416 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  iaddh: function iaddh(x0, x1, y0, y1){\n\t    var $x0 = x0 >>> 0\n\t      , $x1 = x1 >>> 0\n\t      , $y0 = y0 >>> 0;\n\t    return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n\t  }\n\t});\n\n/***/ },\n/* 417 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  imulh: function imulh(u, v){\n\t    var UINT16 = 0xffff\n\t      , $u = +u\n\t      , $v = +v\n\t      , u0 = $u & UINT16\n\t      , v0 = $v & UINT16\n\t      , u1 = $u >> 16\n\t      , v1 = $v >> 16\n\t      , t  = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n\t    return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n\t  }\n\t});\n\n/***/ },\n/* 418 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  isubh: function isubh(x0, x1, y0, y1){\n\t    var $x0 = x0 >>> 0\n\t      , $x1 = x1 >>> 0\n\t      , $y0 = y0 >>> 0;\n\t    return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n\t  }\n\t});\n\n/***/ },\n/* 419 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'Math', {\n\t  umulh: function umulh(u, v){\n\t    var UINT16 = 0xffff\n\t      , $u = +u\n\t      , $v = +v\n\t      , u0 = $u & UINT16\n\t      , v0 = $v & UINT16\n\t      , u1 = $u >>> 16\n\t      , v1 = $v >>> 16\n\t      , t  = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n\t    return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n\t  }\n\t});\n\n/***/ },\n/* 420 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export         = __webpack_require__(0)\r\n\t  , toObject        = __webpack_require__(14)\r\n\t  , aFunction       = __webpack_require__(25)\r\n\t  , $defineProperty = __webpack_require__(10);\r\n\r\n\t// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\r\n\t__webpack_require__(9) && $export($export.P + __webpack_require__(83), 'Object', {\r\n\t  __defineGetter__: function __defineGetter__(P, getter){\r\n\t    $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});\r\n\t  }\r\n\t});\n\n/***/ },\n/* 421 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export         = __webpack_require__(0)\r\n\t  , toObject        = __webpack_require__(14)\r\n\t  , aFunction       = __webpack_require__(25)\r\n\t  , $defineProperty = __webpack_require__(10);\r\n\r\n\t// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\r\n\t__webpack_require__(9) && $export($export.P + __webpack_require__(83), 'Object', {\r\n\t  __defineSetter__: function __defineSetter__(P, setter){\r\n\t    $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});\r\n\t  }\r\n\t});\n\n/***/ },\n/* 422 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/tc39/proposal-object-values-entries\n\tvar $export  = __webpack_require__(0)\n\t  , $entries = __webpack_require__(168)(true);\n\n\t$export($export.S, 'Object', {\n\t  entries: function entries(it){\n\t    return $entries(it);\n\t  }\n\t});\n\n/***/ },\n/* 423 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/tc39/proposal-object-getownpropertydescriptors\n\tvar $export        = __webpack_require__(0)\n\t  , ownKeys        = __webpack_require__(169)\n\t  , toIObject      = __webpack_require__(22)\n\t  , gOPD           = __webpack_require__(23)\n\t  , createProperty = __webpack_require__(96);\n\n\t$export($export.S, 'Object', {\n\t  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){\n\t    var O       = toIObject(object)\n\t      , getDesc = gOPD.f\n\t      , keys    = ownKeys(O)\n\t      , result  = {}\n\t      , i       = 0\n\t      , key, D;\n\t    while(keys.length > i)createProperty(result, key = keys[i++], getDesc(O, key));\n\t    return result;\n\t  }\n\t});\n\n/***/ },\n/* 424 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export                  = __webpack_require__(0)\r\n\t  , toObject                 = __webpack_require__(14)\r\n\t  , toPrimitive              = __webpack_require__(31)\r\n\t  , getPrototypeOf           = __webpack_require__(24)\r\n\t  , getOwnPropertyDescriptor = __webpack_require__(23).f;\r\n\r\n\t// B.2.2.4 Object.prototype.__lookupGetter__(P)\r\n\t__webpack_require__(9) && $export($export.P + __webpack_require__(83), 'Object', {\r\n\t  __lookupGetter__: function __lookupGetter__(P){\r\n\t    var O = toObject(this)\r\n\t      , K = toPrimitive(P, true)\r\n\t      , D;\r\n\t    do {\r\n\t      if(D = getOwnPropertyDescriptor(O, K))return D.get;\r\n\t    } while(O = getPrototypeOf(O));\r\n\t  }\r\n\t});\n\n/***/ },\n/* 425 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\tvar $export                  = __webpack_require__(0)\r\n\t  , toObject                 = __webpack_require__(14)\r\n\t  , toPrimitive              = __webpack_require__(31)\r\n\t  , getPrototypeOf           = __webpack_require__(24)\r\n\t  , getOwnPropertyDescriptor = __webpack_require__(23).f;\r\n\r\n\t// B.2.2.5 Object.prototype.__lookupSetter__(P)\r\n\t__webpack_require__(9) && $export($export.P + __webpack_require__(83), 'Object', {\r\n\t  __lookupSetter__: function __lookupSetter__(P){\r\n\t    var O = toObject(this)\r\n\t      , K = toPrimitive(P, true)\r\n\t      , D;\r\n\t    do {\r\n\t      if(D = getOwnPropertyDescriptor(O, K))return D.set;\r\n\t    } while(O = getPrototypeOf(O));\r\n\t  }\r\n\t});\n\n/***/ },\n/* 426 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/tc39/proposal-object-values-entries\n\tvar $export = __webpack_require__(0)\n\t  , $values = __webpack_require__(168)(false);\n\n\t$export($export.S, 'Object', {\n\t  values: function values(it){\n\t    return $values(it);\n\t  }\n\t});\n\n/***/ },\n/* 427 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata                  = __webpack_require__(35)\n\t  , anObject                  = __webpack_require__(3)\n\t  , toMetaKey                 = metadata.key\n\t  , ordinaryDefineOwnMetadata = metadata.set;\n\n\tmetadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){\n\t  ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n\t}});\n\n/***/ },\n/* 428 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata               = __webpack_require__(35)\n\t  , anObject               = __webpack_require__(3)\n\t  , toMetaKey              = metadata.key\n\t  , getOrCreateMetadataMap = metadata.map\n\t  , store                  = metadata.store;\n\n\tmetadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){\n\t  var targetKey   = arguments.length < 3 ? undefined : toMetaKey(arguments[2])\n\t    , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n\t  if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;\n\t  if(metadataMap.size)return true;\n\t  var targetMetadata = store.get(target);\n\t  targetMetadata['delete'](targetKey);\n\t  return !!targetMetadata.size || store['delete'](target);\n\t}});\n\n/***/ },\n/* 429 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Set                     = __webpack_require__(177)\n\t  , from                    = __webpack_require__(153)\n\t  , metadata                = __webpack_require__(35)\n\t  , anObject                = __webpack_require__(3)\n\t  , getPrototypeOf          = __webpack_require__(24)\n\t  , ordinaryOwnMetadataKeys = metadata.keys\n\t  , toMetaKey               = metadata.key;\n\n\tvar ordinaryMetadataKeys = function(O, P){\n\t  var oKeys  = ordinaryOwnMetadataKeys(O, P)\n\t    , parent = getPrototypeOf(O);\n\t  if(parent === null)return oKeys;\n\t  var pKeys  = ordinaryMetadataKeys(parent, P);\n\t  return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n\t};\n\n\tmetadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){\n\t  return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n\t}});\n\n/***/ },\n/* 430 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata               = __webpack_require__(35)\n\t  , anObject               = __webpack_require__(3)\n\t  , getPrototypeOf         = __webpack_require__(24)\n\t  , ordinaryHasOwnMetadata = metadata.has\n\t  , ordinaryGetOwnMetadata = metadata.get\n\t  , toMetaKey              = metadata.key;\n\n\tvar ordinaryGetMetadata = function(MetadataKey, O, P){\n\t  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n\t  if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);\n\t  var parent = getPrototypeOf(O);\n\t  return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n\t};\n\n\tmetadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){\n\t  return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n\t}});\n\n/***/ },\n/* 431 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata                = __webpack_require__(35)\n\t  , anObject                = __webpack_require__(3)\n\t  , ordinaryOwnMetadataKeys = metadata.keys\n\t  , toMetaKey               = metadata.key;\n\n\tmetadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){\n\t  return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n\t}});\n\n/***/ },\n/* 432 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata               = __webpack_require__(35)\n\t  , anObject               = __webpack_require__(3)\n\t  , ordinaryGetOwnMetadata = metadata.get\n\t  , toMetaKey              = metadata.key;\n\n\tmetadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){\n\t  return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n\t    , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n\t}});\n\n/***/ },\n/* 433 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata               = __webpack_require__(35)\n\t  , anObject               = __webpack_require__(3)\n\t  , getPrototypeOf         = __webpack_require__(24)\n\t  , ordinaryHasOwnMetadata = metadata.has\n\t  , toMetaKey              = metadata.key;\n\n\tvar ordinaryHasMetadata = function(MetadataKey, O, P){\n\t  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n\t  if(hasOwn)return true;\n\t  var parent = getPrototypeOf(O);\n\t  return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n\t};\n\n\tmetadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){\n\t  return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n\t}});\n\n/***/ },\n/* 434 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata               = __webpack_require__(35)\n\t  , anObject               = __webpack_require__(3)\n\t  , ordinaryHasOwnMetadata = metadata.has\n\t  , toMetaKey              = metadata.key;\n\n\tmetadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){\n\t  return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n\t    , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n\t}});\n\n/***/ },\n/* 435 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar metadata                  = __webpack_require__(35)\n\t  , anObject                  = __webpack_require__(3)\n\t  , aFunction                 = __webpack_require__(25)\n\t  , toMetaKey                 = metadata.key\n\t  , ordinaryDefineOwnMetadata = metadata.set;\n\n\tmetadata.exp({metadata: function metadata(metadataKey, metadataValue){\n\t  return function decorator(target, targetKey){\n\t    ordinaryDefineOwnMetadata(\n\t      metadataKey, metadataValue,\n\t      (targetKey !== undefined ? anObject : aFunction)(target),\n\t      toMetaKey(targetKey)\n\t    );\n\t  };\n\t}});\n\n/***/ },\n/* 436 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/DavidBruant/Map-Set.prototype.toJSON\n\tvar $export  = __webpack_require__(0);\n\n\t$export($export.P + $export.R, 'Set', {toJSON: __webpack_require__(157)('Set')});\n\n/***/ },\n/* 437 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// https://github.com/mathiasbynens/String.prototype.at\n\tvar $export = __webpack_require__(0)\n\t  , $at     = __webpack_require__(111)(true);\n\n\t$export($export.P, 'String', {\n\t  at: function at(pos){\n\t    return $at(this, pos);\n\t  }\n\t});\n\n/***/ },\n/* 438 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\r\n\t// https://tc39.github.io/String.prototype.matchAll/\r\n\tvar $export     = __webpack_require__(0)\r\n\t  , defined     = __webpack_require__(27)\r\n\t  , toLength    = __webpack_require__(13)\r\n\t  , isRegExp    = __webpack_require__(81)\r\n\t  , getFlags    = __webpack_require__(79)\r\n\t  , RegExpProto = RegExp.prototype;\r\n\r\n\tvar $RegExpStringIterator = function(regexp, string){\r\n\t  this._r = regexp;\r\n\t  this._s = string;\r\n\t};\r\n\r\n\t__webpack_require__(105)($RegExpStringIterator, 'RegExp String', function next(){\r\n\t  var match = this._r.exec(this._s);\r\n\t  return {value: match, done: match === null};\r\n\t});\r\n\r\n\t$export($export.P, 'String', {\r\n\t  matchAll: function matchAll(regexp){\r\n\t    defined(this);\r\n\t    if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!');\r\n\t    var S     = String(this)\r\n\t      , flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp)\r\n\t      , rx    = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\r\n\t    rx.lastIndex = toLength(regexp.lastIndex);\r\n\t    return new $RegExpStringIterator(rx, S);\r\n\t  }\r\n\t});\n\n/***/ },\n/* 439 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// https://github.com/tc39/proposal-string-pad-start-end\n\tvar $export = __webpack_require__(0)\n\t  , $pad    = __webpack_require__(173);\n\n\t$export($export.P, 'String', {\n\t  padEnd: function padEnd(maxLength /*, fillString = ' ' */){\n\t    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n\t  }\n\t});\n\n/***/ },\n/* 440 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// https://github.com/tc39/proposal-string-pad-start-end\n\tvar $export = __webpack_require__(0)\n\t  , $pad    = __webpack_require__(173);\n\n\t$export($export.P, 'String', {\n\t  padStart: function padStart(maxLength /*, fillString = ' ' */){\n\t    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n\t  }\n\t});\n\n/***/ },\n/* 441 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n\t__webpack_require__(57)('trimLeft', function($trim){\n\t  return function trimLeft(){\n\t    return $trim(this, 1);\n\t  };\n\t}, 'trimStart');\n\n/***/ },\n/* 442 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\n\t__webpack_require__(57)('trimRight', function($trim){\n\t  return function trimRight(){\n\t    return $trim(this, 2);\n\t  };\n\t}, 'trimEnd');\n\n/***/ },\n/* 443 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(117)('asyncIterator');\n\n/***/ },\n/* 444 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(117)('observable');\n\n/***/ },\n/* 445 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://github.com/ljharb/proposal-global\n\tvar $export = __webpack_require__(0);\n\n\t$export($export.S, 'System', {global: __webpack_require__(5)});\n\n/***/ },\n/* 446 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $iterators    = __webpack_require__(119)\n\t  , redefine      = __webpack_require__(20)\n\t  , global        = __webpack_require__(5)\n\t  , hide          = __webpack_require__(19)\n\t  , Iterators     = __webpack_require__(41)\n\t  , wks           = __webpack_require__(7)\n\t  , ITERATOR      = wks('iterator')\n\t  , TO_STRING_TAG = wks('toStringTag')\n\t  , ArrayValues   = Iterators.Array;\n\n\tfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n\t  var NAME       = collections[i]\n\t    , Collection = global[NAME]\n\t    , proto      = Collection && Collection.prototype\n\t    , key;\n\t  if(proto){\n\t    if(!proto[ITERATOR])hide(proto, ITERATOR, ArrayValues);\n\t    if(!proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n\t    Iterators[NAME] = ArrayValues;\n\t    for(key in $iterators)if(!proto[key])redefine(proto, key, $iterators[key], true);\n\t  }\n\t}\n\n/***/ },\n/* 447 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar $export = __webpack_require__(0)\n\t  , $task   = __webpack_require__(115);\n\t$export($export.G + $export.B, {\n\t  setImmediate:   $task.set,\n\t  clearImmediate: $task.clear\n\t});\n\n/***/ },\n/* 448 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// ie9- setTimeout & setInterval additional parameters fix\n\tvar global     = __webpack_require__(5)\n\t  , $export    = __webpack_require__(0)\n\t  , invoke     = __webpack_require__(80)\n\t  , partial    = __webpack_require__(275)\n\t  , navigator  = global.navigator\n\t  , MSIE       = !!navigator && /MSIE .\\./.test(navigator.userAgent); // <- dirty ie9- check\n\tvar wrap = function(set){\n\t  return MSIE ? function(fn, time /*, ...args */){\n\t    return set(invoke(\n\t      partial,\n\t      [].slice.call(arguments, 2),\n\t      typeof fn == 'function' ? fn : Function(fn)\n\t    ), time);\n\t  } : set;\n\t};\n\t$export($export.G + $export.B + $export.F * MSIE, {\n\t  setTimeout:  wrap(global.setTimeout),\n\t  setInterval: wrap(global.setInterval)\n\t});\n\n/***/ },\n/* 449 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(399);\n\t__webpack_require__(338);\n\t__webpack_require__(340);\n\t__webpack_require__(339);\n\t__webpack_require__(342);\n\t__webpack_require__(344);\n\t__webpack_require__(349);\n\t__webpack_require__(343);\n\t__webpack_require__(341);\n\t__webpack_require__(351);\n\t__webpack_require__(350);\n\t__webpack_require__(346);\n\t__webpack_require__(347);\n\t__webpack_require__(345);\n\t__webpack_require__(337);\n\t__webpack_require__(348);\n\t__webpack_require__(352);\n\t__webpack_require__(353);\n\t__webpack_require__(305);\n\t__webpack_require__(307);\n\t__webpack_require__(306);\n\t__webpack_require__(355);\n\t__webpack_require__(354);\n\t__webpack_require__(325);\n\t__webpack_require__(335);\n\t__webpack_require__(336);\n\t__webpack_require__(326);\n\t__webpack_require__(327);\n\t__webpack_require__(328);\n\t__webpack_require__(329);\n\t__webpack_require__(330);\n\t__webpack_require__(331);\n\t__webpack_require__(332);\n\t__webpack_require__(333);\n\t__webpack_require__(334);\n\t__webpack_require__(308);\n\t__webpack_require__(309);\n\t__webpack_require__(310);\n\t__webpack_require__(311);\n\t__webpack_require__(312);\n\t__webpack_require__(313);\n\t__webpack_require__(314);\n\t__webpack_require__(315);\n\t__webpack_require__(316);\n\t__webpack_require__(317);\n\t__webpack_require__(318);\n\t__webpack_require__(319);\n\t__webpack_require__(320);\n\t__webpack_require__(321);\n\t__webpack_require__(322);\n\t__webpack_require__(323);\n\t__webpack_require__(324);\n\t__webpack_require__(386);\n\t__webpack_require__(391);\n\t__webpack_require__(398);\n\t__webpack_require__(389);\n\t__webpack_require__(381);\n\t__webpack_require__(382);\n\t__webpack_require__(387);\n\t__webpack_require__(392);\n\t__webpack_require__(394);\n\t__webpack_require__(377);\n\t__webpack_require__(378);\n\t__webpack_require__(379);\n\t__webpack_require__(380);\n\t__webpack_require__(383);\n\t__webpack_require__(384);\n\t__webpack_require__(385);\n\t__webpack_require__(388);\n\t__webpack_require__(390);\n\t__webpack_require__(393);\n\t__webpack_require__(395);\n\t__webpack_require__(396);\n\t__webpack_require__(397);\n\t__webpack_require__(300);\n\t__webpack_require__(302);\n\t__webpack_require__(301);\n\t__webpack_require__(304);\n\t__webpack_require__(303);\n\t__webpack_require__(289);\n\t__webpack_require__(287);\n\t__webpack_require__(293);\n\t__webpack_require__(290);\n\t__webpack_require__(296);\n\t__webpack_require__(298);\n\t__webpack_require__(286);\n\t__webpack_require__(292);\n\t__webpack_require__(283);\n\t__webpack_require__(297);\n\t__webpack_require__(281);\n\t__webpack_require__(295);\n\t__webpack_require__(294);\n\t__webpack_require__(288);\n\t__webpack_require__(291);\n\t__webpack_require__(280);\n\t__webpack_require__(282);\n\t__webpack_require__(285);\n\t__webpack_require__(284);\n\t__webpack_require__(299);\n\t__webpack_require__(119);\n\t__webpack_require__(371);\n\t__webpack_require__(376);\n\t__webpack_require__(176);\n\t__webpack_require__(372);\n\t__webpack_require__(373);\n\t__webpack_require__(374);\n\t__webpack_require__(375);\n\t__webpack_require__(356);\n\t__webpack_require__(175);\n\t__webpack_require__(177);\n\t__webpack_require__(178);\n\t__webpack_require__(411);\n\t__webpack_require__(400);\n\t__webpack_require__(401);\n\t__webpack_require__(406);\n\t__webpack_require__(409);\n\t__webpack_require__(410);\n\t__webpack_require__(404);\n\t__webpack_require__(407);\n\t__webpack_require__(405);\n\t__webpack_require__(408);\n\t__webpack_require__(402);\n\t__webpack_require__(403);\n\t__webpack_require__(357);\n\t__webpack_require__(358);\n\t__webpack_require__(359);\n\t__webpack_require__(360);\n\t__webpack_require__(361);\n\t__webpack_require__(364);\n\t__webpack_require__(362);\n\t__webpack_require__(363);\n\t__webpack_require__(365);\n\t__webpack_require__(366);\n\t__webpack_require__(367);\n\t__webpack_require__(368);\n\t__webpack_require__(370);\n\t__webpack_require__(369);\n\t__webpack_require__(412);\n\t__webpack_require__(437);\n\t__webpack_require__(440);\n\t__webpack_require__(439);\n\t__webpack_require__(441);\n\t__webpack_require__(442);\n\t__webpack_require__(438);\n\t__webpack_require__(443);\n\t__webpack_require__(444);\n\t__webpack_require__(423);\n\t__webpack_require__(426);\n\t__webpack_require__(422);\n\t__webpack_require__(420);\n\t__webpack_require__(421);\n\t__webpack_require__(424);\n\t__webpack_require__(425);\n\t__webpack_require__(415);\n\t__webpack_require__(436);\n\t__webpack_require__(445);\n\t__webpack_require__(414);\n\t__webpack_require__(416);\n\t__webpack_require__(418);\n\t__webpack_require__(417);\n\t__webpack_require__(419);\n\t__webpack_require__(427);\n\t__webpack_require__(428);\n\t__webpack_require__(430);\n\t__webpack_require__(429);\n\t__webpack_require__(432);\n\t__webpack_require__(431);\n\t__webpack_require__(433);\n\t__webpack_require__(434);\n\t__webpack_require__(435);\n\t__webpack_require__(413);\n\t__webpack_require__(448);\n\t__webpack_require__(447);\n\t__webpack_require__(446);\n\tmodule.exports = __webpack_require__(33);\n\n/***/ },\n/* 450 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var elliptic = __webpack_require__(18);\n\tvar BN = __webpack_require__(11);\n\n\tmodule.exports = function createECDH(curve) {\n\t\treturn new ECDH(curve);\n\t};\n\n\tvar aliases = {\n\t\tsecp256k1: {\n\t\t\tname: 'secp256k1',\n\t\t\tbyteLength: 32\n\t\t},\n\t\tsecp224r1: {\n\t\t\tname: 'p224',\n\t\t\tbyteLength: 28\n\t\t},\n\t\tprime256v1: {\n\t\t\tname: 'p256',\n\t\t\tbyteLength: 32\n\t\t},\n\t\tprime192v1: {\n\t\t\tname: 'p192',\n\t\t\tbyteLength: 24\n\t\t},\n\t\ted25519: {\n\t\t\tname: 'ed25519',\n\t\t\tbyteLength: 32\n\t\t},\n\t\tsecp384r1: {\n\t\t\tname: 'p384',\n\t\t\tbyteLength: 48\n\t\t},\n\t\tsecp521r1: {\n\t\t\tname: 'p521',\n\t\t\tbyteLength: 66\n\t\t}\n\t};\n\n\taliases.p224 = aliases.secp224r1;\n\taliases.p256 = aliases.secp256r1 = aliases.prime256v1;\n\taliases.p192 = aliases.secp192r1 = aliases.prime192v1;\n\taliases.p384 = aliases.secp384r1;\n\taliases.p521 = aliases.secp521r1;\n\n\tfunction ECDH(curve) {\n\t\tthis.curveType = aliases[curve];\n\t\tif (!this.curveType ) {\n\t\t\tthis.curveType = {\n\t\t\t\tname: curve\n\t\t\t};\n\t\t}\n\t\tthis.curve = new elliptic.ec(this.curveType.name);\n\t\tthis.keys = void 0;\n\t}\n\n\tECDH.prototype.generateKeys = function (enc, format) {\n\t\tthis.keys = this.curve.genKeyPair();\n\t\treturn this.getPublicKey(enc, format);\n\t};\n\n\tECDH.prototype.computeSecret = function (other, inenc, enc) {\n\t\tinenc = inenc || 'utf8';\n\t\tif (!Buffer.isBuffer(other)) {\n\t\t\tother = new Buffer(other, inenc);\n\t\t}\n\t\tvar otherPub = this.curve.keyFromPublic(other).getPublic();\n\t\tvar out = otherPub.mul(this.keys.getPrivate()).getX();\n\t\treturn formatReturnValue(out, enc, this.curveType.byteLength);\n\t};\n\n\tECDH.prototype.getPublicKey = function (enc, format) {\n\t\tvar key = this.keys.getPublic(format === 'compressed', true);\n\t\tif (format === 'hybrid') {\n\t\t\tif (key[key.length - 1] % 2) {\n\t\t\t\tkey[0] = 7;\n\t\t\t} else {\n\t\t\t\tkey [0] = 6;\n\t\t\t}\n\t\t}\n\t\treturn formatReturnValue(key, enc);\n\t};\n\n\tECDH.prototype.getPrivateKey = function (enc) {\n\t\treturn formatReturnValue(this.keys.getPrivate(), enc);\n\t};\n\n\tECDH.prototype.setPublicKey = function (pub, enc) {\n\t\tenc = enc || 'utf8';\n\t\tif (!Buffer.isBuffer(pub)) {\n\t\t\tpub = new Buffer(pub, enc);\n\t\t}\n\t\tthis.keys._importPublic(pub);\n\t\treturn this;\n\t};\n\n\tECDH.prototype.setPrivateKey = function (priv, enc) {\n\t\tenc = enc || 'utf8';\n\t\tif (!Buffer.isBuffer(priv)) {\n\t\t\tpriv = new Buffer(priv, enc);\n\t\t}\n\t\tvar _priv = new BN(priv);\n\t\t_priv = _priv.toString(16);\n\t\tthis.keys._importPrivate(_priv);\n\t\treturn this;\n\t};\n\n\tfunction formatReturnValue(bn, enc, len) {\n\t\tif (!Array.isArray(bn)) {\n\t\t\tbn = bn.toArray();\n\t\t}\n\t\tvar buf = new Buffer(bn);\n\t\tif (len && buf.length < len) {\n\t\t\tvar zeros = new Buffer(len - buf.length);\n\t\t\tzeros.fill(0);\n\t\t\tbuf = Buffer.concat([zeros, buf]);\n\t\t}\n\t\tif (!enc) {\n\t\t\treturn buf;\n\t\t} else {\n\t\t\treturn buf.toString(enc);\n\t\t}\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 451 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\tvar intSize = 4;\n\tvar zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);\n\tvar chrsz = 8;\n\n\tfunction toArray(buf, bigEndian) {\n\t  if ((buf.length % intSize) !== 0) {\n\t    var len = buf.length + (intSize - (buf.length % intSize));\n\t    buf = Buffer.concat([buf, zeroBuffer], len);\n\t  }\n\n\t  var arr = [];\n\t  var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;\n\t  for (var i = 0; i < buf.length; i += intSize) {\n\t    arr.push(fn.call(buf, i));\n\t  }\n\t  return arr;\n\t}\n\n\tfunction toBuffer(arr, size, bigEndian) {\n\t  var buf = new Buffer(size);\n\t  var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;\n\t  for (var i = 0; i < arr.length; i++) {\n\t    fn.call(buf, arr[i], i * 4, true);\n\t  }\n\t  return buf;\n\t}\n\n\tfunction hash(buf, fn, hashSize, bigEndian) {\n\t  if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);\n\t  var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);\n\t  return toBuffer(arr, hashSize, bigEndian);\n\t}\n\texports.hash = hash;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 452 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar assert = __webpack_require__(69);\n\tvar inherits = __webpack_require__(2);\n\n\tvar proto = {};\n\n\tfunction CBCState(iv) {\n\t  assert.equal(iv.length, 8, 'Invalid IV length');\n\n\t  this.iv = new Array(8);\n\t  for (var i = 0; i < this.iv.length; i++)\n\t    this.iv[i] = iv[i];\n\t}\n\n\tfunction instantiate(Base) {\n\t  function CBC(options) {\n\t    Base.call(this, options);\n\t    this._cbcInit();\n\t  }\n\t  inherits(CBC, Base);\n\n\t  var keys = Object.keys(proto);\n\t  for (var i = 0; i < keys.length; i++) {\n\t    var key = keys[i];\n\t    CBC.prototype[key] = proto[key];\n\t  }\n\n\t  CBC.create = function create(options) {\n\t    return new CBC(options);\n\t  };\n\n\t  return CBC;\n\t}\n\n\texports.instantiate = instantiate;\n\n\tproto._cbcInit = function _cbcInit() {\n\t  var state = new CBCState(this.options.iv);\n\t  this._cbcState = state;\n\t};\n\n\tproto._update = function _update(inp, inOff, out, outOff) {\n\t  var state = this._cbcState;\n\t  var superProto = this.constructor.super_.prototype;\n\n\t  var iv = state.iv;\n\t  if (this.type === 'encrypt') {\n\t    for (var i = 0; i < this.blockSize; i++)\n\t      iv[i] ^= inp[inOff + i];\n\n\t    superProto._update.call(this, iv, 0, out, outOff);\n\n\t    for (var i = 0; i < this.blockSize; i++)\n\t      iv[i] = out[outOff + i];\n\t  } else {\n\t    superProto._update.call(this, inp, inOff, out, outOff);\n\n\t    for (var i = 0; i < this.blockSize; i++)\n\t      out[outOff + i] ^= iv[i];\n\n\t    for (var i = 0; i < this.blockSize; i++)\n\t      iv[i] = inp[inOff + i];\n\t  }\n\t};\n\n\n/***/ },\n/* 453 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar assert = __webpack_require__(69);\n\n\tfunction Cipher(options) {\n\t  this.options = options;\n\n\t  this.type = this.options.type;\n\t  this.blockSize = 8;\n\t  this._init();\n\n\t  this.buffer = new Array(this.blockSize);\n\t  this.bufferOff = 0;\n\t}\n\tmodule.exports = Cipher;\n\n\tCipher.prototype._init = function _init() {\n\t  // Might be overrided\n\t};\n\n\tCipher.prototype.update = function update(data) {\n\t  if (data.length === 0)\n\t    return [];\n\n\t  if (this.type === 'decrypt')\n\t    return this._updateDecrypt(data);\n\t  else\n\t    return this._updateEncrypt(data);\n\t};\n\n\tCipher.prototype._buffer = function _buffer(data, off) {\n\t  // Append data to buffer\n\t  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n\t  for (var i = 0; i < min; i++)\n\t    this.buffer[this.bufferOff + i] = data[off + i];\n\t  this.bufferOff += min;\n\n\t  // Shift next\n\t  return min;\n\t};\n\n\tCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n\t  this._update(this.buffer, 0, out, off);\n\t  this.bufferOff = 0;\n\t  return this.blockSize;\n\t};\n\n\tCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n\t  var inputOff = 0;\n\t  var outputOff = 0;\n\n\t  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n\t  var out = new Array(count * this.blockSize);\n\n\t  if (this.bufferOff !== 0) {\n\t    inputOff += this._buffer(data, inputOff);\n\n\t    if (this.bufferOff === this.buffer.length)\n\t      outputOff += this._flushBuffer(out, outputOff);\n\t  }\n\n\t  // Write blocks\n\t  var max = data.length - ((data.length - inputOff) % this.blockSize);\n\t  for (; inputOff < max; inputOff += this.blockSize) {\n\t    this._update(data, inputOff, out, outputOff);\n\t    outputOff += this.blockSize;\n\t  }\n\n\t  // Queue rest\n\t  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n\t    this.buffer[this.bufferOff] = data[inputOff];\n\n\t  return out;\n\t};\n\n\tCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n\t  var inputOff = 0;\n\t  var outputOff = 0;\n\n\t  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n\t  var out = new Array(count * this.blockSize);\n\n\t  // TODO(indutny): optimize it, this is far from optimal\n\t  for (; count > 0; count--) {\n\t    inputOff += this._buffer(data, inputOff);\n\t    outputOff += this._flushBuffer(out, outputOff);\n\t  }\n\n\t  // Buffer rest of the input\n\t  inputOff += this._buffer(data, inputOff);\n\n\t  return out;\n\t};\n\n\tCipher.prototype.final = function final(buffer) {\n\t  var first;\n\t  if (buffer)\n\t    first = this.update(buffer);\n\n\t  var last;\n\t  if (this.type === 'encrypt')\n\t    last = this._finalEncrypt();\n\t  else\n\t    last = this._finalDecrypt();\n\n\t  if (first)\n\t    return first.concat(last);\n\t  else\n\t    return last;\n\t};\n\n\tCipher.prototype._pad = function _pad(buffer, off) {\n\t  if (off === 0)\n\t    return false;\n\n\t  while (off < buffer.length)\n\t    buffer[off++] = 0;\n\n\t  return true;\n\t};\n\n\tCipher.prototype._finalEncrypt = function _finalEncrypt() {\n\t  if (!this._pad(this.buffer, this.bufferOff))\n\t    return [];\n\n\t  var out = new Array(this.blockSize);\n\t  this._update(this.buffer, 0, out, 0);\n\t  return out;\n\t};\n\n\tCipher.prototype._unpad = function _unpad(buffer) {\n\t  return buffer;\n\t};\n\n\tCipher.prototype._finalDecrypt = function _finalDecrypt() {\n\t  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n\t  var out = new Array(this.blockSize);\n\t  this._flushBuffer(out, 0);\n\n\t  return this._unpad(out);\n\t};\n\n\n/***/ },\n/* 454 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar assert = __webpack_require__(69);\n\tvar inherits = __webpack_require__(2);\n\n\tvar des = __webpack_require__(121);\n\tvar utils = des.utils;\n\tvar Cipher = des.Cipher;\n\n\tfunction DESState() {\n\t  this.tmp = new Array(2);\n\t  this.keys = null;\n\t}\n\n\tfunction DES(options) {\n\t  Cipher.call(this, options);\n\n\t  var state = new DESState();\n\t  this._desState = state;\n\n\t  this.deriveKeys(state, options.key);\n\t}\n\tinherits(DES, Cipher);\n\tmodule.exports = DES;\n\n\tDES.create = function create(options) {\n\t  return new DES(options);\n\t};\n\n\tvar shiftTable = [\n\t  1, 1, 2, 2, 2, 2, 2, 2,\n\t  1, 2, 2, 2, 2, 2, 2, 1\n\t];\n\n\tDES.prototype.deriveKeys = function deriveKeys(state, key) {\n\t  state.keys = new Array(16 * 2);\n\n\t  assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n\t  var kL = utils.readUInt32BE(key, 0);\n\t  var kR = utils.readUInt32BE(key, 4);\n\n\t  utils.pc1(kL, kR, state.tmp, 0);\n\t  kL = state.tmp[0];\n\t  kR = state.tmp[1];\n\t  for (var i = 0; i < state.keys.length; i += 2) {\n\t    var shift = shiftTable[i >>> 1];\n\t    kL = utils.r28shl(kL, shift);\n\t    kR = utils.r28shl(kR, shift);\n\t    utils.pc2(kL, kR, state.keys, i);\n\t  }\n\t};\n\n\tDES.prototype._update = function _update(inp, inOff, out, outOff) {\n\t  var state = this._desState;\n\n\t  var l = utils.readUInt32BE(inp, inOff);\n\t  var r = utils.readUInt32BE(inp, inOff + 4);\n\n\t  // Initial Permutation\n\t  utils.ip(l, r, state.tmp, 0);\n\t  l = state.tmp[0];\n\t  r = state.tmp[1];\n\n\t  if (this.type === 'encrypt')\n\t    this._encrypt(state, l, r, state.tmp, 0);\n\t  else\n\t    this._decrypt(state, l, r, state.tmp, 0);\n\n\t  l = state.tmp[0];\n\t  r = state.tmp[1];\n\n\t  utils.writeUInt32BE(out, l, outOff);\n\t  utils.writeUInt32BE(out, r, outOff + 4);\n\t};\n\n\tDES.prototype._pad = function _pad(buffer, off) {\n\t  var value = buffer.length - off;\n\t  for (var i = off; i < buffer.length; i++)\n\t    buffer[i] = value;\n\n\t  return true;\n\t};\n\n\tDES.prototype._unpad = function _unpad(buffer) {\n\t  var pad = buffer[buffer.length - 1];\n\t  for (var i = buffer.length - pad; i < buffer.length; i++)\n\t    assert.equal(buffer[i], pad);\n\n\t  return buffer.slice(0, buffer.length - pad);\n\t};\n\n\tDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n\t  var l = lStart;\n\t  var r = rStart;\n\n\t  // Apply f() x16 times\n\t  for (var i = 0; i < state.keys.length; i += 2) {\n\t    var keyL = state.keys[i];\n\t    var keyR = state.keys[i + 1];\n\n\t    // f(r, k)\n\t    utils.expand(r, state.tmp, 0);\n\n\t    keyL ^= state.tmp[0];\n\t    keyR ^= state.tmp[1];\n\t    var s = utils.substitute(keyL, keyR);\n\t    var f = utils.permute(s);\n\n\t    var t = r;\n\t    r = (l ^ f) >>> 0;\n\t    l = t;\n\t  }\n\n\t  // Reverse Initial Permutation\n\t  utils.rip(r, l, out, off);\n\t};\n\n\tDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n\t  var l = rStart;\n\t  var r = lStart;\n\n\t  // Apply f() x16 times\n\t  for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n\t    var keyL = state.keys[i];\n\t    var keyR = state.keys[i + 1];\n\n\t    // f(r, k)\n\t    utils.expand(l, state.tmp, 0);\n\n\t    keyL ^= state.tmp[0];\n\t    keyR ^= state.tmp[1];\n\t    var s = utils.substitute(keyL, keyR);\n\t    var f = utils.permute(s);\n\n\t    var t = l;\n\t    l = (r ^ f) >>> 0;\n\t    r = t;\n\t  }\n\n\t  // Reverse Initial Permutation\n\t  utils.rip(l, r, out, off);\n\t};\n\n\n/***/ },\n/* 455 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar assert = __webpack_require__(69);\n\tvar inherits = __webpack_require__(2);\n\n\tvar des = __webpack_require__(121);\n\tvar Cipher = des.Cipher;\n\tvar DES = des.DES;\n\n\tfunction EDEState(type, key) {\n\t  assert.equal(key.length, 24, 'Invalid key length');\n\n\t  var k1 = key.slice(0, 8);\n\t  var k2 = key.slice(8, 16);\n\t  var k3 = key.slice(16, 24);\n\n\t  if (type === 'encrypt') {\n\t    this.ciphers = [\n\t      DES.create({ type: 'encrypt', key: k1 }),\n\t      DES.create({ type: 'decrypt', key: k2 }),\n\t      DES.create({ type: 'encrypt', key: k3 })\n\t    ];\n\t  } else {\n\t    this.ciphers = [\n\t      DES.create({ type: 'decrypt', key: k3 }),\n\t      DES.create({ type: 'encrypt', key: k2 }),\n\t      DES.create({ type: 'decrypt', key: k1 })\n\t    ];\n\t  }\n\t}\n\n\tfunction EDE(options) {\n\t  Cipher.call(this, options);\n\n\t  var state = new EDEState(this.type, this.options.key);\n\t  this._edeState = state;\n\t}\n\tinherits(EDE, Cipher);\n\n\tmodule.exports = EDE;\n\n\tEDE.create = function create(options) {\n\t  return new EDE(options);\n\t};\n\n\tEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n\t  var state = this._edeState;\n\n\t  state.ciphers[0]._update(inp, inOff, out, outOff);\n\t  state.ciphers[1]._update(out, outOff, out, outOff);\n\t  state.ciphers[2]._update(out, outOff, out, outOff);\n\t};\n\n\tEDE.prototype._pad = DES.prototype._pad;\n\tEDE.prototype._unpad = DES.prototype._unpad;\n\n\n/***/ },\n/* 456 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\texports.readUInt32BE = function readUInt32BE(bytes, off) {\n\t  var res =  (bytes[0 + off] << 24) |\n\t             (bytes[1 + off] << 16) |\n\t             (bytes[2 + off] << 8) |\n\t             bytes[3 + off];\n\t  return res >>> 0;\n\t};\n\n\texports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n\t  bytes[0 + off] = value >>> 24;\n\t  bytes[1 + off] = (value >>> 16) & 0xff;\n\t  bytes[2 + off] = (value >>> 8) & 0xff;\n\t  bytes[3 + off] = value & 0xff;\n\t};\n\n\texports.ip = function ip(inL, inR, out, off) {\n\t  var outL = 0;\n\t  var outR = 0;\n\n\t  for (var i = 6; i >= 0; i -= 2) {\n\t    for (var j = 0; j <= 24; j += 8) {\n\t      outL <<= 1;\n\t      outL |= (inR >>> (j + i)) & 1;\n\t    }\n\t    for (var j = 0; j <= 24; j += 8) {\n\t      outL <<= 1;\n\t      outL |= (inL >>> (j + i)) & 1;\n\t    }\n\t  }\n\n\t  for (var i = 6; i >= 0; i -= 2) {\n\t    for (var j = 1; j <= 25; j += 8) {\n\t      outR <<= 1;\n\t      outR |= (inR >>> (j + i)) & 1;\n\t    }\n\t    for (var j = 1; j <= 25; j += 8) {\n\t      outR <<= 1;\n\t      outR |= (inL >>> (j + i)) & 1;\n\t    }\n\t  }\n\n\t  out[off + 0] = outL >>> 0;\n\t  out[off + 1] = outR >>> 0;\n\t};\n\n\texports.rip = function rip(inL, inR, out, off) {\n\t  var outL = 0;\n\t  var outR = 0;\n\n\t  for (var i = 0; i < 4; i++) {\n\t    for (var j = 24; j >= 0; j -= 8) {\n\t      outL <<= 1;\n\t      outL |= (inR >>> (j + i)) & 1;\n\t      outL <<= 1;\n\t      outL |= (inL >>> (j + i)) & 1;\n\t    }\n\t  }\n\t  for (var i = 4; i < 8; i++) {\n\t    for (var j = 24; j >= 0; j -= 8) {\n\t      outR <<= 1;\n\t      outR |= (inR >>> (j + i)) & 1;\n\t      outR <<= 1;\n\t      outR |= (inL >>> (j + i)) & 1;\n\t    }\n\t  }\n\n\t  out[off + 0] = outL >>> 0;\n\t  out[off + 1] = outR >>> 0;\n\t};\n\n\texports.pc1 = function pc1(inL, inR, out, off) {\n\t  var outL = 0;\n\t  var outR = 0;\n\n\t  // 7, 15, 23, 31, 39, 47, 55, 63\n\t  // 6, 14, 22, 30, 39, 47, 55, 63\n\t  // 5, 13, 21, 29, 39, 47, 55, 63\n\t  // 4, 12, 20, 28\n\t  for (var i = 7; i >= 5; i--) {\n\t    for (var j = 0; j <= 24; j += 8) {\n\t      outL <<= 1;\n\t      outL |= (inR >> (j + i)) & 1;\n\t    }\n\t    for (var j = 0; j <= 24; j += 8) {\n\t      outL <<= 1;\n\t      outL |= (inL >> (j + i)) & 1;\n\t    }\n\t  }\n\t  for (var j = 0; j <= 24; j += 8) {\n\t    outL <<= 1;\n\t    outL |= (inR >> (j + i)) & 1;\n\t  }\n\n\t  // 1, 9, 17, 25, 33, 41, 49, 57\n\t  // 2, 10, 18, 26, 34, 42, 50, 58\n\t  // 3, 11, 19, 27, 35, 43, 51, 59\n\t  // 36, 44, 52, 60\n\t  for (var i = 1; i <= 3; i++) {\n\t    for (var j = 0; j <= 24; j += 8) {\n\t      outR <<= 1;\n\t      outR |= (inR >> (j + i)) & 1;\n\t    }\n\t    for (var j = 0; j <= 24; j += 8) {\n\t      outR <<= 1;\n\t      outR |= (inL >> (j + i)) & 1;\n\t    }\n\t  }\n\t  for (var j = 0; j <= 24; j += 8) {\n\t    outR <<= 1;\n\t    outR |= (inL >> (j + i)) & 1;\n\t  }\n\n\t  out[off + 0] = outL >>> 0;\n\t  out[off + 1] = outR >>> 0;\n\t};\n\n\texports.r28shl = function r28shl(num, shift) {\n\t  return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n\t};\n\n\tvar pc2table = [\n\t  // inL => outL\n\t  14, 11, 17, 4, 27, 23, 25, 0,\n\t  13, 22, 7, 18, 5, 9, 16, 24,\n\t  2, 20, 12, 21, 1, 8, 15, 26,\n\n\t  // inR => outR\n\t  15, 4, 25, 19, 9, 1, 26, 16,\n\t  5, 11, 23, 8, 12, 7, 17, 0,\n\t  22, 3, 10, 14, 6, 20, 27, 24\n\t];\n\n\texports.pc2 = function pc2(inL, inR, out, off) {\n\t  var outL = 0;\n\t  var outR = 0;\n\n\t  var len = pc2table.length >>> 1;\n\t  for (var i = 0; i < len; i++) {\n\t    outL <<= 1;\n\t    outL |= (inL >>> pc2table[i]) & 0x1;\n\t  }\n\t  for (var i = len; i < pc2table.length; i++) {\n\t    outR <<= 1;\n\t    outR |= (inR >>> pc2table[i]) & 0x1;\n\t  }\n\n\t  out[off + 0] = outL >>> 0;\n\t  out[off + 1] = outR >>> 0;\n\t};\n\n\texports.expand = function expand(r, out, off) {\n\t  var outL = 0;\n\t  var outR = 0;\n\n\t  outL = ((r & 1) << 5) | (r >>> 27);\n\t  for (var i = 23; i >= 15; i -= 4) {\n\t    outL <<= 6;\n\t    outL |= (r >>> i) & 0x3f;\n\t  }\n\t  for (var i = 11; i >= 3; i -= 4) {\n\t    outR |= (r >>> i) & 0x3f;\n\t    outR <<= 6;\n\t  }\n\t  outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n\t  out[off + 0] = outL >>> 0;\n\t  out[off + 1] = outR >>> 0;\n\t};\n\n\tvar sTable = [\n\t  14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n\t  3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n\t  4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n\t  15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n\t  15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n\t  9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n\t  0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n\t  5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n\t  10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n\t  1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n\t  13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n\t  11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n\t  7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n\t  1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n\t  10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n\t  15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n\t  2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n\t  8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n\t  4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n\t  15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n\t  12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n\t  0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n\t  9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n\t  7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n\t  4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n\t  3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n\t  1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n\t  10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n\t  13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n\t  10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n\t  7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n\t  0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n\t];\n\n\texports.substitute = function substitute(inL, inR) {\n\t  var out = 0;\n\t  for (var i = 0; i < 4; i++) {\n\t    var b = (inL >>> (18 - i * 6)) & 0x3f;\n\t    var sb = sTable[i * 0x40 + b];\n\n\t    out <<= 4;\n\t    out |= sb;\n\t  }\n\t  for (var i = 0; i < 4; i++) {\n\t    var b = (inR >>> (18 - i * 6)) & 0x3f;\n\t    var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n\t    out <<= 4;\n\t    out |= sb;\n\t  }\n\t  return out >>> 0;\n\t};\n\n\tvar permuteTable = [\n\t  16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n\t  30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n\t];\n\n\texports.permute = function permute(num) {\n\t  var out = 0;\n\t  for (var i = 0; i < permuteTable.length; i++) {\n\t    out <<= 1;\n\t    out |= (num >>> permuteTable[i]) & 0x1;\n\t  }\n\t  return out >>> 0;\n\t};\n\n\texports.padSplit = function padSplit(num, size, group) {\n\t  var str = num.toString(2);\n\t  while (str.length < size)\n\t    str = '0' + str;\n\n\t  var out = [];\n\t  for (var i = 0; i < size; i += group)\n\t    out.push(str.slice(i, i + group));\n\t  return out.join(' ');\n\t};\n\n\n/***/ },\n/* 457 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var generatePrime = __webpack_require__(182)\n\tvar primes = __webpack_require__(487)\n\n\tvar DH = __webpack_require__(458)\n\n\tfunction getDiffieHellman (mod) {\n\t  var prime = new Buffer(primes[mod].prime, 'hex')\n\t  var gen = new Buffer(primes[mod].gen, 'hex')\n\n\t  return new DH(prime, gen)\n\t}\n\n\tvar ENCODINGS = {\n\t  'binary': true, 'hex': true, 'base64': true\n\t}\n\n\tfunction createDiffieHellman (prime, enc, generator, genc) {\n\t  if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n\t    return createDiffieHellman(prime, 'binary', enc, generator)\n\t  }\n\n\t  enc = enc || 'binary'\n\t  genc = genc || 'binary'\n\t  generator = generator || new Buffer([2])\n\n\t  if (!Buffer.isBuffer(generator)) {\n\t    generator = new Buffer(generator, genc)\n\t  }\n\n\t  if (typeof prime === 'number') {\n\t    return new DH(generatePrime(prime, generator), generator, true)\n\t  }\n\n\t  if (!Buffer.isBuffer(prime)) {\n\t    prime = new Buffer(prime, enc)\n\t  }\n\n\t  return new DH(prime, generator, true)\n\t}\n\n\texports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\n\texports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 458 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__(11);\n\tvar MillerRabin = __webpack_require__(187);\n\tvar millerRabin = new MillerRabin();\n\tvar TWENTYFOUR = new BN(24);\n\tvar ELEVEN = new BN(11);\n\tvar TEN = new BN(10);\n\tvar THREE = new BN(3);\n\tvar SEVEN = new BN(7);\n\tvar primes = __webpack_require__(182);\n\tvar randomBytes = __webpack_require__(70);\n\tmodule.exports = DH;\n\n\tfunction setPublicKey(pub, enc) {\n\t  enc = enc || 'utf8';\n\t  if (!Buffer.isBuffer(pub)) {\n\t    pub = new Buffer(pub, enc);\n\t  }\n\t  this._pub = new BN(pub);\n\t  return this;\n\t}\n\n\tfunction setPrivateKey(priv, enc) {\n\t  enc = enc || 'utf8';\n\t  if (!Buffer.isBuffer(priv)) {\n\t    priv = new Buffer(priv, enc);\n\t  }\n\t  this._priv = new BN(priv);\n\t  return this;\n\t}\n\n\tvar primeCache = {};\n\tfunction checkPrime(prime, generator) {\n\t  var gen = generator.toString('hex');\n\t  var hex = [gen, prime.toString(16)].join('_');\n\t  if (hex in primeCache) {\n\t    return primeCache[hex];\n\t  }\n\t  var error = 0;\n\n\t  if (prime.isEven() ||\n\t    !primes.simpleSieve ||\n\t    !primes.fermatTest(prime) ||\n\t    !millerRabin.test(prime)) {\n\t    //not a prime so +1\n\t    error += 1;\n\n\t    if (gen === '02' || gen === '05') {\n\t      // we'd be able to check the generator\n\t      // it would fail so +8\n\t      error += 8;\n\t    } else {\n\t      //we wouldn't be able to test the generator\n\t      // so +4\n\t      error += 4;\n\t    }\n\t    primeCache[hex] = error;\n\t    return error;\n\t  }\n\t  if (!millerRabin.test(prime.shrn(1))) {\n\t    //not a safe prime\n\t    error += 2;\n\t  }\n\t  var rem;\n\t  switch (gen) {\n\t    case '02':\n\t      if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n\t        // unsuidable generator\n\t        error += 8;\n\t      }\n\t      break;\n\t    case '05':\n\t      rem = prime.mod(TEN);\n\t      if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n\t        // prime mod 10 needs to equal 3 or 7\n\t        error += 8;\n\t      }\n\t      break;\n\t    default:\n\t      error += 4;\n\t  }\n\t  primeCache[hex] = error;\n\t  return error;\n\t}\n\n\tfunction DH(prime, generator, malleable) {\n\t  this.setGenerator(generator);\n\t  this.__prime = new BN(prime);\n\t  this._prime = BN.mont(this.__prime);\n\t  this._primeLen = prime.length;\n\t  this._pub = undefined;\n\t  this._priv = undefined;\n\t  this._primeCode = undefined;\n\t  if (malleable) {\n\t    this.setPublicKey = setPublicKey;\n\t    this.setPrivateKey = setPrivateKey;\n\t  } else {\n\t    this._primeCode = 8;\n\t  }\n\t}\n\tObject.defineProperty(DH.prototype, 'verifyError', {\n\t  enumerable: true,\n\t  get: function () {\n\t    if (typeof this._primeCode !== 'number') {\n\t      this._primeCode = checkPrime(this.__prime, this.__gen);\n\t    }\n\t    return this._primeCode;\n\t  }\n\t});\n\tDH.prototype.generateKeys = function () {\n\t  if (!this._priv) {\n\t    this._priv = new BN(randomBytes(this._primeLen));\n\t  }\n\t  this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n\t  return this.getPublicKey();\n\t};\n\n\tDH.prototype.computeSecret = function (other) {\n\t  other = new BN(other);\n\t  other = other.toRed(this._prime);\n\t  var secret = other.redPow(this._priv).fromRed();\n\t  var out = new Buffer(secret.toArray());\n\t  var prime = this.getPrime();\n\t  if (out.length < prime.length) {\n\t    var front = new Buffer(prime.length - out.length);\n\t    front.fill(0);\n\t    out = Buffer.concat([front, out]);\n\t  }\n\t  return out;\n\t};\n\n\tDH.prototype.getPublicKey = function getPublicKey(enc) {\n\t  return formatReturnValue(this._pub, enc);\n\t};\n\n\tDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n\t  return formatReturnValue(this._priv, enc);\n\t};\n\n\tDH.prototype.getPrime = function (enc) {\n\t  return formatReturnValue(this.__prime, enc);\n\t};\n\n\tDH.prototype.getGenerator = function (enc) {\n\t  return formatReturnValue(this._gen, enc);\n\t};\n\n\tDH.prototype.setGenerator = function (gen, enc) {\n\t  enc = enc || 'utf8';\n\t  if (!Buffer.isBuffer(gen)) {\n\t    gen = new Buffer(gen, enc);\n\t  }\n\t  this.__gen = gen;\n\t  this._gen = new BN(gen);\n\t  return this;\n\t};\n\n\tfunction formatReturnValue(bn, enc) {\n\t  var buf = new Buffer(bn.toArray());\n\t  if (!enc) {\n\t    return buf;\n\t  } else {\n\t    return buf.toString(enc);\n\t  }\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 459 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar BN = __webpack_require__(11);\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\tvar getNAF = utils.getNAF;\n\tvar getJSF = utils.getJSF;\n\tvar assert = utils.assert;\n\n\tfunction BaseCurve(type, conf) {\n\t  this.type = type;\n\t  this.p = new BN(conf.p, 16);\n\n\t  // Use Montgomery, when there is no fast reduction for the prime\n\t  this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n\t  // Useful for many curves\n\t  this.zero = new BN(0).toRed(this.red);\n\t  this.one = new BN(1).toRed(this.red);\n\t  this.two = new BN(2).toRed(this.red);\n\n\t  // Curve configuration, optional\n\t  this.n = conf.n && new BN(conf.n, 16);\n\t  this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n\t  // Temporary arrays\n\t  this._wnafT1 = new Array(4);\n\t  this._wnafT2 = new Array(4);\n\t  this._wnafT3 = new Array(4);\n\t  this._wnafT4 = new Array(4);\n\t}\n\tmodule.exports = BaseCurve;\n\n\tBaseCurve.prototype.point = function point() {\n\t  throw new Error('Not implemented');\n\t};\n\n\tBaseCurve.prototype.validate = function validate() {\n\t  throw new Error('Not implemented');\n\t};\n\n\tBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n\t  assert(p.precomputed);\n\t  var doubles = p._getDoubles();\n\n\t  var naf = getNAF(k, 1);\n\t  var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n\t  I /= 3;\n\n\t  // Translate into more windowed form\n\t  var repr = [];\n\t  for (var j = 0; j < naf.length; j += doubles.step) {\n\t    var nafW = 0;\n\t    for (var k = j + doubles.step - 1; k >= j; k--)\n\t      nafW = (nafW << 1) + naf[k];\n\t    repr.push(nafW);\n\t  }\n\n\t  var a = this.jpoint(null, null, null);\n\t  var b = this.jpoint(null, null, null);\n\t  for (var i = I; i > 0; i--) {\n\t    for (var j = 0; j < repr.length; j++) {\n\t      var nafW = repr[j];\n\t      if (nafW === i)\n\t        b = b.mixedAdd(doubles.points[j]);\n\t      else if (nafW === -i)\n\t        b = b.mixedAdd(doubles.points[j].neg());\n\t    }\n\t    a = a.add(b);\n\t  }\n\t  return a.toP();\n\t};\n\n\tBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n\t  var w = 4;\n\n\t  // Precompute window\n\t  var nafPoints = p._getNAFPoints(w);\n\t  w = nafPoints.wnd;\n\t  var wnd = nafPoints.points;\n\n\t  // Get NAF form\n\t  var naf = getNAF(k, w);\n\n\t  // Add `this`*(N+1) for every w-NAF index\n\t  var acc = this.jpoint(null, null, null);\n\t  for (var i = naf.length - 1; i >= 0; i--) {\n\t    // Count zeroes\n\t    for (var k = 0; i >= 0 && naf[i] === 0; i--)\n\t      k++;\n\t    if (i >= 0)\n\t      k++;\n\t    acc = acc.dblp(k);\n\n\t    if (i < 0)\n\t      break;\n\t    var z = naf[i];\n\t    assert(z !== 0);\n\t    if (p.type === 'affine') {\n\t      // J +- P\n\t      if (z > 0)\n\t        acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n\t      else\n\t        acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n\t    } else {\n\t      // J +- J\n\t      if (z > 0)\n\t        acc = acc.add(wnd[(z - 1) >> 1]);\n\t      else\n\t        acc = acc.add(wnd[(-z - 1) >> 1].neg());\n\t    }\n\t  }\n\t  return p.type === 'affine' ? acc.toP() : acc;\n\t};\n\n\tBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n\t                                                       points,\n\t                                                       coeffs,\n\t                                                       len) {\n\t  var wndWidth = this._wnafT1;\n\t  var wnd = this._wnafT2;\n\t  var naf = this._wnafT3;\n\n\t  // Fill all arrays\n\t  var max = 0;\n\t  for (var i = 0; i < len; i++) {\n\t    var p = points[i];\n\t    var nafPoints = p._getNAFPoints(defW);\n\t    wndWidth[i] = nafPoints.wnd;\n\t    wnd[i] = nafPoints.points;\n\t  }\n\n\t  // Comb small window NAFs\n\t  for (var i = len - 1; i >= 1; i -= 2) {\n\t    var a = i - 1;\n\t    var b = i;\n\t    if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n\t      naf[a] = getNAF(coeffs[a], wndWidth[a]);\n\t      naf[b] = getNAF(coeffs[b], wndWidth[b]);\n\t      max = Math.max(naf[a].length, max);\n\t      max = Math.max(naf[b].length, max);\n\t      continue;\n\t    }\n\n\t    var comb = [\n\t      points[a], /* 1 */\n\t      null, /* 3 */\n\t      null, /* 5 */\n\t      points[b] /* 7 */\n\t    ];\n\n\t    // Try to avoid Projective points, if possible\n\t    if (points[a].y.cmp(points[b].y) === 0) {\n\t      comb[1] = points[a].add(points[b]);\n\t      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n\t    } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n\t      comb[1] = points[a].toJ().mixedAdd(points[b]);\n\t      comb[2] = points[a].add(points[b].neg());\n\t    } else {\n\t      comb[1] = points[a].toJ().mixedAdd(points[b]);\n\t      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n\t    }\n\n\t    var index = [\n\t      -3, /* -1 -1 */\n\t      -1, /* -1 0 */\n\t      -5, /* -1 1 */\n\t      -7, /* 0 -1 */\n\t      0, /* 0 0 */\n\t      7, /* 0 1 */\n\t      5, /* 1 -1 */\n\t      1, /* 1 0 */\n\t      3  /* 1 1 */\n\t    ];\n\n\t    var jsf = getJSF(coeffs[a], coeffs[b]);\n\t    max = Math.max(jsf[0].length, max);\n\t    naf[a] = new Array(max);\n\t    naf[b] = new Array(max);\n\t    for (var j = 0; j < max; j++) {\n\t      var ja = jsf[0][j] | 0;\n\t      var jb = jsf[1][j] | 0;\n\n\t      naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n\t      naf[b][j] = 0;\n\t      wnd[a] = comb;\n\t    }\n\t  }\n\n\t  var acc = this.jpoint(null, null, null);\n\t  var tmp = this._wnafT4;\n\t  for (var i = max; i >= 0; i--) {\n\t    var k = 0;\n\n\t    while (i >= 0) {\n\t      var zero = true;\n\t      for (var j = 0; j < len; j++) {\n\t        tmp[j] = naf[j][i] | 0;\n\t        if (tmp[j] !== 0)\n\t          zero = false;\n\t      }\n\t      if (!zero)\n\t        break;\n\t      k++;\n\t      i--;\n\t    }\n\t    if (i >= 0)\n\t      k++;\n\t    acc = acc.dblp(k);\n\t    if (i < 0)\n\t      break;\n\n\t    for (var j = 0; j < len; j++) {\n\t      var z = tmp[j];\n\t      var p;\n\t      if (z === 0)\n\t        continue;\n\t      else if (z > 0)\n\t        p = wnd[j][(z - 1) >> 1];\n\t      else if (z < 0)\n\t        p = wnd[j][(-z - 1) >> 1].neg();\n\n\t      if (p.type === 'affine')\n\t        acc = acc.mixedAdd(p);\n\t      else\n\t        acc = acc.add(p);\n\t    }\n\t  }\n\t  // Zeroify references\n\t  for (var i = 0; i < len; i++)\n\t    wnd[i] = null;\n\t  return acc.toP();\n\t};\n\n\tfunction BasePoint(curve, type) {\n\t  this.curve = curve;\n\t  this.type = type;\n\t  this.precomputed = null;\n\t}\n\tBaseCurve.BasePoint = BasePoint;\n\n\tBasePoint.prototype.eq = function eq(/*other*/) {\n\t  throw new Error('Not implemented');\n\t};\n\n\tBasePoint.prototype.validate = function validate() {\n\t  return this.curve.validate(this);\n\t};\n\n\tBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n\t  bytes = utils.toArray(bytes, enc);\n\n\t  var len = this.p.byteLength();\n\t  if (bytes[0] === 0x04 && bytes.length - 1 === 2 * len) {\n\t    return this.point(bytes.slice(1, 1 + len),\n\t                      bytes.slice(1 + len, 1 + 2 * len));\n\t  } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n\t              bytes.length - 1 === len) {\n\t    return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n\t  }\n\t  throw new Error('Unknown point format');\n\t};\n\n\tBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n\t  return this.encode(enc, true);\n\t};\n\n\tBasePoint.prototype._encode = function _encode(compact) {\n\t  var len = this.curve.p.byteLength();\n\t  var x = this.getX().toArray('be', len);\n\n\t  if (compact)\n\t    return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n\t  return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n\t};\n\n\tBasePoint.prototype.encode = function encode(enc, compact) {\n\t  return utils.encode(this._encode(compact), enc);\n\t};\n\n\tBasePoint.prototype.precompute = function precompute(power) {\n\t  if (this.precomputed)\n\t    return this;\n\n\t  var precomputed = {\n\t    doubles: null,\n\t    naf: null,\n\t    beta: null\n\t  };\n\t  precomputed.naf = this._getNAFPoints(8);\n\t  precomputed.doubles = this._getDoubles(4, power);\n\t  precomputed.beta = this._getBeta();\n\t  this.precomputed = precomputed;\n\n\t  return this;\n\t};\n\n\tBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n\t  if (!this.precomputed)\n\t    return false;\n\n\t  var doubles = this.precomputed.doubles;\n\t  if (!doubles)\n\t    return false;\n\n\t  return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n\t};\n\n\tBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n\t  if (this.precomputed && this.precomputed.doubles)\n\t    return this.precomputed.doubles;\n\n\t  var doubles = [ this ];\n\t  var acc = this;\n\t  for (var i = 0; i < power; i += step) {\n\t    for (var j = 0; j < step; j++)\n\t      acc = acc.dbl();\n\t    doubles.push(acc);\n\t  }\n\t  return {\n\t    step: step,\n\t    points: doubles\n\t  };\n\t};\n\n\tBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n\t  if (this.precomputed && this.precomputed.naf)\n\t    return this.precomputed.naf;\n\n\t  var res = [ this ];\n\t  var max = (1 << wnd) - 1;\n\t  var dbl = max === 1 ? null : this.dbl();\n\t  for (var i = 1; i < max; i++)\n\t    res[i] = res[i - 1].add(dbl);\n\t  return {\n\t    wnd: wnd,\n\t    points: res\n\t  };\n\t};\n\n\tBasePoint.prototype._getBeta = function _getBeta() {\n\t  return null;\n\t};\n\n\tBasePoint.prototype.dblp = function dblp(k) {\n\t  var r = this;\n\t  for (var i = 0; i < k; i++)\n\t    r = r.dbl();\n\t  return r;\n\t};\n\n\n/***/ },\n/* 460 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar curve = __webpack_require__(88);\n\tvar elliptic = __webpack_require__(18);\n\tvar BN = __webpack_require__(11);\n\tvar inherits = __webpack_require__(2);\n\tvar Base = curve.base;\n\n\tvar assert = elliptic.utils.assert;\n\n\tfunction EdwardsCurve(conf) {\n\t  // NOTE: Important as we are creating point in Base.call()\n\t  this.twisted = (conf.a | 0) !== 1;\n\t  this.mOneA = this.twisted && (conf.a | 0) === -1;\n\t  this.extended = this.mOneA;\n\n\t  Base.call(this, 'edwards', conf);\n\n\t  this.a = new BN(conf.a, 16).umod(this.red.m);\n\t  this.a = this.a.toRed(this.red);\n\t  this.c = new BN(conf.c, 16).toRed(this.red);\n\t  this.c2 = this.c.redSqr();\n\t  this.d = new BN(conf.d, 16).toRed(this.red);\n\t  this.dd = this.d.redAdd(this.d);\n\n\t  assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n\t  this.oneC = (conf.c | 0) === 1;\n\t}\n\tinherits(EdwardsCurve, Base);\n\tmodule.exports = EdwardsCurve;\n\n\tEdwardsCurve.prototype._mulA = function _mulA(num) {\n\t  if (this.mOneA)\n\t    return num.redNeg();\n\t  else\n\t    return this.a.redMul(num);\n\t};\n\n\tEdwardsCurve.prototype._mulC = function _mulC(num) {\n\t  if (this.oneC)\n\t    return num;\n\t  else\n\t    return this.c.redMul(num);\n\t};\n\n\t// Just for compatibility with Short curve\n\tEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n\t  return this.point(x, y, z, t);\n\t};\n\n\tEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n\t  x = new BN(x, 16);\n\t  if (!x.red)\n\t    x = x.toRed(this.red);\n\n\t  var x2 = x.redSqr();\n\t  var rhs = this.c2.redSub(this.a.redMul(x2));\n\t  var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n\t  var y2 = rhs.redMul(lhs.redInvm());\n\t  var y = y2.redSqrt();\n\t  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n\t    throw new Error('invalid point');\n\n\t  var isOdd = y.fromRed().isOdd();\n\t  if (odd && !isOdd || !odd && isOdd)\n\t    y = y.redNeg();\n\n\t  return this.point(x, y);\n\t};\n\n\tEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n\t  y = new BN(y, 16);\n\t  if (!y.red)\n\t    y = y.toRed(this.red);\n\n\t  // x^2 = (y^2 - 1) / (d y^2 + 1)\n\t  var y2 = y.redSqr();\n\t  var lhs = y2.redSub(this.one);\n\t  var rhs = y2.redMul(this.d).redAdd(this.one);\n\t  var x2 = lhs.redMul(rhs.redInvm());\n\n\t  if (x2.cmp(this.zero) === 0) {\n\t    if (odd)\n\t      throw new Error('invalid point');\n\t    else\n\t      return this.point(this.zero, y);\n\t  }\n\n\t  var x = x2.redSqrt();\n\t  if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n\t    throw new Error('invalid point');\n\n\t  if (x.isOdd() !== odd)\n\t    x = x.redNeg();\n\n\t  return this.point(x, y);\n\t};\n\n\tEdwardsCurve.prototype.validate = function validate(point) {\n\t  if (point.isInfinity())\n\t    return true;\n\n\t  // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n\t  point.normalize();\n\n\t  var x2 = point.x.redSqr();\n\t  var y2 = point.y.redSqr();\n\t  var lhs = x2.redMul(this.a).redAdd(y2);\n\t  var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n\t  return lhs.cmp(rhs) === 0;\n\t};\n\n\tfunction Point(curve, x, y, z, t) {\n\t  Base.BasePoint.call(this, curve, 'projective');\n\t  if (x === null && y === null && z === null) {\n\t    this.x = this.curve.zero;\n\t    this.y = this.curve.one;\n\t    this.z = this.curve.one;\n\t    this.t = this.curve.zero;\n\t    this.zOne = true;\n\t  } else {\n\t    this.x = new BN(x, 16);\n\t    this.y = new BN(y, 16);\n\t    this.z = z ? new BN(z, 16) : this.curve.one;\n\t    this.t = t && new BN(t, 16);\n\t    if (!this.x.red)\n\t      this.x = this.x.toRed(this.curve.red);\n\t    if (!this.y.red)\n\t      this.y = this.y.toRed(this.curve.red);\n\t    if (!this.z.red)\n\t      this.z = this.z.toRed(this.curve.red);\n\t    if (this.t && !this.t.red)\n\t      this.t = this.t.toRed(this.curve.red);\n\t    this.zOne = this.z === this.curve.one;\n\n\t    // Use extended coordinates\n\t    if (this.curve.extended && !this.t) {\n\t      this.t = this.x.redMul(this.y);\n\t      if (!this.zOne)\n\t        this.t = this.t.redMul(this.z.redInvm());\n\t    }\n\t  }\n\t}\n\tinherits(Point, Base.BasePoint);\n\n\tEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n\t  return Point.fromJSON(this, obj);\n\t};\n\n\tEdwardsCurve.prototype.point = function point(x, y, z, t) {\n\t  return new Point(this, x, y, z, t);\n\t};\n\n\tPoint.fromJSON = function fromJSON(curve, obj) {\n\t  return new Point(curve, obj[0], obj[1], obj[2]);\n\t};\n\n\tPoint.prototype.inspect = function inspect() {\n\t  if (this.isInfinity())\n\t    return '<EC Point Infinity>';\n\t  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n\t      ' y: ' + this.y.fromRed().toString(16, 2) +\n\t      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n\t};\n\n\tPoint.prototype.isInfinity = function isInfinity() {\n\t  // XXX This code assumes that zero is always zero in red\n\t  return this.x.cmpn(0) === 0 &&\n\t         this.y.cmp(this.z) === 0;\n\t};\n\n\tPoint.prototype._extDbl = function _extDbl() {\n\t  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n\t  //     #doubling-dbl-2008-hwcd\n\t  // 4M + 4S\n\n\t  // A = X1^2\n\t  var a = this.x.redSqr();\n\t  // B = Y1^2\n\t  var b = this.y.redSqr();\n\t  // C = 2 * Z1^2\n\t  var c = this.z.redSqr();\n\t  c = c.redIAdd(c);\n\t  // D = a * A\n\t  var d = this.curve._mulA(a);\n\t  // E = (X1 + Y1)^2 - A - B\n\t  var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n\t  // G = D + B\n\t  var g = d.redAdd(b);\n\t  // F = G - C\n\t  var f = g.redSub(c);\n\t  // H = D - B\n\t  var h = d.redSub(b);\n\t  // X3 = E * F\n\t  var nx = e.redMul(f);\n\t  // Y3 = G * H\n\t  var ny = g.redMul(h);\n\t  // T3 = E * H\n\t  var nt = e.redMul(h);\n\t  // Z3 = F * G\n\t  var nz = f.redMul(g);\n\t  return this.curve.point(nx, ny, nz, nt);\n\t};\n\n\tPoint.prototype._projDbl = function _projDbl() {\n\t  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n\t  //     #doubling-dbl-2008-bbjlp\n\t  //     #doubling-dbl-2007-bl\n\t  // and others\n\t  // Generally 3M + 4S or 2M + 4S\n\n\t  // B = (X1 + Y1)^2\n\t  var b = this.x.redAdd(this.y).redSqr();\n\t  // C = X1^2\n\t  var c = this.x.redSqr();\n\t  // D = Y1^2\n\t  var d = this.y.redSqr();\n\n\t  var nx;\n\t  var ny;\n\t  var nz;\n\t  if (this.curve.twisted) {\n\t    // E = a * C\n\t    var e = this.curve._mulA(c);\n\t    // F = E + D\n\t    var f = e.redAdd(d);\n\t    if (this.zOne) {\n\t      // X3 = (B - C - D) * (F - 2)\n\t      nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n\t      // Y3 = F * (E - D)\n\t      ny = f.redMul(e.redSub(d));\n\t      // Z3 = F^2 - 2 * F\n\t      nz = f.redSqr().redSub(f).redSub(f);\n\t    } else {\n\t      // H = Z1^2\n\t      var h = this.z.redSqr();\n\t      // J = F - 2 * H\n\t      var j = f.redSub(h).redISub(h);\n\t      // X3 = (B-C-D)*J\n\t      nx = b.redSub(c).redISub(d).redMul(j);\n\t      // Y3 = F * (E - D)\n\t      ny = f.redMul(e.redSub(d));\n\t      // Z3 = F * J\n\t      nz = f.redMul(j);\n\t    }\n\t  } else {\n\t    // E = C + D\n\t    var e = c.redAdd(d);\n\t    // H = (c * Z1)^2\n\t    var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();\n\t    // J = E - 2 * H\n\t    var j = e.redSub(h).redSub(h);\n\t    // X3 = c * (B - E) * J\n\t    nx = this.curve._mulC(b.redISub(e)).redMul(j);\n\t    // Y3 = c * E * (C - D)\n\t    ny = this.curve._mulC(e).redMul(c.redISub(d));\n\t    // Z3 = E * J\n\t    nz = e.redMul(j);\n\t  }\n\t  return this.curve.point(nx, ny, nz);\n\t};\n\n\tPoint.prototype.dbl = function dbl() {\n\t  if (this.isInfinity())\n\t    return this;\n\n\t  // Double in extended coordinates\n\t  if (this.curve.extended)\n\t    return this._extDbl();\n\t  else\n\t    return this._projDbl();\n\t};\n\n\tPoint.prototype._extAdd = function _extAdd(p) {\n\t  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n\t  //     #addition-add-2008-hwcd-3\n\t  // 8M\n\n\t  // A = (Y1 - X1) * (Y2 - X2)\n\t  var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n\t  // B = (Y1 + X1) * (Y2 + X2)\n\t  var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n\t  // C = T1 * k * T2\n\t  var c = this.t.redMul(this.curve.dd).redMul(p.t);\n\t  // D = Z1 * 2 * Z2\n\t  var d = this.z.redMul(p.z.redAdd(p.z));\n\t  // E = B - A\n\t  var e = b.redSub(a);\n\t  // F = D - C\n\t  var f = d.redSub(c);\n\t  // G = D + C\n\t  var g = d.redAdd(c);\n\t  // H = B + A\n\t  var h = b.redAdd(a);\n\t  // X3 = E * F\n\t  var nx = e.redMul(f);\n\t  // Y3 = G * H\n\t  var ny = g.redMul(h);\n\t  // T3 = E * H\n\t  var nt = e.redMul(h);\n\t  // Z3 = F * G\n\t  var nz = f.redMul(g);\n\t  return this.curve.point(nx, ny, nz, nt);\n\t};\n\n\tPoint.prototype._projAdd = function _projAdd(p) {\n\t  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n\t  //     #addition-add-2008-bbjlp\n\t  //     #addition-add-2007-bl\n\t  // 10M + 1S\n\n\t  // A = Z1 * Z2\n\t  var a = this.z.redMul(p.z);\n\t  // B = A^2\n\t  var b = a.redSqr();\n\t  // C = X1 * X2\n\t  var c = this.x.redMul(p.x);\n\t  // D = Y1 * Y2\n\t  var d = this.y.redMul(p.y);\n\t  // E = d * C * D\n\t  var e = this.curve.d.redMul(c).redMul(d);\n\t  // F = B - E\n\t  var f = b.redSub(e);\n\t  // G = B + E\n\t  var g = b.redAdd(e);\n\t  // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n\t  var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n\t  var nx = a.redMul(f).redMul(tmp);\n\t  var ny;\n\t  var nz;\n\t  if (this.curve.twisted) {\n\t    // Y3 = A * G * (D - a * C)\n\t    ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n\t    // Z3 = F * G\n\t    nz = f.redMul(g);\n\t  } else {\n\t    // Y3 = A * G * (D - C)\n\t    ny = a.redMul(g).redMul(d.redSub(c));\n\t    // Z3 = c * F * G\n\t    nz = this.curve._mulC(f).redMul(g);\n\t  }\n\t  return this.curve.point(nx, ny, nz);\n\t};\n\n\tPoint.prototype.add = function add(p) {\n\t  if (this.isInfinity())\n\t    return p;\n\t  if (p.isInfinity())\n\t    return this;\n\n\t  if (this.curve.extended)\n\t    return this._extAdd(p);\n\t  else\n\t    return this._projAdd(p);\n\t};\n\n\tPoint.prototype.mul = function mul(k) {\n\t  if (this._hasDoubles(k))\n\t    return this.curve._fixedNafMul(this, k);\n\t  else\n\t    return this.curve._wnafMul(this, k);\n\t};\n\n\tPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n\t  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2);\n\t};\n\n\tPoint.prototype.normalize = function normalize() {\n\t  if (this.zOne)\n\t    return this;\n\n\t  // Normalize coordinates\n\t  var zi = this.z.redInvm();\n\t  this.x = this.x.redMul(zi);\n\t  this.y = this.y.redMul(zi);\n\t  if (this.t)\n\t    this.t = this.t.redMul(zi);\n\t  this.z = this.curve.one;\n\t  this.zOne = true;\n\t  return this;\n\t};\n\n\tPoint.prototype.neg = function neg() {\n\t  return this.curve.point(this.x.redNeg(),\n\t                          this.y,\n\t                          this.z,\n\t                          this.t && this.t.redNeg());\n\t};\n\n\tPoint.prototype.getX = function getX() {\n\t  this.normalize();\n\t  return this.x.fromRed();\n\t};\n\n\tPoint.prototype.getY = function getY() {\n\t  this.normalize();\n\t  return this.y.fromRed();\n\t};\n\n\tPoint.prototype.eq = function eq(other) {\n\t  return this === other ||\n\t         this.getX().cmp(other.getX()) === 0 &&\n\t         this.getY().cmp(other.getY()) === 0;\n\t};\n\n\t// Compatibility with BaseCurve\n\tPoint.prototype.toP = Point.prototype.normalize;\n\tPoint.prototype.mixedAdd = Point.prototype.add;\n\n\n/***/ },\n/* 461 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar curve = __webpack_require__(88);\n\tvar BN = __webpack_require__(11);\n\tvar inherits = __webpack_require__(2);\n\tvar Base = curve.base;\n\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\n\tfunction MontCurve(conf) {\n\t  Base.call(this, 'mont', conf);\n\n\t  this.a = new BN(conf.a, 16).toRed(this.red);\n\t  this.b = new BN(conf.b, 16).toRed(this.red);\n\t  this.i4 = new BN(4).toRed(this.red).redInvm();\n\t  this.two = new BN(2).toRed(this.red);\n\t  this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n\t}\n\tinherits(MontCurve, Base);\n\tmodule.exports = MontCurve;\n\n\tMontCurve.prototype.validate = function validate(point) {\n\t  var x = point.normalize().x;\n\t  var x2 = x.redSqr();\n\t  var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n\t  var y = rhs.redSqrt();\n\n\t  return y.redSqr().cmp(rhs) === 0;\n\t};\n\n\tfunction Point(curve, x, z) {\n\t  Base.BasePoint.call(this, curve, 'projective');\n\t  if (x === null && z === null) {\n\t    this.x = this.curve.one;\n\t    this.z = this.curve.zero;\n\t  } else {\n\t    this.x = new BN(x, 16);\n\t    this.z = new BN(z, 16);\n\t    if (!this.x.red)\n\t      this.x = this.x.toRed(this.curve.red);\n\t    if (!this.z.red)\n\t      this.z = this.z.toRed(this.curve.red);\n\t  }\n\t}\n\tinherits(Point, Base.BasePoint);\n\n\tMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n\t  return this.point(utils.toArray(bytes, enc), 1);\n\t};\n\n\tMontCurve.prototype.point = function point(x, z) {\n\t  return new Point(this, x, z);\n\t};\n\n\tMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n\t  return Point.fromJSON(this, obj);\n\t};\n\n\tPoint.prototype.precompute = function precompute() {\n\t  // No-op\n\t};\n\n\tPoint.prototype._encode = function _encode() {\n\t  return this.getX().toArray('be', this.curve.p.byteLength());\n\t};\n\n\tPoint.fromJSON = function fromJSON(curve, obj) {\n\t  return new Point(curve, obj[0], obj[1] || curve.one);\n\t};\n\n\tPoint.prototype.inspect = function inspect() {\n\t  if (this.isInfinity())\n\t    return '<EC Point Infinity>';\n\t  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n\t      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n\t};\n\n\tPoint.prototype.isInfinity = function isInfinity() {\n\t  // XXX This code assumes that zero is always zero in red\n\t  return this.z.cmpn(0) === 0;\n\t};\n\n\tPoint.prototype.dbl = function dbl() {\n\t  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n\t  // 2M + 2S + 4A\n\n\t  // A = X1 + Z1\n\t  var a = this.x.redAdd(this.z);\n\t  // AA = A^2\n\t  var aa = a.redSqr();\n\t  // B = X1 - Z1\n\t  var b = this.x.redSub(this.z);\n\t  // BB = B^2\n\t  var bb = b.redSqr();\n\t  // C = AA - BB\n\t  var c = aa.redSub(bb);\n\t  // X3 = AA * BB\n\t  var nx = aa.redMul(bb);\n\t  // Z3 = C * (BB + A24 * C)\n\t  var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n\t  return this.curve.point(nx, nz);\n\t};\n\n\tPoint.prototype.add = function add() {\n\t  throw new Error('Not supported on Montgomery curve');\n\t};\n\n\tPoint.prototype.diffAdd = function diffAdd(p, diff) {\n\t  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n\t  // 4M + 2S + 6A\n\n\t  // A = X2 + Z2\n\t  var a = this.x.redAdd(this.z);\n\t  // B = X2 - Z2\n\t  var b = this.x.redSub(this.z);\n\t  // C = X3 + Z3\n\t  var c = p.x.redAdd(p.z);\n\t  // D = X3 - Z3\n\t  var d = p.x.redSub(p.z);\n\t  // DA = D * A\n\t  var da = d.redMul(a);\n\t  // CB = C * B\n\t  var cb = c.redMul(b);\n\t  // X5 = Z1 * (DA + CB)^2\n\t  var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n\t  // Z5 = X1 * (DA - CB)^2\n\t  var nz = diff.x.redMul(da.redISub(cb).redSqr());\n\t  return this.curve.point(nx, nz);\n\t};\n\n\tPoint.prototype.mul = function mul(k) {\n\t  var t = k.clone();\n\t  var a = this; // (N / 2) * Q + Q\n\t  var b = this.curve.point(null, null); // (N / 2) * Q\n\t  var c = this; // Q\n\n\t  for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n\t    bits.push(t.andln(1));\n\n\t  for (var i = bits.length - 1; i >= 0; i--) {\n\t    if (bits[i] === 0) {\n\t      // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n\t      a = a.diffAdd(b, c);\n\t      // N * Q = 2 * ((N / 2) * Q + Q))\n\t      b = b.dbl();\n\t    } else {\n\t      // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n\t      b = a.diffAdd(b, c);\n\t      // N * Q + Q = 2 * ((N / 2) * Q + Q)\n\t      a = a.dbl();\n\t    }\n\t  }\n\t  return b;\n\t};\n\n\tPoint.prototype.mulAdd = function mulAdd() {\n\t  throw new Error('Not supported on Montgomery curve');\n\t};\n\n\tPoint.prototype.eq = function eq(other) {\n\t  return this.getX().cmp(other.getX()) === 0;\n\t};\n\n\tPoint.prototype.normalize = function normalize() {\n\t  this.x = this.x.redMul(this.z.redInvm());\n\t  this.z = this.curve.one;\n\t  return this;\n\t};\n\n\tPoint.prototype.getX = function getX() {\n\t  // Normalize coordinates\n\t  this.normalize();\n\n\t  return this.x.fromRed();\n\t};\n\n\n/***/ },\n/* 462 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar curve = __webpack_require__(88);\n\tvar elliptic = __webpack_require__(18);\n\tvar BN = __webpack_require__(11);\n\tvar inherits = __webpack_require__(2);\n\tvar Base = curve.base;\n\n\tvar assert = elliptic.utils.assert;\n\n\tfunction ShortCurve(conf) {\n\t  Base.call(this, 'short', conf);\n\n\t  this.a = new BN(conf.a, 16).toRed(this.red);\n\t  this.b = new BN(conf.b, 16).toRed(this.red);\n\t  this.tinv = this.two.redInvm();\n\n\t  this.zeroA = this.a.fromRed().cmpn(0) === 0;\n\t  this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n\t  // If the curve is endomorphic, precalculate beta and lambda\n\t  this.endo = this._getEndomorphism(conf);\n\t  this._endoWnafT1 = new Array(4);\n\t  this._endoWnafT2 = new Array(4);\n\t}\n\tinherits(ShortCurve, Base);\n\tmodule.exports = ShortCurve;\n\n\tShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n\t  // No efficient endomorphism\n\t  if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n\t    return;\n\n\t  // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n\t  var beta;\n\t  var lambda;\n\t  if (conf.beta) {\n\t    beta = new BN(conf.beta, 16).toRed(this.red);\n\t  } else {\n\t    var betas = this._getEndoRoots(this.p);\n\t    // Choose the smallest beta\n\t    beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n\t    beta = beta.toRed(this.red);\n\t  }\n\t  if (conf.lambda) {\n\t    lambda = new BN(conf.lambda, 16);\n\t  } else {\n\t    // Choose the lambda that is matching selected beta\n\t    var lambdas = this._getEndoRoots(this.n);\n\t    if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n\t      lambda = lambdas[0];\n\t    } else {\n\t      lambda = lambdas[1];\n\t      assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n\t    }\n\t  }\n\n\t  // Get basis vectors, used for balanced length-two representation\n\t  var basis;\n\t  if (conf.basis) {\n\t    basis = conf.basis.map(function(vec) {\n\t      return {\n\t        a: new BN(vec.a, 16),\n\t        b: new BN(vec.b, 16)\n\t      };\n\t    });\n\t  } else {\n\t    basis = this._getEndoBasis(lambda);\n\t  }\n\n\t  return {\n\t    beta: beta,\n\t    lambda: lambda,\n\t    basis: basis\n\t  };\n\t};\n\n\tShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n\t  // Find roots of for x^2 + x + 1 in F\n\t  // Root = (-1 +- Sqrt(-3)) / 2\n\t  //\n\t  var red = num === this.p ? this.red : BN.mont(num);\n\t  var tinv = new BN(2).toRed(red).redInvm();\n\t  var ntinv = tinv.redNeg();\n\n\t  var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n\t  var l1 = ntinv.redAdd(s).fromRed();\n\t  var l2 = ntinv.redSub(s).fromRed();\n\t  return [ l1, l2 ];\n\t};\n\n\tShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n\t  // aprxSqrt >= sqrt(this.n)\n\t  var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n\t  // 3.74\n\t  // Run EGCD, until r(L + 1) < aprxSqrt\n\t  var u = lambda;\n\t  var v = this.n.clone();\n\t  var x1 = new BN(1);\n\t  var y1 = new BN(0);\n\t  var x2 = new BN(0);\n\t  var y2 = new BN(1);\n\n\t  // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n\t  var a0;\n\t  var b0;\n\t  // First vector\n\t  var a1;\n\t  var b1;\n\t  // Second vector\n\t  var a2;\n\t  var b2;\n\n\t  var prevR;\n\t  var i = 0;\n\t  var r;\n\t  var x;\n\t  while (u.cmpn(0) !== 0) {\n\t    var q = v.div(u);\n\t    r = v.sub(q.mul(u));\n\t    x = x2.sub(q.mul(x1));\n\t    var y = y2.sub(q.mul(y1));\n\n\t    if (!a1 && r.cmp(aprxSqrt) < 0) {\n\t      a0 = prevR.neg();\n\t      b0 = x1;\n\t      a1 = r.neg();\n\t      b1 = x;\n\t    } else if (a1 && ++i === 2) {\n\t      break;\n\t    }\n\t    prevR = r;\n\n\t    v = u;\n\t    u = r;\n\t    x2 = x1;\n\t    x1 = x;\n\t    y2 = y1;\n\t    y1 = y;\n\t  }\n\t  a2 = r.neg();\n\t  b2 = x;\n\n\t  var len1 = a1.sqr().add(b1.sqr());\n\t  var len2 = a2.sqr().add(b2.sqr());\n\t  if (len2.cmp(len1) >= 0) {\n\t    a2 = a0;\n\t    b2 = b0;\n\t  }\n\n\t  // Normalize signs\n\t  if (a1.negative) {\n\t    a1 = a1.neg();\n\t    b1 = b1.neg();\n\t  }\n\t  if (a2.negative) {\n\t    a2 = a2.neg();\n\t    b2 = b2.neg();\n\t  }\n\n\t  return [\n\t    { a: a1, b: b1 },\n\t    { a: a2, b: b2 }\n\t  ];\n\t};\n\n\tShortCurve.prototype._endoSplit = function _endoSplit(k) {\n\t  var basis = this.endo.basis;\n\t  var v1 = basis[0];\n\t  var v2 = basis[1];\n\n\t  var c1 = v2.b.mul(k).divRound(this.n);\n\t  var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n\t  var p1 = c1.mul(v1.a);\n\t  var p2 = c2.mul(v2.a);\n\t  var q1 = c1.mul(v1.b);\n\t  var q2 = c2.mul(v2.b);\n\n\t  // Calculate answer\n\t  var k1 = k.sub(p1).sub(p2);\n\t  var k2 = q1.add(q2).neg();\n\t  return { k1: k1, k2: k2 };\n\t};\n\n\tShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n\t  x = new BN(x, 16);\n\t  if (!x.red)\n\t    x = x.toRed(this.red);\n\n\t  var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n\t  var y = y2.redSqrt();\n\t  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n\t    throw new Error('invalid point');\n\n\t  // XXX Is there any way to tell if the number is odd without converting it\n\t  // to non-red form?\n\t  var isOdd = y.fromRed().isOdd();\n\t  if (odd && !isOdd || !odd && isOdd)\n\t    y = y.redNeg();\n\n\t  return this.point(x, y);\n\t};\n\n\tShortCurve.prototype.validate = function validate(point) {\n\t  if (point.inf)\n\t    return true;\n\n\t  var x = point.x;\n\t  var y = point.y;\n\n\t  var ax = this.a.redMul(x);\n\t  var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n\t  return y.redSqr().redISub(rhs).cmpn(0) === 0;\n\t};\n\n\tShortCurve.prototype._endoWnafMulAdd =\n\t    function _endoWnafMulAdd(points, coeffs) {\n\t  var npoints = this._endoWnafT1;\n\t  var ncoeffs = this._endoWnafT2;\n\t  for (var i = 0; i < points.length; i++) {\n\t    var split = this._endoSplit(coeffs[i]);\n\t    var p = points[i];\n\t    var beta = p._getBeta();\n\n\t    if (split.k1.negative) {\n\t      split.k1.ineg();\n\t      p = p.neg(true);\n\t    }\n\t    if (split.k2.negative) {\n\t      split.k2.ineg();\n\t      beta = beta.neg(true);\n\t    }\n\n\t    npoints[i * 2] = p;\n\t    npoints[i * 2 + 1] = beta;\n\t    ncoeffs[i * 2] = split.k1;\n\t    ncoeffs[i * 2 + 1] = split.k2;\n\t  }\n\t  var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2);\n\n\t  // Clean-up references to points and coefficients\n\t  for (var j = 0; j < i * 2; j++) {\n\t    npoints[j] = null;\n\t    ncoeffs[j] = null;\n\t  }\n\t  return res;\n\t};\n\n\tfunction Point(curve, x, y, isRed) {\n\t  Base.BasePoint.call(this, curve, 'affine');\n\t  if (x === null && y === null) {\n\t    this.x = null;\n\t    this.y = null;\n\t    this.inf = true;\n\t  } else {\n\t    this.x = new BN(x, 16);\n\t    this.y = new BN(y, 16);\n\t    // Force redgomery representation when loading from JSON\n\t    if (isRed) {\n\t      this.x.forceRed(this.curve.red);\n\t      this.y.forceRed(this.curve.red);\n\t    }\n\t    if (!this.x.red)\n\t      this.x = this.x.toRed(this.curve.red);\n\t    if (!this.y.red)\n\t      this.y = this.y.toRed(this.curve.red);\n\t    this.inf = false;\n\t  }\n\t}\n\tinherits(Point, Base.BasePoint);\n\n\tShortCurve.prototype.point = function point(x, y, isRed) {\n\t  return new Point(this, x, y, isRed);\n\t};\n\n\tShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n\t  return Point.fromJSON(this, obj, red);\n\t};\n\n\tPoint.prototype._getBeta = function _getBeta() {\n\t  if (!this.curve.endo)\n\t    return;\n\n\t  var pre = this.precomputed;\n\t  if (pre && pre.beta)\n\t    return pre.beta;\n\n\t  var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n\t  if (pre) {\n\t    var curve = this.curve;\n\t    var endoMul = function(p) {\n\t      return curve.point(p.x.redMul(curve.endo.beta), p.y);\n\t    };\n\t    pre.beta = beta;\n\t    beta.precomputed = {\n\t      beta: null,\n\t      naf: pre.naf && {\n\t        wnd: pre.naf.wnd,\n\t        points: pre.naf.points.map(endoMul)\n\t      },\n\t      doubles: pre.doubles && {\n\t        step: pre.doubles.step,\n\t        points: pre.doubles.points.map(endoMul)\n\t      }\n\t    };\n\t  }\n\t  return beta;\n\t};\n\n\tPoint.prototype.toJSON = function toJSON() {\n\t  if (!this.precomputed)\n\t    return [ this.x, this.y ];\n\n\t  return [ this.x, this.y, this.precomputed && {\n\t    doubles: this.precomputed.doubles && {\n\t      step: this.precomputed.doubles.step,\n\t      points: this.precomputed.doubles.points.slice(1)\n\t    },\n\t    naf: this.precomputed.naf && {\n\t      wnd: this.precomputed.naf.wnd,\n\t      points: this.precomputed.naf.points.slice(1)\n\t    }\n\t  } ];\n\t};\n\n\tPoint.fromJSON = function fromJSON(curve, obj, red) {\n\t  if (typeof obj === 'string')\n\t    obj = JSON.parse(obj);\n\t  var res = curve.point(obj[0], obj[1], red);\n\t  if (!obj[2])\n\t    return res;\n\n\t  function obj2point(obj) {\n\t    return curve.point(obj[0], obj[1], red);\n\t  }\n\n\t  var pre = obj[2];\n\t  res.precomputed = {\n\t    beta: null,\n\t    doubles: pre.doubles && {\n\t      step: pre.doubles.step,\n\t      points: [ res ].concat(pre.doubles.points.map(obj2point))\n\t    },\n\t    naf: pre.naf && {\n\t      wnd: pre.naf.wnd,\n\t      points: [ res ].concat(pre.naf.points.map(obj2point))\n\t    }\n\t  };\n\t  return res;\n\t};\n\n\tPoint.prototype.inspect = function inspect() {\n\t  if (this.isInfinity())\n\t    return '<EC Point Infinity>';\n\t  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n\t      ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n\t};\n\n\tPoint.prototype.isInfinity = function isInfinity() {\n\t  return this.inf;\n\t};\n\n\tPoint.prototype.add = function add(p) {\n\t  // O + P = P\n\t  if (this.inf)\n\t    return p;\n\n\t  // P + O = P\n\t  if (p.inf)\n\t    return this;\n\n\t  // P + P = 2P\n\t  if (this.eq(p))\n\t    return this.dbl();\n\n\t  // P + (-P) = O\n\t  if (this.neg().eq(p))\n\t    return this.curve.point(null, null);\n\n\t  // P + Q = O\n\t  if (this.x.cmp(p.x) === 0)\n\t    return this.curve.point(null, null);\n\n\t  var c = this.y.redSub(p.y);\n\t  if (c.cmpn(0) !== 0)\n\t    c = c.redMul(this.x.redSub(p.x).redInvm());\n\t  var nx = c.redSqr().redISub(this.x).redISub(p.x);\n\t  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n\t  return this.curve.point(nx, ny);\n\t};\n\n\tPoint.prototype.dbl = function dbl() {\n\t  if (this.inf)\n\t    return this;\n\n\t  // 2P = O\n\t  var ys1 = this.y.redAdd(this.y);\n\t  if (ys1.cmpn(0) === 0)\n\t    return this.curve.point(null, null);\n\n\t  var a = this.curve.a;\n\n\t  var x2 = this.x.redSqr();\n\t  var dyinv = ys1.redInvm();\n\t  var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n\t  var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n\t  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n\t  return this.curve.point(nx, ny);\n\t};\n\n\tPoint.prototype.getX = function getX() {\n\t  return this.x.fromRed();\n\t};\n\n\tPoint.prototype.getY = function getY() {\n\t  return this.y.fromRed();\n\t};\n\n\tPoint.prototype.mul = function mul(k) {\n\t  k = new BN(k, 16);\n\n\t  if (this._hasDoubles(k))\n\t    return this.curve._fixedNafMul(this, k);\n\t  else if (this.curve.endo)\n\t    return this.curve._endoWnafMulAdd([ this ], [ k ]);\n\t  else\n\t    return this.curve._wnafMul(this, k);\n\t};\n\n\tPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n\t  var points = [ this, p2 ];\n\t  var coeffs = [ k1, k2 ];\n\t  if (this.curve.endo)\n\t    return this.curve._endoWnafMulAdd(points, coeffs);\n\t  else\n\t    return this.curve._wnafMulAdd(1, points, coeffs, 2);\n\t};\n\n\tPoint.prototype.eq = function eq(p) {\n\t  return this === p ||\n\t         this.inf === p.inf &&\n\t             (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n\t};\n\n\tPoint.prototype.neg = function neg(_precompute) {\n\t  if (this.inf)\n\t    return this;\n\n\t  var res = this.curve.point(this.x, this.y.redNeg());\n\t  if (_precompute && this.precomputed) {\n\t    var pre = this.precomputed;\n\t    var negate = function(p) {\n\t      return p.neg();\n\t    };\n\t    res.precomputed = {\n\t      naf: pre.naf && {\n\t        wnd: pre.naf.wnd,\n\t        points: pre.naf.points.map(negate)\n\t      },\n\t      doubles: pre.doubles && {\n\t        step: pre.doubles.step,\n\t        points: pre.doubles.points.map(negate)\n\t      }\n\t    };\n\t  }\n\t  return res;\n\t};\n\n\tPoint.prototype.toJ = function toJ() {\n\t  if (this.inf)\n\t    return this.curve.jpoint(null, null, null);\n\n\t  var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n\t  return res;\n\t};\n\n\tfunction JPoint(curve, x, y, z) {\n\t  Base.BasePoint.call(this, curve, 'jacobian');\n\t  if (x === null && y === null && z === null) {\n\t    this.x = this.curve.one;\n\t    this.y = this.curve.one;\n\t    this.z = new BN(0);\n\t  } else {\n\t    this.x = new BN(x, 16);\n\t    this.y = new BN(y, 16);\n\t    this.z = new BN(z, 16);\n\t  }\n\t  if (!this.x.red)\n\t    this.x = this.x.toRed(this.curve.red);\n\t  if (!this.y.red)\n\t    this.y = this.y.toRed(this.curve.red);\n\t  if (!this.z.red)\n\t    this.z = this.z.toRed(this.curve.red);\n\n\t  this.zOne = this.z === this.curve.one;\n\t}\n\tinherits(JPoint, Base.BasePoint);\n\n\tShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n\t  return new JPoint(this, x, y, z);\n\t};\n\n\tJPoint.prototype.toP = function toP() {\n\t  if (this.isInfinity())\n\t    return this.curve.point(null, null);\n\n\t  var zinv = this.z.redInvm();\n\t  var zinv2 = zinv.redSqr();\n\t  var ax = this.x.redMul(zinv2);\n\t  var ay = this.y.redMul(zinv2).redMul(zinv);\n\n\t  return this.curve.point(ax, ay);\n\t};\n\n\tJPoint.prototype.neg = function neg() {\n\t  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n\t};\n\n\tJPoint.prototype.add = function add(p) {\n\t  // O + P = P\n\t  if (this.isInfinity())\n\t    return p;\n\n\t  // P + O = P\n\t  if (p.isInfinity())\n\t    return this;\n\n\t  // 12M + 4S + 7A\n\t  var pz2 = p.z.redSqr();\n\t  var z2 = this.z.redSqr();\n\t  var u1 = this.x.redMul(pz2);\n\t  var u2 = p.x.redMul(z2);\n\t  var s1 = this.y.redMul(pz2.redMul(p.z));\n\t  var s2 = p.y.redMul(z2.redMul(this.z));\n\n\t  var h = u1.redSub(u2);\n\t  var r = s1.redSub(s2);\n\t  if (h.cmpn(0) === 0) {\n\t    if (r.cmpn(0) !== 0)\n\t      return this.curve.jpoint(null, null, null);\n\t    else\n\t      return this.dbl();\n\t  }\n\n\t  var h2 = h.redSqr();\n\t  var h3 = h2.redMul(h);\n\t  var v = u1.redMul(h2);\n\n\t  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n\t  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n\t  var nz = this.z.redMul(p.z).redMul(h);\n\n\t  return this.curve.jpoint(nx, ny, nz);\n\t};\n\n\tJPoint.prototype.mixedAdd = function mixedAdd(p) {\n\t  // O + P = P\n\t  if (this.isInfinity())\n\t    return p.toJ();\n\n\t  // P + O = P\n\t  if (p.isInfinity())\n\t    return this;\n\n\t  // 8M + 3S + 7A\n\t  var z2 = this.z.redSqr();\n\t  var u1 = this.x;\n\t  var u2 = p.x.redMul(z2);\n\t  var s1 = this.y;\n\t  var s2 = p.y.redMul(z2).redMul(this.z);\n\n\t  var h = u1.redSub(u2);\n\t  var r = s1.redSub(s2);\n\t  if (h.cmpn(0) === 0) {\n\t    if (r.cmpn(0) !== 0)\n\t      return this.curve.jpoint(null, null, null);\n\t    else\n\t      return this.dbl();\n\t  }\n\n\t  var h2 = h.redSqr();\n\t  var h3 = h2.redMul(h);\n\t  var v = u1.redMul(h2);\n\n\t  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n\t  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n\t  var nz = this.z.redMul(h);\n\n\t  return this.curve.jpoint(nx, ny, nz);\n\t};\n\n\tJPoint.prototype.dblp = function dblp(pow) {\n\t  if (pow === 0)\n\t    return this;\n\t  if (this.isInfinity())\n\t    return this;\n\t  if (!pow)\n\t    return this.dbl();\n\n\t  if (this.curve.zeroA || this.curve.threeA) {\n\t    var r = this;\n\t    for (var i = 0; i < pow; i++)\n\t      r = r.dbl();\n\t    return r;\n\t  }\n\n\t  // 1M + 2S + 1A + N * (4S + 5M + 8A)\n\t  // N = 1 => 6M + 6S + 9A\n\t  var a = this.curve.a;\n\t  var tinv = this.curve.tinv;\n\n\t  var jx = this.x;\n\t  var jy = this.y;\n\t  var jz = this.z;\n\t  var jz4 = jz.redSqr().redSqr();\n\n\t  // Reuse results\n\t  var jyd = jy.redAdd(jy);\n\t  for (var i = 0; i < pow; i++) {\n\t    var jx2 = jx.redSqr();\n\t    var jyd2 = jyd.redSqr();\n\t    var jyd4 = jyd2.redSqr();\n\t    var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n\t    var t1 = jx.redMul(jyd2);\n\t    var nx = c.redSqr().redISub(t1.redAdd(t1));\n\t    var t2 = t1.redISub(nx);\n\t    var dny = c.redMul(t2);\n\t    dny = dny.redIAdd(dny).redISub(jyd4);\n\t    var nz = jyd.redMul(jz);\n\t    if (i + 1 < pow)\n\t      jz4 = jz4.redMul(jyd4);\n\n\t    jx = nx;\n\t    jz = nz;\n\t    jyd = dny;\n\t  }\n\n\t  return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n\t};\n\n\tJPoint.prototype.dbl = function dbl() {\n\t  if (this.isInfinity())\n\t    return this;\n\n\t  if (this.curve.zeroA)\n\t    return this._zeroDbl();\n\t  else if (this.curve.threeA)\n\t    return this._threeDbl();\n\t  else\n\t    return this._dbl();\n\t};\n\n\tJPoint.prototype._zeroDbl = function _zeroDbl() {\n\t  var nx;\n\t  var ny;\n\t  var nz;\n\t  // Z = 1\n\t  if (this.zOne) {\n\t    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n\t    //     #doubling-mdbl-2007-bl\n\t    // 1M + 5S + 14A\n\n\t    // XX = X1^2\n\t    var xx = this.x.redSqr();\n\t    // YY = Y1^2\n\t    var yy = this.y.redSqr();\n\t    // YYYY = YY^2\n\t    var yyyy = yy.redSqr();\n\t    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\t    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n\t    s = s.redIAdd(s);\n\t    // M = 3 * XX + a; a = 0\n\t    var m = xx.redAdd(xx).redIAdd(xx);\n\t    // T = M ^ 2 - 2*S\n\t    var t = m.redSqr().redISub(s).redISub(s);\n\n\t    // 8 * YYYY\n\t    var yyyy8 = yyyy.redIAdd(yyyy);\n\t    yyyy8 = yyyy8.redIAdd(yyyy8);\n\t    yyyy8 = yyyy8.redIAdd(yyyy8);\n\n\t    // X3 = T\n\t    nx = t;\n\t    // Y3 = M * (S - T) - 8 * YYYY\n\t    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n\t    // Z3 = 2*Y1\n\t    nz = this.y.redAdd(this.y);\n\t  } else {\n\t    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n\t    //     #doubling-dbl-2009-l\n\t    // 2M + 5S + 13A\n\n\t    // A = X1^2\n\t    var a = this.x.redSqr();\n\t    // B = Y1^2\n\t    var b = this.y.redSqr();\n\t    // C = B^2\n\t    var c = b.redSqr();\n\t    // D = 2 * ((X1 + B)^2 - A - C)\n\t    var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n\t    d = d.redIAdd(d);\n\t    // E = 3 * A\n\t    var e = a.redAdd(a).redIAdd(a);\n\t    // F = E^2\n\t    var f = e.redSqr();\n\n\t    // 8 * C\n\t    var c8 = c.redIAdd(c);\n\t    c8 = c8.redIAdd(c8);\n\t    c8 = c8.redIAdd(c8);\n\n\t    // X3 = F - 2 * D\n\t    nx = f.redISub(d).redISub(d);\n\t    // Y3 = E * (D - X3) - 8 * C\n\t    ny = e.redMul(d.redISub(nx)).redISub(c8);\n\t    // Z3 = 2 * Y1 * Z1\n\t    nz = this.y.redMul(this.z);\n\t    nz = nz.redIAdd(nz);\n\t  }\n\n\t  return this.curve.jpoint(nx, ny, nz);\n\t};\n\n\tJPoint.prototype._threeDbl = function _threeDbl() {\n\t  var nx;\n\t  var ny;\n\t  var nz;\n\t  // Z = 1\n\t  if (this.zOne) {\n\t    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n\t    //     #doubling-mdbl-2007-bl\n\t    // 1M + 5S + 15A\n\n\t    // XX = X1^2\n\t    var xx = this.x.redSqr();\n\t    // YY = Y1^2\n\t    var yy = this.y.redSqr();\n\t    // YYYY = YY^2\n\t    var yyyy = yy.redSqr();\n\t    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\t    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n\t    s = s.redIAdd(s);\n\t    // M = 3 * XX + a\n\t    var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n\t    // T = M^2 - 2 * S\n\t    var t = m.redSqr().redISub(s).redISub(s);\n\t    // X3 = T\n\t    nx = t;\n\t    // Y3 = M * (S - T) - 8 * YYYY\n\t    var yyyy8 = yyyy.redIAdd(yyyy);\n\t    yyyy8 = yyyy8.redIAdd(yyyy8);\n\t    yyyy8 = yyyy8.redIAdd(yyyy8);\n\t    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n\t    // Z3 = 2 * Y1\n\t    nz = this.y.redAdd(this.y);\n\t  } else {\n\t    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n\t    // 3M + 5S\n\n\t    // delta = Z1^2\n\t    var delta = this.z.redSqr();\n\t    // gamma = Y1^2\n\t    var gamma = this.y.redSqr();\n\t    // beta = X1 * gamma\n\t    var beta = this.x.redMul(gamma);\n\t    // alpha = 3 * (X1 - delta) * (X1 + delta)\n\t    var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n\t    alpha = alpha.redAdd(alpha).redIAdd(alpha);\n\t    // X3 = alpha^2 - 8 * beta\n\t    var beta4 = beta.redIAdd(beta);\n\t    beta4 = beta4.redIAdd(beta4);\n\t    var beta8 = beta4.redAdd(beta4);\n\t    nx = alpha.redSqr().redISub(beta8);\n\t    // Z3 = (Y1 + Z1)^2 - gamma - delta\n\t    nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n\t    // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n\t    var ggamma8 = gamma.redSqr();\n\t    ggamma8 = ggamma8.redIAdd(ggamma8);\n\t    ggamma8 = ggamma8.redIAdd(ggamma8);\n\t    ggamma8 = ggamma8.redIAdd(ggamma8);\n\t    ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n\t  }\n\n\t  return this.curve.jpoint(nx, ny, nz);\n\t};\n\n\tJPoint.prototype._dbl = function _dbl() {\n\t  var a = this.curve.a;\n\n\t  // 4M + 6S + 10A\n\t  var jx = this.x;\n\t  var jy = this.y;\n\t  var jz = this.z;\n\t  var jz4 = jz.redSqr().redSqr();\n\n\t  var jx2 = jx.redSqr();\n\t  var jy2 = jy.redSqr();\n\n\t  var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n\t  var jxd4 = jx.redAdd(jx);\n\t  jxd4 = jxd4.redIAdd(jxd4);\n\t  var t1 = jxd4.redMul(jy2);\n\t  var nx = c.redSqr().redISub(t1.redAdd(t1));\n\t  var t2 = t1.redISub(nx);\n\n\t  var jyd8 = jy2.redSqr();\n\t  jyd8 = jyd8.redIAdd(jyd8);\n\t  jyd8 = jyd8.redIAdd(jyd8);\n\t  jyd8 = jyd8.redIAdd(jyd8);\n\t  var ny = c.redMul(t2).redISub(jyd8);\n\t  var nz = jy.redAdd(jy).redMul(jz);\n\n\t  return this.curve.jpoint(nx, ny, nz);\n\t};\n\n\tJPoint.prototype.trpl = function trpl() {\n\t  if (!this.curve.zeroA)\n\t    return this.dbl().add(this);\n\n\t  // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n\t  // 5M + 10S + ...\n\n\t  // XX = X1^2\n\t  var xx = this.x.redSqr();\n\t  // YY = Y1^2\n\t  var yy = this.y.redSqr();\n\t  // ZZ = Z1^2\n\t  var zz = this.z.redSqr();\n\t  // YYYY = YY^2\n\t  var yyyy = yy.redSqr();\n\t  // M = 3 * XX + a * ZZ2; a = 0\n\t  var m = xx.redAdd(xx).redIAdd(xx);\n\t  // MM = M^2\n\t  var mm = m.redSqr();\n\t  // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n\t  var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n\t  e = e.redIAdd(e);\n\t  e = e.redAdd(e).redIAdd(e);\n\t  e = e.redISub(mm);\n\t  // EE = E^2\n\t  var ee = e.redSqr();\n\t  // T = 16*YYYY\n\t  var t = yyyy.redIAdd(yyyy);\n\t  t = t.redIAdd(t);\n\t  t = t.redIAdd(t);\n\t  t = t.redIAdd(t);\n\t  // U = (M + E)^2 - MM - EE - T\n\t  var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n\t  // X3 = 4 * (X1 * EE - 4 * YY * U)\n\t  var yyu4 = yy.redMul(u);\n\t  yyu4 = yyu4.redIAdd(yyu4);\n\t  yyu4 = yyu4.redIAdd(yyu4);\n\t  var nx = this.x.redMul(ee).redISub(yyu4);\n\t  nx = nx.redIAdd(nx);\n\t  nx = nx.redIAdd(nx);\n\t  // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n\t  var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n\t  ny = ny.redIAdd(ny);\n\t  ny = ny.redIAdd(ny);\n\t  ny = ny.redIAdd(ny);\n\t  // Z3 = (Z1 + E)^2 - ZZ - EE\n\t  var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n\t  return this.curve.jpoint(nx, ny, nz);\n\t};\n\n\tJPoint.prototype.mul = function mul(k, kbase) {\n\t  k = new BN(k, kbase);\n\n\t  return this.curve._wnafMul(this, k);\n\t};\n\n\tJPoint.prototype.eq = function eq(p) {\n\t  if (p.type === 'affine')\n\t    return this.eq(p.toJ());\n\n\t  if (this === p)\n\t    return true;\n\n\t  // x1 * z2^2 == x2 * z1^2\n\t  var z2 = this.z.redSqr();\n\t  var pz2 = p.z.redSqr();\n\t  if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n\t    return false;\n\n\t  // y1 * z2^3 == y2 * z1^3\n\t  var z3 = z2.redMul(this.z);\n\t  var pz3 = pz2.redMul(p.z);\n\t  return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n\t};\n\n\tJPoint.prototype.inspect = function inspect() {\n\t  if (this.isInfinity())\n\t    return '<EC JPoint Infinity>';\n\t  return '<EC JPoint x: ' + this.x.toString(16, 2) +\n\t      ' y: ' + this.y.toString(16, 2) +\n\t      ' z: ' + this.z.toString(16, 2) + '>';\n\t};\n\n\tJPoint.prototype.isInfinity = function isInfinity() {\n\t  // XXX This code assumes that zero is always zero in red\n\t  return this.z.cmpn(0) === 0;\n\t};\n\n\n/***/ },\n/* 463 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar curves = exports;\n\n\tvar hash = __webpack_require__(48);\n\tvar elliptic = __webpack_require__(18);\n\n\tvar assert = elliptic.utils.assert;\n\n\tfunction PresetCurve(options) {\n\t  if (options.type === 'short')\n\t    this.curve = new elliptic.curve.short(options);\n\t  else if (options.type === 'edwards')\n\t    this.curve = new elliptic.curve.edwards(options);\n\t  else\n\t    this.curve = new elliptic.curve.mont(options);\n\t  this.g = this.curve.g;\n\t  this.n = this.curve.n;\n\t  this.hash = options.hash;\n\n\t  assert(this.g.validate(), 'Invalid curve');\n\t  assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n\t}\n\tcurves.PresetCurve = PresetCurve;\n\n\tfunction defineCurve(name, options) {\n\t  Object.defineProperty(curves, name, {\n\t    configurable: true,\n\t    enumerable: true,\n\t    get: function() {\n\t      var curve = new PresetCurve(options);\n\t      Object.defineProperty(curves, name, {\n\t        configurable: true,\n\t        enumerable: true,\n\t        value: curve\n\t      });\n\t      return curve;\n\t    }\n\t  });\n\t}\n\n\tdefineCurve('p192', {\n\t  type: 'short',\n\t  prime: 'p192',\n\t  p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n\t  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n\t  b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n\t  n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n\t  hash: hash.sha256,\n\t  gRed: false,\n\t  g: [\n\t    '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n\t    '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n\t  ]\n\t});\n\n\tdefineCurve('p224', {\n\t  type: 'short',\n\t  prime: 'p224',\n\t  p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n\t  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n\t  b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n\t  n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n\t  hash: hash.sha256,\n\t  gRed: false,\n\t  g: [\n\t    'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n\t    'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n\t  ]\n\t});\n\n\tdefineCurve('p256', {\n\t  type: 'short',\n\t  prime: null,\n\t  p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n\t  a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n\t  b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n\t  n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n\t  hash: hash.sha256,\n\t  gRed: false,\n\t  g: [\n\t    '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n\t    '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n\t  ]\n\t});\n\n\tdefineCurve('p384', {\n\t  type: 'short',\n\t  prime: null,\n\t  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n\t     'fffffffe ffffffff 00000000 00000000 ffffffff',\n\t  a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n\t     'fffffffe ffffffff 00000000 00000000 fffffffc',\n\t  b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n\t     '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n\t  n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n\t     'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n\t  hash: hash.sha384,\n\t  gRed: false,\n\t  g: [\n\t    'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n\t    '5502f25d bf55296c 3a545e38 72760ab7',\n\t    '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n\t    '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n\t  ]\n\t});\n\n\tdefineCurve('p521', {\n\t  type: 'short',\n\t  prime: null,\n\t  p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n\t     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n\t     'ffffffff ffffffff ffffffff ffffffff ffffffff',\n\t  a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n\t     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n\t     'ffffffff ffffffff ffffffff ffffffff fffffffc',\n\t  b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n\t     '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n\t     '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n\t  n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n\t     'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n\t     'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n\t  hash: hash.sha512,\n\t  gRed: false,\n\t  g: [\n\t    '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n\t    '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n\t    'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n\t    '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n\t    '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n\t    '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n\t  ]\n\t});\n\n\tdefineCurve('curve25519', {\n\t  type: 'mont',\n\t  prime: 'p25519',\n\t  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n\t  a: '76d06',\n\t  b: '0',\n\t  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n\t  hash: hash.sha256,\n\t  gRed: false,\n\t  g: [\n\t    '9'\n\t  ]\n\t});\n\n\tdefineCurve('ed25519', {\n\t  type: 'edwards',\n\t  prime: 'p25519',\n\t  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n\t  a: '-1',\n\t  c: '1',\n\t  // -121665 * (121666^(-1)) (mod P)\n\t  d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n\t  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n\t  hash: hash.sha256,\n\t  gRed: false,\n\t  g: [\n\t    '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n\t    // 4/5\n\t    '6666666666666666666666666666666666666666666666666666666666666658'\n\t  ]\n\t});\n\n\tvar pre;\n\ttry {\n\t  pre = __webpack_require__(471);\n\t} catch (e) {\n\t  pre = undefined;\n\t}\n\n\tdefineCurve('secp256k1', {\n\t  type: 'short',\n\t  prime: 'k256',\n\t  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n\t  a: '0',\n\t  b: '7',\n\t  n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n\t  h: '1',\n\t  hash: hash.sha256,\n\n\t  // Precomputed endomorphism\n\t  beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n\t  lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n\t  basis: [\n\t    {\n\t      a: '3086d221a7d46bcde86c90e49284eb15',\n\t      b: '-e4437ed6010e88286f547fa90abfe4c3'\n\t    },\n\t    {\n\t      a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n\t      b: '3086d221a7d46bcde86c90e49284eb15'\n\t    }\n\t  ],\n\n\t  gRed: false,\n\t  g: [\n\t    '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n\t    '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n\t    pre\n\t  ]\n\t});\n\n\n/***/ },\n/* 464 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar BN = __webpack_require__(11);\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\tvar assert = utils.assert;\n\n\tvar KeyPair = __webpack_require__(465);\n\tvar Signature = __webpack_require__(466);\n\n\tfunction EC(options) {\n\t  if (!(this instanceof EC))\n\t    return new EC(options);\n\n\t  // Shortcut `elliptic.ec(curve-name)`\n\t  if (typeof options === 'string') {\n\t    assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n\t    options = elliptic.curves[options];\n\t  }\n\n\t  // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n\t  if (options instanceof elliptic.curves.PresetCurve)\n\t    options = { curve: options };\n\n\t  this.curve = options.curve.curve;\n\t  this.n = this.curve.n;\n\t  this.nh = this.n.ushrn(1);\n\t  this.g = this.curve.g;\n\n\t  // Point on curve\n\t  this.g = options.curve.g;\n\t  this.g.precompute(options.curve.n.bitLength() + 1);\n\n\t  // Hash for function for DRBG\n\t  this.hash = options.hash || options.curve.hash;\n\t}\n\tmodule.exports = EC;\n\n\tEC.prototype.keyPair = function keyPair(options) {\n\t  return new KeyPair(this, options);\n\t};\n\n\tEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n\t  return KeyPair.fromPrivate(this, priv, enc);\n\t};\n\n\tEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n\t  return KeyPair.fromPublic(this, pub, enc);\n\t};\n\n\tEC.prototype.genKeyPair = function genKeyPair(options) {\n\t  if (!options)\n\t    options = {};\n\n\t  // Instantiate Hmac_DRBG\n\t  var drbg = new elliptic.hmacDRBG({\n\t    hash: this.hash,\n\t    pers: options.pers,\n\t    entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n\t    nonce: this.n.toArray()\n\t  });\n\n\t  var bytes = this.n.byteLength();\n\t  var ns2 = this.n.sub(new BN(2));\n\t  do {\n\t    var priv = new BN(drbg.generate(bytes));\n\t    if (priv.cmp(ns2) > 0)\n\t      continue;\n\n\t    priv.iaddn(1);\n\t    return this.keyFromPrivate(priv);\n\t  } while (true);\n\t};\n\n\tEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n\t  var delta = msg.byteLength() * 8 - this.n.bitLength();\n\t  if (delta > 0)\n\t    msg = msg.ushrn(delta);\n\t  if (!truncOnly && msg.cmp(this.n) >= 0)\n\t    return msg.sub(this.n);\n\t  else\n\t    return msg;\n\t};\n\n\tEC.prototype.sign = function sign(msg, key, enc, options) {\n\t  if (typeof enc === 'object') {\n\t    options = enc;\n\t    enc = null;\n\t  }\n\t  if (!options)\n\t    options = {};\n\n\t  key = this.keyFromPrivate(key, enc);\n\t  msg = this._truncateToN(new BN(msg, 16));\n\n\t  // Zero-extend key to provide enough entropy\n\t  var bytes = this.n.byteLength();\n\t  var bkey = key.getPrivate().toArray('be', bytes);\n\n\t  // Zero-extend nonce to have the same byte size as N\n\t  var nonce = msg.toArray('be', bytes);\n\n\t  // Instantiate Hmac_DRBG\n\t  var drbg = new elliptic.hmacDRBG({\n\t    hash: this.hash,\n\t    entropy: bkey,\n\t    nonce: nonce,\n\t    pers: options.pers,\n\t    persEnc: options.persEnc\n\t  });\n\n\t  // Number of bytes to generate\n\t  var ns1 = this.n.sub(new BN(1));\n\n\t  for (var iter = 0; true; iter++) {\n\t    var k = options.k ?\n\t        options.k(iter) :\n\t        new BN(drbg.generate(this.n.byteLength()));\n\t    k = this._truncateToN(k, true);\n\t    if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n\t      continue;\n\n\t    var kp = this.g.mul(k);\n\t    if (kp.isInfinity())\n\t      continue;\n\n\t    var kpX = kp.getX();\n\t    var r = kpX.umod(this.n);\n\t    if (r.cmpn(0) === 0)\n\t      continue;\n\n\t    var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n\t    s = s.umod(this.n);\n\t    if (s.cmpn(0) === 0)\n\t      continue;\n\n\t    var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n\t                        (kpX.cmp(r) !== 0 ? 2 : 0);\n\n\t    // Use complement of `s`, if it is > `n / 2`\n\t    if (options.canonical && s.cmp(this.nh) > 0) {\n\t      s = this.n.sub(s);\n\t      recoveryParam ^= 1;\n\t    }\n\n\t    return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n\t  }\n\t};\n\n\tEC.prototype.verify = function verify(msg, signature, key, enc) {\n\t  msg = this._truncateToN(new BN(msg, 16));\n\t  key = this.keyFromPublic(key, enc);\n\t  signature = new Signature(signature, 'hex');\n\n\t  // Perform primitive values validation\n\t  var r = signature.r;\n\t  var s = signature.s;\n\t  if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n\t    return false;\n\t  if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n\t    return false;\n\n\t  // Validate signature\n\t  var sinv = s.invm(this.n);\n\t  var u1 = sinv.mul(msg).umod(this.n);\n\t  var u2 = sinv.mul(r).umod(this.n);\n\n\t  var p = this.g.mulAdd(u1, key.getPublic(), u2);\n\t  if (p.isInfinity())\n\t    return false;\n\n\t  return p.getX().umod(this.n).cmp(r) === 0;\n\t};\n\n\tEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n\t  assert((3 & j) === j, 'The recovery param is more than two bits');\n\t  signature = new Signature(signature, enc);\n\n\t  var n = this.n;\n\t  var e = new BN(msg);\n\t  var r = signature.r;\n\t  var s = signature.s;\n\n\t  // A set LSB signifies that the y-coordinate is odd\n\t  var isYOdd = j & 1;\n\t  var isSecondKey = j >> 1;\n\t  if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n\t    throw new Error('Unable to find sencond key candinate');\n\n\t  // 1.1. Let x = r + jn.\n\t  if (isSecondKey)\n\t    r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n\t  else\n\t    r = this.curve.pointFromX(r, isYOdd);\n\n\t  var eNeg = n.sub(e);\n\n\t  // 1.6.1 Compute Q = r^-1 (sR -  eG)\n\t  //               Q = r^-1 (sR + -eG)\n\t  var rInv = signature.r.invm(n);\n\t  return this.g.mulAdd(eNeg, r, s).mul(rInv);\n\t};\n\n\tEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n\t  signature = new Signature(signature, enc);\n\t  if (signature.recoveryParam !== null)\n\t    return signature.recoveryParam;\n\n\t  for (var i = 0; i < 4; i++) {\n\t    var Qprime;\n\t    try {\n\t      Qprime = this.recoverPubKey(e, signature, i);\n\t    } catch (e) {\n\t      continue;\n\t    }\n\n\t    if (Qprime.eq(Q))\n\t      return i;\n\t  }\n\t  throw new Error('Unable to find valid recovery factor');\n\t};\n\n\n/***/ },\n/* 465 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar BN = __webpack_require__(11);\n\n\tfunction KeyPair(ec, options) {\n\t  this.ec = ec;\n\t  this.priv = null;\n\t  this.pub = null;\n\n\t  // KeyPair(ec, { priv: ..., pub: ... })\n\t  if (options.priv)\n\t    this._importPrivate(options.priv, options.privEnc);\n\t  if (options.pub)\n\t    this._importPublic(options.pub, options.pubEnc);\n\t}\n\tmodule.exports = KeyPair;\n\n\tKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n\t  if (pub instanceof KeyPair)\n\t    return pub;\n\n\t  return new KeyPair(ec, {\n\t    pub: pub,\n\t    pubEnc: enc\n\t  });\n\t};\n\n\tKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n\t  if (priv instanceof KeyPair)\n\t    return priv;\n\n\t  return new KeyPair(ec, {\n\t    priv: priv,\n\t    privEnc: enc\n\t  });\n\t};\n\n\tKeyPair.prototype.validate = function validate() {\n\t  var pub = this.getPublic();\n\n\t  if (pub.isInfinity())\n\t    return { result: false, reason: 'Invalid public key' };\n\t  if (!pub.validate())\n\t    return { result: false, reason: 'Public key is not a point' };\n\t  if (!pub.mul(this.ec.curve.n).isInfinity())\n\t    return { result: false, reason: 'Public key * N != O' };\n\n\t  return { result: true, reason: null };\n\t};\n\n\tKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n\t  // compact is optional argument\n\t  if (typeof compact === 'string') {\n\t    enc = compact;\n\t    compact = null;\n\t  }\n\n\t  if (!this.pub)\n\t    this.pub = this.ec.g.mul(this.priv);\n\n\t  if (!enc)\n\t    return this.pub;\n\n\t  return this.pub.encode(enc, compact);\n\t};\n\n\tKeyPair.prototype.getPrivate = function getPrivate(enc) {\n\t  if (enc === 'hex')\n\t    return this.priv.toString(16, 2);\n\t  else\n\t    return this.priv;\n\t};\n\n\tKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n\t  this.priv = new BN(key, enc || 16);\n\n\t  // Ensure that the priv won't be bigger than n, otherwise we may fail\n\t  // in fixed multiplication method\n\t  this.priv = this.priv.umod(this.ec.curve.n);\n\t};\n\n\tKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n\t  if (key.x || key.y) {\n\t    this.pub = this.ec.curve.point(key.x, key.y);\n\t    return;\n\t  }\n\t  this.pub = this.ec.curve.decodePoint(key, enc);\n\t};\n\n\t// ECDH\n\tKeyPair.prototype.derive = function derive(pub) {\n\t  return pub.mul(this.priv).getX();\n\t};\n\n\t// ECDSA\n\tKeyPair.prototype.sign = function sign(msg, enc, options) {\n\t  return this.ec.sign(msg, this, enc, options);\n\t};\n\n\tKeyPair.prototype.verify = function verify(msg, signature) {\n\t  return this.ec.verify(msg, signature, this);\n\t};\n\n\tKeyPair.prototype.inspect = function inspect() {\n\t  return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n\t         ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n\t};\n\n\n/***/ },\n/* 466 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar BN = __webpack_require__(11);\n\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\tvar assert = utils.assert;\n\n\tfunction Signature(options, enc) {\n\t  if (options instanceof Signature)\n\t    return options;\n\n\t  if (this._importDER(options, enc))\n\t    return;\n\n\t  assert(options.r && options.s, 'Signature without r or s');\n\t  this.r = new BN(options.r, 16);\n\t  this.s = new BN(options.s, 16);\n\t  if (options.recoveryParam === undefined)\n\t    this.recoveryParam = null;\n\t  else\n\t    this.recoveryParam = options.recoveryParam;\n\t}\n\tmodule.exports = Signature;\n\n\tfunction Position() {\n\t  this.place = 0;\n\t}\n\n\tfunction getLength(buf, p) {\n\t  var initial = buf[p.place++];\n\t  if (!(initial & 0x80)) {\n\t    return initial;\n\t  }\n\t  var octetLen = initial & 0xf;\n\t  var val = 0;\n\t  for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n\t    val <<= 8;\n\t    val |= buf[off];\n\t  }\n\t  p.place = off;\n\t  return val;\n\t}\n\n\tfunction rmPadding(buf) {\n\t  var i = 0;\n\t  var len = buf.length - 1;\n\t  while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n\t    i++;\n\t  }\n\t  if (i === 0) {\n\t    return buf;\n\t  }\n\t  return buf.slice(i);\n\t}\n\n\tSignature.prototype._importDER = function _importDER(data, enc) {\n\t  data = utils.toArray(data, enc);\n\t  var p = new Position();\n\t  if (data[p.place++] !== 0x30) {\n\t    return false;\n\t  }\n\t  var len = getLength(data, p);\n\t  if ((len + p.place) !== data.length) {\n\t    return false;\n\t  }\n\t  if (data[p.place++] !== 0x02) {\n\t    return false;\n\t  }\n\t  var rlen = getLength(data, p);\n\t  var r = data.slice(p.place, rlen + p.place);\n\t  p.place += rlen;\n\t  if (data[p.place++] !== 0x02) {\n\t    return false;\n\t  }\n\t  var slen = getLength(data, p);\n\t  if (data.length !== slen + p.place) {\n\t    return false;\n\t  }\n\t  var s = data.slice(p.place, slen + p.place);\n\t  if (r[0] === 0 && (r[1] & 0x80)) {\n\t    r = r.slice(1);\n\t  }\n\t  if (s[0] === 0 && (s[1] & 0x80)) {\n\t    s = s.slice(1);\n\t  }\n\n\t  this.r = new BN(r);\n\t  this.s = new BN(s);\n\t  this.recoveryParam = null;\n\n\t  return true;\n\t};\n\n\tfunction constructLength(arr, len) {\n\t  if (len < 0x80) {\n\t    arr.push(len);\n\t    return;\n\t  }\n\t  var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n\t  arr.push(octets | 0x80);\n\t  while (--octets) {\n\t    arr.push((len >>> (octets << 3)) & 0xff);\n\t  }\n\t  arr.push(len);\n\t}\n\n\tSignature.prototype.toDER = function toDER(enc) {\n\t  var r = this.r.toArray();\n\t  var s = this.s.toArray();\n\n\t  // Pad values\n\t  if (r[0] & 0x80)\n\t    r = [ 0 ].concat(r);\n\t  // Pad values\n\t  if (s[0] & 0x80)\n\t    s = [ 0 ].concat(s);\n\n\t  r = rmPadding(r);\n\t  s = rmPadding(s);\n\n\t  while (!s[0] && !(s[1] & 0x80)) {\n\t    s = s.slice(1);\n\t  }\n\t  var arr = [ 0x02 ];\n\t  constructLength(arr, r.length);\n\t  arr = arr.concat(r);\n\t  arr.push(0x02);\n\t  constructLength(arr, s.length);\n\t  var backHalf = arr.concat(s);\n\t  var res = [ 0x30 ];\n\t  constructLength(res, backHalf.length);\n\t  res = res.concat(backHalf);\n\t  return utils.encode(res, enc);\n\t};\n\n\n/***/ },\n/* 467 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar hash = __webpack_require__(48);\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\tvar assert = utils.assert;\n\tvar parseBytes = utils.parseBytes;\n\tvar KeyPair = __webpack_require__(468);\n\tvar Signature = __webpack_require__(469);\n\n\tfunction EDDSA(curve) {\n\t  assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n\t  if (!(this instanceof EDDSA))\n\t    return new EDDSA(curve);\n\n\t  var curve = elliptic.curves[curve].curve;\n\t  this.curve = curve;\n\t  this.g = curve.g;\n\t  this.g.precompute(curve.n.bitLength() + 1);\n\n\t  this.pointClass = curve.point().constructor;\n\t  this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n\t  this.hash = hash.sha512;\n\t}\n\n\tmodule.exports = EDDSA;\n\n\t/**\n\t* @param {Array|String} message - message bytes\n\t* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n\t* @returns {Signature} - signature\n\t*/\n\tEDDSA.prototype.sign = function sign(message, secret) {\n\t  message = parseBytes(message);\n\t  var key = this.keyFromSecret(secret);\n\t  var r = this.hashInt(key.messagePrefix(), message);\n\t  var R = this.g.mul(r);\n\t  var Rencoded = this.encodePoint(R);\n\t  var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n\t               .mul(key.priv());\n\t  var S = r.add(s_).umod(this.curve.n);\n\t  return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n\t};\n\n\t/**\n\t* @param {Array} message - message bytes\n\t* @param {Array|String|Signature} sig - sig bytes\n\t* @param {Array|String|Point|KeyPair} pub - public key\n\t* @returns {Boolean} - true if public key matches sig of message\n\t*/\n\tEDDSA.prototype.verify = function verify(message, sig, pub) {\n\t  message = parseBytes(message);\n\t  sig = this.makeSignature(sig);\n\t  var key = this.keyFromPublic(pub);\n\t  var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n\t  var SG = this.g.mul(sig.S());\n\t  var RplusAh = sig.R().add(key.pub().mul(h));\n\t  return RplusAh.eq(SG);\n\t};\n\n\tEDDSA.prototype.hashInt = function hashInt() {\n\t  var hash = this.hash();\n\t  for (var i = 0; i < arguments.length; i++)\n\t    hash.update(arguments[i]);\n\t  return utils.intFromLE(hash.digest()).umod(this.curve.n);\n\t};\n\n\tEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n\t  return KeyPair.fromPublic(this, pub);\n\t};\n\n\tEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n\t  return KeyPair.fromSecret(this, secret);\n\t};\n\n\tEDDSA.prototype.makeSignature = function makeSignature(sig) {\n\t  if (sig instanceof Signature)\n\t    return sig;\n\t  return new Signature(this, sig);\n\t};\n\n\t/**\n\t* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n\t*\n\t* EDDSA defines methods for encoding and decoding points and integers. These are\n\t* helper convenience methods, that pass along to utility functions implied\n\t* parameters.\n\t*\n\t*/\n\tEDDSA.prototype.encodePoint = function encodePoint(point) {\n\t  var enc = point.getY().toArray('le', this.encodingLength);\n\t  enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n\t  return enc;\n\t};\n\n\tEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n\t  bytes = utils.parseBytes(bytes);\n\n\t  var lastIx = bytes.length - 1;\n\t  var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n\t  var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n\t  var y = utils.intFromLE(normed);\n\t  return this.curve.pointFromY(y, xIsOdd);\n\t};\n\n\tEDDSA.prototype.encodeInt = function encodeInt(num) {\n\t  return num.toArray('le', this.encodingLength);\n\t};\n\n\tEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n\t  return utils.intFromLE(bytes);\n\t};\n\n\tEDDSA.prototype.isPoint = function isPoint(val) {\n\t  return val instanceof this.pointClass;\n\t};\n\n\n/***/ },\n/* 468 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\tvar assert = utils.assert;\n\tvar parseBytes = utils.parseBytes;\n\tvar cachedProperty = utils.cachedProperty;\n\n\t/**\n\t* @param {EDDSA} eddsa - instance\n\t* @param {Object} params - public/private key parameters\n\t*\n\t* @param {Array<Byte>} [params.secret] - secret seed bytes\n\t* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n\t* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n\t*\n\t*/\n\tfunction KeyPair(eddsa, params) {\n\t  this.eddsa = eddsa;\n\t  this._secret = parseBytes(params.secret);\n\t  if (eddsa.isPoint(params.pub))\n\t    this._pub = params.pub;\n\t  else\n\t    this._pubBytes = parseBytes(params.pub);\n\t}\n\n\tKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n\t  if (pub instanceof KeyPair)\n\t    return pub;\n\t  return new KeyPair(eddsa, { pub: pub });\n\t};\n\n\tKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n\t  if (secret instanceof KeyPair)\n\t    return secret;\n\t  return new KeyPair(eddsa, { secret: secret });\n\t};\n\n\tKeyPair.prototype.secret = function secret() {\n\t  return this._secret;\n\t};\n\n\tcachedProperty(KeyPair, function pubBytes() {\n\t  return this.eddsa.encodePoint(this.pub());\n\t});\n\n\tcachedProperty(KeyPair, function pub() {\n\t  if (this._pubBytes)\n\t    return this.eddsa.decodePoint(this._pubBytes);\n\t  return this.eddsa.g.mul(this.priv());\n\t});\n\n\tcachedProperty(KeyPair, function privBytes() {\n\t  var eddsa = this.eddsa;\n\t  var hash = this.hash();\n\t  var lastIx = eddsa.encodingLength - 1;\n\n\t  var a = hash.slice(0, eddsa.encodingLength);\n\t  a[0] &= 248;\n\t  a[lastIx] &= 127;\n\t  a[lastIx] |= 64;\n\n\t  return a;\n\t});\n\n\tcachedProperty(KeyPair, function priv() {\n\t  return this.eddsa.decodeInt(this.privBytes());\n\t});\n\n\tcachedProperty(KeyPair, function hash() {\n\t  return this.eddsa.hash().update(this.secret()).digest();\n\t});\n\n\tcachedProperty(KeyPair, function messagePrefix() {\n\t  return this.hash().slice(this.eddsa.encodingLength);\n\t});\n\n\tKeyPair.prototype.sign = function sign(message) {\n\t  assert(this._secret, 'KeyPair can only verify');\n\t  return this.eddsa.sign(message, this);\n\t};\n\n\tKeyPair.prototype.verify = function verify(message, sig) {\n\t  return this.eddsa.verify(message, sig, this);\n\t};\n\n\tKeyPair.prototype.getSecret = function getSecret(enc) {\n\t  assert(this._secret, 'KeyPair is public only');\n\t  return utils.encode(this.secret(), enc);\n\t};\n\n\tKeyPair.prototype.getPublic = function getPublic(enc) {\n\t  return utils.encode(this.pubBytes(), enc);\n\t};\n\n\tmodule.exports = KeyPair;\n\n\n/***/ },\n/* 469 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar BN = __webpack_require__(11);\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\tvar assert = utils.assert;\n\tvar cachedProperty = utils.cachedProperty;\n\tvar parseBytes = utils.parseBytes;\n\n\t/**\n\t* @param {EDDSA} eddsa - eddsa instance\n\t* @param {Array<Bytes>|Object} sig -\n\t* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n\t* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n\t* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n\t* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n\t*/\n\tfunction Signature(eddsa, sig) {\n\t  this.eddsa = eddsa;\n\n\t  if (typeof sig !== 'object')\n\t    sig = parseBytes(sig);\n\n\t  if (Array.isArray(sig)) {\n\t    sig = {\n\t      R: sig.slice(0, eddsa.encodingLength),\n\t      S: sig.slice(eddsa.encodingLength)\n\t    };\n\t  }\n\n\t  assert(sig.R && sig.S, 'Signature without R or S');\n\n\t  if (eddsa.isPoint(sig.R))\n\t    this._R = sig.R;\n\t  if (sig.S instanceof BN)\n\t    this._S = sig.S;\n\n\t  this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n\t  this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n\t}\n\n\tcachedProperty(Signature, function S() {\n\t  return this.eddsa.decodeInt(this.Sencoded());\n\t});\n\n\tcachedProperty(Signature, function R() {\n\t  return this.eddsa.decodePoint(this.Rencoded());\n\t});\n\n\tcachedProperty(Signature, function Rencoded() {\n\t  return this.eddsa.encodePoint(this.R());\n\t});\n\n\tcachedProperty(Signature, function Sencoded() {\n\t  return this.eddsa.encodeInt(this.S());\n\t});\n\n\tSignature.prototype.toBytes = function toBytes() {\n\t  return this.Rencoded().concat(this.Sencoded());\n\t};\n\n\tSignature.prototype.toHex = function toHex() {\n\t  return utils.encode(this.toBytes(), 'hex').toUpperCase();\n\t};\n\n\tmodule.exports = Signature;\n\n\n/***/ },\n/* 470 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar hash = __webpack_require__(48);\n\tvar elliptic = __webpack_require__(18);\n\tvar utils = elliptic.utils;\n\tvar assert = utils.assert;\n\n\tfunction HmacDRBG(options) {\n\t  if (!(this instanceof HmacDRBG))\n\t    return new HmacDRBG(options);\n\t  this.hash = options.hash;\n\t  this.predResist = !!options.predResist;\n\n\t  this.outLen = this.hash.outSize;\n\t  this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n\t  this.reseed = null;\n\t  this.reseedInterval = null;\n\t  this.K = null;\n\t  this.V = null;\n\n\t  var entropy = utils.toArray(options.entropy, options.entropyEnc);\n\t  var nonce = utils.toArray(options.nonce, options.nonceEnc);\n\t  var pers = utils.toArray(options.pers, options.persEnc);\n\t  assert(entropy.length >= (this.minEntropy / 8),\n\t         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\t  this._init(entropy, nonce, pers);\n\t}\n\tmodule.exports = HmacDRBG;\n\n\tHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n\t  var seed = entropy.concat(nonce).concat(pers);\n\n\t  this.K = new Array(this.outLen / 8);\n\t  this.V = new Array(this.outLen / 8);\n\t  for (var i = 0; i < this.V.length; i++) {\n\t    this.K[i] = 0x00;\n\t    this.V[i] = 0x01;\n\t  }\n\n\t  this._update(seed);\n\t  this.reseed = 1;\n\t  this.reseedInterval = 0x1000000000000;  // 2^48\n\t};\n\n\tHmacDRBG.prototype._hmac = function hmac() {\n\t  return new hash.hmac(this.hash, this.K);\n\t};\n\n\tHmacDRBG.prototype._update = function update(seed) {\n\t  var kmac = this._hmac()\n\t                 .update(this.V)\n\t                 .update([ 0x00 ]);\n\t  if (seed)\n\t    kmac = kmac.update(seed);\n\t  this.K = kmac.digest();\n\t  this.V = this._hmac().update(this.V).digest();\n\t  if (!seed)\n\t    return;\n\n\t  this.K = this._hmac()\n\t               .update(this.V)\n\t               .update([ 0x01 ])\n\t               .update(seed)\n\t               .digest();\n\t  this.V = this._hmac().update(this.V).digest();\n\t};\n\n\tHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n\t  // Optional entropy enc\n\t  if (typeof entropyEnc !== 'string') {\n\t    addEnc = add;\n\t    add = entropyEnc;\n\t    entropyEnc = null;\n\t  }\n\n\t  entropy = utils.toBuffer(entropy, entropyEnc);\n\t  add = utils.toBuffer(add, addEnc);\n\n\t  assert(entropy.length >= (this.minEntropy / 8),\n\t         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n\t  this._update(entropy.concat(add || []));\n\t  this.reseed = 1;\n\t};\n\n\tHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n\t  if (this.reseed > this.reseedInterval)\n\t    throw new Error('Reseed is required');\n\n\t  // Optional encoding\n\t  if (typeof enc !== 'string') {\n\t    addEnc = add;\n\t    add = enc;\n\t    enc = null;\n\t  }\n\n\t  // Optional additional data\n\t  if (add) {\n\t    add = utils.toArray(add, addEnc);\n\t    this._update(add);\n\t  }\n\n\t  var temp = [];\n\t  while (temp.length < len) {\n\t    this.V = this._hmac().update(this.V).digest();\n\t    temp = temp.concat(this.V);\n\t  }\n\n\t  var res = temp.slice(0, len);\n\t  this._update(add);\n\t  this.reseed++;\n\t  return utils.encode(res, enc);\n\t};\n\n\n/***/ },\n/* 471 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t  doubles: {\n\t    step: 4,\n\t    points: [\n\t      [\n\t        'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n\t        'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'\n\t      ],\n\t      [\n\t        '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n\t        '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'\n\t      ],\n\t      [\n\t        '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n\t        'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'\n\t      ],\n\t      [\n\t        '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n\t        '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'\n\t      ],\n\t      [\n\t        '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n\t        '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'\n\t      ],\n\t      [\n\t        '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n\t        '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'\n\t      ],\n\t      [\n\t        'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n\t        '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'\n\t      ],\n\t      [\n\t        '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n\t        'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'\n\t      ],\n\t      [\n\t        'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n\t        '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'\n\t      ],\n\t      [\n\t        'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n\t        'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'\n\t      ],\n\t      [\n\t        'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n\t        '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'\n\t      ],\n\t      [\n\t        '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n\t        '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'\n\t      ],\n\t      [\n\t        '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n\t        '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'\n\t      ],\n\t      [\n\t        '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n\t        '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'\n\t      ],\n\t      [\n\t        '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n\t        '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'\n\t      ],\n\t      [\n\t        '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n\t        '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'\n\t      ],\n\t      [\n\t        '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n\t        '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'\n\t      ],\n\t      [\n\t        '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n\t        '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'\n\t      ],\n\t      [\n\t        '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n\t        'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'\n\t      ],\n\t      [\n\t        'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n\t        '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'\n\t      ],\n\t      [\n\t        'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n\t        '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'\n\t      ],\n\t      [\n\t        '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n\t        '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'\n\t      ],\n\t      [\n\t        '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n\t        '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'\n\t      ],\n\t      [\n\t        'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n\t        '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'\n\t      ],\n\t      [\n\t        '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n\t        'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'\n\t      ],\n\t      [\n\t        'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n\t        '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'\n\t      ],\n\t      [\n\t        'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n\t        'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'\n\t      ],\n\t      [\n\t        'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n\t        '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'\n\t      ],\n\t      [\n\t        'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n\t        'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'\n\t      ],\n\t      [\n\t        'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n\t        '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'\n\t      ],\n\t      [\n\t        '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n\t        'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'\n\t      ],\n\t      [\n\t        '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n\t        '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'\n\t      ],\n\t      [\n\t        'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n\t        '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'\n\t      ],\n\t      [\n\t        '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n\t        'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'\n\t      ],\n\t      [\n\t        'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n\t        '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'\n\t      ],\n\t      [\n\t        'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n\t        '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'\n\t      ],\n\t      [\n\t        'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n\t        'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'\n\t      ],\n\t      [\n\t        '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n\t        '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'\n\t      ],\n\t      [\n\t        '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n\t        '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'\n\t      ],\n\t      [\n\t        '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n\t        'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'\n\t      ],\n\t      [\n\t        '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n\t        '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'\n\t      ],\n\t      [\n\t        'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n\t        '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'\n\t      ],\n\t      [\n\t        '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n\t        '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'\n\t      ],\n\t      [\n\t        '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n\t        'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'\n\t      ],\n\t      [\n\t        '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n\t        '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'\n\t      ],\n\t      [\n\t        'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n\t        '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'\n\t      ],\n\t      [\n\t        '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n\t        'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'\n\t      ],\n\t      [\n\t        'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n\t        'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'\n\t      ],\n\t      [\n\t        'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n\t        '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'\n\t      ],\n\t      [\n\t        '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n\t        'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'\n\t      ],\n\t      [\n\t        '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n\t        'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'\n\t      ],\n\t      [\n\t        'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n\t        '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'\n\t      ],\n\t      [\n\t        'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n\t        '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'\n\t      ],\n\t      [\n\t        'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n\t        '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'\n\t      ],\n\t      [\n\t        '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n\t        'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'\n\t      ],\n\t      [\n\t        '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n\t        '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'\n\t      ],\n\t      [\n\t        'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n\t        'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'\n\t      ],\n\t      [\n\t        '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n\t        'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'\n\t      ],\n\t      [\n\t        '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n\t        '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'\n\t      ],\n\t      [\n\t        '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n\t        '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'\n\t      ],\n\t      [\n\t        'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n\t        'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'\n\t      ],\n\t      [\n\t        '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n\t        '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'\n\t      ],\n\t      [\n\t        '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n\t        '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'\n\t      ],\n\t      [\n\t        'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n\t        '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'\n\t      ],\n\t      [\n\t        'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n\t        'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'\n\t      ]\n\t    ]\n\t  },\n\t  naf: {\n\t    wnd: 7,\n\t    points: [\n\t      [\n\t        'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n\t        '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'\n\t      ],\n\t      [\n\t        '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n\t        'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'\n\t      ],\n\t      [\n\t        '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n\t        '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'\n\t      ],\n\t      [\n\t        'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n\t        'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'\n\t      ],\n\t      [\n\t        '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n\t        'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'\n\t      ],\n\t      [\n\t        'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n\t        'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'\n\t      ],\n\t      [\n\t        'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n\t        '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'\n\t      ],\n\t      [\n\t        'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n\t        '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'\n\t      ],\n\t      [\n\t        '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n\t        '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'\n\t      ],\n\t      [\n\t        '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n\t        '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'\n\t      ],\n\t      [\n\t        '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n\t        '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'\n\t      ],\n\t      [\n\t        '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n\t        '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'\n\t      ],\n\t      [\n\t        'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n\t        'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'\n\t      ],\n\t      [\n\t        'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n\t        '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'\n\t      ],\n\t      [\n\t        '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n\t        'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'\n\t      ],\n\t      [\n\t        '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n\t        'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'\n\t      ],\n\t      [\n\t        '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n\t        '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'\n\t      ],\n\t      [\n\t        '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n\t        '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'\n\t      ],\n\t      [\n\t        '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n\t        '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'\n\t      ],\n\t      [\n\t        '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n\t        'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'\n\t      ],\n\t      [\n\t        'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n\t        'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'\n\t      ],\n\t      [\n\t        '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n\t        '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'\n\t      ],\n\t      [\n\t        '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n\t        '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'\n\t      ],\n\t      [\n\t        'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n\t        'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'\n\t      ],\n\t      [\n\t        '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n\t        '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'\n\t      ],\n\t      [\n\t        'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n\t        'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'\n\t      ],\n\t      [\n\t        'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n\t        'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'\n\t      ],\n\t      [\n\t        '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n\t        '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'\n\t      ],\n\t      [\n\t        '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n\t        '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'\n\t      ],\n\t      [\n\t        '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n\t        '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'\n\t      ],\n\t      [\n\t        'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n\t        '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'\n\t      ],\n\t      [\n\t        '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n\t        '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'\n\t      ],\n\t      [\n\t        'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n\t        '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'\n\t      ],\n\t      [\n\t        '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n\t        'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'\n\t      ],\n\t      [\n\t        '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n\t        'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'\n\t      ],\n\t      [\n\t        'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n\t        'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'\n\t      ],\n\t      [\n\t        '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n\t        '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'\n\t      ],\n\t      [\n\t        '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n\t        'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'\n\t      ],\n\t      [\n\t        'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n\t        'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'\n\t      ],\n\t      [\n\t        '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n\t        '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'\n\t      ],\n\t      [\n\t        '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n\t        'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'\n\t      ],\n\t      [\n\t        '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n\t        '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'\n\t      ],\n\t      [\n\t        '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n\t        'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'\n\t      ],\n\t      [\n\t        'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n\t        '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'\n\t      ],\n\t      [\n\t        '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n\t        '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'\n\t      ],\n\t      [\n\t        '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n\t        'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'\n\t      ],\n\t      [\n\t        '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n\t        'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'\n\t      ],\n\t      [\n\t        'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n\t        'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'\n\t      ],\n\t      [\n\t        'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n\t        'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'\n\t      ],\n\t      [\n\t        '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n\t        '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'\n\t      ],\n\t      [\n\t        '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n\t        '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'\n\t      ],\n\t      [\n\t        'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n\t        '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'\n\t      ],\n\t      [\n\t        'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n\t        'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'\n\t      ],\n\t      [\n\t        '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n\t        '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'\n\t      ],\n\t      [\n\t        '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n\t        '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'\n\t      ],\n\t      [\n\t        'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n\t        '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'\n\t      ],\n\t      [\n\t        '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n\t        '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'\n\t      ],\n\t      [\n\t        'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n\t        'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'\n\t      ],\n\t      [\n\t        '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n\t        'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'\n\t      ],\n\t      [\n\t        '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n\t        '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'\n\t      ],\n\t      [\n\t        'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n\t        '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'\n\t      ],\n\t      [\n\t        'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n\t        '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'\n\t      ],\n\t      [\n\t        '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n\t        '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'\n\t      ],\n\t      [\n\t        '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n\t        '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'\n\t      ],\n\t      [\n\t        '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n\t        'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'\n\t      ],\n\t      [\n\t        '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n\t        'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'\n\t      ],\n\t      [\n\t        '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n\t        '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'\n\t      ],\n\t      [\n\t        '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n\t        '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'\n\t      ],\n\t      [\n\t        '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n\t        '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'\n\t      ],\n\t      [\n\t        '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n\t        'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'\n\t      ],\n\t      [\n\t        'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n\t        'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'\n\t      ],\n\t      [\n\t        '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n\t        'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'\n\t      ],\n\t      [\n\t        'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n\t        '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'\n\t      ],\n\t      [\n\t        'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n\t        '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'\n\t      ],\n\t      [\n\t        'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n\t        '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'\n\t      ],\n\t      [\n\t        'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n\t        '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'\n\t      ],\n\t      [\n\t        '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n\t        'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'\n\t      ],\n\t      [\n\t        '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n\t        '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'\n\t      ],\n\t      [\n\t        '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n\t        'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'\n\t      ],\n\t      [\n\t        'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n\t        'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'\n\t      ],\n\t      [\n\t        'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n\t        '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'\n\t      ],\n\t      [\n\t        'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n\t        'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'\n\t      ],\n\t      [\n\t        'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n\t        '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'\n\t      ],\n\t      [\n\t        '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n\t        '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'\n\t      ],\n\t      [\n\t        'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n\t        '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'\n\t      ],\n\t      [\n\t        'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n\t        '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'\n\t      ],\n\t      [\n\t        '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n\t        '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'\n\t      ],\n\t      [\n\t        '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n\t        'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'\n\t      ],\n\t      [\n\t        'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n\t        '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'\n\t      ],\n\t      [\n\t        'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n\t        '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'\n\t      ],\n\t      [\n\t        'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n\t        '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'\n\t      ],\n\t      [\n\t        '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n\t        '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'\n\t      ],\n\t      [\n\t        'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n\t        'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'\n\t      ],\n\t      [\n\t        '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n\t        'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'\n\t      ],\n\t      [\n\t        'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n\t        'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'\n\t      ],\n\t      [\n\t        'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n\t        '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'\n\t      ],\n\t      [\n\t        '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n\t        'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'\n\t      ],\n\t      [\n\t        'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n\t        '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'\n\t      ],\n\t      [\n\t        'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n\t        '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'\n\t      ],\n\t      [\n\t        'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n\t        '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'\n\t      ],\n\t      [\n\t        '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n\t        'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'\n\t      ],\n\t      [\n\t        '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n\t        'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'\n\t      ],\n\t      [\n\t        'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n\t        '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'\n\t      ],\n\t      [\n\t        '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n\t        'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'\n\t      ],\n\t      [\n\t        '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n\t        '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'\n\t      ],\n\t      [\n\t        '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n\t        'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'\n\t      ],\n\t      [\n\t        'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n\t        'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'\n\t      ],\n\t      [\n\t        '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n\t        'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'\n\t      ],\n\t      [\n\t        '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n\t        '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'\n\t      ],\n\t      [\n\t        '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n\t        'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'\n\t      ],\n\t      [\n\t        '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n\t        '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'\n\t      ],\n\t      [\n\t        'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n\t        'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'\n\t      ],\n\t      [\n\t        '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n\t        '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'\n\t      ],\n\t      [\n\t        'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n\t        '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'\n\t      ],\n\t      [\n\t        '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n\t        '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'\n\t      ],\n\t      [\n\t        'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n\t        'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'\n\t      ],\n\t      [\n\t        'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n\t        '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'\n\t      ],\n\t      [\n\t        'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n\t        'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'\n\t      ],\n\t      [\n\t        '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n\t        'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'\n\t      ],\n\t      [\n\t        '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n\t        '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'\n\t      ],\n\t      [\n\t        '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n\t        'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'\n\t      ],\n\t      [\n\t        '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n\t        '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'\n\t      ],\n\t      [\n\t        '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n\t        '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'\n\t      ],\n\t      [\n\t        '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n\t        'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'\n\t      ],\n\t      [\n\t        '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n\t        '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'\n\t      ],\n\t      [\n\t        '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n\t        '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'\n\t      ],\n\t      [\n\t        '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n\t        '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'\n\t      ]\n\t    ]\n\t  }\n\t};\n\n\n/***/ },\n/* 472 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar utils = exports;\n\tvar BN = __webpack_require__(11);\n\n\tutils.assert = function assert(val, msg) {\n\t  if (!val)\n\t    throw new Error(msg || 'Assertion failed');\n\t};\n\n\tfunction toArray(msg, enc) {\n\t  if (Array.isArray(msg))\n\t    return msg.slice();\n\t  if (!msg)\n\t    return [];\n\t  var res = [];\n\t  if (typeof msg !== 'string') {\n\t    for (var i = 0; i < msg.length; i++)\n\t      res[i] = msg[i] | 0;\n\t    return res;\n\t  }\n\t  if (!enc) {\n\t    for (var i = 0; i < msg.length; i++) {\n\t      var c = msg.charCodeAt(i);\n\t      var hi = c >> 8;\n\t      var lo = c & 0xff;\n\t      if (hi)\n\t        res.push(hi, lo);\n\t      else\n\t        res.push(lo);\n\t    }\n\t  } else if (enc === 'hex') {\n\t    msg = msg.replace(/[^a-z0-9]+/ig, '');\n\t    if (msg.length % 2 !== 0)\n\t      msg = '0' + msg;\n\t    for (var i = 0; i < msg.length; i += 2)\n\t      res.push(parseInt(msg[i] + msg[i + 1], 16));\n\t  }\n\t  return res;\n\t}\n\tutils.toArray = toArray;\n\n\tfunction zero2(word) {\n\t  if (word.length === 1)\n\t    return '0' + word;\n\t  else\n\t    return word;\n\t}\n\tutils.zero2 = zero2;\n\n\tfunction toHex(msg) {\n\t  var res = '';\n\t  for (var i = 0; i < msg.length; i++)\n\t    res += zero2(msg[i].toString(16));\n\t  return res;\n\t}\n\tutils.toHex = toHex;\n\n\tutils.encode = function encode(arr, enc) {\n\t  if (enc === 'hex')\n\t    return toHex(arr);\n\t  else\n\t    return arr;\n\t};\n\n\t// Represent num in a w-NAF form\n\tfunction getNAF(num, w) {\n\t  var naf = [];\n\t  var ws = 1 << (w + 1);\n\t  var k = num.clone();\n\t  while (k.cmpn(1) >= 0) {\n\t    var z;\n\t    if (k.isOdd()) {\n\t      var mod = k.andln(ws - 1);\n\t      if (mod > (ws >> 1) - 1)\n\t        z = (ws >> 1) - mod;\n\t      else\n\t        z = mod;\n\t      k.isubn(z);\n\t    } else {\n\t      z = 0;\n\t    }\n\t    naf.push(z);\n\n\t    // Optimization, shift by word if possible\n\t    var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n\t    for (var i = 1; i < shift; i++)\n\t      naf.push(0);\n\t    k.iushrn(shift);\n\t  }\n\n\t  return naf;\n\t}\n\tutils.getNAF = getNAF;\n\n\t// Represent k1, k2 in a Joint Sparse Form\n\tfunction getJSF(k1, k2) {\n\t  var jsf = [\n\t    [],\n\t    []\n\t  ];\n\n\t  k1 = k1.clone();\n\t  k2 = k2.clone();\n\t  var d1 = 0;\n\t  var d2 = 0;\n\t  while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n\t    // First phase\n\t    var m14 = (k1.andln(3) + d1) & 3;\n\t    var m24 = (k2.andln(3) + d2) & 3;\n\t    if (m14 === 3)\n\t      m14 = -1;\n\t    if (m24 === 3)\n\t      m24 = -1;\n\t    var u1;\n\t    if ((m14 & 1) === 0) {\n\t      u1 = 0;\n\t    } else {\n\t      var m8 = (k1.andln(7) + d1) & 7;\n\t      if ((m8 === 3 || m8 === 5) && m24 === 2)\n\t        u1 = -m14;\n\t      else\n\t        u1 = m14;\n\t    }\n\t    jsf[0].push(u1);\n\n\t    var u2;\n\t    if ((m24 & 1) === 0) {\n\t      u2 = 0;\n\t    } else {\n\t      var m8 = (k2.andln(7) + d2) & 7;\n\t      if ((m8 === 3 || m8 === 5) && m14 === 2)\n\t        u2 = -m24;\n\t      else\n\t        u2 = m24;\n\t    }\n\t    jsf[1].push(u2);\n\n\t    // Second phase\n\t    if (2 * d1 === u1 + 1)\n\t      d1 = 1 - d1;\n\t    if (2 * d2 === u2 + 1)\n\t      d2 = 1 - d2;\n\t    k1.iushrn(1);\n\t    k2.iushrn(1);\n\t  }\n\n\t  return jsf;\n\t}\n\tutils.getJSF = getJSF;\n\n\tfunction cachedProperty(obj, computer) {\n\t  var name = computer.name;\n\t  var key = '_' + name;\n\t  obj.prototype[name] = function cachedProperty() {\n\t    return this[key] !== undefined ? this[key] :\n\t           this[key] = computer.call(this);\n\t  };\n\t}\n\tutils.cachedProperty = cachedProperty;\n\n\tfunction parseBytes(bytes) {\n\t  return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n\t                                     bytes;\n\t}\n\tutils.parseBytes = parseBytes;\n\n\tfunction intFromLE(bytes) {\n\t  return new BN(bytes, 'hex', 'le');\n\t}\n\tutils.intFromLE = intFromLE;\n\n\n\n/***/ },\n/* 473 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\n\tmodule.exports = function(arr, iter, context) {\n\t  var results = [];\n\t  if (!Array.isArray(arr)) return results;\n\t  arr.forEach(function(value, index, list) {\n\t    var res = iter.call(context, value, index, list);\n\t    if (Array.isArray(res)) {\n\t      results.push.apply(results, res);\n\t    } else if (res != null) {\n\t      results.push(res);\n\t    }\n\t  });\n\t  return results;\n\t};\n\n/***/ },\n/* 474 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {module.exports = globSync\n\tglobSync.GlobSync = GlobSync\n\n\tvar fs = __webpack_require__(130)\n\tvar minimatch = __webpack_require__(123)\n\tvar Minimatch = minimatch.Minimatch\n\tvar Glob = __webpack_require__(184).Glob\n\tvar util = __webpack_require__(71)\n\tvar path = __webpack_require__(59)\n\tvar assert = __webpack_require__(135)\n\tvar isAbsolute = __webpack_require__(125)\n\tvar common = __webpack_require__(183)\n\tvar alphasort = common.alphasort\n\tvar alphasorti = common.alphasorti\n\tvar setopts = common.setopts\n\tvar ownProp = common.ownProp\n\tvar childrenIgnored = common.childrenIgnored\n\n\tfunction globSync (pattern, options) {\n\t  if (typeof options === 'function' || arguments.length === 3)\n\t    throw new TypeError('callback provided to sync glob\\n'+\n\t                        'See: https://github.com/isaacs/node-glob/issues/167')\n\n\t  return new GlobSync(pattern, options).found\n\t}\n\n\tfunction GlobSync (pattern, options) {\n\t  if (!pattern)\n\t    throw new Error('must provide pattern')\n\n\t  if (typeof options === 'function' || arguments.length === 3)\n\t    throw new TypeError('callback provided to sync glob\\n'+\n\t                        'See: https://github.com/isaacs/node-glob/issues/167')\n\n\t  if (!(this instanceof GlobSync))\n\t    return new GlobSync(pattern, options)\n\n\t  setopts(this, pattern, options)\n\n\t  if (this.noprocess)\n\t    return this\n\n\t  var n = this.minimatch.set.length\n\t  this.matches = new Array(n)\n\t  for (var i = 0; i < n; i ++) {\n\t    this._process(this.minimatch.set[i], i, false)\n\t  }\n\t  this._finish()\n\t}\n\n\tGlobSync.prototype._finish = function () {\n\t  assert(this instanceof GlobSync)\n\t  if (this.realpath) {\n\t    var self = this\n\t    this.matches.forEach(function (matchset, index) {\n\t      var set = self.matches[index] = Object.create(null)\n\t      for (var p in matchset) {\n\t        try {\n\t          p = self._makeAbs(p)\n\t          var real = fs.realpathSync(p, self.realpathCache)\n\t          set[real] = true\n\t        } catch (er) {\n\t          if (er.syscall === 'stat')\n\t            set[self._makeAbs(p)] = true\n\t          else\n\t            throw er\n\t        }\n\t      }\n\t    })\n\t  }\n\t  common.finish(this)\n\t}\n\n\n\tGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n\t  assert(this instanceof GlobSync)\n\n\t  // Get the first [n] parts of pattern that are all strings.\n\t  var n = 0\n\t  while (typeof pattern[n] === 'string') {\n\t    n ++\n\t  }\n\t  // now n is the index of the first one that is *not* a string.\n\n\t  // See if there's anything else\n\t  var prefix\n\t  switch (n) {\n\t    // if not, then this is rather simple\n\t    case pattern.length:\n\t      this._processSimple(pattern.join('/'), index)\n\t      return\n\n\t    case 0:\n\t      // pattern *starts* with some non-trivial item.\n\t      // going to readdir(cwd), but not include the prefix in matches.\n\t      prefix = null\n\t      break\n\n\t    default:\n\t      // pattern has some string bits in the front.\n\t      // whatever it starts with, whether that's 'absolute' like /foo/bar,\n\t      // or 'relative' like '../baz'\n\t      prefix = pattern.slice(0, n).join('/')\n\t      break\n\t  }\n\n\t  var remain = pattern.slice(n)\n\n\t  // get the list of entries.\n\t  var read\n\t  if (prefix === null)\n\t    read = '.'\n\t  else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n\t    if (!prefix || !isAbsolute(prefix))\n\t      prefix = '/' + prefix\n\t    read = prefix\n\t  } else\n\t    read = prefix\n\n\t  var abs = this._makeAbs(read)\n\n\t  //if ignored, skip processing\n\t  if (childrenIgnored(this, read))\n\t    return\n\n\t  var isGlobStar = remain[0] === minimatch.GLOBSTAR\n\t  if (isGlobStar)\n\t    this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n\t  else\n\t    this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n\t}\n\n\n\tGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n\t  var entries = this._readdir(abs, inGlobStar)\n\n\t  // if the abs isn't a dir, then nothing can match!\n\t  if (!entries)\n\t    return\n\n\t  // It will only match dot entries if it starts with a dot, or if\n\t  // dot is set.  Stuff like @(.foo|.bar) isn't allowed.\n\t  var pn = remain[0]\n\t  var negate = !!this.minimatch.negate\n\t  var rawGlob = pn._glob\n\t  var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n\t  var matchedEntries = []\n\t  for (var i = 0; i < entries.length; i++) {\n\t    var e = entries[i]\n\t    if (e.charAt(0) !== '.' || dotOk) {\n\t      var m\n\t      if (negate && !prefix) {\n\t        m = !e.match(pn)\n\t      } else {\n\t        m = e.match(pn)\n\t      }\n\t      if (m)\n\t        matchedEntries.push(e)\n\t    }\n\t  }\n\n\t  var len = matchedEntries.length\n\t  // If there are no matched entries, then nothing matches.\n\t  if (len === 0)\n\t    return\n\n\t  // if this is the last remaining pattern bit, then no need for\n\t  // an additional stat *unless* the user has specified mark or\n\t  // stat explicitly.  We know they exist, since readdir returned\n\t  // them.\n\n\t  if (remain.length === 1 && !this.mark && !this.stat) {\n\t    if (!this.matches[index])\n\t      this.matches[index] = Object.create(null)\n\n\t    for (var i = 0; i < len; i ++) {\n\t      var e = matchedEntries[i]\n\t      if (prefix) {\n\t        if (prefix.slice(-1) !== '/')\n\t          e = prefix + '/' + e\n\t        else\n\t          e = prefix + e\n\t      }\n\n\t      if (e.charAt(0) === '/' && !this.nomount) {\n\t        e = path.join(this.root, e)\n\t      }\n\t      this.matches[index][e] = true\n\t    }\n\t    // This was the last one, and no stats were needed\n\t    return\n\t  }\n\n\t  // now test all matched entries as stand-ins for that part\n\t  // of the pattern.\n\t  remain.shift()\n\t  for (var i = 0; i < len; i ++) {\n\t    var e = matchedEntries[i]\n\t    var newPattern\n\t    if (prefix)\n\t      newPattern = [prefix, e]\n\t    else\n\t      newPattern = [e]\n\t    this._process(newPattern.concat(remain), index, inGlobStar)\n\t  }\n\t}\n\n\n\tGlobSync.prototype._emitMatch = function (index, e) {\n\t  var abs = this._makeAbs(e)\n\t  if (this.mark)\n\t    e = this._mark(e)\n\n\t  if (this.matches[index][e])\n\t    return\n\n\t  if (this.nodir) {\n\t    var c = this.cache[this._makeAbs(e)]\n\t    if (c === 'DIR' || Array.isArray(c))\n\t      return\n\t  }\n\n\t  this.matches[index][e] = true\n\t  if (this.stat)\n\t    this._stat(e)\n\t}\n\n\n\tGlobSync.prototype._readdirInGlobStar = function (abs) {\n\t  // follow all symlinked directories forever\n\t  // just proceed as if this is a non-globstar situation\n\t  if (this.follow)\n\t    return this._readdir(abs, false)\n\n\t  var entries\n\t  var lstat\n\t  var stat\n\t  try {\n\t    lstat = fs.lstatSync(abs)\n\t  } catch (er) {\n\t    // lstat failed, doesn't exist\n\t    return null\n\t  }\n\n\t  var isSym = lstat.isSymbolicLink()\n\t  this.symlinks[abs] = isSym\n\n\t  // If it's not a symlink or a dir, then it's definitely a regular file.\n\t  // don't bother doing a readdir in that case.\n\t  if (!isSym && !lstat.isDirectory())\n\t    this.cache[abs] = 'FILE'\n\t  else\n\t    entries = this._readdir(abs, false)\n\n\t  return entries\n\t}\n\n\tGlobSync.prototype._readdir = function (abs, inGlobStar) {\n\t  var entries\n\n\t  if (inGlobStar && !ownProp(this.symlinks, abs))\n\t    return this._readdirInGlobStar(abs)\n\n\t  if (ownProp(this.cache, abs)) {\n\t    var c = this.cache[abs]\n\t    if (!c || c === 'FILE')\n\t      return null\n\n\t    if (Array.isArray(c))\n\t      return c\n\t  }\n\n\t  try {\n\t    return this._readdirEntries(abs, fs.readdirSync(abs))\n\t  } catch (er) {\n\t    this._readdirError(abs, er)\n\t    return null\n\t  }\n\t}\n\n\tGlobSync.prototype._readdirEntries = function (abs, entries) {\n\t  // if we haven't asked to stat everything, then just\n\t  // assume that everything in there exists, so we can avoid\n\t  // having to stat it a second time.\n\t  if (!this.mark && !this.stat) {\n\t    for (var i = 0; i < entries.length; i ++) {\n\t      var e = entries[i]\n\t      if (abs === '/')\n\t        e = abs + e\n\t      else\n\t        e = abs + '/' + e\n\t      this.cache[e] = true\n\t    }\n\t  }\n\n\t  this.cache[abs] = entries\n\n\t  // mark and cache dir-ness\n\t  return entries\n\t}\n\n\tGlobSync.prototype._readdirError = function (f, er) {\n\t  // handle errors, and cache the information\n\t  switch (er.code) {\n\t    case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n\t    case 'ENOTDIR': // totally normal. means it *does* exist.\n\t      var abs = this._makeAbs(f)\n\t      this.cache[abs] = 'FILE'\n\t      if (abs === this.cwdAbs) {\n\t        var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n\t        error.path = this.cwd\n\t        error.code = er.code\n\t        throw error\n\t      }\n\t      break\n\n\t    case 'ENOENT': // not terribly unusual\n\t    case 'ELOOP':\n\t    case 'ENAMETOOLONG':\n\t    case 'UNKNOWN':\n\t      this.cache[this._makeAbs(f)] = false\n\t      break\n\n\t    default: // some unusual error.  Treat as failure.\n\t      this.cache[this._makeAbs(f)] = false\n\t      if (this.strict)\n\t        throw er\n\t      if (!this.silent)\n\t        console.error('glob error', er)\n\t      break\n\t  }\n\t}\n\n\tGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n\t  var entries = this._readdir(abs, inGlobStar)\n\n\t  // no entries means not a dir, so it can never have matches\n\t  // foo.txt/** doesn't match foo.txt\n\t  if (!entries)\n\t    return\n\n\t  // test without the globstar, and with every child both below\n\t  // and replacing the globstar.\n\t  var remainWithoutGlobStar = remain.slice(1)\n\t  var gspref = prefix ? [ prefix ] : []\n\t  var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n\t  // the noGlobStar pattern exits the inGlobStar state\n\t  this._process(noGlobStar, index, false)\n\n\t  var len = entries.length\n\t  var isSym = this.symlinks[abs]\n\n\t  // If it's a symlink, and we're in a globstar, then stop\n\t  if (isSym && inGlobStar)\n\t    return\n\n\t  for (var i = 0; i < len; i++) {\n\t    var e = entries[i]\n\t    if (e.charAt(0) === '.' && !this.dot)\n\t      continue\n\n\t    // these two cases enter the inGlobStar state\n\t    var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n\t    this._process(instead, index, true)\n\n\t    var below = gspref.concat(entries[i], remain)\n\t    this._process(below, index, true)\n\t  }\n\t}\n\n\tGlobSync.prototype._processSimple = function (prefix, index) {\n\t  // XXX review this.  Shouldn't it be doing the mounting etc\n\t  // before doing stat?  kinda weird?\n\t  var exists = this._stat(prefix)\n\n\t  if (!this.matches[index])\n\t    this.matches[index] = Object.create(null)\n\n\t  // If it doesn't exist, then just mark the lack of results\n\t  if (!exists)\n\t    return\n\n\t  if (prefix && isAbsolute(prefix) && !this.nomount) {\n\t    var trail = /[\\/\\\\]$/.test(prefix)\n\t    if (prefix.charAt(0) === '/') {\n\t      prefix = path.join(this.root, prefix)\n\t    } else {\n\t      prefix = path.resolve(this.root, prefix)\n\t      if (trail)\n\t        prefix += '/'\n\t    }\n\t  }\n\n\t  if (process.platform === 'win32')\n\t    prefix = prefix.replace(/\\\\/g, '/')\n\n\t  // Mark this as a match\n\t  this.matches[index][prefix] = true\n\t}\n\n\t// Returns either 'DIR', 'FILE', or false\n\tGlobSync.prototype._stat = function (f) {\n\t  var abs = this._makeAbs(f)\n\t  var needDir = f.slice(-1) === '/'\n\n\t  if (f.length > this.maxLength)\n\t    return false\n\n\t  if (!this.stat && ownProp(this.cache, abs)) {\n\t    var c = this.cache[abs]\n\n\t    if (Array.isArray(c))\n\t      c = 'DIR'\n\n\t    // It exists, but maybe not how we need it\n\t    if (!needDir || c === 'DIR')\n\t      return c\n\n\t    if (needDir && c === 'FILE')\n\t      return false\n\n\t    // otherwise we have to stat, because maybe c=true\n\t    // if we know it exists, but not what it is.\n\t  }\n\n\t  var exists\n\t  var stat = this.statCache[abs]\n\t  if (!stat) {\n\t    var lstat\n\t    try {\n\t      lstat = fs.lstatSync(abs)\n\t    } catch (er) {\n\t      return false\n\t    }\n\n\t    if (lstat.isSymbolicLink()) {\n\t      try {\n\t        stat = fs.statSync(abs)\n\t      } catch (er) {\n\t        stat = lstat\n\t      }\n\t    } else {\n\t      stat = lstat\n\t    }\n\t  }\n\n\t  this.statCache[abs] = stat\n\n\t  var c = stat.isDirectory() ? 'DIR' : 'FILE'\n\t  this.cache[abs] = this.cache[abs] || c\n\n\t  if (needDir && c !== 'DIR')\n\t    return false\n\n\t  return c\n\t}\n\n\tGlobSync.prototype._mark = function (p) {\n\t  return common.mark(this, p)\n\t}\n\n\tGlobSync.prototype._makeAbs = function (f) {\n\t  return common.makeAbs(this, f)\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 475 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar hash = __webpack_require__(48);\n\tvar utils = hash.utils;\n\tvar assert = utils.assert;\n\n\tfunction BlockHash() {\n\t  this.pending = null;\n\t  this.pendingTotal = 0;\n\t  this.blockSize = this.constructor.blockSize;\n\t  this.outSize = this.constructor.outSize;\n\t  this.hmacStrength = this.constructor.hmacStrength;\n\t  this.padLength = this.constructor.padLength / 8;\n\t  this.endian = 'big';\n\n\t  this._delta8 = this.blockSize / 8;\n\t  this._delta32 = this.blockSize / 32;\n\t}\n\texports.BlockHash = BlockHash;\n\n\tBlockHash.prototype.update = function update(msg, enc) {\n\t  // Convert message to array, pad it, and join into 32bit blocks\n\t  msg = utils.toArray(msg, enc);\n\t  if (!this.pending)\n\t    this.pending = msg;\n\t  else\n\t    this.pending = this.pending.concat(msg);\n\t  this.pendingTotal += msg.length;\n\n\t  // Enough data, try updating\n\t  if (this.pending.length >= this._delta8) {\n\t    msg = this.pending;\n\n\t    // Process pending data in blocks\n\t    var r = msg.length % this._delta8;\n\t    this.pending = msg.slice(msg.length - r, msg.length);\n\t    if (this.pending.length === 0)\n\t      this.pending = null;\n\n\t    msg = utils.join32(msg, 0, msg.length - r, this.endian);\n\t    for (var i = 0; i < msg.length; i += this._delta32)\n\t      this._update(msg, i, i + this._delta32);\n\t  }\n\n\t  return this;\n\t};\n\n\tBlockHash.prototype.digest = function digest(enc) {\n\t  this.update(this._pad());\n\t  assert(this.pending === null);\n\n\t  return this._digest(enc);\n\t};\n\n\tBlockHash.prototype._pad = function pad() {\n\t  var len = this.pendingTotal;\n\t  var bytes = this._delta8;\n\t  var k = bytes - ((len + this.padLength) % bytes);\n\t  var res = new Array(k + this.padLength);\n\t  res[0] = 0x80;\n\t  for (var i = 1; i < k; i++)\n\t    res[i] = 0;\n\n\t  // Append length\n\t  len <<= 3;\n\t  if (this.endian === 'big') {\n\t    for (var t = 8; t < this.padLength; t++)\n\t      res[i++] = 0;\n\n\t    res[i++] = 0;\n\t    res[i++] = 0;\n\t    res[i++] = 0;\n\t    res[i++] = 0;\n\t    res[i++] = (len >>> 24) & 0xff;\n\t    res[i++] = (len >>> 16) & 0xff;\n\t    res[i++] = (len >>> 8) & 0xff;\n\t    res[i++] = len & 0xff;\n\t  } else {\n\t    res[i++] = len & 0xff;\n\t    res[i++] = (len >>> 8) & 0xff;\n\t    res[i++] = (len >>> 16) & 0xff;\n\t    res[i++] = (len >>> 24) & 0xff;\n\t    res[i++] = 0;\n\t    res[i++] = 0;\n\t    res[i++] = 0;\n\t    res[i++] = 0;\n\n\t    for (var t = 8; t < this.padLength; t++)\n\t      res[i++] = 0;\n\t  }\n\n\t  return res;\n\t};\n\n\n/***/ },\n/* 476 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar hmac = exports;\n\n\tvar hash = __webpack_require__(48);\n\tvar utils = hash.utils;\n\tvar assert = utils.assert;\n\n\tfunction Hmac(hash, key, enc) {\n\t  if (!(this instanceof Hmac))\n\t    return new Hmac(hash, key, enc);\n\t  this.Hash = hash;\n\t  this.blockSize = hash.blockSize / 8;\n\t  this.outSize = hash.outSize / 8;\n\t  this.inner = null;\n\t  this.outer = null;\n\n\t  this._init(utils.toArray(key, enc));\n\t}\n\tmodule.exports = Hmac;\n\n\tHmac.prototype._init = function init(key) {\n\t  // Shorten key, if needed\n\t  if (key.length > this.blockSize)\n\t    key = new this.Hash().update(key).digest();\n\t  assert(key.length <= this.blockSize);\n\n\t  // Add padding to key\n\t  for (var i = key.length; i < this.blockSize; i++)\n\t    key.push(0);\n\n\t  for (var i = 0; i < key.length; i++)\n\t    key[i] ^= 0x36;\n\t  this.inner = new this.Hash().update(key);\n\n\t  // 0x36 ^ 0x5c = 0x6a\n\t  for (var i = 0; i < key.length; i++)\n\t    key[i] ^= 0x6a;\n\t  this.outer = new this.Hash().update(key);\n\t};\n\n\tHmac.prototype.update = function update(msg, enc) {\n\t  this.inner.update(msg, enc);\n\t  return this;\n\t};\n\n\tHmac.prototype.digest = function digest(enc) {\n\t  this.outer.update(this.inner.digest());\n\t  return this.outer.digest(enc);\n\t};\n\n\n/***/ },\n/* 477 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar hash = __webpack_require__(48);\n\tvar utils = hash.utils;\n\n\tvar rotl32 = utils.rotl32;\n\tvar sum32 = utils.sum32;\n\tvar sum32_3 = utils.sum32_3;\n\tvar sum32_4 = utils.sum32_4;\n\tvar BlockHash = hash.common.BlockHash;\n\n\tfunction RIPEMD160() {\n\t  if (!(this instanceof RIPEMD160))\n\t    return new RIPEMD160();\n\n\t  BlockHash.call(this);\n\n\t  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n\t  this.endian = 'little';\n\t}\n\tutils.inherits(RIPEMD160, BlockHash);\n\texports.ripemd160 = RIPEMD160;\n\n\tRIPEMD160.blockSize = 512;\n\tRIPEMD160.outSize = 160;\n\tRIPEMD160.hmacStrength = 192;\n\tRIPEMD160.padLength = 64;\n\n\tRIPEMD160.prototype._update = function update(msg, start) {\n\t  var A = this.h[0];\n\t  var B = this.h[1];\n\t  var C = this.h[2];\n\t  var D = this.h[3];\n\t  var E = this.h[4];\n\t  var Ah = A;\n\t  var Bh = B;\n\t  var Ch = C;\n\t  var Dh = D;\n\t  var Eh = E;\n\t  for (var j = 0; j < 80; j++) {\n\t    var T = sum32(\n\t      rotl32(\n\t        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n\t        s[j]),\n\t      E);\n\t    A = E;\n\t    E = D;\n\t    D = rotl32(C, 10);\n\t    C = B;\n\t    B = T;\n\t    T = sum32(\n\t      rotl32(\n\t        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n\t        sh[j]),\n\t      Eh);\n\t    Ah = Eh;\n\t    Eh = Dh;\n\t    Dh = rotl32(Ch, 10);\n\t    Ch = Bh;\n\t    Bh = T;\n\t  }\n\t  T = sum32_3(this.h[1], C, Dh);\n\t  this.h[1] = sum32_3(this.h[2], D, Eh);\n\t  this.h[2] = sum32_3(this.h[3], E, Ah);\n\t  this.h[3] = sum32_3(this.h[4], A, Bh);\n\t  this.h[4] = sum32_3(this.h[0], B, Ch);\n\t  this.h[0] = T;\n\t};\n\n\tRIPEMD160.prototype._digest = function digest(enc) {\n\t  if (enc === 'hex')\n\t    return utils.toHex32(this.h, 'little');\n\t  else\n\t    return utils.split32(this.h, 'little');\n\t};\n\n\tfunction f(j, x, y, z) {\n\t  if (j <= 15)\n\t    return x ^ y ^ z;\n\t  else if (j <= 31)\n\t    return (x & y) | ((~x) & z);\n\t  else if (j <= 47)\n\t    return (x | (~y)) ^ z;\n\t  else if (j <= 63)\n\t    return (x & z) | (y & (~z));\n\t  else\n\t    return x ^ (y | (~z));\n\t}\n\n\tfunction K(j) {\n\t  if (j <= 15)\n\t    return 0x00000000;\n\t  else if (j <= 31)\n\t    return 0x5a827999;\n\t  else if (j <= 47)\n\t    return 0x6ed9eba1;\n\t  else if (j <= 63)\n\t    return 0x8f1bbcdc;\n\t  else\n\t    return 0xa953fd4e;\n\t}\n\n\tfunction Kh(j) {\n\t  if (j <= 15)\n\t    return 0x50a28be6;\n\t  else if (j <= 31)\n\t    return 0x5c4dd124;\n\t  else if (j <= 47)\n\t    return 0x6d703ef3;\n\t  else if (j <= 63)\n\t    return 0x7a6d76e9;\n\t  else\n\t    return 0x00000000;\n\t}\n\n\tvar r = [\n\t  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n\t];\n\n\tvar rh = [\n\t  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n\t];\n\n\tvar s = [\n\t  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n\t];\n\n\tvar sh = [\n\t  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n\t];\n\n\n/***/ },\n/* 478 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar hash = __webpack_require__(48);\n\tvar utils = hash.utils;\n\tvar assert = utils.assert;\n\n\tvar rotr32 = utils.rotr32;\n\tvar rotl32 = utils.rotl32;\n\tvar sum32 = utils.sum32;\n\tvar sum32_4 = utils.sum32_4;\n\tvar sum32_5 = utils.sum32_5;\n\tvar rotr64_hi = utils.rotr64_hi;\n\tvar rotr64_lo = utils.rotr64_lo;\n\tvar shr64_hi = utils.shr64_hi;\n\tvar shr64_lo = utils.shr64_lo;\n\tvar sum64 = utils.sum64;\n\tvar sum64_hi = utils.sum64_hi;\n\tvar sum64_lo = utils.sum64_lo;\n\tvar sum64_4_hi = utils.sum64_4_hi;\n\tvar sum64_4_lo = utils.sum64_4_lo;\n\tvar sum64_5_hi = utils.sum64_5_hi;\n\tvar sum64_5_lo = utils.sum64_5_lo;\n\tvar BlockHash = hash.common.BlockHash;\n\n\tvar sha256_K = [\n\t  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n\t  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n\t  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n\t  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n\t  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n\t  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n\t  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n\t  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n\t  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n\t  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n\t  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n\t  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n\t  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n\t  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n\t  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n\t  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n\t];\n\n\tvar sha512_K = [\n\t  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n\t  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n\t  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n\t  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n\t  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n\t  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n\t  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n\t  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n\t  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n\t  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n\t  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n\t  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n\t  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n\t  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n\t  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n\t  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n\t  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n\t  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n\t  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n\t  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n\t  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n\t  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n\t  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n\t  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n\t  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n\t  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n\t  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n\t  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n\t  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n\t  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n\t  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n\t  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n\t  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n\t  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n\t  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n\t  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n\t  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n\t  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n\t  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n\t  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n\t];\n\n\tvar sha1_K = [\n\t  0x5A827999, 0x6ED9EBA1,\n\t  0x8F1BBCDC, 0xCA62C1D6\n\t];\n\n\tfunction SHA256() {\n\t  if (!(this instanceof SHA256))\n\t    return new SHA256();\n\n\t  BlockHash.call(this);\n\t  this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n\t             0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];\n\t  this.k = sha256_K;\n\t  this.W = new Array(64);\n\t}\n\tutils.inherits(SHA256, BlockHash);\n\texports.sha256 = SHA256;\n\n\tSHA256.blockSize = 512;\n\tSHA256.outSize = 256;\n\tSHA256.hmacStrength = 192;\n\tSHA256.padLength = 64;\n\n\tSHA256.prototype._update = function _update(msg, start) {\n\t  var W = this.W;\n\n\t  for (var i = 0; i < 16; i++)\n\t    W[i] = msg[start + i];\n\t  for (; i < W.length; i++)\n\t    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n\t  var a = this.h[0];\n\t  var b = this.h[1];\n\t  var c = this.h[2];\n\t  var d = this.h[3];\n\t  var e = this.h[4];\n\t  var f = this.h[5];\n\t  var g = this.h[6];\n\t  var h = this.h[7];\n\n\t  assert(this.k.length === W.length);\n\t  for (var i = 0; i < W.length; i++) {\n\t    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n\t    var T2 = sum32(s0_256(a), maj32(a, b, c));\n\t    h = g;\n\t    g = f;\n\t    f = e;\n\t    e = sum32(d, T1);\n\t    d = c;\n\t    c = b;\n\t    b = a;\n\t    a = sum32(T1, T2);\n\t  }\n\n\t  this.h[0] = sum32(this.h[0], a);\n\t  this.h[1] = sum32(this.h[1], b);\n\t  this.h[2] = sum32(this.h[2], c);\n\t  this.h[3] = sum32(this.h[3], d);\n\t  this.h[4] = sum32(this.h[4], e);\n\t  this.h[5] = sum32(this.h[5], f);\n\t  this.h[6] = sum32(this.h[6], g);\n\t  this.h[7] = sum32(this.h[7], h);\n\t};\n\n\tSHA256.prototype._digest = function digest(enc) {\n\t  if (enc === 'hex')\n\t    return utils.toHex32(this.h, 'big');\n\t  else\n\t    return utils.split32(this.h, 'big');\n\t};\n\n\tfunction SHA224() {\n\t  if (!(this instanceof SHA224))\n\t    return new SHA224();\n\n\t  SHA256.call(this);\n\t  this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t             0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n\t}\n\tutils.inherits(SHA224, SHA256);\n\texports.sha224 = SHA224;\n\n\tSHA224.blockSize = 512;\n\tSHA224.outSize = 224;\n\tSHA224.hmacStrength = 192;\n\tSHA224.padLength = 64;\n\n\tSHA224.prototype._digest = function digest(enc) {\n\t  // Just truncate output\n\t  if (enc === 'hex')\n\t    return utils.toHex32(this.h.slice(0, 7), 'big');\n\t  else\n\t    return utils.split32(this.h.slice(0, 7), 'big');\n\t};\n\n\tfunction SHA512() {\n\t  if (!(this instanceof SHA512))\n\t    return new SHA512();\n\n\t  BlockHash.call(this);\n\t  this.h = [ 0x6a09e667, 0xf3bcc908,\n\t             0xbb67ae85, 0x84caa73b,\n\t             0x3c6ef372, 0xfe94f82b,\n\t             0xa54ff53a, 0x5f1d36f1,\n\t             0x510e527f, 0xade682d1,\n\t             0x9b05688c, 0x2b3e6c1f,\n\t             0x1f83d9ab, 0xfb41bd6b,\n\t             0x5be0cd19, 0x137e2179 ];\n\t  this.k = sha512_K;\n\t  this.W = new Array(160);\n\t}\n\tutils.inherits(SHA512, BlockHash);\n\texports.sha512 = SHA512;\n\n\tSHA512.blockSize = 1024;\n\tSHA512.outSize = 512;\n\tSHA512.hmacStrength = 192;\n\tSHA512.padLength = 128;\n\n\tSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n\t  var W = this.W;\n\n\t  // 32 x 32bit words\n\t  for (var i = 0; i < 32; i++)\n\t    W[i] = msg[start + i];\n\t  for (; i < W.length; i += 2) {\n\t    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2\n\t    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n\t    var c1_hi = W[i - 14];  // i - 7\n\t    var c1_lo = W[i - 13];\n\t    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15\n\t    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n\t    var c3_hi = W[i - 32];  // i - 16\n\t    var c3_lo = W[i - 31];\n\n\t    W[i] = sum64_4_hi(c0_hi, c0_lo,\n\t                      c1_hi, c1_lo,\n\t                      c2_hi, c2_lo,\n\t                      c3_hi, c3_lo);\n\t    W[i + 1] = sum64_4_lo(c0_hi, c0_lo,\n\t                          c1_hi, c1_lo,\n\t                          c2_hi, c2_lo,\n\t                          c3_hi, c3_lo);\n\t  }\n\t};\n\n\tSHA512.prototype._update = function _update(msg, start) {\n\t  this._prepareBlock(msg, start);\n\n\t  var W = this.W;\n\n\t  var ah = this.h[0];\n\t  var al = this.h[1];\n\t  var bh = this.h[2];\n\t  var bl = this.h[3];\n\t  var ch = this.h[4];\n\t  var cl = this.h[5];\n\t  var dh = this.h[6];\n\t  var dl = this.h[7];\n\t  var eh = this.h[8];\n\t  var el = this.h[9];\n\t  var fh = this.h[10];\n\t  var fl = this.h[11];\n\t  var gh = this.h[12];\n\t  var gl = this.h[13];\n\t  var hh = this.h[14];\n\t  var hl = this.h[15];\n\n\t  assert(this.k.length === W.length);\n\t  for (var i = 0; i < W.length; i += 2) {\n\t    var c0_hi = hh;\n\t    var c0_lo = hl;\n\t    var c1_hi = s1_512_hi(eh, el);\n\t    var c1_lo = s1_512_lo(eh, el);\n\t    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n\t    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n\t    var c3_hi = this.k[i];\n\t    var c3_lo = this.k[i + 1];\n\t    var c4_hi = W[i];\n\t    var c4_lo = W[i + 1];\n\n\t    var T1_hi = sum64_5_hi(c0_hi, c0_lo,\n\t                           c1_hi, c1_lo,\n\t                           c2_hi, c2_lo,\n\t                           c3_hi, c3_lo,\n\t                           c4_hi, c4_lo);\n\t    var T1_lo = sum64_5_lo(c0_hi, c0_lo,\n\t                           c1_hi, c1_lo,\n\t                           c2_hi, c2_lo,\n\t                           c3_hi, c3_lo,\n\t                           c4_hi, c4_lo);\n\n\t    var c0_hi = s0_512_hi(ah, al);\n\t    var c0_lo = s0_512_lo(ah, al);\n\t    var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n\t    var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n\t    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n\t    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n\t    hh = gh;\n\t    hl = gl;\n\n\t    gh = fh;\n\t    gl = fl;\n\n\t    fh = eh;\n\t    fl = el;\n\n\t    eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n\t    el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n\t    dh = ch;\n\t    dl = cl;\n\n\t    ch = bh;\n\t    cl = bl;\n\n\t    bh = ah;\n\t    bl = al;\n\n\t    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n\t    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n\t  }\n\n\t  sum64(this.h, 0, ah, al);\n\t  sum64(this.h, 2, bh, bl);\n\t  sum64(this.h, 4, ch, cl);\n\t  sum64(this.h, 6, dh, dl);\n\t  sum64(this.h, 8, eh, el);\n\t  sum64(this.h, 10, fh, fl);\n\t  sum64(this.h, 12, gh, gl);\n\t  sum64(this.h, 14, hh, hl);\n\t};\n\n\tSHA512.prototype._digest = function digest(enc) {\n\t  if (enc === 'hex')\n\t    return utils.toHex32(this.h, 'big');\n\t  else\n\t    return utils.split32(this.h, 'big');\n\t};\n\n\tfunction SHA384() {\n\t  if (!(this instanceof SHA384))\n\t    return new SHA384();\n\n\t  SHA512.call(this);\n\t  this.h = [ 0xcbbb9d5d, 0xc1059ed8,\n\t             0x629a292a, 0x367cd507,\n\t             0x9159015a, 0x3070dd17,\n\t             0x152fecd8, 0xf70e5939,\n\t             0x67332667, 0xffc00b31,\n\t             0x8eb44a87, 0x68581511,\n\t             0xdb0c2e0d, 0x64f98fa7,\n\t             0x47b5481d, 0xbefa4fa4 ];\n\t}\n\tutils.inherits(SHA384, SHA512);\n\texports.sha384 = SHA384;\n\n\tSHA384.blockSize = 1024;\n\tSHA384.outSize = 384;\n\tSHA384.hmacStrength = 192;\n\tSHA384.padLength = 128;\n\n\tSHA384.prototype._digest = function digest(enc) {\n\t  if (enc === 'hex')\n\t    return utils.toHex32(this.h.slice(0, 12), 'big');\n\t  else\n\t    return utils.split32(this.h.slice(0, 12), 'big');\n\t};\n\n\tfunction SHA1() {\n\t  if (!(this instanceof SHA1))\n\t    return new SHA1();\n\n\t  BlockHash.call(this);\n\t  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,\n\t             0x10325476, 0xc3d2e1f0 ];\n\t  this.W = new Array(80);\n\t}\n\n\tutils.inherits(SHA1, BlockHash);\n\texports.sha1 = SHA1;\n\n\tSHA1.blockSize = 512;\n\tSHA1.outSize = 160;\n\tSHA1.hmacStrength = 80;\n\tSHA1.padLength = 64;\n\n\tSHA1.prototype._update = function _update(msg, start) {\n\t  var W = this.W;\n\n\t  for (var i = 0; i < 16; i++)\n\t    W[i] = msg[start + i];\n\n\t  for(; i < W.length; i++)\n\t    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n\t  var a = this.h[0];\n\t  var b = this.h[1];\n\t  var c = this.h[2];\n\t  var d = this.h[3];\n\t  var e = this.h[4];\n\n\t  for (var i = 0; i < W.length; i++) {\n\t    var s = ~~(i / 20);\n\t    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n\t    e = d;\n\t    d = c;\n\t    c = rotl32(b, 30);\n\t    b = a;\n\t    a = t;\n\t  }\n\n\t  this.h[0] = sum32(this.h[0], a);\n\t  this.h[1] = sum32(this.h[1], b);\n\t  this.h[2] = sum32(this.h[2], c);\n\t  this.h[3] = sum32(this.h[3], d);\n\t  this.h[4] = sum32(this.h[4], e);\n\t};\n\n\tSHA1.prototype._digest = function digest(enc) {\n\t  if (enc === 'hex')\n\t    return utils.toHex32(this.h, 'big');\n\t  else\n\t    return utils.split32(this.h, 'big');\n\t};\n\n\tfunction ch32(x, y, z) {\n\t  return (x & y) ^ ((~x) & z);\n\t}\n\n\tfunction maj32(x, y, z) {\n\t  return (x & y) ^ (x & z) ^ (y & z);\n\t}\n\n\tfunction p32(x, y, z) {\n\t  return x ^ y ^ z;\n\t}\n\n\tfunction s0_256(x) {\n\t  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n\t}\n\n\tfunction s1_256(x) {\n\t  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n\t}\n\n\tfunction g0_256(x) {\n\t  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n\t}\n\n\tfunction g1_256(x) {\n\t  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n\t}\n\n\tfunction ft_1(s, x, y, z) {\n\t  if (s === 0)\n\t    return ch32(x, y, z);\n\t  if (s === 1 || s === 3)\n\t    return p32(x, y, z);\n\t  if (s === 2)\n\t    return maj32(x, y, z);\n\t}\n\n\tfunction ch64_hi(xh, xl, yh, yl, zh, zl) {\n\t  var r = (xh & yh) ^ ((~xh) & zh);\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n\t  var r = (xl & yl) ^ ((~xl) & zl);\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction maj64_hi(xh, xl, yh, yl, zh, zl) {\n\t  var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n\t  var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction s0_512_hi(xh, xl) {\n\t  var c0_hi = rotr64_hi(xh, xl, 28);\n\t  var c1_hi = rotr64_hi(xl, xh, 2);  // 34\n\t  var c2_hi = rotr64_hi(xl, xh, 7);  // 39\n\n\t  var r = c0_hi ^ c1_hi ^ c2_hi;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction s0_512_lo(xh, xl) {\n\t  var c0_lo = rotr64_lo(xh, xl, 28);\n\t  var c1_lo = rotr64_lo(xl, xh, 2);  // 34\n\t  var c2_lo = rotr64_lo(xl, xh, 7);  // 39\n\n\t  var r = c0_lo ^ c1_lo ^ c2_lo;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction s1_512_hi(xh, xl) {\n\t  var c0_hi = rotr64_hi(xh, xl, 14);\n\t  var c1_hi = rotr64_hi(xh, xl, 18);\n\t  var c2_hi = rotr64_hi(xl, xh, 9);  // 41\n\n\t  var r = c0_hi ^ c1_hi ^ c2_hi;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction s1_512_lo(xh, xl) {\n\t  var c0_lo = rotr64_lo(xh, xl, 14);\n\t  var c1_lo = rotr64_lo(xh, xl, 18);\n\t  var c2_lo = rotr64_lo(xl, xh, 9);  // 41\n\n\t  var r = c0_lo ^ c1_lo ^ c2_lo;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction g0_512_hi(xh, xl) {\n\t  var c0_hi = rotr64_hi(xh, xl, 1);\n\t  var c1_hi = rotr64_hi(xh, xl, 8);\n\t  var c2_hi = shr64_hi(xh, xl, 7);\n\n\t  var r = c0_hi ^ c1_hi ^ c2_hi;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction g0_512_lo(xh, xl) {\n\t  var c0_lo = rotr64_lo(xh, xl, 1);\n\t  var c1_lo = rotr64_lo(xh, xl, 8);\n\t  var c2_lo = shr64_lo(xh, xl, 7);\n\n\t  var r = c0_lo ^ c1_lo ^ c2_lo;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction g1_512_hi(xh, xl) {\n\t  var c0_hi = rotr64_hi(xh, xl, 19);\n\t  var c1_hi = rotr64_hi(xl, xh, 29);  // 61\n\t  var c2_hi = shr64_hi(xh, xl, 6);\n\n\t  var r = c0_hi ^ c1_hi ^ c2_hi;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\tfunction g1_512_lo(xh, xl) {\n\t  var c0_lo = rotr64_lo(xh, xl, 19);\n\t  var c1_lo = rotr64_lo(xl, xh, 29);  // 61\n\t  var c2_lo = shr64_lo(xh, xl, 6);\n\n\t  var r = c0_lo ^ c1_lo ^ c2_lo;\n\t  if (r < 0)\n\t    r += 0x100000000;\n\t  return r;\n\t}\n\n\n/***/ },\n/* 479 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar utils = exports;\n\tvar inherits = __webpack_require__(2);\n\n\tfunction toArray(msg, enc) {\n\t  if (Array.isArray(msg))\n\t    return msg.slice();\n\t  if (!msg)\n\t    return [];\n\t  var res = [];\n\t  if (typeof msg === 'string') {\n\t    if (!enc) {\n\t      for (var i = 0; i < msg.length; i++) {\n\t        var c = msg.charCodeAt(i);\n\t        var hi = c >> 8;\n\t        var lo = c & 0xff;\n\t        if (hi)\n\t          res.push(hi, lo);\n\t        else\n\t          res.push(lo);\n\t      }\n\t    } else if (enc === 'hex') {\n\t      msg = msg.replace(/[^a-z0-9]+/ig, '');\n\t      if (msg.length % 2 !== 0)\n\t        msg = '0' + msg;\n\t      for (var i = 0; i < msg.length; i += 2)\n\t        res.push(parseInt(msg[i] + msg[i + 1], 16));\n\t    }\n\t  } else {\n\t    for (var i = 0; i < msg.length; i++)\n\t      res[i] = msg[i] | 0;\n\t  }\n\t  return res;\n\t}\n\tutils.toArray = toArray;\n\n\tfunction toHex(msg) {\n\t  var res = '';\n\t  for (var i = 0; i < msg.length; i++)\n\t    res += zero2(msg[i].toString(16));\n\t  return res;\n\t}\n\tutils.toHex = toHex;\n\n\tfunction htonl(w) {\n\t  var res = (w >>> 24) |\n\t            ((w >>> 8) & 0xff00) |\n\t            ((w << 8) & 0xff0000) |\n\t            ((w & 0xff) << 24);\n\t  return res >>> 0;\n\t}\n\tutils.htonl = htonl;\n\n\tfunction toHex32(msg, endian) {\n\t  var res = '';\n\t  for (var i = 0; i < msg.length; i++) {\n\t    var w = msg[i];\n\t    if (endian === 'little')\n\t      w = htonl(w);\n\t    res += zero8(w.toString(16));\n\t  }\n\t  return res;\n\t}\n\tutils.toHex32 = toHex32;\n\n\tfunction zero2(word) {\n\t  if (word.length === 1)\n\t    return '0' + word;\n\t  else\n\t    return word;\n\t}\n\tutils.zero2 = zero2;\n\n\tfunction zero8(word) {\n\t  if (word.length === 7)\n\t    return '0' + word;\n\t  else if (word.length === 6)\n\t    return '00' + word;\n\t  else if (word.length === 5)\n\t    return '000' + word;\n\t  else if (word.length === 4)\n\t    return '0000' + word;\n\t  else if (word.length === 3)\n\t    return '00000' + word;\n\t  else if (word.length === 2)\n\t    return '000000' + word;\n\t  else if (word.length === 1)\n\t    return '0000000' + word;\n\t  else\n\t    return word;\n\t}\n\tutils.zero8 = zero8;\n\n\tfunction join32(msg, start, end, endian) {\n\t  var len = end - start;\n\t  assert(len % 4 === 0);\n\t  var res = new Array(len / 4);\n\t  for (var i = 0, k = start; i < res.length; i++, k += 4) {\n\t    var w;\n\t    if (endian === 'big')\n\t      w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n\t    else\n\t      w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n\t    res[i] = w >>> 0;\n\t  }\n\t  return res;\n\t}\n\tutils.join32 = join32;\n\n\tfunction split32(msg, endian) {\n\t  var res = new Array(msg.length * 4);\n\t  for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n\t    var m = msg[i];\n\t    if (endian === 'big') {\n\t      res[k] = m >>> 24;\n\t      res[k + 1] = (m >>> 16) & 0xff;\n\t      res[k + 2] = (m >>> 8) & 0xff;\n\t      res[k + 3] = m & 0xff;\n\t    } else {\n\t      res[k + 3] = m >>> 24;\n\t      res[k + 2] = (m >>> 16) & 0xff;\n\t      res[k + 1] = (m >>> 8) & 0xff;\n\t      res[k] = m & 0xff;\n\t    }\n\t  }\n\t  return res;\n\t}\n\tutils.split32 = split32;\n\n\tfunction rotr32(w, b) {\n\t  return (w >>> b) | (w << (32 - b));\n\t}\n\tutils.rotr32 = rotr32;\n\n\tfunction rotl32(w, b) {\n\t  return (w << b) | (w >>> (32 - b));\n\t}\n\tutils.rotl32 = rotl32;\n\n\tfunction sum32(a, b) {\n\t  return (a + b) >>> 0;\n\t}\n\tutils.sum32 = sum32;\n\n\tfunction sum32_3(a, b, c) {\n\t  return (a + b + c) >>> 0;\n\t}\n\tutils.sum32_3 = sum32_3;\n\n\tfunction sum32_4(a, b, c, d) {\n\t  return (a + b + c + d) >>> 0;\n\t}\n\tutils.sum32_4 = sum32_4;\n\n\tfunction sum32_5(a, b, c, d, e) {\n\t  return (a + b + c + d + e) >>> 0;\n\t}\n\tutils.sum32_5 = sum32_5;\n\n\tfunction assert(cond, msg) {\n\t  if (!cond)\n\t    throw new Error(msg || 'Assertion failed');\n\t}\n\tutils.assert = assert;\n\n\tutils.inherits = inherits;\n\n\tfunction sum64(buf, pos, ah, al) {\n\t  var bh = buf[pos];\n\t  var bl = buf[pos + 1];\n\n\t  var lo = (al + bl) >>> 0;\n\t  var hi = (lo < al ? 1 : 0) + ah + bh;\n\t  buf[pos] = hi >>> 0;\n\t  buf[pos + 1] = lo;\n\t}\n\texports.sum64 = sum64;\n\n\tfunction sum64_hi(ah, al, bh, bl) {\n\t  var lo = (al + bl) >>> 0;\n\t  var hi = (lo < al ? 1 : 0) + ah + bh;\n\t  return hi >>> 0;\n\t};\n\texports.sum64_hi = sum64_hi;\n\n\tfunction sum64_lo(ah, al, bh, bl) {\n\t  var lo = al + bl;\n\t  return lo >>> 0;\n\t};\n\texports.sum64_lo = sum64_lo;\n\n\tfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n\t  var carry = 0;\n\t  var lo = al;\n\t  lo = (lo + bl) >>> 0;\n\t  carry += lo < al ? 1 : 0;\n\t  lo = (lo + cl) >>> 0;\n\t  carry += lo < cl ? 1 : 0;\n\t  lo = (lo + dl) >>> 0;\n\t  carry += lo < dl ? 1 : 0;\n\n\t  var hi = ah + bh + ch + dh + carry;\n\t  return hi >>> 0;\n\t};\n\texports.sum64_4_hi = sum64_4_hi;\n\n\tfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n\t  var lo = al + bl + cl + dl;\n\t  return lo >>> 0;\n\t};\n\texports.sum64_4_lo = sum64_4_lo;\n\n\tfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n\t  var carry = 0;\n\t  var lo = al;\n\t  lo = (lo + bl) >>> 0;\n\t  carry += lo < al ? 1 : 0;\n\t  lo = (lo + cl) >>> 0;\n\t  carry += lo < cl ? 1 : 0;\n\t  lo = (lo + dl) >>> 0;\n\t  carry += lo < dl ? 1 : 0;\n\t  lo = (lo + el) >>> 0;\n\t  carry += lo < el ? 1 : 0;\n\n\t  var hi = ah + bh + ch + dh + eh + carry;\n\t  return hi >>> 0;\n\t};\n\texports.sum64_5_hi = sum64_5_hi;\n\n\tfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n\t  var lo = al + bl + cl + dl + el;\n\n\t  return lo >>> 0;\n\t};\n\texports.sum64_5_lo = sum64_5_lo;\n\n\tfunction rotr64_hi(ah, al, num) {\n\t  var r = (al << (32 - num)) | (ah >>> num);\n\t  return r >>> 0;\n\t};\n\texports.rotr64_hi = rotr64_hi;\n\n\tfunction rotr64_lo(ah, al, num) {\n\t  var r = (ah << (32 - num)) | (al >>> num);\n\t  return r >>> 0;\n\t};\n\texports.rotr64_lo = rotr64_lo;\n\n\tfunction shr64_hi(ah, al, num) {\n\t  return ah >>> num;\n\t};\n\texports.shr64_hi = shr64_hi;\n\n\tfunction shr64_lo(ah, al, num) {\n\t  var r = (ah << (32 - num)) | (al >>> num);\n\t  return r >>> 0;\n\t};\n\texports.shr64_lo = shr64_lo;\n\n\n/***/ },\n/* 480 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar http = __webpack_require__(200);\n\n\tvar https = module.exports;\n\n\tfor (var key in http) {\n\t    if (http.hasOwnProperty(key)) https[key] = http[key];\n\t};\n\n\thttps.request = function (params, cb) {\n\t    if (!params) params = {};\n\t    params.scheme = 'https';\n\t    params.protocol = 'https:';\n\t    return http.request.call(this, params, cb);\n\t}\n\n\n/***/ },\n/* 481 */\n/***/ function(module, exports) {\n\n\texports.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t  var e, m\n\t  var eLen = nBytes * 8 - mLen - 1\n\t  var eMax = (1 << eLen) - 1\n\t  var eBias = eMax >> 1\n\t  var nBits = -7\n\t  var i = isLE ? (nBytes - 1) : 0\n\t  var d = isLE ? -1 : 1\n\t  var s = buffer[offset + i]\n\n\t  i += d\n\n\t  e = s & ((1 << (-nBits)) - 1)\n\t  s >>= (-nBits)\n\t  nBits += eLen\n\t  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t  m = e & ((1 << (-nBits)) - 1)\n\t  e >>= (-nBits)\n\t  nBits += mLen\n\t  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t  if (e === 0) {\n\t    e = 1 - eBias\n\t  } else if (e === eMax) {\n\t    return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t  } else {\n\t    m = m + Math.pow(2, mLen)\n\t    e = e - eBias\n\t  }\n\t  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t}\n\n\texports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t  var e, m, c\n\t  var eLen = nBytes * 8 - mLen - 1\n\t  var eMax = (1 << eLen) - 1\n\t  var eBias = eMax >> 1\n\t  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n\t  var i = isLE ? 0 : (nBytes - 1)\n\t  var d = isLE ? 1 : -1\n\t  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n\t  value = Math.abs(value)\n\n\t  if (isNaN(value) || value === Infinity) {\n\t    m = isNaN(value) ? 1 : 0\n\t    e = eMax\n\t  } else {\n\t    e = Math.floor(Math.log(value) / Math.LN2)\n\t    if (value * (c = Math.pow(2, -e)) < 1) {\n\t      e--\n\t      c *= 2\n\t    }\n\t    if (e + eBias >= 1) {\n\t      value += rt / c\n\t    } else {\n\t      value += rt * Math.pow(2, 1 - eBias)\n\t    }\n\t    if (value * c >= 2) {\n\t      e++\n\t      c /= 2\n\t    }\n\n\t    if (e + eBias >= eMax) {\n\t      m = 0\n\t      e = eMax\n\t    } else if (e + eBias >= 1) {\n\t      m = (value * c - 1) * Math.pow(2, mLen)\n\t      e = e + eBias\n\t    } else {\n\t      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n\t      e = 0\n\t    }\n\t  }\n\n\t  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n\t  e = (e << mLen) | m\n\t  eLen += mLen\n\t  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n\t  buffer[offset + i - d] |= s * 128\n\t}\n\n\n/***/ },\n/* 482 */\n/***/ function(module, exports) {\n\n\t\n\tvar indexOf = [].indexOf;\n\n\tmodule.exports = function(arr, obj){\n\t  if (indexOf) return arr.indexOf(obj);\n\t  for (var i = 0; i < arr.length; ++i) {\n\t    if (arr[i] === obj) return i;\n\t  }\n\t  return -1;\n\t};\n\n/***/ },\n/* 483 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {var wrappy = __webpack_require__(209)\n\tvar reqs = Object.create(null)\n\tvar once = __webpack_require__(189)\n\n\tmodule.exports = wrappy(inflight)\n\n\tfunction inflight (key, cb) {\n\t  if (reqs[key]) {\n\t    reqs[key].push(cb)\n\t    return null\n\t  } else {\n\t    reqs[key] = [cb]\n\t    return makeres(key)\n\t  }\n\t}\n\n\tfunction makeres (key) {\n\t  return once(function RES () {\n\t    var cbs = reqs[key]\n\t    var len = cbs.length\n\t    var args = slice(arguments)\n\t    for (var i = 0; i < len; i++) {\n\t      cbs[i].apply(null, args)\n\t    }\n\t    if (cbs.length > len) {\n\t      // added more in the interim.\n\t      // de-zalgo, just in case, but don't call again.\n\t      cbs.splice(0, len)\n\t      process.nextTick(function () {\n\t        RES.apply(null, args)\n\t      })\n\t    } else {\n\t      delete reqs[key]\n\t    }\n\t  })\n\t}\n\n\tfunction slice (args) {\n\t  var length = args.length\n\t  var array = []\n\n\t  for (var i = 0; i < length; i++) array[i] = args[i]\n\t  return array\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 484 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar ip = exports;\n\tvar Buffer = __webpack_require__(1).Buffer;\n\tvar os = __webpack_require__(190);\n\n\tip.toBuffer = function(ip, buff, offset) {\n\t  offset = ~~offset;\n\n\t  var result;\n\n\t  if (this.isV4Format(ip)) {\n\t    result = buff || new Buffer(offset + 4);\n\t    ip.split(/\\./g).map(function(byte) {\n\t      result[offset++] = parseInt(byte, 10) & 0xff;\n\t    });\n\t  } else if (this.isV6Format(ip)) {\n\t    var sections = ip.split(':', 8);\n\n\t    var i;\n\t    for (i = 0; i < sections.length; i++) {\n\t      var isv4 = this.isV4Format(sections[i]);\n\t      var v4Buffer;\n\n\t      if (isv4) {\n\t        v4Buffer = this.toBuffer(sections[i]);\n\t        sections[i] = v4Buffer.slice(0, 2).toString('hex');\n\t      }\n\n\t      if (v4Buffer && ++i < 8) {\n\t        sections.splice(i, 0, v4Buffer.slice(2, 4).toString('hex'));\n\t      }\n\t    }\n\n\t    if (sections[0] === '') {\n\t      while (sections.length < 8) sections.unshift('0');\n\t    } else if (sections[sections.length - 1] === '') {\n\t      while (sections.length < 8) sections.push('0');\n\t    } else if (sections.length < 8) {\n\t      for (i = 0; i < sections.length && sections[i] !== ''; i++);\n\t      var argv = [ i, 1 ];\n\t      for (i = 9 - sections.length; i > 0; i--) {\n\t        argv.push('0');\n\t      }\n\t      sections.splice.apply(sections, argv);\n\t    }\n\n\t    result = buff || new Buffer(offset + 16);\n\t    for (i = 0; i < sections.length; i++) {\n\t      var word = parseInt(sections[i], 16);\n\t      result[offset++] = (word >> 8) & 0xff;\n\t      result[offset++] = word & 0xff;\n\t    }\n\t  }\n\n\t  if (!result) {\n\t    throw Error('Invalid ip address: ' + ip);\n\t  }\n\n\t  return result;\n\t};\n\n\tip.toString = function(buff, offset, length) {\n\t  offset = ~~offset;\n\t  length = length || (buff.length - offset);\n\n\t  var result = [];\n\t  if (length === 4) {\n\t    // IPv4\n\t    for (var i = 0; i < length; i++) {\n\t      result.push(buff[offset + i]);\n\t    }\n\t    result = result.join('.');\n\t  } else if (length === 16) {\n\t    // IPv6\n\t    for (var i = 0; i < length; i += 2) {\n\t      result.push(buff.readUInt16BE(offset + i).toString(16));\n\t    }\n\t    result = result.join(':');\n\t    result = result.replace(/(^|:)0(:0)*:0(:|$)/, '$1::$3');\n\t    result = result.replace(/:{3,4}/, '::');\n\t  }\n\n\t  return result;\n\t};\n\n\tvar ipv4Regex = /^(\\d{1,3}\\.){3,3}\\d{1,3}$/;\n\tvar ipv6Regex =\n\t    /^(::)?(((\\d{1,3}\\.){3}(\\d{1,3}){1})?([0-9a-f]){0,4}:{0,2}){1,8}(::)?$/i;\n\n\tip.isV4Format = function(ip) {\n\t  return ipv4Regex.test(ip);\n\t};\n\n\tip.isV6Format = function(ip) {\n\t  return ipv6Regex.test(ip);\n\t};\n\tfunction _normalizeFamily(family) {\n\t  return family ? family.toLowerCase() : 'ipv4';\n\t}\n\n\tip.fromPrefixLen = function(prefixlen, family) {\n\t  if (prefixlen > 32) {\n\t    family = 'ipv6';\n\t  } else {\n\t    family = _normalizeFamily(family);\n\t  }\n\n\t  var len = 4;\n\t  if (family === 'ipv6') {\n\t    len = 16;\n\t  }\n\t  var buff = new Buffer(len);\n\n\t  for (var i = 0, n = buff.length; i < n; ++i) {\n\t    var bits = 8;\n\t    if (prefixlen < 8) {\n\t      bits = prefixlen;\n\t    }\n\t    prefixlen -= bits;\n\n\t    buff[i] = ~(0xff >> bits);\n\t  }\n\n\t  return ip.toString(buff);\n\t};\n\n\tip.mask = function(addr, mask) {\n\t  addr = ip.toBuffer(addr);\n\t  mask = ip.toBuffer(mask);\n\n\t  var result = new Buffer(Math.max(addr.length, mask.length));\n\n\t  // Same protocol - do bitwise and\n\t  if (addr.length === mask.length) {\n\t    for (var i = 0; i < addr.length; i++) {\n\t      result[i] = addr[i] & mask[i];\n\t    }\n\t  } else if (mask.length === 4) {\n\t    // IPv6 address and IPv4 mask\n\t    // (Mask low bits)\n\t    for (var i = 0; i < mask.length; i++) {\n\t      result[i] = addr[addr.length - 4  + i] & mask[i];\n\t    }\n\t  } else {\n\t    // IPv6 mask and IPv4 addr\n\t    for (var i = 0; i < result.length - 6; i++) {\n\t      result[i] = 0;\n\t    }\n\n\t    // ::ffff:ipv4\n\t    result[10] = 0xff;\n\t    result[11] = 0xff;\n\t    for (var i = 0; i < addr.length; i++) {\n\t      result[i + 12] = addr[i] & mask[i + 12];\n\t    }\n\t  }\n\n\t  return ip.toString(result);\n\t};\n\n\tip.cidr = function(cidrString) {\n\t  var cidrParts = cidrString.split('/');\n\n\t  var addr = cidrParts[0];\n\t  if (cidrParts.length !== 2)\n\t    throw new Error('invalid CIDR subnet: ' + addr);\n\n\t  var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10));\n\n\t  return ip.mask(addr, mask);\n\t};\n\n\tip.subnet = function(addr, mask) {\n\t  var networkAddress = ip.toLong(ip.mask(addr, mask));\n\n\t  // Calculate the mask's length.\n\t  var maskBuffer = ip.toBuffer(mask);\n\t  var maskLength = 0;\n\n\t  for (var i = 0; i < maskBuffer.length; i++) {\n\t    if (maskBuffer[i] === 0xff) {\n\t      maskLength += 8;\n\t    } else {\n\t      var octet = maskBuffer[i] & 0xff;\n\t      while (octet) {\n\t        octet = (octet << 1) & 0xff;\n\t        maskLength++;\n\t      }\n\t    }\n\t  }\n\n\t  var numberOfAddresses = Math.pow(2, 32 - maskLength);\n\n\t  return {\n\t    networkAddress: ip.fromLong(networkAddress),\n\t    firstAddress: numberOfAddresses <= 2 ?\n\t                    ip.fromLong(networkAddress) :\n\t                    ip.fromLong(networkAddress + 1),\n\t    lastAddress: numberOfAddresses <= 2 ?\n\t                    ip.fromLong(networkAddress + numberOfAddresses - 1) :\n\t                    ip.fromLong(networkAddress + numberOfAddresses - 2),\n\t    broadcastAddress: ip.fromLong(networkAddress + numberOfAddresses - 1),\n\t    subnetMask: mask,\n\t    subnetMaskLength: maskLength,\n\t    numHosts: numberOfAddresses <= 2 ?\n\t                numberOfAddresses : numberOfAddresses - 2,\n\t    length: numberOfAddresses,\n\t    contains: function(other) {\n\t      return networkAddress === ip.toLong(ip.mask(other, mask));\n\t    }\n\t  };\n\t};\n\n\tip.cidrSubnet = function(cidrString) {\n\t  var cidrParts = cidrString.split('/');\n\n\t  var addr = cidrParts[0];\n\t  if (cidrParts.length !== 2)\n\t    throw new Error('invalid CIDR subnet: ' + addr);\n\n\t  var mask = ip.fromPrefixLen(parseInt(cidrParts[1], 10));\n\n\t  return ip.subnet(addr, mask);\n\t};\n\n\tip.not = function(addr) {\n\t  var buff = ip.toBuffer(addr);\n\t  for (var i = 0; i < buff.length; i++) {\n\t    buff[i] = 0xff ^ buff[i];\n\t  }\n\t  return ip.toString(buff);\n\t};\n\n\tip.or = function(a, b) {\n\t  a = ip.toBuffer(a);\n\t  b = ip.toBuffer(b);\n\n\t  // same protocol\n\t  if (a.length === b.length) {\n\t    for (var i = 0; i < a.length; ++i) {\n\t      a[i] |= b[i];\n\t    }\n\t    return ip.toString(a);\n\n\t  // mixed protocols\n\t  } else {\n\t    var buff = a;\n\t    var other = b;\n\t    if (b.length > a.length) {\n\t      buff = b;\n\t      other = a;\n\t    }\n\n\t    var offset = buff.length - other.length;\n\t    for (var i = offset; i < buff.length; ++i) {\n\t      buff[i] |= other[i - offset];\n\t    }\n\n\t    return ip.toString(buff);\n\t  }\n\t};\n\n\tip.isEqual = function(a, b) {\n\t  a = ip.toBuffer(a);\n\t  b = ip.toBuffer(b);\n\n\t  // Same protocol\n\t  if (a.length === b.length) {\n\t    for (var i = 0; i < a.length; i++) {\n\t      if (a[i] !== b[i]) return false;\n\t    }\n\t    return true;\n\t  }\n\n\t  // Swap\n\t  if (b.length === 4) {\n\t    var t = b;\n\t    b = a;\n\t    a = t;\n\t  }\n\n\t  // a - IPv4, b - IPv6\n\t  for (var i = 0; i < 10; i++) {\n\t    if (b[i] !== 0) return false;\n\t  }\n\n\t  var word = b.readUInt16BE(10);\n\t  if (word !== 0 && word !== 0xffff) return false;\n\n\t  for (var i = 0; i < 4; i++) {\n\t    if (a[i] !== b[i + 12]) return false;\n\t  }\n\n\t  return true;\n\t};\n\n\tip.isPrivate = function(addr) {\n\t  return /^(::f{4}:)?10\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/i\n\t      .test(addr) ||\n\t    /^(::f{4}:)?192\\.168\\.([0-9]{1,3})\\.([0-9]{1,3})$/i.test(addr) ||\n\t    /^(::f{4}:)?172\\.(1[6-9]|2\\d|30|31)\\.([0-9]{1,3})\\.([0-9]{1,3})$/i\n\t      .test(addr) ||\n\t    /^(::f{4}:)?127\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/i.test(addr) ||\n\t    /^(::f{4}:)?169\\.254\\.([0-9]{1,3})\\.([0-9]{1,3})$/i.test(addr) ||\n\t    /^f[cd][0-9a-f]{2}:/i.test(addr) ||\n\t    /^fe80:/i.test(addr) ||\n\t    /^::1$/.test(addr) ||\n\t    /^::$/.test(addr);\n\t};\n\n\tip.isPublic = function(addr) {\n\t  return !ip.isPrivate(addr);\n\t};\n\n\tip.isLoopback = function(addr) {\n\t  return /^(::f{4}:)?127\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})/\n\t      .test(addr) ||\n\t    /^fe80::1$/.test(addr) ||\n\t    /^::1$/.test(addr) ||\n\t    /^::$/.test(addr);\n\t};\n\n\tip.loopback = function(family) {\n\t  //\n\t  // Default to `ipv4`\n\t  //\n\t  family = _normalizeFamily(family);\n\n\t  if (family !== 'ipv4' && family !== 'ipv6') {\n\t    throw new Error('family must be ipv4 or ipv6');\n\t  }\n\n\t  return family === 'ipv4' ? '127.0.0.1' : 'fe80::1';\n\t};\n\n\t//\n\t// ### function address (name, family)\n\t// #### @name {string|'public'|'private'} **Optional** Name or security\n\t//      of the network interface.\n\t// #### @family {ipv4|ipv6} **Optional** IP family of the address (defaults\n\t//      to ipv4).\n\t//\n\t// Returns the address for the network interface on the current system with\n\t// the specified `name`:\n\t//   * String: First `family` address of the interface.\n\t//             If not found see `undefined`.\n\t//   * 'public': the first public ip address of family.\n\t//   * 'private': the first private ip address of family.\n\t//   * undefined: First address with `ipv4` or loopback address `127.0.0.1`.\n\t//\n\tip.address = function(name, family) {\n\t  var interfaces = os.networkInterfaces();\n\t  var all;\n\n\t  //\n\t  // Default to `ipv4`\n\t  //\n\t  family = _normalizeFamily(family);\n\n\t  //\n\t  // If a specific network interface has been named,\n\t  // return the address.\n\t  //\n\t  if (name && name !== 'private' && name !== 'public') {\n\t    var res = interfaces[name].filter(function(details) {\n\t      var itemFamily = details.family.toLowerCase();\n\t      return itemFamily === family;\n\t    });\n\t    if (res.length === 0)\n\t      return undefined;\n\t    return res[0].address;\n\t  }\n\n\t  var all = Object.keys(interfaces).map(function (nic) {\n\t    //\n\t    // Note: name will only be `public` or `private`\n\t    // when this is called.\n\t    //\n\t    var addresses = interfaces[nic].filter(function (details) {\n\t      details.family = details.family.toLowerCase();\n\t      if (details.family !== family || ip.isLoopback(details.address)) {\n\t        return false;\n\t      } else if (!name) {\n\t        return true;\n\t      }\n\n\t      return name === 'public' ? !ip.isPrivate(details.address) :\n\t          ip.isPrivate(details.address);\n\t    });\n\n\t    return addresses.length ? addresses[0].address : undefined;\n\t  }).filter(Boolean);\n\n\t  return !all.length ? ip.loopback(family) : all[0];\n\t};\n\n\tip.toLong = function(ip) {\n\t  var ipl = 0;\n\t  ip.split('.').forEach(function(octet) {\n\t    ipl <<= 8;\n\t    ipl += parseInt(octet);\n\t  });\n\t  return(ipl >>> 0);\n\t};\n\n\tip.fromLong = function(ipl) {\n\t  return ((ipl >>> 24) + '.' +\n\t      (ipl >> 16 & 255) + '.' +\n\t      (ipl >> 8 & 255) + '.' +\n\t      (ipl & 255) );\n\t};\n\n\n/***/ },\n/* 485 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar isStream = module.exports = function (stream) {\n\t\treturn stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function';\n\t};\n\n\tisStream.writable = function (stream) {\n\t\treturn isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object';\n\t};\n\n\tisStream.readable = function (stream) {\n\t\treturn isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object';\n\t};\n\n\tisStream.duplex = function (stream) {\n\t\treturn isStream.writable(stream) && isStream.readable(stream);\n\t};\n\n\tisStream.transform = function (stream) {\n\t\treturn isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object';\n\t};\n\n\n/***/ },\n/* 486 */\n/***/ function(module, exports) {\n\n\tmodule.exports = Array.isArray || function (arr) {\n\t  return Object.prototype.toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ },\n/* 487 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\t\"modp1\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n\t\t},\n\t\t\"modp2\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n\t\t},\n\t\t\"modp5\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n\t\t},\n\t\t\"modp14\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n\t\t},\n\t\t\"modp15\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n\t\t},\n\t\t\"modp16\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n\t\t},\n\t\t\"modp17\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n\t\t},\n\t\t\"modp18\": {\n\t\t\t\"gen\": \"02\",\n\t\t\t\"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n\t\t}\n\t};\n\n/***/ },\n/* 488 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\t\"_args\": [\n\t\t\t[\n\t\t\t\t\"elliptic@^6.0.0\",\n\t\t\t\t\"/Users/dignifiedquire/opensource/ipfs/js-ipfs-api/node_modules/browserify-sign\"\n\t\t\t]\n\t\t],\n\t\t\"_from\": \"elliptic@>=6.0.0 <7.0.0\",\n\t\t\"_id\": \"elliptic@6.2.3\",\n\t\t\"_inCache\": true,\n\t\t\"_installable\": true,\n\t\t\"_location\": \"/elliptic\",\n\t\t\"_nodeVersion\": \"5.4.1\",\n\t\t\"_npmUser\": {\n\t\t\t\"email\": \"fedor@indutny.com\",\n\t\t\t\"name\": \"indutny\"\n\t\t},\n\t\t\"_npmVersion\": \"3.3.12\",\n\t\t\"_phantomChildren\": {},\n\t\t\"_requested\": {\n\t\t\t\"name\": \"elliptic\",\n\t\t\t\"raw\": \"elliptic@^6.0.0\",\n\t\t\t\"rawSpec\": \"^6.0.0\",\n\t\t\t\"scope\": null,\n\t\t\t\"spec\": \">=6.0.0 <7.0.0\",\n\t\t\t\"type\": \"range\"\n\t\t},\n\t\t\"_requiredBy\": [\n\t\t\t\"/browserify-sign\",\n\t\t\t\"/create-ecdh\"\n\t\t],\n\t\t\"_resolved\": \"https://registry.npmjs.org/elliptic/-/elliptic-6.2.3.tgz\",\n\t\t\"_shasum\": \"18e46d7306b0951275a2d42063270a14b74ebe99\",\n\t\t\"_shrinkwrap\": null,\n\t\t\"_spec\": \"elliptic@^6.0.0\",\n\t\t\"_where\": \"/Users/dignifiedquire/opensource/ipfs/js-ipfs-api/node_modules/browserify-sign\",\n\t\t\"author\": {\n\t\t\t\"email\": \"fedor@indutny.com\",\n\t\t\t\"name\": \"Fedor Indutny\"\n\t\t},\n\t\t\"bugs\": {\n\t\t\t\"url\": \"https://github.com/indutny/elliptic/issues\"\n\t\t},\n\t\t\"dependencies\": {\n\t\t\t\"bn.js\": \"^4.0.0\",\n\t\t\t\"brorand\": \"^1.0.1\",\n\t\t\t\"hash.js\": \"^1.0.0\",\n\t\t\t\"inherits\": \"^2.0.1\"\n\t\t},\n\t\t\"description\": \"EC cryptography\",\n\t\t\"devDependencies\": {\n\t\t\t\"coveralls\": \"^2.11.3\",\n\t\t\t\"istanbul\": \"^0.4.2\",\n\t\t\t\"jscs\": \"^2.9.0\",\n\t\t\t\"jshint\": \"^2.6.0\",\n\t\t\t\"mocha\": \"^2.1.0\"\n\t\t},\n\t\t\"directories\": {},\n\t\t\"dist\": {\n\t\t\t\"shasum\": \"18e46d7306b0951275a2d42063270a14b74ebe99\",\n\t\t\t\"tarball\": \"https://registry.npmjs.org/elliptic/-/elliptic-6.2.3.tgz\"\n\t\t},\n\t\t\"files\": [\n\t\t\t\"lib\"\n\t\t],\n\t\t\"gitHead\": \"c32f20b22b420eb6af3c6dda28963deb7facf823\",\n\t\t\"homepage\": \"https://github.com/indutny/elliptic\",\n\t\t\"keywords\": [\n\t\t\t\"EC\",\n\t\t\t\"Elliptic\",\n\t\t\t\"curve\",\n\t\t\t\"Cryptography\"\n\t\t],\n\t\t\"license\": \"MIT\",\n\t\t\"main\": \"lib/elliptic.js\",\n\t\t\"maintainers\": [\n\t\t\t{\n\t\t\t\t\"email\": \"fedor@indutny.com\",\n\t\t\t\t\"name\": \"indutny\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"elliptic\",\n\t\t\"optionalDependencies\": {},\n\t\t\"readme\": \"ERROR: No README data found!\",\n\t\t\"repository\": {\n\t\t\t\"type\": \"git\",\n\t\t\t\"url\": \"git+ssh://git@github.com/indutny/elliptic.git\"\n\t\t},\n\t\t\"scripts\": {\n\t\t\t\"coverage\": \"npm run unit --coverage\",\n\t\t\t\"coveralls\": \"npm run coverage && cat ./coverage/lcov.info | coveralls\",\n\t\t\t\"jscs\": \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/*.js\",\n\t\t\t\"jshint\": \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/*.js\",\n\t\t\t\"lint\": \"npm run jscs && npm run jshint\",\n\t\t\t\"test\": \"npm run lint && npm run unit\",\n\t\t\t\"unit\": \"istanbul test _mocha --reporter=spec test/*-test.js\"\n\t\t},\n\t\t\"version\": \"6.2.3\"\n\t};\n\n/***/ },\n/* 489 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\t\"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n\t\t\"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n\t\t\"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n\t\t\"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n\t\t\"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n\t\t\"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n\t\t\"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n\t\t\"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n\t\t\"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n\t\t\"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n\t\t\"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n\t\t\"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n\t};\n\n/***/ },\n/* 490 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\t\"name\": \"ipfs-api\",\n\t\t\"version\": \"3.0.2\",\n\t\t\"description\": \"A client library for the IPFS API\",\n\t\t\"main\": \"lib/index.js\",\n\t\t\"jsnext:main\": \"src/index.js\",\n\t\t\"dependencies\": {\n\t\t\t\"babel-runtime\": \"^6.6.1\",\n\t\t\t\"detect-node\": \"^2.0.3\",\n\t\t\t\"flatmap\": \"0.0.3\",\n\t\t\t\"glob\": \"^7.0.3\",\n\t\t\t\"multiaddr\": \"^1.3.0\",\n\t\t\t\"multipart-stream\": \"^2.0.1\",\n\t\t\t\"ndjson\": \"^1.4.3\",\n\t\t\t\"qs\": \"^6.1.0\",\n\t\t\t\"wreck\": \"^7.0.2\"\n\t\t},\n\t\t\"engines\": {\n\t\t\t\"node\": \">=4.2.2\"\n\t\t},\n\t\t\"repository\": {\n\t\t\t\"type\": \"git\",\n\t\t\t\"url\": \"https://github.com/ipfs/js-ipfs-api\"\n\t\t},\n\t\t\"devDependencies\": {\n\t\t\t\"chai\": \"^3.5.0\",\n\t\t\t\"aegir\": \"^3.0.1\",\n\t\t\t\"gulp\": \"^3.9.1\",\n\t\t\t\"ipfsd-ctl\": \"^0.13.0\",\n\t\t\t\"pre-commit\": \"^1.1.2\",\n\t\t\t\"raw-loader\": \"^0.5.1\",\n\t\t\t\"stream-equal\": \"^0.1.8\",\n\t\t\t\"stream-http\": \"^2.2.0\"\n\t\t},\n\t\t\"scripts\": {\n\t\t\t\"test\": \"gulp test\",\n\t\t\t\"test:node\": \"gulp test:node\",\n\t\t\t\"test:browser\": \"gulp test:browser\",\n\t\t\t\"lint\": \"aegir-lint\",\n\t\t\t\"build\": \"gulp build\",\n\t\t\t\"release\": \"gulp release\",\n\t\t\t\"coverage\": \"gulp coverage\",\n\t\t\t\"coverage-publish\": \"aegir-coverage publish\"\n\t\t},\n\t\t\"pre-commit\": [\n\t\t\t\"lint\",\n\t\t\t\"test\"\n\t\t],\n\t\t\"keywords\": [\n\t\t\t\"ipfs\"\n\t\t],\n\t\t\"author\": \"Matt Bell <mappum@gmail.com>\",\n\t\t\"contributors\": [\n\t\t\t\"Alex Mingoia <talk@alexmingoia.com>\",\n\t\t\t\"Connor Keenan <ckeenan89@gmail.com>\",\n\t\t\t\"David Braun <David.Braun@Toptal.com>\",\n\t\t\t\"David Dias <daviddias.p@gmail.com>\",\n\t\t\t\"Fil <fil@rezo.net>\",\n\t\t\t\"Francisco Baio Dias <xicombd@gmail.com>\",\n\t\t\t\"Harlan T Wood <harlantwood@users.noreply.github.com>\",\n\t\t\t\"Harlan T Wood <code@harlantwood.net>\",\n\t\t\t\"Jason Carver <jacarver@linkedin.com>\",\n\t\t\t\"Jeromy <jeromyj@gmail.com>\",\n\t\t\t\"Juan Batiz-Benet <juan@benet.ai>\",\n\t\t\t\"Kristoffer Ström <kristoffer@rymdkoloni.se>\",\n\t\t\t\"Matt Bell <mappum@gmail.com>\",\n\t\t\t\"Richard Littauer <richard.littauer@gmail.com>\",\n\t\t\t\"Travis Person <travis.person@gmail.com>\",\n\t\t\t\"Victor Bjelkholm <victor@typeform.com>\",\n\t\t\t\"dignifiedquire <dignifiedquire@gmail.com>\",\n\t\t\t\"ethers <ethereum@outlook.com>\",\n\t\t\t\"greenkeeperio-bot <support@greenkeeper.io>\",\n\t\t\t\"priecint <tp-dev@seznam.cz>\",\n\t\t\t\"samuli <samuli@nugg.ad>\"\n\t\t],\n\t\t\"license\": \"MIT\",\n\t\t\"bugs\": {\n\t\t\t\"url\": \"https://github.com/ipfs/js-ipfs-api/issues\"\n\t\t},\n\t\t\"homepage\": \"https://github.com/ipfs/js-ipfs-api\",\n\t\t\"aegir\": {\n\t\t\t\"webpack\": {\n\t\t\t\t\"module\": {\n\t\t\t\t\t\"postLoaders\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"test\": \"__\",\n\t\t\t\t\t\t\t\"loader\": \"transform?brfs\",\n\t\t\t\t\t\t\t\"include\": []\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n/***/ },\n/* 491 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t * Available under MIT license <https://lodash.com/license>\n\t */\n\tvar baseEach = __webpack_require__(185);\n\n\t/**\n\t * The base implementation of `_.filter` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t */\n\tfunction baseFilter(collection, predicate) {\n\t  var result = [];\n\t  baseEach(collection, function(value, index, collection) {\n\t    if (predicate(value, index, collection)) {\n\t      result.push(value);\n\t    }\n\t  });\n\t  return result;\n\t}\n\n\tmodule.exports = baseFilter;\n\n\n/***/ },\n/* 492 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module, global) {/**\n\t * lodash 4.7.1 (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\n\t/** Used as the `TypeError` message for \"Functions\" methods. */\n\tvar FUNC_ERROR_TEXT = 'Expected a function';\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar INFINITY = 1 / 0;\n\n\t/** `Object#toString` result references. */\n\tvar funcTag = '[object Function]',\n\t    genTag = '[object GeneratorFunction]',\n\t    symbolTag = '[object Symbol]';\n\n\t/** Used to match property names within property paths. */\n\tvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match backslashes in property paths. */\n\tvar reEscapeChar = /\\\\(\\\\)?/g;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to determine if values are of the language type `Object`. */\n\tvar objectTypes = {\n\t  'function': true,\n\t  'object': true\n\t};\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n\t  ? exports\n\t  : undefined;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n\t  ? module\n\t  : undefined;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n\t/** Detect free variable `window`. */\n\tvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n\t/** Detect `this` as the global object. */\n\tvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n\t/**\n\t * Used as a reference to the global object.\n\t *\n\t * The `this` value is used if it's the global object to avoid Greasemonkey's\n\t * restricted `window` object, otherwise the `window` object is used.\n\t */\n\tvar root = freeGlobal ||\n\t  ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n\t    freeSelf || thisGlobal || Function('return this')();\n\n\t/**\n\t * Checks if `value` is a global object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n\t */\n\tfunction checkGlobal(value) {\n\t  return (value && value.Object === Object) ? value : null;\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t  // Many host objects are `Object` objects that can coerce to strings\n\t  // despite having improperly defined `toString` methods.\n\t  var result = false;\n\t  if (value != null && typeof value.toString != 'function') {\n\t    try {\n\t      result = !!(value + '');\n\t    } catch (e) {}\n\t  }\n\t  return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t    objectProto = Object.prototype;\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = Function.prototype.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Symbol = root.Symbol,\n\t    splice = arrayProto.splice;\n\n\t/* Built-in method references that are verified to be native. */\n\tvar Map = getNative(root, 'Map'),\n\t    nativeCreate = getNative(Object, 'create');\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @returns {Object} Returns the new hash object.\n\t */\n\tfunction Hash() {}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(hash, key) {\n\t  return hashHas(hash, key) && delete hash[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to query.\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(hash, key) {\n\t  if (nativeCreate) {\n\t    var result = hash[key];\n\t    return result === HASH_UNDEFINED ? undefined : result;\n\t  }\n\t  return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to query.\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(hash, key) {\n\t  return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t */\n\tfunction hashSet(hash, key, value) {\n\t  hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t}\n\n\t// Avoid inheriting from `Object.prototype` when possible.\n\tHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [values] The values to cache.\n\t */\n\tfunction MapCache(values) {\n\t  var index = -1,\n\t      length = values ? values.length : 0;\n\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = values[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapClear() {\n\t  this.__data__ = {\n\t    'hash': new Hash,\n\t    'map': Map ? new Map : [],\n\t    'string': new Hash\n\t  };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapDelete(key) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n\t  }\n\t  return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapGet(key) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n\t  }\n\t  return Map ? data.map.get(key) : assocGet(data.map, key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapHas(key) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n\t  }\n\t  return Map ? data.map.has(key) : assocHas(data.map, key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapSet(key, value) {\n\t  var data = this.__data__;\n\t  if (isKeyable(key)) {\n\t    hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n\t  } else if (Map) {\n\t    data.map.set(key, value);\n\t  } else {\n\t    assocSet(data.map, key, value);\n\t  }\n\t  return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapClear;\n\tMapCache.prototype['delete'] = mapDelete;\n\tMapCache.prototype.get = mapGet;\n\tMapCache.prototype.has = mapHas;\n\tMapCache.prototype.set = mapSet;\n\n\t/**\n\t * Removes `key` and its value from the associative array.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction assocDelete(array, key) {\n\t  var index = assocIndexOf(array, key);\n\t  if (index < 0) {\n\t    return false;\n\t  }\n\t  var lastIndex = array.length - 1;\n\t  if (index == lastIndex) {\n\t    array.pop();\n\t  } else {\n\t    splice.call(array, index, 1);\n\t  }\n\t  return true;\n\t}\n\n\t/**\n\t * Gets the associative array value for `key`.\n\t *\n\t * @private\n\t * @param {Array} array The array to query.\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction assocGet(array, key) {\n\t  var index = assocIndexOf(array, key);\n\t  return index < 0 ? undefined : array[index][1];\n\t}\n\n\t/**\n\t * Checks if an associative array value for `key` exists.\n\t *\n\t * @private\n\t * @param {Array} array The array to query.\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction assocHas(array, key) {\n\t  return assocIndexOf(array, key) > -1;\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t  var length = array.length;\n\t  while (length--) {\n\t    if (eq(array[length][0], key)) {\n\t      return length;\n\t    }\n\t  }\n\t  return -1;\n\t}\n\n\t/**\n\t * Sets the associative array `key` to `value`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t */\n\tfunction assocSet(array, key, value) {\n\t  var index = assocIndexOf(array, key);\n\t  if (index < 0) {\n\t    array.push([key, value]);\n\t  } else {\n\t    array[index][1] = value;\n\t  }\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t  var value = object[key];\n\t  return isNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t  var type = typeof value;\n\t  return type == 'number' || type == 'boolean' ||\n\t    (type == 'string' && value != '__proto__') || value == null;\n\t}\n\n\t/**\n\t * Converts `string` to a property path array.\n\t *\n\t * @private\n\t * @param {string} string The string to convert.\n\t * @returns {Array} Returns the property path array.\n\t */\n\tvar stringToPath = memoize(function(string) {\n\t  var result = [];\n\t  toString(string).replace(rePropName, function(match, number, quote, string) {\n\t    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n\t  });\n\t  return result;\n\t});\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t  if (func != null) {\n\t    try {\n\t      return funcToString.call(func);\n\t    } catch (e) {}\n\t    try {\n\t      return (func + '');\n\t    } catch (e) {}\n\t  }\n\t  return '';\n\t}\n\n\t/**\n\t * Creates a function that memoizes the result of `func`. If `resolver` is\n\t * provided, it determines the cache key for storing the result based on the\n\t * arguments provided to the memoized function. By default, the first argument\n\t * provided to the memoized function is used as the map cache key. The `func`\n\t * is invoked with the `this` binding of the memoized function.\n\t *\n\t * **Note:** The cache is exposed as the `cache` property on the memoized\n\t * function. Its creation may be customized by replacing the `_.memoize.Cache`\n\t * constructor with one whose instances implement the\n\t * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)\n\t * method interface of `delete`, `get`, `has`, and `set`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Function\n\t * @param {Function} func The function to have its output memoized.\n\t * @param {Function} [resolver] The function to resolve the cache key.\n\t * @returns {Function} Returns the new memoizing function.\n\t * @example\n\t *\n\t * var object = { 'a': 1, 'b': 2 };\n\t * var other = { 'c': 3, 'd': 4 };\n\t *\n\t * var values = _.memoize(_.values);\n\t * values(object);\n\t * // => [1, 2]\n\t *\n\t * values(other);\n\t * // => [3, 4]\n\t *\n\t * object.a = 2;\n\t * values(object);\n\t * // => [1, 2]\n\t *\n\t * // Modify the result cache.\n\t * values.cache.set(object, ['a', 'b']);\n\t * values(object);\n\t * // => ['a', 'b']\n\t *\n\t * // Replace `_.memoize.Cache`.\n\t * _.memoize.Cache = WeakMap;\n\t */\n\tfunction memoize(func, resolver) {\n\t  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n\t    throw new TypeError(FUNC_ERROR_TEXT);\n\t  }\n\t  var memoized = function() {\n\t    var args = arguments,\n\t        key = resolver ? resolver.apply(this, args) : args[0],\n\t        cache = memoized.cache;\n\n\t    if (cache.has(key)) {\n\t      return cache.get(key);\n\t    }\n\t    var result = func.apply(this, args);\n\t    memoized.cache = cache.set(key, result);\n\t    return result;\n\t  };\n\t  memoized.cache = new (memoize.Cache || MapCache);\n\t  return memoized;\n\t}\n\n\t// Assign cache to `_.memoize`.\n\tmemoize.Cache = MapCache;\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'fred' };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t  return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t  // The use of `Object#toString` avoids issues with the `typeof` operator\n\t  // in Safari 8 which returns 'object' for typed array and weak map constructors,\n\t  // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n\t  var tag = isObject(value) ? objectToString.call(value) : '';\n\t  return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t  var type = typeof value;\n\t  return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t  return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Checks if `value` is a native function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isNative(Array.prototype.push);\n\t * // => true\n\t *\n\t * _.isNative(_);\n\t * // => false\n\t */\n\tfunction isNative(value) {\n\t  if (!isObject(value)) {\n\t    return false;\n\t  }\n\t  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t  return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * Checks if `value` is classified as a `Symbol` primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isSymbol(Symbol.iterator);\n\t * // => true\n\t *\n\t * _.isSymbol('abc');\n\t * // => false\n\t */\n\tfunction isSymbol(value) {\n\t  return typeof value == 'symbol' ||\n\t    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n\t}\n\n\t/**\n\t * Converts `value` to a string if it's not one. An empty string is returned\n\t * for `null` and `undefined` values. The sign of `-0` is preserved.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to process.\n\t * @returns {string} Returns the string.\n\t * @example\n\t *\n\t * _.toString(null);\n\t * // => ''\n\t *\n\t * _.toString(-0);\n\t * // => '-0'\n\t *\n\t * _.toString([1, 2, 3]);\n\t * // => '1,2,3'\n\t */\n\tfunction toString(value) {\n\t  // Exit early for strings to avoid a performance hit in some environments.\n\t  if (typeof value == 'string') {\n\t    return value;\n\t  }\n\t  if (value == null) {\n\t    return '';\n\t  }\n\t  if (isSymbol(value)) {\n\t    return symbolToString ? symbolToString.call(value) : '';\n\t  }\n\t  var result = (value + '');\n\t  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n\t}\n\n\tmodule.exports = stringToPath;\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(92)(module), (function() { return this; }())))\n\n/***/ },\n/* 493 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * lodash 4.3.0 (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\tvar baseFilter = __webpack_require__(491),\n\t    baseIteratee = __webpack_require__(186);\n\n\t/**\n\t * A specialized version of `_.filter` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t */\n\tfunction arrayFilter(array, predicate) {\n\t  var index = -1,\n\t      length = array.length,\n\t      resIndex = 0,\n\t      result = [];\n\n\t  while (++index < length) {\n\t    var value = array[index];\n\t    if (predicate(value, index, array)) {\n\t      result[resIndex++] = value;\n\t    }\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * Iterates over elements of `collection`, returning an array of all elements\n\t * `predicate` returns truthy for. The predicate is invoked with three\n\t * arguments: (value, index|key, collection).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Collection\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Array|Function|Object|string} [predicate=_.identity]\n\t *  The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t * @example\n\t *\n\t * var users = [\n\t *   { 'user': 'barney', 'age': 36, 'active': true },\n\t *   { 'user': 'fred',   'age': 40, 'active': false }\n\t * ];\n\t *\n\t * _.filter(users, function(o) { return !o.active; });\n\t * // => objects for ['fred']\n\t *\n\t * // The `_.matches` iteratee shorthand.\n\t * _.filter(users, { 'age': 36, 'active': true });\n\t * // => objects for ['barney']\n\t *\n\t * // The `_.matchesProperty` iteratee shorthand.\n\t * _.filter(users, ['active', false]);\n\t * // => objects for ['fred']\n\t *\n\t * // The `_.property` iteratee shorthand.\n\t * _.filter(users, 'active');\n\t * // => objects for ['barney']\n\t */\n\tfunction filter(collection, predicate) {\n\t  var func = isArray(collection) ? arrayFilter : baseFilter;\n\t  return func(collection, baseIteratee(predicate, 3));\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @type {Function}\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified,\n\t *  else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\tmodule.exports = filter;\n\n\n/***/ },\n/* 494 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\n\tvar map = __webpack_require__(122);\n\tvar filter = __webpack_require__(493);\n\tvar convert = __webpack_require__(495);\n\tvar protocols = __webpack_require__(124);\n\tvar varint = __webpack_require__(128);\n\n\t// export codec\n\tmodule.exports = {\n\t  stringToStringTuples: stringToStringTuples,\n\t  stringTuplesToString: stringTuplesToString,\n\n\t  tuplesToStringTuples: tuplesToStringTuples,\n\t  stringTuplesToTuples: stringTuplesToTuples,\n\n\t  bufferToTuples: bufferToTuples,\n\t  tuplesToBuffer: tuplesToBuffer,\n\n\t  bufferToString: bufferToString,\n\t  stringToBuffer: stringToBuffer,\n\n\t  fromString: fromString,\n\t  fromBuffer: fromBuffer,\n\t  validateBuffer: validateBuffer,\n\t  isValidBuffer: isValidBuffer,\n\t  cleanPath: cleanPath,\n\n\t  ParseError: ParseError,\n\t  protoFromTuple: protoFromTuple,\n\n\t  sizeForAddr: sizeForAddr\n\t};\n\n\t// string -> [[str name, str addr]... ]\n\tfunction stringToStringTuples(str) {\n\t  var tuples = [];\n\t  var parts = str.split('/').slice(1); // skip first empty elem\n\t  if (parts.length === 1 && parts[0] === '') {\n\t    return [];\n\t  }\n\n\t  for (var p = 0; p < parts.length; p++) {\n\t    var part = parts[p];\n\t    var proto = protocols(part);\n\n\t    if (proto.size === 0) {\n\t      tuples.push([part]);\n\t      continue;\n\t    }\n\n\t    p++; // advance addr part\n\t    if (p >= parts.length) {\n\t      throw ParseError('invalid address: ' + str);\n\t    }\n\n\t    tuples.push([part, parts[p]]);\n\t  }\n\n\t  return tuples;\n\t}\n\n\t// [[str name, str addr]... ] -> string\n\tfunction stringTuplesToString(tuples) {\n\t  var parts = [];\n\t  map(tuples, function (tup) {\n\t    var proto = protoFromTuple(tup);\n\t    parts.push(proto.name);\n\t    if (tup.length > 1) {\n\t      parts.push(tup[1]);\n\t    }\n\t  });\n\n\t  return '/' + parts.join('/');\n\t}\n\n\t// [[str name, str addr]... ] -> [[int code, Buffer]... ]\n\tfunction stringTuplesToTuples(tuples) {\n\t  return map(tuples, function (tup) {\n\t    if (!Array.isArray(tup)) {\n\t      tup = [tup];\n\t    }\n\t    var proto = protoFromTuple(tup);\n\t    if (tup.length > 1) {\n\t      return [proto.code, convert.toBuffer(proto.code, tup[1])];\n\t    }\n\t    return [proto.code];\n\t  });\n\t}\n\n\t// [[int code, Buffer]... ] -> [[str name, str addr]... ]\n\tfunction tuplesToStringTuples(tuples) {\n\t  return map(tuples, function (tup) {\n\t    var proto = protoFromTuple(tup);\n\t    if (tup.length > 1) {\n\t      return [proto.code, convert.toString(proto.code, tup[1])];\n\t    }\n\t    return [proto.code];\n\t  });\n\t}\n\n\t// [[int code, Buffer ]... ] -> Buffer\n\tfunction tuplesToBuffer(tuples) {\n\t  return fromBuffer(Buffer.concat(map(tuples, function (tup) {\n\t    var proto = protoFromTuple(tup);\n\t    var buf = new Buffer(varint.encode(proto.code));\n\n\t    if (tup.length > 1) {\n\t      buf = Buffer.concat([buf, tup[1]]); // add address buffer\n\t    }\n\n\t    return buf;\n\t  })));\n\t}\n\n\tfunction sizeForAddr(p, addr) {\n\t  if (p.size > 0) {\n\t    return p.size / 8;\n\t  } else if (p.size === 0) {\n\t    return 0;\n\t  } else {\n\t    var size = varint.decode(addr);\n\t    return size + varint.decode.bytes;\n\t  }\n\t}\n\n\t// Buffer -> [[int code, Buffer ]... ]\n\tfunction bufferToTuples(buf) {\n\t  var tuples = [];\n\t  var i = 0;\n\t  while (i < buf.length) {\n\t    var code = varint.decode(buf, i);\n\t    var n = varint.decode.bytes;\n\n\t    var p = protocols(code);\n\n\t    var size = sizeForAddr(p, buf.slice(i + n));\n\n\t    if (size === 0) {\n\t      tuples.push([code]);\n\t      i += n;\n\t      continue;\n\t    }\n\n\t    var addr = buf.slice(i + n, i + n + size);\n\n\t    i += size + n;\n\n\t    if (i > buf.length) {\n\t      // did not end _exactly_ at buffer.length\n\t      throw ParseError('Invalid address buffer: ' + buf.toString('hex'));\n\t    }\n\n\t    // ok, tuple seems good.\n\t    tuples.push([code, addr]);\n\t  }\n\n\t  return tuples;\n\t}\n\n\t// Buffer -> String\n\tfunction bufferToString(buf) {\n\t  var a = bufferToTuples(buf);\n\t  var b = tuplesToStringTuples(a);\n\t  return stringTuplesToString(b);\n\t}\n\n\t// String -> Buffer\n\tfunction stringToBuffer(str) {\n\t  str = cleanPath(str);\n\t  var a = stringToStringTuples(str);\n\t  var b = stringTuplesToTuples(a);\n\t  return tuplesToBuffer(b);\n\t}\n\n\t// String -> Buffer\n\tfunction fromString(str) {\n\t  return stringToBuffer(str);\n\t}\n\n\t// Buffer -> Buffer\n\tfunction fromBuffer(buf) {\n\t  var err = validateBuffer(buf);\n\t  if (err) throw err;\n\t  return new Buffer(buf); // copy\n\t}\n\n\tfunction validateBuffer(buf) {\n\t  try {\n\t    bufferToTuples(buf); // try to parse. will throw if breaks\n\t  } catch (err) {\n\t    return err;\n\t  }\n\t}\n\n\tfunction isValidBuffer(buf) {\n\t  return validateBuffer(buf) === undefined;\n\t}\n\n\tfunction cleanPath(str) {\n\t  return '/' + filter(str.trim().split('/')).join('/');\n\t}\n\n\tfunction ParseError(str) {\n\t  return new Error('Error parsing address: ' + str);\n\t}\n\n\tfunction protoFromTuple(tup) {\n\t  var proto = protocols(tup[0]);\n\t  return proto;\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 495 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\n\tvar ip = __webpack_require__(484);\n\tvar protocols = __webpack_require__(124);\n\tvar bs58 = __webpack_require__(265);\n\tvar varint = __webpack_require__(128);\n\n\tmodule.exports = Convert;\n\n\t// converts (serializes) addresses\n\tfunction Convert(proto, a) {\n\t  if (a instanceof Buffer) {\n\t    return Convert.toString(proto, a);\n\t  } else {\n\t    return Convert.toBuffer(proto, a);\n\t  }\n\t}\n\n\tConvert.toString = function convertToString(proto, buf) {\n\t  proto = protocols(proto);\n\t  switch (proto.code) {\n\t    case 4: // ipv4\n\t    case 41:\n\t      // ipv6\n\t      return ip.toString(buf);\n\n\t    case 6: // tcp\n\t    case 17: // udp\n\t    case 33: // dccp\n\t    case 132:\n\t      // sctp\n\t      return buf2port(buf);\n\n\t    case 421:\n\t      // ipfs\n\t      return buf2mh(buf);\n\t    default:\n\t      return buf.toString('hex'); // no clue. convert to hex\n\t  }\n\t};\n\n\tConvert.toBuffer = function convertToBuffer(proto, str) {\n\t  proto = protocols(proto);\n\t  switch (proto.code) {\n\t    case 4: // ipv4\n\t    case 41:\n\t      // ipv6\n\t      return ip.toBuffer(str);\n\n\t    case 6: // tcp\n\t    case 17: // udp\n\t    case 33: // dccp\n\t    case 132:\n\t      // sctp\n\t      return port2buf(parseInt(str, 10));\n\n\t    case 421:\n\t      // ipfs\n\t      return mh2buf(str);\n\t    default:\n\t      return new Buffer(str, 'hex'); // no clue. convert from hex\n\t  }\n\t};\n\n\tfunction port2buf(port) {\n\t  var buf = new Buffer(2);\n\t  buf.writeUInt16BE(port, 0);\n\t  return buf;\n\t}\n\n\tfunction buf2port(buf) {\n\t  return buf.readUInt16BE(0);\n\t}\n\n\tfunction mh2buf(hash) {\n\t  // the address is a varint prefixed multihash string representation\n\t  var mh = new Buffer(bs58.decode(hash));\n\t  var size = new Buffer(varint.encode(mh.length));\n\t  return Buffer.concat([size, mh]);\n\t}\n\n\tfunction buf2mh(buf) {\n\t  var size = varint.decode(buf);\n\t  var address = buf.slice(varint.decode.bytes);\n\n\t  if (address.length !== size) {\n\t    throw new Error('inconsistent lengths');\n\t  }\n\n\t  return bs58.encode(address);\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 496 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\n\tvar map = __webpack_require__(122);\n\tvar extend = __webpack_require__(129);\n\tvar codec = __webpack_require__(494);\n\tvar protocols = __webpack_require__(124);\n\tvar NotImplemented = new Error('Sorry, Not Implemented Yet.');\n\tvar varint = __webpack_require__(128);\n\n\texports = module.exports = Multiaddr;\n\n\tfunction Multiaddr(addr) {\n\t  if (!(this instanceof Multiaddr)) {\n\t    return new Multiaddr(addr);\n\t  }\n\n\t  // defaults\n\t  if (!addr) {\n\t    addr = '';\n\t  }\n\n\t  if (addr instanceof Buffer) {\n\t    this.buffer = codec.fromBuffer(addr);\n\t  } else if (typeof addr === 'string' || addr instanceof String) {\n\t    this.buffer = codec.fromString(addr);\n\t  } else if (addr.buffer && addr.protos && addr.protoCodes) {\n\t    // Multiaddr\n\t    this.buffer = codec.fromBuffer(addr.buffer); // validate + copy buffer\n\t  } else {\n\t      throw new Error('addr must be a string, Buffer, or another Multiaddr');\n\t    }\n\t}\n\n\t// get the multiaddr protocols\n\tMultiaddr.prototype.toString = function toString() {\n\t  return codec.bufferToString(this.buffer);\n\t};\n\n\t// get the multiaddr as a convinent options object to be dropped in net.createConnection\n\tMultiaddr.prototype.toOptions = function toOptions() {\n\t  var opts = {};\n\t  var parsed = this.toString().split('/');\n\t  opts.family = parsed[1] === 'ip4' ? 'ipv4' : 'ipv6';\n\t  opts.host = parsed[2];\n\t  opts.port = parsed[4];\n\t  return opts;\n\t};\n\n\t// get the multiaddr protocols\n\tMultiaddr.prototype.inspect = function inspect() {\n\t  return '<Multiaddr ' + this.buffer.toString('hex') + ' - ' + codec.bufferToString(this.buffer) + '>';\n\t};\n\n\t// get the multiaddr protocols\n\tMultiaddr.prototype.protos = function protos() {\n\t  return map(this.protoCodes(), function (code) {\n\t    return extend(protocols(code));\n\t    // copy to prevent users from modifying the internal objs.\n\t  });\n\t};\n\n\t// get the multiaddr protocol codes\n\tMultiaddr.prototype.protoCodes = function protoCodes() {\n\t  var codes = [];\n\t  var buf = this.buffer;\n\t  var i = 0;\n\t  while (i < buf.length) {\n\t    var code = varint.decode(buf, i);\n\t    var n = varint.decode.bytes;\n\n\t    var p = protocols(code);\n\t    var size = codec.sizeForAddr(p, buf.slice(i + n));\n\n\t    i += size + n;\n\t    codes.push(code);\n\t  }\n\n\t  return codes;\n\t};\n\n\t// get the multiaddr protocol string names\n\tMultiaddr.prototype.protoNames = function protoNames() {\n\t  return map(this.protos(), function (proto) {\n\t    return proto.name;\n\t  });\n\t};\n\n\t// Returns a tuple of parts:\n\tMultiaddr.prototype.tuples = function tuples() {\n\t  return codec.bufferToTuples(this.buffer);\n\t};\n\n\t// Returns a tuple of string parts:\n\tMultiaddr.prototype.stringTuples = function stringTuples() {\n\t  var t = codec.bufferToTuples(this.buffer);\n\t  return codec.tuplesToStringTuples(t);\n\t};\n\n\tMultiaddr.prototype.encapsulate = function encapsulate(addr) {\n\t  addr = Multiaddr(addr);\n\t  return Multiaddr(this.toString() + addr.toString());\n\t};\n\n\tMultiaddr.prototype.decapsulate = function decapsulate(addr) {\n\t  addr = addr.toString();\n\t  var s = this.toString();\n\t  var i = s.lastIndexOf(addr);\n\t  if (i < 0) {\n\t    throw new Error('Address ' + this + ' does not contain subaddress: ' + addr);\n\t  }\n\t  return Multiaddr(s.slice(0, i));\n\t};\n\n\tMultiaddr.prototype.equals = function equals(addr) {\n\t  return this.buffer.equals(addr.buffer);\n\t};\n\n\t// get a node friendly address object\n\tMultiaddr.prototype.nodeAddress = function nodeAddress() {\n\t  if (!this.isThinWaistAddress()) {\n\t    throw new Error('Multiaddr must be \"thin waist\" address for nodeAddress.');\n\t  }\n\n\t  var codes = this.protoCodes();\n\t  var parts = this.toString().split('/').slice(1);\n\t  return {\n\t    family: codes[0] === 41 ? 'IPv6' : 'IPv4',\n\t    address: parts[1], // ip addr\n\t    port: parts[3] // tcp or udp port\n\t  };\n\t};\n\n\t// from a node friendly address object\n\tMultiaddr.fromNodeAddress = function fromNodeAddress(addr, transport) {\n\t  if (!addr) throw new Error('requires node address object');\n\t  if (!transport) throw new Error('requires transport protocol');\n\t  var ip = addr.family === 'IPv6' ? 'ip6' : 'ip4';\n\t  return Multiaddr('/' + [ip, addr.address, transport, addr.port].join('/'));\n\t};\n\n\t// returns whether this address is a standard combination:\n\t// /{IPv4, IPv6}/{TCP, UDP}\n\tMultiaddr.prototype.isThinWaistAddress = function isThinWaistAddress(addr) {\n\t  var protos = (addr || this).protos();\n\n\t  if (protos.length !== 2) {\n\t    return false;\n\t  }\n\n\t  if (protos[0].code !== 4 && protos[0].code !== 41) {\n\t    return false;\n\t  }\n\t  if (protos[1].code !== 6 && protos[1].code !== 17) {\n\t    return false;\n\t  }\n\t  return true;\n\t};\n\n\t// parses the \"stupid string\" format:\n\t// <proto><IPv>://<IP Addr>[:<proto port>]\n\t// udp4://1.2.3.4:5678\n\tMultiaddr.prototype.fromStupidString = function fromStupidString(str) {\n\t  throw NotImplemented;\n\t};\n\n\t// patch this in\n\tMultiaddr.protocols = protocols;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 497 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Sandwich = __webpack_require__(512).SandwichStream\n\tvar stream = __webpack_require__(12)\n\tvar inherits = __webpack_require__(2)\n\tvar isStream = __webpack_require__(485)\n\n\tvar CRNL = '\\r\\n'\n\n\tmodule.exports = Multipart\n\n\t/**\n\t * Multipart request constructor.\n\t * @constructor\n\t * @param {object} [opts]\n\t * @param {string} [opts.boundary] - The boundary to be used. If omitted one is generated.\n\t * @returns {function} Returns the multipart stream.\n\t */\n\tfunction Multipart(boundary) {\n\t\tif(!this instanceof Multipart) {\n\t\t\treturn new Multipart(boundary)\n\t\t}\n\n\t\tthis.boundary = boundary || Math.random().toString(36).slice(2)\n\n\t\tSandwich.call(this, {\n\t\t\thead: '--' + this.boundary + CRNL,\n\t\t\ttail: CRNL + '--' + this.boundary + '--',\n\t\t\tseparator: CRNL + '--' + this.boundary + CRNL\n\t\t})\n\n\t\tthis._add = this.add\n\t\tthis.add = this.addPart\n\t}\n\n\tinherits(Multipart, Sandwich)\n\n\t/**\n\t * Adds a new part to the request.\n\t * @param {object} [part={}]\n\t * @param {object} [part.headers={}]\n\t * @param {string|buffer|stream} [part.body=\\r\\n]\n\t * @returns {function} Returns the multipart stream.\n\t */\n\tMultipart.prototype.addPart = function(part) {\n\t\tpart = part || {}\n\t\tvar partStream = new stream.PassThrough()\n\n\t\tif(part.headers) {\n\t\t\tfor(var key in part.headers) {\n\t\t\t\tvar header = part.headers[key]\n\t\t\t\tpartStream.write(key + ': ' + header + CRNL)\n\t\t\t}\n\t\t}\n\n\t\tpartStream.write(CRNL)\n\n\t\tif(isStream(part.body)) {\n\t\t\tpart.body.pipe(partStream)\n\t\t} else {\n\t\t\tpartStream.end(part.body)\n\t\t}\n\n\t\tthis._add(partStream)\n\t}\n\n\n/***/ },\n/* 498 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n\t// Fedor, you are amazing.\n\n\tvar asn1 = __webpack_require__(72)\n\n\tvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n\t  this.seq().obj(\n\t    this.key('version').int(),\n\t    this.key('modulus').int(),\n\t    this.key('publicExponent').int(),\n\t    this.key('privateExponent').int(),\n\t    this.key('prime1').int(),\n\t    this.key('prime2').int(),\n\t    this.key('exponent1').int(),\n\t    this.key('exponent2').int(),\n\t    this.key('coefficient').int()\n\t  )\n\t})\n\texports.RSAPrivateKey = RSAPrivateKey\n\n\tvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n\t  this.seq().obj(\n\t    this.key('modulus').int(),\n\t    this.key('publicExponent').int()\n\t  )\n\t})\n\texports.RSAPublicKey = RSAPublicKey\n\n\tvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n\t  this.seq().obj(\n\t    this.key('algorithm').use(AlgorithmIdentifier),\n\t    this.key('subjectPublicKey').bitstr()\n\t  )\n\t})\n\texports.PublicKey = PublicKey\n\n\tvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n\t  this.seq().obj(\n\t    this.key('algorithm').objid(),\n\t    this.key('none').null_().optional(),\n\t    this.key('curve').objid().optional(),\n\t    this.key('params').seq().obj(\n\t      this.key('p').int(),\n\t      this.key('q').int(),\n\t      this.key('g').int()\n\t    ).optional()\n\t  )\n\t})\n\n\tvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n\t  this.seq().obj(\n\t    this.key('version').int(),\n\t    this.key('algorithm').use(AlgorithmIdentifier),\n\t    this.key('subjectPrivateKey').octstr()\n\t  )\n\t})\n\texports.PrivateKey = PrivateKeyInfo\n\tvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n\t  this.seq().obj(\n\t    this.key('algorithm').seq().obj(\n\t      this.key('id').objid(),\n\t      this.key('decrypt').seq().obj(\n\t        this.key('kde').seq().obj(\n\t          this.key('id').objid(),\n\t          this.key('kdeparams').seq().obj(\n\t            this.key('salt').octstr(),\n\t            this.key('iters').int()\n\t          )\n\t        ),\n\t        this.key('cipher').seq().obj(\n\t          this.key('algo').objid(),\n\t          this.key('iv').octstr()\n\t        )\n\t      )\n\t    ),\n\t    this.key('subjectPrivateKey').octstr()\n\t  )\n\t})\n\n\texports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\n\tvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n\t  this.seq().obj(\n\t    this.key('version').int(),\n\t    this.key('p').int(),\n\t    this.key('q').int(),\n\t    this.key('g').int(),\n\t    this.key('pub_key').int(),\n\t    this.key('priv_key').int()\n\t  )\n\t})\n\texports.DSAPrivateKey = DSAPrivateKey\n\n\texports.DSAparam = asn1.define('DSAparam', function () {\n\t  this.int()\n\t})\n\tvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n\t  this.seq().obj(\n\t    this.key('version').int(),\n\t    this.key('privateKey').octstr(),\n\t    this.key('parameters').optional().explicit(0).use(ECParameters),\n\t    this.key('publicKey').optional().explicit(1).bitstr()\n\t  )\n\t})\n\texports.ECPrivateKey = ECPrivateKey\n\tvar ECParameters = asn1.define('ECParameters', function () {\n\t  this.choice({\n\t    namedCurve: this.objid()\n\t  })\n\t})\n\n\texports.signature = asn1.define('signature', function () {\n\t  this.seq().obj(\n\t    this.key('r').int(),\n\t    this.key('s').int()\n\t  )\n\t})\n\n\n/***/ },\n/* 499 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {// adapted from https://github.com/apatil/pemstrip\n\tvar findProc = /Proc-Type: 4,ENCRYPTED\\r?\\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\\r?\\n\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n/m\n\tvar startRegex = /^-----BEGIN (.*) KEY-----\\r?\\n/m\n\tvar fullRegex = /^-----BEGIN (.*) KEY-----\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n-----END \\1 KEY-----$/m\n\tvar evp = __webpack_require__(89)\n\tvar ciphers = __webpack_require__(93)\n\tmodule.exports = function (okey, password) {\n\t  var key = okey.toString()\n\t  var match = key.match(findProc)\n\t  var decrypted\n\t  if (!match) {\n\t    var match2 = key.match(fullRegex)\n\t    decrypted = new Buffer(match2[2].replace(/\\r?\\n/g, ''), 'base64')\n\t  } else {\n\t    var suite = 'aes' + match[1]\n\t    var iv = new Buffer(match[2], 'hex')\n\t    var cipherText = new Buffer(match[3].replace(/\\r?\\n/g, ''), 'base64')\n\t    var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n\t    var out = []\n\t    var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n\t    out.push(cipher.update(cipherText))\n\t    out.push(cipher.final())\n\t    decrypted = Buffer.concat(out)\n\t  }\n\t  var tag = key.match(startRegex)[1] + ' KEY'\n\t  return {\n\t    tag: tag,\n\t    data: decrypted\n\t  }\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 500 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports.publicEncrypt = __webpack_require__(502);\n\texports.privateDecrypt = __webpack_require__(501);\n\n\texports.privateEncrypt = function privateEncrypt(key, buf) {\n\t  return exports.publicEncrypt(key, buf, true);\n\t};\n\n\texports.publicDecrypt = function publicDecrypt(key, buf) {\n\t  return exports.privateDecrypt(key, buf, true);\n\t};\n\n/***/ },\n/* 501 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var parseKeys = __webpack_require__(90);\n\tvar mgf = __webpack_require__(192);\n\tvar xor = __webpack_require__(194);\n\tvar bn = __webpack_require__(11);\n\tvar crt = __webpack_require__(94);\n\tvar createHash = __webpack_require__(58);\n\tvar withPublic = __webpack_require__(193);\n\tmodule.exports = function privateDecrypt(private_key, enc, reverse) {\n\t  var padding;\n\t  if (private_key.padding) {\n\t    padding = private_key.padding;\n\t  } else if (reverse) {\n\t    padding = 1;\n\t  } else {\n\t    padding = 4;\n\t  }\n\t  \n\t  var key = parseKeys(private_key);\n\t  var k = key.modulus.byteLength();\n\t  if (enc.length > k || new bn(enc).cmp(key.modulus) >= 0) {\n\t    throw new Error('decryption error');\n\t  }\n\t  var msg;\n\t  if (reverse) {\n\t    msg = withPublic(new bn(enc), key);\n\t  } else {\n\t    msg = crt(enc, key);\n\t  }\n\t  var zBuffer = new Buffer(k - msg.length);\n\t  zBuffer.fill(0);\n\t  msg = Buffer.concat([zBuffer, msg], k);\n\t  if (padding === 4) {\n\t    return oaep(key, msg);\n\t  } else if (padding === 1) {\n\t    return pkcs1(key, msg, reverse);\n\t  } else if (padding === 3) {\n\t    return msg;\n\t  } else {\n\t    throw new Error('unknown padding');\n\t  }\n\t};\n\n\tfunction oaep(key, msg){\n\t  var n = key.modulus;\n\t  var k = key.modulus.byteLength();\n\t  var mLen = msg.length;\n\t  var iHash = createHash('sha1').update(new Buffer('')).digest();\n\t  var hLen = iHash.length;\n\t  var hLen2 = 2 * hLen;\n\t  if (msg[0] !== 0) {\n\t    throw new Error('decryption error');\n\t  }\n\t  var maskedSeed = msg.slice(1, hLen + 1);\n\t  var maskedDb =  msg.slice(hLen + 1);\n\t  var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n\t  var db = xor(maskedDb, mgf(seed, k - hLen - 1));\n\t  if (compare(iHash, db.slice(0, hLen))) {\n\t    throw new Error('decryption error');\n\t  }\n\t  var i = hLen;\n\t  while (db[i] === 0) {\n\t    i++;\n\t  }\n\t  if (db[i++] !== 1) {\n\t    throw new Error('decryption error');\n\t  }\n\t  return db.slice(i);\n\t}\n\n\tfunction pkcs1(key, msg, reverse){\n\t  var p1 = msg.slice(0, 2);\n\t  var i = 2;\n\t  var status = 0;\n\t  while (msg[i++] !== 0) {\n\t    if (i >= msg.length) {\n\t      status++;\n\t      break;\n\t    }\n\t  }\n\t  var ps = msg.slice(2, i - 1);\n\t  var p2 = msg.slice(i - 1, i);\n\n\t  if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)){\n\t    status++;\n\t  }\n\t  if (ps.length < 8) {\n\t    status++;\n\t  }\n\t  if (status) {\n\t    throw new Error('decryption error');\n\t  }\n\t  return  msg.slice(i);\n\t}\n\tfunction compare(a, b){\n\t  a = new Buffer(a);\n\t  b = new Buffer(b);\n\t  var dif = 0;\n\t  var len = a.length;\n\t  if (a.length !== b.length) {\n\t    dif++;\n\t    len = Math.min(a.length, b.length);\n\t  }\n\t  var i = -1;\n\t  while (++i < len) {\n\t    dif += (a[i] ^ b[i]);\n\t  }\n\t  return dif;\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 502 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var parseKeys = __webpack_require__(90);\n\tvar randomBytes = __webpack_require__(70);\n\tvar createHash = __webpack_require__(58);\n\tvar mgf = __webpack_require__(192);\n\tvar xor = __webpack_require__(194);\n\tvar bn = __webpack_require__(11);\n\tvar withPublic = __webpack_require__(193);\n\tvar crt = __webpack_require__(94);\n\n\tvar constants = {\n\t  RSA_PKCS1_OAEP_PADDING: 4,\n\t  RSA_PKCS1_PADDIN: 1,\n\t  RSA_NO_PADDING: 3\n\t};\n\n\tmodule.exports = function publicEncrypt(public_key, msg, reverse) {\n\t  var padding;\n\t  if (public_key.padding) {\n\t    padding = public_key.padding;\n\t  } else if (reverse) {\n\t    padding = 1;\n\t  } else {\n\t    padding = 4;\n\t  }\n\t  var key = parseKeys(public_key);\n\t  var paddedMsg;\n\t  if (padding === 4) {\n\t    paddedMsg = oaep(key, msg);\n\t  } else if (padding === 1) {\n\t    paddedMsg = pkcs1(key, msg, reverse);\n\t  } else if (padding === 3) {\n\t    paddedMsg = new bn(msg);\n\t    if (paddedMsg.cmp(key.modulus) >= 0) {\n\t      throw new Error('data too long for modulus');\n\t    }\n\t  } else {\n\t    throw new Error('unknown padding');\n\t  }\n\t  if (reverse) {\n\t    return crt(paddedMsg, key);\n\t  } else {\n\t    return withPublic(paddedMsg, key);\n\t  }\n\t};\n\n\tfunction oaep(key, msg){\n\t  var k = key.modulus.byteLength();\n\t  var mLen = msg.length;\n\t  var iHash = createHash('sha1').update(new Buffer('')).digest();\n\t  var hLen = iHash.length;\n\t  var hLen2 = 2 * hLen;\n\t  if (mLen > k - hLen2 - 2) {\n\t    throw new Error('message too long');\n\t  }\n\t  var ps = new Buffer(k - mLen - hLen2 - 2);\n\t  ps.fill(0);\n\t  var dblen = k - hLen - 1;\n\t  var seed = randomBytes(hLen);\n\t  var maskedDb = xor(Buffer.concat([iHash, ps, new Buffer([1]), msg], dblen), mgf(seed, dblen));\n\t  var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n\t  return new bn(Buffer.concat([new Buffer([0]), maskedSeed, maskedDb], k));\n\t}\n\tfunction pkcs1(key, msg, reverse){\n\t  var mLen = msg.length;\n\t  var k = key.modulus.byteLength();\n\t  if (mLen > k - 11) {\n\t    throw new Error('message too long');\n\t  }\n\t  var ps;\n\t  if (reverse) {\n\t    ps = new Buffer(k - mLen - 3);\n\t    ps.fill(0xff);\n\t  } else {\n\t    ps = nonZero(k - mLen - 3);\n\t  }\n\t  return new bn(Buffer.concat([new Buffer([0, reverse?1:2]), ps, new Buffer([0]), msg], k));\n\t}\n\tfunction nonZero(len, crypto) {\n\t  var out = new Buffer(len);\n\t  var i = 0;\n\t  var cache = randomBytes(len*2);\n\t  var cur = 0;\n\t  var num;\n\t  while (i < len) {\n\t    if (cur === cache.length) {\n\t      cache = randomBytes(len*2);\n\t      cur = 0;\n\t    }\n\t    num = cache[cur++];\n\t    if (num) {\n\t      out[i++] = num;\n\t    }\n\t  }\n\t  return out;\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 503 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */\n\t;(function(root) {\n\n\t\t/** Detect free variables */\n\t\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t\t!exports.nodeType && exports;\n\t\tvar freeModule = typeof module == 'object' && module &&\n\t\t\t!module.nodeType && module;\n\t\tvar freeGlobal = typeof global == 'object' && global;\n\t\tif (\n\t\t\tfreeGlobal.global === freeGlobal ||\n\t\t\tfreeGlobal.window === freeGlobal ||\n\t\t\tfreeGlobal.self === freeGlobal\n\t\t) {\n\t\t\troot = freeGlobal;\n\t\t}\n\n\t\t/**\n\t\t * The `punycode` object.\n\t\t * @name punycode\n\t\t * @type Object\n\t\t */\n\t\tvar punycode,\n\n\t\t/** Highest positive signed 32-bit float value */\n\t\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t\t/** Bootstring parameters */\n\t\tbase = 36,\n\t\ttMin = 1,\n\t\ttMax = 26,\n\t\tskew = 38,\n\t\tdamp = 700,\n\t\tinitialBias = 72,\n\t\tinitialN = 128, // 0x80\n\t\tdelimiter = '-', // '\\x2D'\n\n\t\t/** Regular expressions */\n\t\tregexPunycode = /^xn--/,\n\t\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\t\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t\t/** Error messages */\n\t\terrors = {\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t\t'invalid-input': 'Invalid input'\n\t\t},\n\n\t\t/** Convenience shortcuts */\n\t\tbaseMinusTMin = base - tMin,\n\t\tfloor = Math.floor,\n\t\tstringFromCharCode = String.fromCharCode,\n\n\t\t/** Temporary variable */\n\t\tkey;\n\n\t\t/*--------------------------------------------------------------------------*/\n\n\t\t/**\n\t\t * A generic error utility function.\n\t\t * @private\n\t\t * @param {String} type The error type.\n\t\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t\t */\n\t\tfunction error(type) {\n\t\t\tthrow new RangeError(errors[type]);\n\t\t}\n\n\t\t/**\n\t\t * A generic `Array#map` utility function.\n\t\t * @private\n\t\t * @param {Array} array The array to iterate over.\n\t\t * @param {Function} callback The function that gets called for every array\n\t\t * item.\n\t\t * @returns {Array} A new array of values returned by the callback function.\n\t\t */\n\t\tfunction map(array, fn) {\n\t\t\tvar length = array.length;\n\t\t\tvar result = [];\n\t\t\twhile (length--) {\n\t\t\t\tresult[length] = fn(array[length]);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\t/**\n\t\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t\t * addresses.\n\t\t * @private\n\t\t * @param {String} domain The domain name or email address.\n\t\t * @param {Function} callback The function that gets called for every\n\t\t * character.\n\t\t * @returns {Array} A new string of characters returned by the callback\n\t\t * function.\n\t\t */\n\t\tfunction mapDomain(string, fn) {\n\t\t\tvar parts = string.split('@');\n\t\t\tvar result = '';\n\t\t\tif (parts.length > 1) {\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\t\tresult = parts[0] + '@';\n\t\t\t\tstring = parts[1];\n\t\t\t}\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\t\tvar labels = string.split('.');\n\t\t\tvar encoded = map(labels, fn).join('.');\n\t\t\treturn result + encoded;\n\t\t}\n\n\t\t/**\n\t\t * Creates an array containing the numeric code points of each Unicode\n\t\t * character in the string. While JavaScript uses UCS-2 internally,\n\t\t * this function will convert a pair of surrogate halves (each of which\n\t\t * UCS-2 exposes as separate characters) into a single code point,\n\t\t * matching UTF-16.\n\t\t * @see `punycode.ucs2.encode`\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode.ucs2\n\t\t * @name decode\n\t\t * @param {String} string The Unicode input string (UCS-2).\n\t\t * @returns {Array} The new array of code points.\n\t\t */\n\t\tfunction ucs2decode(string) {\n\t\t\tvar output = [],\n\t\t\t    counter = 0,\n\t\t\t    length = string.length,\n\t\t\t    value,\n\t\t\t    extra;\n\t\t\twhile (counter < length) {\n\t\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\t\toutput.push(value);\n\t\t\t\t\t\tcounter--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t\t * Creates a string based on an array of numeric code points.\n\t\t * @see `punycode.ucs2.decode`\n\t\t * @memberOf punycode.ucs2\n\t\t * @name encode\n\t\t * @param {Array} codePoints The array of numeric code points.\n\t\t * @returns {String} The new Unicode string (UCS-2).\n\t\t */\n\t\tfunction ucs2encode(array) {\n\t\t\treturn map(array, function(value) {\n\t\t\t\tvar output = '';\n\t\t\t\tif (value > 0xFFFF) {\n\t\t\t\t\tvalue -= 0x10000;\n\t\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t\t}\n\t\t\t\toutput += stringFromCharCode(value);\n\t\t\t\treturn output;\n\t\t\t}).join('');\n\t\t}\n\n\t\t/**\n\t\t * Converts a basic code point into a digit/integer.\n\t\t * @see `digitToBasic()`\n\t\t * @private\n\t\t * @param {Number} codePoint The basic numeric code point value.\n\t\t * @returns {Number} The numeric value of a basic code point (for use in\n\t\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t\t * the code point does not represent a value.\n\t\t */\n\t\tfunction basicToDigit(codePoint) {\n\t\t\tif (codePoint - 48 < 10) {\n\t\t\t\treturn codePoint - 22;\n\t\t\t}\n\t\t\tif (codePoint - 65 < 26) {\n\t\t\t\treturn codePoint - 65;\n\t\t\t}\n\t\t\tif (codePoint - 97 < 26) {\n\t\t\t\treturn codePoint - 97;\n\t\t\t}\n\t\t\treturn base;\n\t\t}\n\n\t\t/**\n\t\t * Converts a digit/integer into a basic code point.\n\t\t * @see `basicToDigit()`\n\t\t * @private\n\t\t * @param {Number} digit The numeric value of a basic code point.\n\t\t * @returns {Number} The basic code point whose value (when used for\n\t\t * representing integers) is `digit`, which needs to be in the range\n\t\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t\t * used; else, the lowercase form is used. The behavior is undefined\n\t\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t\t */\n\t\tfunction digitToBasic(digit, flag) {\n\t\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t\t// 26..35 map to ASCII 0..9\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t\t}\n\n\t\t/**\n\t\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t\t * @private\n\t\t */\n\t\tfunction adapt(delta, numPoints, firstTime) {\n\t\t\tvar k = 0;\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\t\tdelta += floor(delta / numPoints);\n\t\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t\t}\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t\t}\n\n\t\t/**\n\t\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t\t * symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t\t * @returns {String} The resulting string of Unicode symbols.\n\t\t */\n\t\tfunction decode(input) {\n\t\t\t// Don't use UCS-2\n\t\t\tvar output = [],\n\t\t\t    inputLength = input.length,\n\t\t\t    out,\n\t\t\t    i = 0,\n\t\t\t    n = initialN,\n\t\t\t    bias = initialBias,\n\t\t\t    basic,\n\t\t\t    j,\n\t\t\t    index,\n\t\t\t    oldi,\n\t\t\t    w,\n\t\t\t    k,\n\t\t\t    digit,\n\t\t\t    t,\n\t\t\t    /** Cached calculation results */\n\t\t\t    baseMinusT;\n\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t\t// the first basic code points to the output.\n\n\t\t\tbasic = input.lastIndexOf(delimiter);\n\t\t\tif (basic < 0) {\n\t\t\t\tbasic = 0;\n\t\t\t}\n\n\t\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t\t// if it's not a basic code point\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\t\terror('not-basic');\n\t\t\t\t}\n\t\t\t\toutput.push(input.charCodeAt(j));\n\t\t\t}\n\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t\t// points were copied; start at the beginning otherwise.\n\n\t\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t\t// value at the end to obtain `delta`.\n\t\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\t\terror('invalid-input');\n\t\t\t\t\t}\n\n\t\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\n\t\t\t\t\ti += digit * w;\n\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\t\tif (digit < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\n\t\t\t\t\tw *= baseMinusT;\n\n\t\t\t\t}\n\n\t\t\t\tout = output.length + 1;\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tn += floor(i / out);\n\t\t\t\ti %= out;\n\n\t\t\t\t// Insert `n` at position `i` of the output\n\t\t\t\toutput.splice(i++, 0, n);\n\n\t\t\t}\n\n\t\t\treturn ucs2encode(output);\n\t\t}\n\n\t\t/**\n\t\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t\t * Punycode string of ASCII-only symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The string of Unicode symbols.\n\t\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t\t */\n\t\tfunction encode(input) {\n\t\t\tvar n,\n\t\t\t    delta,\n\t\t\t    handledCPCount,\n\t\t\t    basicLength,\n\t\t\t    bias,\n\t\t\t    j,\n\t\t\t    m,\n\t\t\t    q,\n\t\t\t    k,\n\t\t\t    t,\n\t\t\t    currentValue,\n\t\t\t    output = [],\n\t\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t\t    inputLength,\n\t\t\t    /** Cached calculation results */\n\t\t\t    handledCPCountPlusOne,\n\t\t\t    baseMinusT,\n\t\t\t    qMinusT;\n\n\t\t\t// Convert the input in UCS-2 to Unicode\n\t\t\tinput = ucs2decode(input);\n\n\t\t\t// Cache the length\n\t\t\tinputLength = input.length;\n\n\t\t\t// Initialize the state\n\t\t\tn = initialN;\n\t\t\tdelta = 0;\n\t\t\tbias = initialBias;\n\n\t\t\t// Handle the basic code points\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue < 0x80) {\n\t\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thandledCPCount = basicLength = output.length;\n\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t\t// `basicLength` is the number of basic code points.\n\n\t\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\t\tif (basicLength) {\n\t\t\t\toutput.push(delimiter);\n\t\t\t}\n\n\t\t\t// Main encoding loop:\n\t\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t\t// larger one:\n\t\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\t\tm = currentValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t\t// but guard against overflow\n\t\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\t\tn = m;\n\n\t\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\t\tdelta = 0;\n\t\t\t\t\t\t++handledCPCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t++delta;\n\t\t\t\t++n;\n\n\t\t\t}\n\t\t\treturn output.join('');\n\t\t}\n\n\t\t/**\n\t\t * Converts a Punycode string representing a domain name or an email address\n\t\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t\t * it doesn't matter if you call it on a string that has already been\n\t\t * converted to Unicode.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycoded domain name or email address to\n\t\t * convert to Unicode.\n\t\t * @returns {String} The Unicode representation of the given Punycode\n\t\t * string.\n\t\t */\n\t\tfunction toUnicode(input) {\n\t\t\treturn mapDomain(input, function(string) {\n\t\t\t\treturn regexPunycode.test(string)\n\t\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t\t: string;\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Converts a Unicode string representing a domain name or an email address to\n\t\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t\t * ASCII.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The domain name or email address to convert, as a\n\t\t * Unicode string.\n\t\t * @returns {String} The Punycode representation of the given domain name or\n\t\t * email address.\n\t\t */\n\t\tfunction toASCII(input) {\n\t\t\treturn mapDomain(input, function(string) {\n\t\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t\t: string;\n\t\t\t});\n\t\t}\n\n\t\t/*--------------------------------------------------------------------------*/\n\n\t\t/** Define the public API */\n\t\tpunycode = {\n\t\t\t/**\n\t\t\t * A string representing the current Punycode.js version number.\n\t\t\t * @memberOf punycode\n\t\t\t * @type String\n\t\t\t */\n\t\t\t'version': '1.4.1',\n\t\t\t/**\n\t\t\t * An object of methods to convert from JavaScript's internal character\n\t\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t\t * @memberOf punycode\n\t\t\t * @type Object\n\t\t\t */\n\t\t\t'ucs2': {\n\t\t\t\t'decode': ucs2decode,\n\t\t\t\t'encode': ucs2encode\n\t\t\t},\n\t\t\t'decode': decode,\n\t\t\t'encode': encode,\n\t\t\t'toASCII': toASCII,\n\t\t\t'toUnicode': toUnicode\n\t\t};\n\n\t\t/** Expose `punycode` */\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t\t// like the following:\n\t\tif (\n\t\t\ttrue\n\t\t) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\t\treturn punycode;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (freeExports && freeModule) {\n\t\t\tif (module.exports == freeExports) {\n\t\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\t\tfreeModule.exports = punycode;\n\t\t\t} else {\n\t\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\t\tfor (key in punycode) {\n\t\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// in Rhino or a web browser\n\t\t\troot.punycode = punycode;\n\t\t}\n\n\t}(this));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(92)(module), (function() { return this; }())))\n\n/***/ },\n/* 504 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t'use strict';\n\n\t// If obj.hasOwnProperty has been overridden, then calling\n\t// obj.hasOwnProperty(prop) will break.\n\t// See: https://github.com/joyent/node/issues/1707\n\tfunction hasOwnProperty(obj, prop) {\n\t  return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n\n\tmodule.exports = function(qs, sep, eq, options) {\n\t  sep = sep || '&';\n\t  eq = eq || '=';\n\t  var obj = {};\n\n\t  if (typeof qs !== 'string' || qs.length === 0) {\n\t    return obj;\n\t  }\n\n\t  var regexp = /\\+/g;\n\t  qs = qs.split(sep);\n\n\t  var maxKeys = 1000;\n\t  if (options && typeof options.maxKeys === 'number') {\n\t    maxKeys = options.maxKeys;\n\t  }\n\n\t  var len = qs.length;\n\t  // maxKeys <= 0 means that we should not limit keys count\n\t  if (maxKeys > 0 && len > maxKeys) {\n\t    len = maxKeys;\n\t  }\n\n\t  for (var i = 0; i < len; ++i) {\n\t    var x = qs[i].replace(regexp, '%20'),\n\t        idx = x.indexOf(eq),\n\t        kstr, vstr, k, v;\n\n\t    if (idx >= 0) {\n\t      kstr = x.substr(0, idx);\n\t      vstr = x.substr(idx + 1);\n\t    } else {\n\t      kstr = x;\n\t      vstr = '';\n\t    }\n\n\t    k = decodeURIComponent(kstr);\n\t    v = decodeURIComponent(vstr);\n\n\t    if (!hasOwnProperty(obj, k)) {\n\t      obj[k] = v;\n\t    } else if (isArray(obj[k])) {\n\t      obj[k].push(v);\n\t    } else {\n\t      obj[k] = [obj[k], v];\n\t    }\n\t  }\n\n\t  return obj;\n\t};\n\n\tvar isArray = Array.isArray || function (xs) {\n\t  return Object.prototype.toString.call(xs) === '[object Array]';\n\t};\n\n\n/***/ },\n/* 505 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t'use strict';\n\n\tvar stringifyPrimitive = function(v) {\n\t  switch (typeof v) {\n\t    case 'string':\n\t      return v;\n\n\t    case 'boolean':\n\t      return v ? 'true' : 'false';\n\n\t    case 'number':\n\t      return isFinite(v) ? v : '';\n\n\t    default:\n\t      return '';\n\t  }\n\t};\n\n\tmodule.exports = function(obj, sep, eq, name) {\n\t  sep = sep || '&';\n\t  eq = eq || '=';\n\t  if (obj === null) {\n\t    obj = undefined;\n\t  }\n\n\t  if (typeof obj === 'object') {\n\t    return map(objectKeys(obj), function(k) {\n\t      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\t      if (isArray(obj[k])) {\n\t        return map(obj[k], function(v) {\n\t          return ks + encodeURIComponent(stringifyPrimitive(v));\n\t        }).join(sep);\n\t      } else {\n\t        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n\t      }\n\t    }).join(sep);\n\n\t  }\n\n\t  if (!name) return '';\n\t  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n\t         encodeURIComponent(stringifyPrimitive(obj));\n\t};\n\n\tvar isArray = Array.isArray || function (xs) {\n\t  return Object.prototype.toString.call(xs) === '[object Array]';\n\t};\n\n\tfunction map (xs, f) {\n\t  if (xs.map) return xs.map(f);\n\t  var res = [];\n\t  for (var i = 0; i < xs.length; i++) {\n\t    res.push(f(xs[i], i));\n\t  }\n\t  return res;\n\t}\n\n\tvar objectKeys = Object.keys || function (obj) {\n\t  var res = [];\n\t  for (var key in obj) {\n\t    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n\t  }\n\t  return res;\n\t};\n\n\n/***/ },\n/* 506 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\texports.decode = exports.parse = __webpack_require__(504);\n\texports.encode = exports.stringify = __webpack_require__(505);\n\n\n/***/ },\n/* 507 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tmodule.exports = Readable;\n\n\t/*<replacement>*/\n\tvar isArray = __webpack_require__(486);\n\t/*</replacement>*/\n\n\n\t/*<replacement>*/\n\tvar Buffer = __webpack_require__(1).Buffer;\n\t/*</replacement>*/\n\n\tReadable.ReadableState = ReadableState;\n\n\tvar EE = __webpack_require__(32).EventEmitter;\n\n\t/*<replacement>*/\n\tif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n\t  return emitter.listeners(type).length;\n\t};\n\t/*</replacement>*/\n\n\tvar Stream = __webpack_require__(12);\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tvar StringDecoder;\n\n\tutil.inherits(Readable, Stream);\n\n\tfunction ReadableState(options, stream) {\n\t  options = options || {};\n\n\t  // the point at which it stops calling _read() to fill the buffer\n\t  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\t  var hwm = options.highWaterMark;\n\t  this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n\t  // cast to ints.\n\t  this.highWaterMark = ~~this.highWaterMark;\n\n\t  this.buffer = [];\n\t  this.length = 0;\n\t  this.pipes = null;\n\t  this.pipesCount = 0;\n\t  this.flowing = false;\n\t  this.ended = false;\n\t  this.endEmitted = false;\n\t  this.reading = false;\n\n\t  // In streams that never have any data, and do push(null) right away,\n\t  // the consumer can miss the 'end' event if they do some I/O before\n\t  // consuming the stream.  So, we don't emit('end') until some reading\n\t  // happens.\n\t  this.calledRead = false;\n\n\t  // a flag to be able to tell if the onwrite cb is called immediately,\n\t  // or on a later tick.  We set this to true at first, becuase any\n\t  // actions that shouldn't happen until \"later\" should generally also\n\t  // not happen before the first write call.\n\t  this.sync = true;\n\n\t  // whenever we return null, then we set a flag to say\n\t  // that we're awaiting a 'readable' event emission.\n\t  this.needReadable = false;\n\t  this.emittedReadable = false;\n\t  this.readableListening = false;\n\n\n\t  // object stream flag. Used to make read(n) ignore n and to\n\t  // make all the buffer merging and length checks go away\n\t  this.objectMode = !!options.objectMode;\n\n\t  // Crypto is kind of old and crusty.  Historically, its default string\n\t  // encoding is 'binary' so we have to make this configurable.\n\t  // Everything else in the universe uses 'utf8', though.\n\t  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n\t  // when piping, we only care about 'readable' events that happen\n\t  // after read()ing all the bytes and not getting any pushback.\n\t  this.ranOut = false;\n\n\t  // the number of writers that are awaiting a drain event in .pipe()s\n\t  this.awaitDrain = 0;\n\n\t  // if true, a maybeReadMore has been scheduled\n\t  this.readingMore = false;\n\n\t  this.decoder = null;\n\t  this.encoding = null;\n\t  if (options.encoding) {\n\t    if (!StringDecoder)\n\t      StringDecoder = __webpack_require__(50).StringDecoder;\n\t    this.decoder = new StringDecoder(options.encoding);\n\t    this.encoding = options.encoding;\n\t  }\n\t}\n\n\tfunction Readable(options) {\n\t  if (!(this instanceof Readable))\n\t    return new Readable(options);\n\n\t  this._readableState = new ReadableState(options, this);\n\n\t  // legacy\n\t  this.readable = true;\n\n\t  Stream.call(this);\n\t}\n\n\t// Manually shove something into the read() buffer.\n\t// This returns true if the highWaterMark has not been hit yet,\n\t// similar to how Writable.write() returns true if you should\n\t// write() some more.\n\tReadable.prototype.push = function(chunk, encoding) {\n\t  var state = this._readableState;\n\n\t  if (typeof chunk === 'string' && !state.objectMode) {\n\t    encoding = encoding || state.defaultEncoding;\n\t    if (encoding !== state.encoding) {\n\t      chunk = new Buffer(chunk, encoding);\n\t      encoding = '';\n\t    }\n\t  }\n\n\t  return readableAddChunk(this, state, chunk, encoding, false);\n\t};\n\n\t// Unshift should *always* be something directly out of read()\n\tReadable.prototype.unshift = function(chunk) {\n\t  var state = this._readableState;\n\t  return readableAddChunk(this, state, chunk, '', true);\n\t};\n\n\tfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n\t  var er = chunkInvalid(state, chunk);\n\t  if (er) {\n\t    stream.emit('error', er);\n\t  } else if (chunk === null || chunk === undefined) {\n\t    state.reading = false;\n\t    if (!state.ended)\n\t      onEofChunk(stream, state);\n\t  } else if (state.objectMode || chunk && chunk.length > 0) {\n\t    if (state.ended && !addToFront) {\n\t      var e = new Error('stream.push() after EOF');\n\t      stream.emit('error', e);\n\t    } else if (state.endEmitted && addToFront) {\n\t      var e = new Error('stream.unshift() after end event');\n\t      stream.emit('error', e);\n\t    } else {\n\t      if (state.decoder && !addToFront && !encoding)\n\t        chunk = state.decoder.write(chunk);\n\n\t      // update the buffer info.\n\t      state.length += state.objectMode ? 1 : chunk.length;\n\t      if (addToFront) {\n\t        state.buffer.unshift(chunk);\n\t      } else {\n\t        state.reading = false;\n\t        state.buffer.push(chunk);\n\t      }\n\n\t      if (state.needReadable)\n\t        emitReadable(stream);\n\n\t      maybeReadMore(stream, state);\n\t    }\n\t  } else if (!addToFront) {\n\t    state.reading = false;\n\t  }\n\n\t  return needMoreData(state);\n\t}\n\n\n\n\t// if it's past the high water mark, we can push in some more.\n\t// Also, if we have no data yet, we can stand some\n\t// more bytes.  This is to work around cases where hwm=0,\n\t// such as the repl.  Also, if the push() triggered a\n\t// readable event, and the user called read(largeNumber) such that\n\t// needReadable was set, then we ought to push more, so that another\n\t// 'readable' event will be triggered.\n\tfunction needMoreData(state) {\n\t  return !state.ended &&\n\t         (state.needReadable ||\n\t          state.length < state.highWaterMark ||\n\t          state.length === 0);\n\t}\n\n\t// backwards compatibility.\n\tReadable.prototype.setEncoding = function(enc) {\n\t  if (!StringDecoder)\n\t    StringDecoder = __webpack_require__(50).StringDecoder;\n\t  this._readableState.decoder = new StringDecoder(enc);\n\t  this._readableState.encoding = enc;\n\t};\n\n\t// Don't raise the hwm > 128MB\n\tvar MAX_HWM = 0x800000;\n\tfunction roundUpToNextPowerOf2(n) {\n\t  if (n >= MAX_HWM) {\n\t    n = MAX_HWM;\n\t  } else {\n\t    // Get the next highest power of 2\n\t    n--;\n\t    for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n\t    n++;\n\t  }\n\t  return n;\n\t}\n\n\tfunction howMuchToRead(n, state) {\n\t  if (state.length === 0 && state.ended)\n\t    return 0;\n\n\t  if (state.objectMode)\n\t    return n === 0 ? 0 : 1;\n\n\t  if (n === null || isNaN(n)) {\n\t    // only flow one buffer at a time\n\t    if (state.flowing && state.buffer.length)\n\t      return state.buffer[0].length;\n\t    else\n\t      return state.length;\n\t  }\n\n\t  if (n <= 0)\n\t    return 0;\n\n\t  // If we're asking for more than the target buffer level,\n\t  // then raise the water mark.  Bump up to the next highest\n\t  // power of 2, to prevent increasing it excessively in tiny\n\t  // amounts.\n\t  if (n > state.highWaterMark)\n\t    state.highWaterMark = roundUpToNextPowerOf2(n);\n\n\t  // don't have that much.  return null, unless we've ended.\n\t  if (n > state.length) {\n\t    if (!state.ended) {\n\t      state.needReadable = true;\n\t      return 0;\n\t    } else\n\t      return state.length;\n\t  }\n\n\t  return n;\n\t}\n\n\t// you can override either this method, or the async _read(n) below.\n\tReadable.prototype.read = function(n) {\n\t  var state = this._readableState;\n\t  state.calledRead = true;\n\t  var nOrig = n;\n\t  var ret;\n\n\t  if (typeof n !== 'number' || n > 0)\n\t    state.emittedReadable = false;\n\n\t  // if we're doing read(0) to trigger a readable event, but we\n\t  // already have a bunch of data in the buffer, then just trigger\n\t  // the 'readable' event and move on.\n\t  if (n === 0 &&\n\t      state.needReadable &&\n\t      (state.length >= state.highWaterMark || state.ended)) {\n\t    emitReadable(this);\n\t    return null;\n\t  }\n\n\t  n = howMuchToRead(n, state);\n\n\t  // if we've ended, and we're now clear, then finish it up.\n\t  if (n === 0 && state.ended) {\n\t    ret = null;\n\n\t    // In cases where the decoder did not receive enough data\n\t    // to produce a full chunk, then immediately received an\n\t    // EOF, state.buffer will contain [<Buffer >, <Buffer 00 ...>].\n\t    // howMuchToRead will see this and coerce the amount to\n\t    // read to zero (because it's looking at the length of the\n\t    // first <Buffer > in state.buffer), and we'll end up here.\n\t    //\n\t    // This can only happen via state.decoder -- no other venue\n\t    // exists for pushing a zero-length chunk into state.buffer\n\t    // and triggering this behavior. In this case, we return our\n\t    // remaining data and end the stream, if appropriate.\n\t    if (state.length > 0 && state.decoder) {\n\t      ret = fromList(n, state);\n\t      state.length -= ret.length;\n\t    }\n\n\t    if (state.length === 0)\n\t      endReadable(this);\n\n\t    return ret;\n\t  }\n\n\t  // All the actual chunk generation logic needs to be\n\t  // *below* the call to _read.  The reason is that in certain\n\t  // synthetic stream cases, such as passthrough streams, _read\n\t  // may be a completely synchronous operation which may change\n\t  // the state of the read buffer, providing enough data when\n\t  // before there was *not* enough.\n\t  //\n\t  // So, the steps are:\n\t  // 1. Figure out what the state of things will be after we do\n\t  // a read from the buffer.\n\t  //\n\t  // 2. If that resulting state will trigger a _read, then call _read.\n\t  // Note that this may be asynchronous, or synchronous.  Yes, it is\n\t  // deeply ugly to write APIs this way, but that still doesn't mean\n\t  // that the Readable class should behave improperly, as streams are\n\t  // designed to be sync/async agnostic.\n\t  // Take note if the _read call is sync or async (ie, if the read call\n\t  // has returned yet), so that we know whether or not it's safe to emit\n\t  // 'readable' etc.\n\t  //\n\t  // 3. Actually pull the requested chunks out of the buffer and return.\n\n\t  // if we need a readable event, then we need to do some reading.\n\t  var doRead = state.needReadable;\n\n\t  // if we currently have less than the highWaterMark, then also read some\n\t  if (state.length - n <= state.highWaterMark)\n\t    doRead = true;\n\n\t  // however, if we've ended, then there's no point, and if we're already\n\t  // reading, then it's unnecessary.\n\t  if (state.ended || state.reading)\n\t    doRead = false;\n\n\t  if (doRead) {\n\t    state.reading = true;\n\t    state.sync = true;\n\t    // if the length is currently zero, then we *need* a readable event.\n\t    if (state.length === 0)\n\t      state.needReadable = true;\n\t    // call internal read method\n\t    this._read(state.highWaterMark);\n\t    state.sync = false;\n\t  }\n\n\t  // If _read called its callback synchronously, then `reading`\n\t  // will be false, and we need to re-evaluate how much data we\n\t  // can return to the user.\n\t  if (doRead && !state.reading)\n\t    n = howMuchToRead(nOrig, state);\n\n\t  if (n > 0)\n\t    ret = fromList(n, state);\n\t  else\n\t    ret = null;\n\n\t  if (ret === null) {\n\t    state.needReadable = true;\n\t    n = 0;\n\t  }\n\n\t  state.length -= n;\n\n\t  // If we have nothing in the buffer, then we want to know\n\t  // as soon as we *do* get something into the buffer.\n\t  if (state.length === 0 && !state.ended)\n\t    state.needReadable = true;\n\n\t  // If we happened to read() exactly the remaining amount in the\n\t  // buffer, and the EOF has been seen at this point, then make sure\n\t  // that we emit 'end' on the very next tick.\n\t  if (state.ended && !state.endEmitted && state.length === 0)\n\t    endReadable(this);\n\n\t  return ret;\n\t};\n\n\tfunction chunkInvalid(state, chunk) {\n\t  var er = null;\n\t  if (!Buffer.isBuffer(chunk) &&\n\t      'string' !== typeof chunk &&\n\t      chunk !== null &&\n\t      chunk !== undefined &&\n\t      !state.objectMode) {\n\t    er = new TypeError('Invalid non-string/buffer chunk');\n\t  }\n\t  return er;\n\t}\n\n\n\tfunction onEofChunk(stream, state) {\n\t  if (state.decoder && !state.ended) {\n\t    var chunk = state.decoder.end();\n\t    if (chunk && chunk.length) {\n\t      state.buffer.push(chunk);\n\t      state.length += state.objectMode ? 1 : chunk.length;\n\t    }\n\t  }\n\t  state.ended = true;\n\n\t  // if we've ended and we have some data left, then emit\n\t  // 'readable' now to make sure it gets picked up.\n\t  if (state.length > 0)\n\t    emitReadable(stream);\n\t  else\n\t    endReadable(stream);\n\t}\n\n\t// Don't emit readable right away in sync mode, because this can trigger\n\t// another read() call => stack overflow.  This way, it might trigger\n\t// a nextTick recursion warning, but that's not so bad.\n\tfunction emitReadable(stream) {\n\t  var state = stream._readableState;\n\t  state.needReadable = false;\n\t  if (state.emittedReadable)\n\t    return;\n\n\t  state.emittedReadable = true;\n\t  if (state.sync)\n\t    process.nextTick(function() {\n\t      emitReadable_(stream);\n\t    });\n\t  else\n\t    emitReadable_(stream);\n\t}\n\n\tfunction emitReadable_(stream) {\n\t  stream.emit('readable');\n\t}\n\n\n\t// at this point, the user has presumably seen the 'readable' event,\n\t// and called read() to consume some data.  that may have triggered\n\t// in turn another _read(n) call, in which case reading = true if\n\t// it's in progress.\n\t// However, if we're not ended, or reading, and the length < hwm,\n\t// then go ahead and try to read some more preemptively.\n\tfunction maybeReadMore(stream, state) {\n\t  if (!state.readingMore) {\n\t    state.readingMore = true;\n\t    process.nextTick(function() {\n\t      maybeReadMore_(stream, state);\n\t    });\n\t  }\n\t}\n\n\tfunction maybeReadMore_(stream, state) {\n\t  var len = state.length;\n\t  while (!state.reading && !state.flowing && !state.ended &&\n\t         state.length < state.highWaterMark) {\n\t    stream.read(0);\n\t    if (len === state.length)\n\t      // didn't get any data, stop spinning.\n\t      break;\n\t    else\n\t      len = state.length;\n\t  }\n\t  state.readingMore = false;\n\t}\n\n\t// abstract method.  to be overridden in specific implementation classes.\n\t// call cb(er, data) where data is <= n in length.\n\t// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n\t// arbitrary, and perhaps not very meaningful.\n\tReadable.prototype._read = function(n) {\n\t  this.emit('error', new Error('not implemented'));\n\t};\n\n\tReadable.prototype.pipe = function(dest, pipeOpts) {\n\t  var src = this;\n\t  var state = this._readableState;\n\n\t  switch (state.pipesCount) {\n\t    case 0:\n\t      state.pipes = dest;\n\t      break;\n\t    case 1:\n\t      state.pipes = [state.pipes, dest];\n\t      break;\n\t    default:\n\t      state.pipes.push(dest);\n\t      break;\n\t  }\n\t  state.pipesCount += 1;\n\n\t  var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n\t              dest !== process.stdout &&\n\t              dest !== process.stderr;\n\n\t  var endFn = doEnd ? onend : cleanup;\n\t  if (state.endEmitted)\n\t    process.nextTick(endFn);\n\t  else\n\t    src.once('end', endFn);\n\n\t  dest.on('unpipe', onunpipe);\n\t  function onunpipe(readable) {\n\t    if (readable !== src) return;\n\t    cleanup();\n\t  }\n\n\t  function onend() {\n\t    dest.end();\n\t  }\n\n\t  // when the dest drains, it reduces the awaitDrain counter\n\t  // on the source.  This would be more elegant with a .once()\n\t  // handler in flow(), but adding and removing repeatedly is\n\t  // too slow.\n\t  var ondrain = pipeOnDrain(src);\n\t  dest.on('drain', ondrain);\n\n\t  function cleanup() {\n\t    // cleanup event handlers once the pipe is broken\n\t    dest.removeListener('close', onclose);\n\t    dest.removeListener('finish', onfinish);\n\t    dest.removeListener('drain', ondrain);\n\t    dest.removeListener('error', onerror);\n\t    dest.removeListener('unpipe', onunpipe);\n\t    src.removeListener('end', onend);\n\t    src.removeListener('end', cleanup);\n\n\t    // if the reader is waiting for a drain event from this\n\t    // specific writer, then it would cause it to never start\n\t    // flowing again.\n\t    // So, if this is awaiting a drain, then we just call it now.\n\t    // If we don't know, then assume that we are waiting for one.\n\t    if (!dest._writableState || dest._writableState.needDrain)\n\t      ondrain();\n\t  }\n\n\t  // if the dest has an error, then stop piping into it.\n\t  // however, don't suppress the throwing behavior for this.\n\t  function onerror(er) {\n\t    unpipe();\n\t    dest.removeListener('error', onerror);\n\t    if (EE.listenerCount(dest, 'error') === 0)\n\t      dest.emit('error', er);\n\t  }\n\t  // This is a brutally ugly hack to make sure that our error handler\n\t  // is attached before any userland ones.  NEVER DO THIS.\n\t  if (!dest._events || !dest._events.error)\n\t    dest.on('error', onerror);\n\t  else if (isArray(dest._events.error))\n\t    dest._events.error.unshift(onerror);\n\t  else\n\t    dest._events.error = [onerror, dest._events.error];\n\n\n\n\t  // Both close and finish should trigger unpipe, but only once.\n\t  function onclose() {\n\t    dest.removeListener('finish', onfinish);\n\t    unpipe();\n\t  }\n\t  dest.once('close', onclose);\n\t  function onfinish() {\n\t    dest.removeListener('close', onclose);\n\t    unpipe();\n\t  }\n\t  dest.once('finish', onfinish);\n\n\t  function unpipe() {\n\t    src.unpipe(dest);\n\t  }\n\n\t  // tell the dest that it's being piped to\n\t  dest.emit('pipe', src);\n\n\t  // start the flow if it hasn't been started already.\n\t  if (!state.flowing) {\n\t    // the handler that waits for readable events after all\n\t    // the data gets sucked out in flow.\n\t    // This would be easier to follow with a .once() handler\n\t    // in flow(), but that is too slow.\n\t    this.on('readable', pipeOnReadable);\n\n\t    state.flowing = true;\n\t    process.nextTick(function() {\n\t      flow(src);\n\t    });\n\t  }\n\n\t  return dest;\n\t};\n\n\tfunction pipeOnDrain(src) {\n\t  return function() {\n\t    var dest = this;\n\t    var state = src._readableState;\n\t    state.awaitDrain--;\n\t    if (state.awaitDrain === 0)\n\t      flow(src);\n\t  };\n\t}\n\n\tfunction flow(src) {\n\t  var state = src._readableState;\n\t  var chunk;\n\t  state.awaitDrain = 0;\n\n\t  function write(dest, i, list) {\n\t    var written = dest.write(chunk);\n\t    if (false === written) {\n\t      state.awaitDrain++;\n\t    }\n\t  }\n\n\t  while (state.pipesCount && null !== (chunk = src.read())) {\n\n\t    if (state.pipesCount === 1)\n\t      write(state.pipes, 0, null);\n\t    else\n\t      forEach(state.pipes, write);\n\n\t    src.emit('data', chunk);\n\n\t    // if anyone needs a drain, then we have to wait for that.\n\t    if (state.awaitDrain > 0)\n\t      return;\n\t  }\n\n\t  // if every destination was unpiped, either before entering this\n\t  // function, or in the while loop, then stop flowing.\n\t  //\n\t  // NB: This is a pretty rare edge case.\n\t  if (state.pipesCount === 0) {\n\t    state.flowing = false;\n\n\t    // if there were data event listeners added, then switch to old mode.\n\t    if (EE.listenerCount(src, 'data') > 0)\n\t      emitDataEvents(src);\n\t    return;\n\t  }\n\n\t  // at this point, no one needed a drain, so we just ran out of data\n\t  // on the next readable event, start it over again.\n\t  state.ranOut = true;\n\t}\n\n\tfunction pipeOnReadable() {\n\t  if (this._readableState.ranOut) {\n\t    this._readableState.ranOut = false;\n\t    flow(this);\n\t  }\n\t}\n\n\n\tReadable.prototype.unpipe = function(dest) {\n\t  var state = this._readableState;\n\n\t  // if we're not piping anywhere, then do nothing.\n\t  if (state.pipesCount === 0)\n\t    return this;\n\n\t  // just one destination.  most common case.\n\t  if (state.pipesCount === 1) {\n\t    // passed in one, but it's not the right one.\n\t    if (dest && dest !== state.pipes)\n\t      return this;\n\n\t    if (!dest)\n\t      dest = state.pipes;\n\n\t    // got a match.\n\t    state.pipes = null;\n\t    state.pipesCount = 0;\n\t    this.removeListener('readable', pipeOnReadable);\n\t    state.flowing = false;\n\t    if (dest)\n\t      dest.emit('unpipe', this);\n\t    return this;\n\t  }\n\n\t  // slow case. multiple pipe destinations.\n\n\t  if (!dest) {\n\t    // remove all.\n\t    var dests = state.pipes;\n\t    var len = state.pipesCount;\n\t    state.pipes = null;\n\t    state.pipesCount = 0;\n\t    this.removeListener('readable', pipeOnReadable);\n\t    state.flowing = false;\n\n\t    for (var i = 0; i < len; i++)\n\t      dests[i].emit('unpipe', this);\n\t    return this;\n\t  }\n\n\t  // try to find the right one.\n\t  var i = indexOf(state.pipes, dest);\n\t  if (i === -1)\n\t    return this;\n\n\t  state.pipes.splice(i, 1);\n\t  state.pipesCount -= 1;\n\t  if (state.pipesCount === 1)\n\t    state.pipes = state.pipes[0];\n\n\t  dest.emit('unpipe', this);\n\n\t  return this;\n\t};\n\n\t// set up data events if they are asked for\n\t// Ensure readable listeners eventually get something\n\tReadable.prototype.on = function(ev, fn) {\n\t  var res = Stream.prototype.on.call(this, ev, fn);\n\n\t  if (ev === 'data' && !this._readableState.flowing)\n\t    emitDataEvents(this);\n\n\t  if (ev === 'readable' && this.readable) {\n\t    var state = this._readableState;\n\t    if (!state.readableListening) {\n\t      state.readableListening = true;\n\t      state.emittedReadable = false;\n\t      state.needReadable = true;\n\t      if (!state.reading) {\n\t        this.read(0);\n\t      } else if (state.length) {\n\t        emitReadable(this, state);\n\t      }\n\t    }\n\t  }\n\n\t  return res;\n\t};\n\tReadable.prototype.addListener = Readable.prototype.on;\n\n\t// pause() and resume() are remnants of the legacy readable stream API\n\t// If the user uses them, then switch into old mode.\n\tReadable.prototype.resume = function() {\n\t  emitDataEvents(this);\n\t  this.read(0);\n\t  this.emit('resume');\n\t};\n\n\tReadable.prototype.pause = function() {\n\t  emitDataEvents(this, true);\n\t  this.emit('pause');\n\t};\n\n\tfunction emitDataEvents(stream, startPaused) {\n\t  var state = stream._readableState;\n\n\t  if (state.flowing) {\n\t    // https://github.com/isaacs/readable-stream/issues/16\n\t    throw new Error('Cannot switch to old mode now.');\n\t  }\n\n\t  var paused = startPaused || false;\n\t  var readable = false;\n\n\t  // convert to an old-style stream.\n\t  stream.readable = true;\n\t  stream.pipe = Stream.prototype.pipe;\n\t  stream.on = stream.addListener = Stream.prototype.on;\n\n\t  stream.on('readable', function() {\n\t    readable = true;\n\n\t    var c;\n\t    while (!paused && (null !== (c = stream.read())))\n\t      stream.emit('data', c);\n\n\t    if (c === null) {\n\t      readable = false;\n\t      stream._readableState.needReadable = true;\n\t    }\n\t  });\n\n\t  stream.pause = function() {\n\t    paused = true;\n\t    this.emit('pause');\n\t  };\n\n\t  stream.resume = function() {\n\t    paused = false;\n\t    if (readable)\n\t      process.nextTick(function() {\n\t        stream.emit('readable');\n\t      });\n\t    else\n\t      this.read(0);\n\t    this.emit('resume');\n\t  };\n\n\t  // now make it start, just in case it hadn't already.\n\t  stream.emit('readable');\n\t}\n\n\t// wrap an old-style stream as the async data source.\n\t// This is *not* part of the readable stream interface.\n\t// It is an ugly unfortunate mess of history.\n\tReadable.prototype.wrap = function(stream) {\n\t  var state = this._readableState;\n\t  var paused = false;\n\n\t  var self = this;\n\t  stream.on('end', function() {\n\t    if (state.decoder && !state.ended) {\n\t      var chunk = state.decoder.end();\n\t      if (chunk && chunk.length)\n\t        self.push(chunk);\n\t    }\n\n\t    self.push(null);\n\t  });\n\n\t  stream.on('data', function(chunk) {\n\t    if (state.decoder)\n\t      chunk = state.decoder.write(chunk);\n\n\t    // don't skip over falsy values in objectMode\n\t    //if (state.objectMode && util.isNullOrUndefined(chunk))\n\t    if (state.objectMode && (chunk === null || chunk === undefined))\n\t      return;\n\t    else if (!state.objectMode && (!chunk || !chunk.length))\n\t      return;\n\n\t    var ret = self.push(chunk);\n\t    if (!ret) {\n\t      paused = true;\n\t      stream.pause();\n\t    }\n\t  });\n\n\t  // proxy all the other methods.\n\t  // important when wrapping filters and duplexes.\n\t  for (var i in stream) {\n\t    if (typeof stream[i] === 'function' &&\n\t        typeof this[i] === 'undefined') {\n\t      this[i] = function(method) { return function() {\n\t        return stream[method].apply(stream, arguments);\n\t      }}(i);\n\t    }\n\t  }\n\n\t  // proxy certain important events.\n\t  var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n\t  forEach(events, function(ev) {\n\t    stream.on(ev, self.emit.bind(self, ev));\n\t  });\n\n\t  // when we try to consume some more bytes, simply unpause the\n\t  // underlying stream.\n\t  self._read = function(n) {\n\t    if (paused) {\n\t      paused = false;\n\t      stream.resume();\n\t    }\n\t  };\n\n\t  return self;\n\t};\n\n\n\n\t// exposed for testing purposes only.\n\tReadable._fromList = fromList;\n\n\t// Pluck off n bytes from an array of buffers.\n\t// Length is the combined lengths of all the buffers in the list.\n\tfunction fromList(n, state) {\n\t  var list = state.buffer;\n\t  var length = state.length;\n\t  var stringMode = !!state.decoder;\n\t  var objectMode = !!state.objectMode;\n\t  var ret;\n\n\t  // nothing in the list, definitely empty.\n\t  if (list.length === 0)\n\t    return null;\n\n\t  if (length === 0)\n\t    ret = null;\n\t  else if (objectMode)\n\t    ret = list.shift();\n\t  else if (!n || n >= length) {\n\t    // read it all, truncate the array.\n\t    if (stringMode)\n\t      ret = list.join('');\n\t    else\n\t      ret = Buffer.concat(list, length);\n\t    list.length = 0;\n\t  } else {\n\t    // read just some of it.\n\t    if (n < list[0].length) {\n\t      // just take a part of the first list item.\n\t      // slice is the same for buffers and strings.\n\t      var buf = list[0];\n\t      ret = buf.slice(0, n);\n\t      list[0] = buf.slice(n);\n\t    } else if (n === list[0].length) {\n\t      // first list is a perfect match\n\t      ret = list.shift();\n\t    } else {\n\t      // complex case.\n\t      // we have enough to cover it, but it spans past the first buffer.\n\t      if (stringMode)\n\t        ret = '';\n\t      else\n\t        ret = new Buffer(n);\n\n\t      var c = 0;\n\t      for (var i = 0, l = list.length; i < l && c < n; i++) {\n\t        var buf = list[0];\n\t        var cpy = Math.min(n - c, buf.length);\n\n\t        if (stringMode)\n\t          ret += buf.slice(0, cpy);\n\t        else\n\t          buf.copy(ret, c, 0, cpy);\n\n\t        if (cpy < buf.length)\n\t          list[0] = buf.slice(cpy);\n\t        else\n\t          list.shift();\n\n\t        c += cpy;\n\t      }\n\t    }\n\t  }\n\n\t  return ret;\n\t}\n\n\tfunction endReadable(stream) {\n\t  var state = stream._readableState;\n\n\t  // If we get here before consuming all the bytes, then that is a\n\t  // bug in node.  Should never happen.\n\t  if (state.length > 0)\n\t    throw new Error('endReadable called on non-empty stream');\n\n\t  if (!state.endEmitted && state.calledRead) {\n\t    state.ended = true;\n\t    process.nextTick(function() {\n\t      // Check that we didn't get one last unshift.\n\t      if (!state.endEmitted && state.length === 0) {\n\t        state.endEmitted = true;\n\t        stream.readable = false;\n\t        stream.emit('end');\n\t      }\n\t    });\n\t  }\n\t}\n\n\tfunction forEach (xs, f) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    f(xs[i], i);\n\t  }\n\t}\n\n\tfunction indexOf (xs, x) {\n\t  for (var i = 0, l = xs.length; i < l; i++) {\n\t    if (xs[i] === x) return i;\n\t  }\n\t  return -1;\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 508 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\t// a transform stream is a readable/writable stream where you do\n\t// something with the data.  Sometimes it's called a \"filter\",\n\t// but that's not a great name for it, since that implies a thing where\n\t// some bits pass through, and others are simply ignored.  (That would\n\t// be a valid example of a transform, of course.)\n\t//\n\t// While the output is causally related to the input, it's not a\n\t// necessarily symmetric or synchronous transformation.  For example,\n\t// a zlib stream might take multiple plain-text writes(), and then\n\t// emit a single compressed chunk some time in the future.\n\t//\n\t// Here's how this works:\n\t//\n\t// The Transform stream has all the aspects of the readable and writable\n\t// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n\t// internally, and returns false if there's a lot of pending writes\n\t// buffered up.  When you call read(), that calls _read(n) until\n\t// there's enough pending readable data buffered up.\n\t//\n\t// In a transform stream, the written data is placed in a buffer.  When\n\t// _read(n) is called, it transforms the queued up data, calling the\n\t// buffered _write cb's as it consumes chunks.  If consuming a single\n\t// written chunk would result in multiple output chunks, then the first\n\t// outputted bit calls the readcb, and subsequent chunks just go into\n\t// the read buffer, and will cause it to emit 'readable' if necessary.\n\t//\n\t// This way, back-pressure is actually determined by the reading side,\n\t// since _read has to be called to start processing a new chunk.  However,\n\t// a pathological inflate type of transform can cause excessive buffering\n\t// here.  For example, imagine a stream where every byte of input is\n\t// interpreted as an integer from 0-255, and then results in that many\n\t// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n\t// 1kb of data being output.  In this case, you could write a very small\n\t// amount of input, and end up with a very large amount of output.  In\n\t// such a pathological inflating mechanism, there'd be no way to tell\n\t// the system to stop doing the transform.  A single 4MB write could\n\t// cause the system to run out of memory.\n\t//\n\t// However, even in such a pathological case, only a single written chunk\n\t// would be consumed, and then the rest would wait (un-transformed) until\n\t// the results of the previous transformed chunk were consumed.\n\n\tmodule.exports = Transform;\n\n\tvar Duplex = __webpack_require__(195);\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tutil.inherits(Transform, Duplex);\n\n\n\tfunction TransformState(options, stream) {\n\t  this.afterTransform = function(er, data) {\n\t    return afterTransform(stream, er, data);\n\t  };\n\n\t  this.needTransform = false;\n\t  this.transforming = false;\n\t  this.writecb = null;\n\t  this.writechunk = null;\n\t}\n\n\tfunction afterTransform(stream, er, data) {\n\t  var ts = stream._transformState;\n\t  ts.transforming = false;\n\n\t  var cb = ts.writecb;\n\n\t  if (!cb)\n\t    return stream.emit('error', new Error('no writecb in Transform class'));\n\n\t  ts.writechunk = null;\n\t  ts.writecb = null;\n\n\t  if (data !== null && data !== undefined)\n\t    stream.push(data);\n\n\t  if (cb)\n\t    cb(er);\n\n\t  var rs = stream._readableState;\n\t  rs.reading = false;\n\t  if (rs.needReadable || rs.length < rs.highWaterMark) {\n\t    stream._read(rs.highWaterMark);\n\t  }\n\t}\n\n\n\tfunction Transform(options) {\n\t  if (!(this instanceof Transform))\n\t    return new Transform(options);\n\n\t  Duplex.call(this, options);\n\n\t  var ts = this._transformState = new TransformState(options, this);\n\n\t  // when the writable side finishes, then flush out anything remaining.\n\t  var stream = this;\n\n\t  // start out asking for a readable event once data is transformed.\n\t  this._readableState.needReadable = true;\n\n\t  // we have implemented the _read method, and done the other things\n\t  // that Readable wants before the first _read call, so unset the\n\t  // sync guard flag.\n\t  this._readableState.sync = false;\n\n\t  this.once('finish', function() {\n\t    if ('function' === typeof this._flush)\n\t      this._flush(function(er) {\n\t        done(stream, er);\n\t      });\n\t    else\n\t      done(stream);\n\t  });\n\t}\n\n\tTransform.prototype.push = function(chunk, encoding) {\n\t  this._transformState.needTransform = false;\n\t  return Duplex.prototype.push.call(this, chunk, encoding);\n\t};\n\n\t// This is the part where you do stuff!\n\t// override this function in implementation classes.\n\t// 'chunk' is an input chunk.\n\t//\n\t// Call `push(newChunk)` to pass along transformed output\n\t// to the readable side.  You may call 'push' zero or more times.\n\t//\n\t// Call `cb(err)` when you are done with this chunk.  If you pass\n\t// an error, then that'll put the hurt on the whole operation.  If you\n\t// never call cb(), then you'll never get another chunk.\n\tTransform.prototype._transform = function(chunk, encoding, cb) {\n\t  throw new Error('not implemented');\n\t};\n\n\tTransform.prototype._write = function(chunk, encoding, cb) {\n\t  var ts = this._transformState;\n\t  ts.writecb = cb;\n\t  ts.writechunk = chunk;\n\t  ts.writeencoding = encoding;\n\t  if (!ts.transforming) {\n\t    var rs = this._readableState;\n\t    if (ts.needTransform ||\n\t        rs.needReadable ||\n\t        rs.length < rs.highWaterMark)\n\t      this._read(rs.highWaterMark);\n\t  }\n\t};\n\n\t// Doesn't matter what the args are here.\n\t// _transform does all the work.\n\t// That we got here means that the readable side wants more data.\n\tTransform.prototype._read = function(n) {\n\t  var ts = this._transformState;\n\n\t  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n\t    ts.transforming = true;\n\t    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n\t  } else {\n\t    // mark that we need a transform, so that any data that comes in\n\t    // will get processed, now that we've asked for it.\n\t    ts.needTransform = true;\n\t  }\n\t};\n\n\n\tfunction done(stream, er) {\n\t  if (er)\n\t    return stream.emit('error', er);\n\n\t  // if there's nothing in the write buffer, then that means\n\t  // that nothing more will ever be provided\n\t  var ws = stream._writableState;\n\t  var rs = stream._readableState;\n\t  var ts = stream._transformState;\n\n\t  if (ws.length)\n\t    throw new Error('calling transform done when ws.length != 0');\n\n\t  if (ts.transforming)\n\t    throw new Error('calling transform done when still transforming');\n\n\t  return stream.push(null);\n\t}\n\n\n/***/ },\n/* 509 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t// A bit simpler than readable streams.\n\t// Implement an async ._write(chunk, cb), and it'll handle all\n\t// the drain event emission and buffering.\n\n\tmodule.exports = Writable;\n\n\t/*<replacement>*/\n\tvar Buffer = __webpack_require__(1).Buffer;\n\t/*</replacement>*/\n\n\tWritable.WritableState = WritableState;\n\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tvar Stream = __webpack_require__(12);\n\n\tutil.inherits(Writable, Stream);\n\n\tfunction WriteReq(chunk, encoding, cb) {\n\t  this.chunk = chunk;\n\t  this.encoding = encoding;\n\t  this.callback = cb;\n\t}\n\n\tfunction WritableState(options, stream) {\n\t  options = options || {};\n\n\t  // the point at which write() starts returning false\n\t  // Note: 0 is a valid value, means that we always return false if\n\t  // the entire buffer is not flushed immediately on write()\n\t  var hwm = options.highWaterMark;\n\t  this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n\t  // object stream flag to indicate whether or not this stream\n\t  // contains buffers or objects.\n\t  this.objectMode = !!options.objectMode;\n\n\t  // cast to ints.\n\t  this.highWaterMark = ~~this.highWaterMark;\n\n\t  this.needDrain = false;\n\t  // at the start of calling end()\n\t  this.ending = false;\n\t  // when end() has been called, and returned\n\t  this.ended = false;\n\t  // when 'finish' is emitted\n\t  this.finished = false;\n\n\t  // should we decode strings into buffers before passing to _write?\n\t  // this is here so that some node-core streams can optimize string\n\t  // handling at a lower level.\n\t  var noDecode = options.decodeStrings === false;\n\t  this.decodeStrings = !noDecode;\n\n\t  // Crypto is kind of old and crusty.  Historically, its default string\n\t  // encoding is 'binary' so we have to make this configurable.\n\t  // Everything else in the universe uses 'utf8', though.\n\t  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n\t  // not an actual buffer we keep track of, but a measurement\n\t  // of how much we're waiting to get pushed to some underlying\n\t  // socket or file.\n\t  this.length = 0;\n\n\t  // a flag to see when we're in the middle of a write.\n\t  this.writing = false;\n\n\t  // a flag to be able to tell if the onwrite cb is called immediately,\n\t  // or on a later tick.  We set this to true at first, becuase any\n\t  // actions that shouldn't happen until \"later\" should generally also\n\t  // not happen before the first write call.\n\t  this.sync = true;\n\n\t  // a flag to know if we're processing previously buffered items, which\n\t  // may call the _write() callback in the same tick, so that we don't\n\t  // end up in an overlapped onwrite situation.\n\t  this.bufferProcessing = false;\n\n\t  // the callback that's passed to _write(chunk,cb)\n\t  this.onwrite = function(er) {\n\t    onwrite(stream, er);\n\t  };\n\n\t  // the callback that the user supplies to write(chunk,encoding,cb)\n\t  this.writecb = null;\n\n\t  // the amount that is being written when _write is called.\n\t  this.writelen = 0;\n\n\t  this.buffer = [];\n\n\t  // True if the error was already emitted and should not be thrown again\n\t  this.errorEmitted = false;\n\t}\n\n\tfunction Writable(options) {\n\t  var Duplex = __webpack_require__(195);\n\n\t  // Writable ctor is applied to Duplexes, though they're not\n\t  // instanceof Writable, they're instanceof Readable.\n\t  if (!(this instanceof Writable) && !(this instanceof Duplex))\n\t    return new Writable(options);\n\n\t  this._writableState = new WritableState(options, this);\n\n\t  // legacy.\n\t  this.writable = true;\n\n\t  Stream.call(this);\n\t}\n\n\t// Otherwise people can pipe Writable streams, which is just wrong.\n\tWritable.prototype.pipe = function() {\n\t  this.emit('error', new Error('Cannot pipe. Not readable.'));\n\t};\n\n\n\tfunction writeAfterEnd(stream, state, cb) {\n\t  var er = new Error('write after end');\n\t  // TODO: defer error events consistently everywhere, not just the cb\n\t  stream.emit('error', er);\n\t  process.nextTick(function() {\n\t    cb(er);\n\t  });\n\t}\n\n\t// If we get something that is not a buffer, string, null, or undefined,\n\t// and we're not in objectMode, then that's an error.\n\t// Otherwise stream chunks are all considered to be of length=1, and the\n\t// watermarks determine how many objects to keep in the buffer, rather than\n\t// how many bytes or characters.\n\tfunction validChunk(stream, state, chunk, cb) {\n\t  var valid = true;\n\t  if (!Buffer.isBuffer(chunk) &&\n\t      'string' !== typeof chunk &&\n\t      chunk !== null &&\n\t      chunk !== undefined &&\n\t      !state.objectMode) {\n\t    var er = new TypeError('Invalid non-string/buffer chunk');\n\t    stream.emit('error', er);\n\t    process.nextTick(function() {\n\t      cb(er);\n\t    });\n\t    valid = false;\n\t  }\n\t  return valid;\n\t}\n\n\tWritable.prototype.write = function(chunk, encoding, cb) {\n\t  var state = this._writableState;\n\t  var ret = false;\n\n\t  if (typeof encoding === 'function') {\n\t    cb = encoding;\n\t    encoding = null;\n\t  }\n\n\t  if (Buffer.isBuffer(chunk))\n\t    encoding = 'buffer';\n\t  else if (!encoding)\n\t    encoding = state.defaultEncoding;\n\n\t  if (typeof cb !== 'function')\n\t    cb = function() {};\n\n\t  if (state.ended)\n\t    writeAfterEnd(this, state, cb);\n\t  else if (validChunk(this, state, chunk, cb))\n\t    ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\n\t  return ret;\n\t};\n\n\tfunction decodeChunk(state, chunk, encoding) {\n\t  if (!state.objectMode &&\n\t      state.decodeStrings !== false &&\n\t      typeof chunk === 'string') {\n\t    chunk = new Buffer(chunk, encoding);\n\t  }\n\t  return chunk;\n\t}\n\n\t// if we're already writing something, then just put this\n\t// in the queue, and wait our turn.  Otherwise, call _write\n\t// If we return false, then we need a drain event, so set that flag.\n\tfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n\t  chunk = decodeChunk(state, chunk, encoding);\n\t  if (Buffer.isBuffer(chunk))\n\t    encoding = 'buffer';\n\t  var len = state.objectMode ? 1 : chunk.length;\n\n\t  state.length += len;\n\n\t  var ret = state.length < state.highWaterMark;\n\t  // we must ensure that previous needDrain will not be reset to false.\n\t  if (!ret)\n\t    state.needDrain = true;\n\n\t  if (state.writing)\n\t    state.buffer.push(new WriteReq(chunk, encoding, cb));\n\t  else\n\t    doWrite(stream, state, len, chunk, encoding, cb);\n\n\t  return ret;\n\t}\n\n\tfunction doWrite(stream, state, len, chunk, encoding, cb) {\n\t  state.writelen = len;\n\t  state.writecb = cb;\n\t  state.writing = true;\n\t  state.sync = true;\n\t  stream._write(chunk, encoding, state.onwrite);\n\t  state.sync = false;\n\t}\n\n\tfunction onwriteError(stream, state, sync, er, cb) {\n\t  if (sync)\n\t    process.nextTick(function() {\n\t      cb(er);\n\t    });\n\t  else\n\t    cb(er);\n\n\t  stream._writableState.errorEmitted = true;\n\t  stream.emit('error', er);\n\t}\n\n\tfunction onwriteStateUpdate(state) {\n\t  state.writing = false;\n\t  state.writecb = null;\n\t  state.length -= state.writelen;\n\t  state.writelen = 0;\n\t}\n\n\tfunction onwrite(stream, er) {\n\t  var state = stream._writableState;\n\t  var sync = state.sync;\n\t  var cb = state.writecb;\n\n\t  onwriteStateUpdate(state);\n\n\t  if (er)\n\t    onwriteError(stream, state, sync, er, cb);\n\t  else {\n\t    // Check if we're actually ready to finish, but don't emit yet\n\t    var finished = needFinish(stream, state);\n\n\t    if (!finished && !state.bufferProcessing && state.buffer.length)\n\t      clearBuffer(stream, state);\n\n\t    if (sync) {\n\t      process.nextTick(function() {\n\t        afterWrite(stream, state, finished, cb);\n\t      });\n\t    } else {\n\t      afterWrite(stream, state, finished, cb);\n\t    }\n\t  }\n\t}\n\n\tfunction afterWrite(stream, state, finished, cb) {\n\t  if (!finished)\n\t    onwriteDrain(stream, state);\n\t  cb();\n\t  if (finished)\n\t    finishMaybe(stream, state);\n\t}\n\n\t// Must force callback to be called on nextTick, so that we don't\n\t// emit 'drain' before the write() consumer gets the 'false' return\n\t// value, and has a chance to attach a 'drain' listener.\n\tfunction onwriteDrain(stream, state) {\n\t  if (state.length === 0 && state.needDrain) {\n\t    state.needDrain = false;\n\t    stream.emit('drain');\n\t  }\n\t}\n\n\n\t// if there's something in the buffer waiting, then process it\n\tfunction clearBuffer(stream, state) {\n\t  state.bufferProcessing = true;\n\n\t  for (var c = 0; c < state.buffer.length; c++) {\n\t    var entry = state.buffer[c];\n\t    var chunk = entry.chunk;\n\t    var encoding = entry.encoding;\n\t    var cb = entry.callback;\n\t    var len = state.objectMode ? 1 : chunk.length;\n\n\t    doWrite(stream, state, len, chunk, encoding, cb);\n\n\t    // if we didn't call the onwrite immediately, then\n\t    // it means that we need to wait until it does.\n\t    // also, that means that the chunk and cb are currently\n\t    // being processed, so move the buffer counter past them.\n\t    if (state.writing) {\n\t      c++;\n\t      break;\n\t    }\n\t  }\n\n\t  state.bufferProcessing = false;\n\t  if (c < state.buffer.length)\n\t    state.buffer = state.buffer.slice(c);\n\t  else\n\t    state.buffer.length = 0;\n\t}\n\n\tWritable.prototype._write = function(chunk, encoding, cb) {\n\t  cb(new Error('not implemented'));\n\t};\n\n\tWritable.prototype.end = function(chunk, encoding, cb) {\n\t  var state = this._writableState;\n\n\t  if (typeof chunk === 'function') {\n\t    cb = chunk;\n\t    chunk = null;\n\t    encoding = null;\n\t  } else if (typeof encoding === 'function') {\n\t    cb = encoding;\n\t    encoding = null;\n\t  }\n\n\t  if (typeof chunk !== 'undefined' && chunk !== null)\n\t    this.write(chunk, encoding);\n\n\t  // ignore unnecessary end() calls.\n\t  if (!state.ending && !state.finished)\n\t    endWritable(this, state, cb);\n\t};\n\n\n\tfunction needFinish(stream, state) {\n\t  return (state.ending &&\n\t          state.length === 0 &&\n\t          !state.finished &&\n\t          !state.writing);\n\t}\n\n\tfunction finishMaybe(stream, state) {\n\t  var need = needFinish(stream, state);\n\t  if (need) {\n\t    state.finished = true;\n\t    stream.emit('finish');\n\t  }\n\t  return need;\n\t}\n\n\tfunction endWritable(stream, state, cb) {\n\t  state.ending = true;\n\t  finishMaybe(stream, state);\n\t  if (cb) {\n\t    if (state.finished)\n\t      process.nextTick(cb);\n\t    else\n\t      stream.once('finish', cb);\n\t  }\n\t  state.ended = true;\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 510 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(508)\n\n\n/***/ },\n/* 511 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/*\n\tCryptoJS v3.1.2\n\tcode.google.com/p/crypto-js\n\t(c) 2009-2013 by Jeff Mott. All rights reserved.\n\tcode.google.com/p/crypto-js/wiki/License\n\t*/\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t// constants table\n\tvar zl = [\n\t  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n\t]\n\n\tvar zr = [\n\t  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n\t]\n\n\tvar sl = [\n\t  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n\t]\n\n\tvar sr = [\n\t  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n\t]\n\n\tvar hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]\n\tvar hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]\n\n\tfunction bytesToWords (bytes) {\n\t  var words = []\n\t  for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {\n\t    words[b >>> 5] |= bytes[i] << (24 - b % 32)\n\t  }\n\t  return words\n\t}\n\n\tfunction wordsToBytes (words) {\n\t  var bytes = []\n\t  for (var b = 0; b < words.length * 32; b += 8) {\n\t    bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)\n\t  }\n\t  return bytes\n\t}\n\n\tfunction processBlock (H, M, offset) {\n\t  // swap endian\n\t  for (var i = 0; i < 16; i++) {\n\t    var offset_i = offset + i\n\t    var M_offset_i = M[offset_i]\n\n\t    // Swap\n\t    M[offset_i] = (\n\t      (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t      (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t    )\n\t  }\n\n\t  // Working variables\n\t  var al, bl, cl, dl, el\n\t  var ar, br, cr, dr, er\n\n\t  ar = al = H[0]\n\t  br = bl = H[1]\n\t  cr = cl = H[2]\n\t  dr = dl = H[3]\n\t  er = el = H[4]\n\n\t  // computation\n\t  var t\n\t  for (i = 0; i < 80; i += 1) {\n\t    t = (al + M[offset + zl[i]]) | 0\n\t    if (i < 16) {\n\t      t += f1(bl, cl, dl) + hl[0]\n\t    } else if (i < 32) {\n\t      t += f2(bl, cl, dl) + hl[1]\n\t    } else if (i < 48) {\n\t      t += f3(bl, cl, dl) + hl[2]\n\t    } else if (i < 64) {\n\t      t += f4(bl, cl, dl) + hl[3]\n\t    } else {// if (i<80) {\n\t      t += f5(bl, cl, dl) + hl[4]\n\t    }\n\t    t = t | 0\n\t    t = rotl(t, sl[i])\n\t    t = (t + el) | 0\n\t    al = el\n\t    el = dl\n\t    dl = rotl(cl, 10)\n\t    cl = bl\n\t    bl = t\n\n\t    t = (ar + M[offset + zr[i]]) | 0\n\t    if (i < 16) {\n\t      t += f5(br, cr, dr) + hr[0]\n\t    } else if (i < 32) {\n\t      t += f4(br, cr, dr) + hr[1]\n\t    } else if (i < 48) {\n\t      t += f3(br, cr, dr) + hr[2]\n\t    } else if (i < 64) {\n\t      t += f2(br, cr, dr) + hr[3]\n\t    } else {// if (i<80) {\n\t      t += f1(br, cr, dr) + hr[4]\n\t    }\n\n\t    t = t | 0\n\t    t = rotl(t, sr[i])\n\t    t = (t + er) | 0\n\t    ar = er\n\t    er = dr\n\t    dr = rotl(cr, 10)\n\t    cr = br\n\t    br = t\n\t  }\n\n\t  // intermediate hash value\n\t  t = (H[1] + cl + dr) | 0\n\t  H[1] = (H[2] + dl + er) | 0\n\t  H[2] = (H[3] + el + ar) | 0\n\t  H[3] = (H[4] + al + br) | 0\n\t  H[4] = (H[0] + bl + cr) | 0\n\t  H[0] = t\n\t}\n\n\tfunction f1 (x, y, z) {\n\t  return ((x) ^ (y) ^ (z))\n\t}\n\n\tfunction f2 (x, y, z) {\n\t  return (((x) & (y)) | ((~x) & (z)))\n\t}\n\n\tfunction f3 (x, y, z) {\n\t  return (((x) | (~(y))) ^ (z))\n\t}\n\n\tfunction f4 (x, y, z) {\n\t  return (((x) & (z)) | ((y) & (~(z))))\n\t}\n\n\tfunction f5 (x, y, z) {\n\t  return ((x) ^ ((y) | (~(z))))\n\t}\n\n\tfunction rotl (x, n) {\n\t  return (x << n) | (x >>> (32 - n))\n\t}\n\n\tfunction ripemd160 (message) {\n\t  var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]\n\n\t  if (typeof message === 'string') {\n\t    message = new Buffer(message, 'utf8')\n\t  }\n\n\t  var m = bytesToWords(message)\n\n\t  var nBitsLeft = message.length * 8\n\t  var nBitsTotal = message.length * 8\n\n\t  // Add padding\n\t  m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)\n\t  m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t    (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t    (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t  )\n\n\t  for (var i = 0; i < m.length; i += 16) {\n\t    processBlock(H, m, i)\n\t  }\n\n\t  // swap endian\n\t  for (i = 0; i < 5; i++) {\n\t    // shortcut\n\t    var H_i = H[i]\n\n\t    // Swap\n\t    H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t      (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)\n\t  }\n\n\t  var digestbytes = wordsToBytes(H)\n\t  return new Buffer(digestbytes)\n\t}\n\n\tmodule.exports = ripemd160\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 512 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Readable = __webpack_require__(12).Readable;\n\tvar PassThrough = __webpack_require__(12).PassThrough;\n\n\tfunction SandwichStream(options) {\n\t  Readable.call(this, options);\n\t  options = options || {};\n\t  this._streamsActive = false;\n\t  this._streamsAdded = false;\n\t  this._streams = [];\n\t  this._currentStream = undefined;\n\t  this._errorsEmitted = false;\n\n\t  if (options.head) {\n\t    this._head = options.head;\n\t  }\n\t  if (options.tail) {\n\t    this._tail = options.tail;\n\t  }\n\t  if (options.separator) {\n\t    this._separator = options.separator;\n\t  }\n\t}\n\n\tSandwichStream.prototype = Object.create(Readable.prototype, {\n\t  constructor: SandwichStream\n\t});\n\n\tSandwichStream.prototype._read = function () {\n\t  if (!this._streamsActive) {\n\t    this._streamsActive = true;\n\t    this._pushHead();\n\t    this._streamNextStream();\n\t  }\n\t};\n\n\tSandwichStream.prototype.add = function (newStream) {\n\t  if (!this._streamsActive) {\n\t    this._streamsAdded = true;\n\t    this._streams.push(newStream);\n\t    newStream.on('error', this._substreamOnError.bind(this));\n\t  }\n\t  else {\n\t    throw new Error('SandwichStream error adding new stream while streaming');\n\t  }\n\t};\n\n\tSandwichStream.prototype._substreamOnError = function (error) {\n\t  this._errorsEmitted = true;\n\t  this.emit('error', error);\n\t};\n\n\tSandwichStream.prototype._pushHead = function () {\n\t  if (this._head) {\n\t    this.push(this._head);\n\t  }\n\t};\n\n\tSandwichStream.prototype._streamNextStream = function () {\n\t  if (this._nextStream()) {\n\t    this._bindCurrentStreamEvents();\n\t  }\n\t  else {\n\t    this._pushTail();\n\t    this.push(null);\n\t  }\n\t};\n\n\tSandwichStream.prototype._nextStream = function () {\n\t  this._currentStream = this._streams.shift();\n\t  return this._currentStream !== undefined;\n\t};\n\n\tSandwichStream.prototype._bindCurrentStreamEvents = function () {\n\t  this._currentStream.on('readable', this._currentStreamOnReadable.bind(this));\n\t  this._currentStream.on('end', this._currentStreamOnEnd.bind(this));\n\t};\n\n\tSandwichStream.prototype._currentStreamOnReadable = function () {\n\t  this.push(this._currentStream.read() || '');\n\t};\n\n\tSandwichStream.prototype._currentStreamOnEnd = function () {\n\t  this._pushSeparator();\n\t  this._streamNextStream();\n\t};\n\n\tSandwichStream.prototype._pushSeparator = function () {\n\t  if (this._streams.length > 0 && this._separator) {\n\t    this.push(this._separator);\n\t  }\n\t};\n\n\tSandwichStream.prototype._pushTail = function () {\n\t  if (this._tail) {\n\t    this.push(this._tail);\n\t  }\n\t};\n\n\tfunction sandwichStream(options) {\n\t  var stream = new SandwichStream(options);\n\t  return stream;\n\t}\n\n\tsandwichStream.SandwichStream = SandwichStream;\n\n\tmodule.exports = sandwichStream;\n\n\n/***/ },\n/* 513 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar exports = module.exports = function SHA (algorithm) {\n\t  algorithm = algorithm.toLowerCase()\n\n\t  var Algorithm = exports[algorithm]\n\t  if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n\t  return new Algorithm()\n\t}\n\n\texports.sha = __webpack_require__(514)\n\texports.sha1 = __webpack_require__(515)\n\texports.sha224 = __webpack_require__(516)\n\texports.sha256 = __webpack_require__(196)\n\texports.sha384 = __webpack_require__(517)\n\texports.sha512 = __webpack_require__(197)\n\n\n/***/ },\n/* 514 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/*\n\t * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n\t * in FIPS PUB 180-1\n\t * This source code is derived from sha1.js of the same repository.\n\t * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n\t * operation was added.\n\t */\n\n\tvar inherits = __webpack_require__(2)\n\tvar Hash = __webpack_require__(61)\n\n\tvar K = [\n\t  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n\t]\n\n\tvar W = new Array(80)\n\n\tfunction Sha () {\n\t  this.init()\n\t  this._w = W\n\n\t  Hash.call(this, 64, 56)\n\t}\n\n\tinherits(Sha, Hash)\n\n\tSha.prototype.init = function () {\n\t  this._a = 0x67452301\n\t  this._b = 0xefcdab89\n\t  this._c = 0x98badcfe\n\t  this._d = 0x10325476\n\t  this._e = 0xc3d2e1f0\n\n\t  return this\n\t}\n\n\tfunction rotl5 (num) {\n\t  return (num << 5) | (num >>> 27)\n\t}\n\n\tfunction rotl30 (num) {\n\t  return (num << 30) | (num >>> 2)\n\t}\n\n\tfunction ft (s, b, c, d) {\n\t  if (s === 0) return (b & c) | ((~b) & d)\n\t  if (s === 2) return (b & c) | (b & d) | (c & d)\n\t  return b ^ c ^ d\n\t}\n\n\tSha.prototype._update = function (M) {\n\t  var W = this._w\n\n\t  var a = this._a | 0\n\t  var b = this._b | 0\n\t  var c = this._c | 0\n\t  var d = this._d | 0\n\t  var e = this._e | 0\n\n\t  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n\t  for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n\t  for (var j = 0; j < 80; ++j) {\n\t    var s = ~~(j / 20)\n\t    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n\t    e = d\n\t    d = c\n\t    c = rotl30(b)\n\t    b = a\n\t    a = t\n\t  }\n\n\t  this._a = (a + this._a) | 0\n\t  this._b = (b + this._b) | 0\n\t  this._c = (c + this._c) | 0\n\t  this._d = (d + this._d) | 0\n\t  this._e = (e + this._e) | 0\n\t}\n\n\tSha.prototype._hash = function () {\n\t  var H = new Buffer(20)\n\n\t  H.writeInt32BE(this._a | 0, 0)\n\t  H.writeInt32BE(this._b | 0, 4)\n\t  H.writeInt32BE(this._c | 0, 8)\n\t  H.writeInt32BE(this._d | 0, 12)\n\t  H.writeInt32BE(this._e | 0, 16)\n\n\t  return H\n\t}\n\n\tmodule.exports = Sha\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 515 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/*\n\t * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n\t * in FIPS PUB 180-1\n\t * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t * Distributed under the BSD License\n\t * See http://pajhome.org.uk/crypt/md5 for details.\n\t */\n\n\tvar inherits = __webpack_require__(2)\n\tvar Hash = __webpack_require__(61)\n\n\tvar K = [\n\t  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n\t]\n\n\tvar W = new Array(80)\n\n\tfunction Sha1 () {\n\t  this.init()\n\t  this._w = W\n\n\t  Hash.call(this, 64, 56)\n\t}\n\n\tinherits(Sha1, Hash)\n\n\tSha1.prototype.init = function () {\n\t  this._a = 0x67452301\n\t  this._b = 0xefcdab89\n\t  this._c = 0x98badcfe\n\t  this._d = 0x10325476\n\t  this._e = 0xc3d2e1f0\n\n\t  return this\n\t}\n\n\tfunction rotl1 (num) {\n\t  return (num << 1) | (num >>> 31)\n\t}\n\n\tfunction rotl5 (num) {\n\t  return (num << 5) | (num >>> 27)\n\t}\n\n\tfunction rotl30 (num) {\n\t  return (num << 30) | (num >>> 2)\n\t}\n\n\tfunction ft (s, b, c, d) {\n\t  if (s === 0) return (b & c) | ((~b) & d)\n\t  if (s === 2) return (b & c) | (b & d) | (c & d)\n\t  return b ^ c ^ d\n\t}\n\n\tSha1.prototype._update = function (M) {\n\t  var W = this._w\n\n\t  var a = this._a | 0\n\t  var b = this._b | 0\n\t  var c = this._c | 0\n\t  var d = this._d | 0\n\t  var e = this._e | 0\n\n\t  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n\t  for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n\t  for (var j = 0; j < 80; ++j) {\n\t    var s = ~~(j / 20)\n\t    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n\t    e = d\n\t    d = c\n\t    c = rotl30(b)\n\t    b = a\n\t    a = t\n\t  }\n\n\t  this._a = (a + this._a) | 0\n\t  this._b = (b + this._b) | 0\n\t  this._c = (c + this._c) | 0\n\t  this._d = (d + this._d) | 0\n\t  this._e = (e + this._e) | 0\n\t}\n\n\tSha1.prototype._hash = function () {\n\t  var H = new Buffer(20)\n\n\t  H.writeInt32BE(this._a | 0, 0)\n\t  H.writeInt32BE(this._b | 0, 4)\n\t  H.writeInt32BE(this._c | 0, 8)\n\t  H.writeInt32BE(this._d | 0, 12)\n\t  H.writeInt32BE(this._e | 0, 16)\n\n\t  return H\n\t}\n\n\tmodule.exports = Sha1\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 516 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/**\n\t * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n\t * in FIPS 180-2\n\t * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t *\n\t */\n\n\tvar inherits = __webpack_require__(2)\n\tvar Sha256 = __webpack_require__(196)\n\tvar Hash = __webpack_require__(61)\n\n\tvar W = new Array(64)\n\n\tfunction Sha224 () {\n\t  this.init()\n\n\t  this._w = W // new Array(64)\n\n\t  Hash.call(this, 64, 56)\n\t}\n\n\tinherits(Sha224, Sha256)\n\n\tSha224.prototype.init = function () {\n\t  this._a = 0xc1059ed8\n\t  this._b = 0x367cd507\n\t  this._c = 0x3070dd17\n\t  this._d = 0xf70e5939\n\t  this._e = 0xffc00b31\n\t  this._f = 0x68581511\n\t  this._g = 0x64f98fa7\n\t  this._h = 0xbefa4fa4\n\n\t  return this\n\t}\n\n\tSha224.prototype._hash = function () {\n\t  var H = new Buffer(28)\n\n\t  H.writeInt32BE(this._a, 0)\n\t  H.writeInt32BE(this._b, 4)\n\t  H.writeInt32BE(this._c, 8)\n\t  H.writeInt32BE(this._d, 12)\n\t  H.writeInt32BE(this._e, 16)\n\t  H.writeInt32BE(this._f, 20)\n\t  H.writeInt32BE(this._g, 24)\n\n\t  return H\n\t}\n\n\tmodule.exports = Sha224\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 517 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {var inherits = __webpack_require__(2)\n\tvar SHA512 = __webpack_require__(197)\n\tvar Hash = __webpack_require__(61)\n\n\tvar W = new Array(160)\n\n\tfunction Sha384 () {\n\t  this.init()\n\t  this._w = W\n\n\t  Hash.call(this, 128, 112)\n\t}\n\n\tinherits(Sha384, SHA512)\n\n\tSha384.prototype.init = function () {\n\t  this._ah = 0xcbbb9d5d\n\t  this._bh = 0x629a292a\n\t  this._ch = 0x9159015a\n\t  this._dh = 0x152fecd8\n\t  this._eh = 0x67332667\n\t  this._fh = 0x8eb44a87\n\t  this._gh = 0xdb0c2e0d\n\t  this._hh = 0x47b5481d\n\n\t  this._al = 0xc1059ed8\n\t  this._bl = 0x367cd507\n\t  this._cl = 0x3070dd17\n\t  this._dl = 0xf70e5939\n\t  this._el = 0xffc00b31\n\t  this._fl = 0x68581511\n\t  this._gl = 0x64f98fa7\n\t  this._hl = 0xbefa4fa4\n\n\t  return this\n\t}\n\n\tSha384.prototype._hash = function () {\n\t  var H = new Buffer(48)\n\n\t  function writeInt64BE (h, l, offset) {\n\t    H.writeInt32BE(h, offset)\n\t    H.writeInt32BE(l, offset + 4)\n\t  }\n\n\t  writeInt64BE(this._ah, this._al, 0)\n\t  writeInt64BE(this._bh, this._bl, 8)\n\t  writeInt64BE(this._ch, this._cl, 16)\n\t  writeInt64BE(this._dh, this._dl, 24)\n\t  writeInt64BE(this._eh, this._el, 32)\n\t  writeInt64BE(this._fh, this._fl, 40)\n\n\t  return H\n\t}\n\n\tmodule.exports = Sha384\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))\n\n/***/ },\n/* 518 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\n\tCopyright (c) 2014, Matteo Collina <hello@matteocollina.com>\n\n\tPermission to use, copy, modify, and/or distribute this software for any\n\tpurpose with or without fee is hereby granted, provided that the above\n\tcopyright notice and this permission notice appear in all copies.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n\tIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\t*/\n\n\t'use strict';\n\n\tvar through = __webpack_require__(206)\n\n\tfunction transform(chunk, enc, cb) {\n\t  var list = chunk.toString('utf8').split(this.matcher)\n\t    , remaining = list.pop()\n\t    , i\n\n\t  if (list.length >= 1) {\n\t    push(this, this.mapper((this._last + list.shift())))\n\t  } else {\n\t    remaining = this._last + remaining\n\t  }\n\n\t  for (i = 0; i < list.length; i++) {\n\t    push(this, this.mapper(list[i]))\n\t  }\n\n\t  this._last = remaining\n\n\t  cb()\n\t}\n\n\tfunction flush(cb) {\n\t  if (this._last)\n\t    push(this, this.mapper(this._last))\n\n\t  cb()\n\t}\n\n\tfunction push(self, val) {\n\t  if (val !== undefined)\n\t    self.push(val)\n\t}\n\n\tfunction noop(incoming) {\n\t  return incoming\n\t}\n\n\tfunction split(matcher, mapper, options) {\n\n\t  if (typeof matcher === 'object' && !(matcher instanceof RegExp)) {\n\t    options = matcher\n\t    matcher = null\n\t  }\n\n\t  if (typeof matcher === 'function') {\n\t    mapper = matcher\n\t    matcher = null\n\t  }\n\n\t  options = options || {}\n\n\t  var stream = through(options, transform, flush)\n\n\t  // this stream is in objectMode only in the readable part\n\t  stream._readableState.objectMode = true;\n\n\t  stream._last = ''\n\t  stream.matcher = matcher || /\\r?\\n/\n\t  stream.mapper = mapper || noop\n\n\t  return stream\n\t}\n\n\tmodule.exports = split\n\n\n/***/ },\n/* 519 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\n\tmodule.exports = Array.isArray || function (arr) {\n\t  return toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ },\n/* 520 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(49)\n\n\n/***/ },\n/* 521 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(198)\n\n\n/***/ },\n/* 522 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {var Stream = (function (){\n\t  try {\n\t    return __webpack_require__(12); // hack to fix a circular dependency issue when used with browserify\n\t  } catch(_){}\n\t}());\n\texports = module.exports = __webpack_require__(199);\n\texports.Stream = Stream || exports;\n\texports.Readable = exports;\n\texports.Writable = __webpack_require__(127);\n\texports.Duplex = __webpack_require__(49);\n\texports.Transform = __webpack_require__(126);\n\texports.PassThrough = __webpack_require__(198);\n\n\tif (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {\n\t  module.exports = Stream;\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))\n\n/***/ },\n/* 523 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(126)\n\n\n/***/ },\n/* 524 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(127)\n\n\n/***/ },\n/* 525 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer, global, process) {var capability = __webpack_require__(201)\n\tvar inherits = __webpack_require__(2)\n\tvar response = __webpack_require__(526)\n\tvar stream = __webpack_require__(205)\n\tvar toArrayBuffer = __webpack_require__(529)\n\n\tvar IncomingMessage = response.IncomingMessage\n\tvar rStates = response.readyStates\n\n\tfunction decideMode (preferBinary) {\n\t\tif (capability.fetch) {\n\t\t\treturn 'fetch'\n\t\t} else if (capability.mozchunkedarraybuffer) {\n\t\t\treturn 'moz-chunked-arraybuffer'\n\t\t} else if (capability.msstream) {\n\t\t\treturn 'ms-stream'\n\t\t} else if (capability.arraybuffer && preferBinary) {\n\t\t\treturn 'arraybuffer'\n\t\t} else if (capability.vbArray && preferBinary) {\n\t\t\treturn 'text:vbarray'\n\t\t} else {\n\t\t\treturn 'text'\n\t\t}\n\t}\n\n\tvar ClientRequest = module.exports = function (opts) {\n\t\tvar self = this\n\t\tstream.Writable.call(self)\n\n\t\tself._opts = opts\n\t\tself._body = []\n\t\tself._headers = {}\n\t\tif (opts.auth)\n\t\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\t\tObject.keys(opts.headers).forEach(function (name) {\n\t\t\tself.setHeader(name, opts.headers[name])\n\t\t})\n\n\t\tvar preferBinary\n\t\tif (opts.mode === 'prefer-streaming') {\n\t\t\t// If streaming is a high priority but binary compatibility and\n\t\t\t// the accuracy of the 'content-type' header aren't\n\t\t\tpreferBinary = false\n\t\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t\t// If streaming is more important than preserving the 'content-type' header\n\t\t\tpreferBinary = !capability.overrideMimeType\n\t\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\t\tpreferBinary = true\n\t\t} else {\n\t\t\tthrow new Error('Invalid value for opts.mode')\n\t\t}\n\t\tself._mode = decideMode(preferBinary)\n\n\t\tself.on('finish', function () {\n\t\t\tself._onFinish()\n\t\t})\n\t}\n\n\tinherits(ClientRequest, stream.Writable)\n\n\tClientRequest.prototype.setHeader = function (name, value) {\n\t\tvar self = this\n\t\tvar lowerName = name.toLowerCase()\n\t\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t\t// http-browserify did it, so I will too.\n\t\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\t\treturn\n\n\t\tself._headers[lowerName] = {\n\t\t\tname: name,\n\t\t\tvalue: value\n\t\t}\n\t}\n\n\tClientRequest.prototype.getHeader = function (name) {\n\t\tvar self = this\n\t\treturn self._headers[name.toLowerCase()].value\n\t}\n\n\tClientRequest.prototype.removeHeader = function (name) {\n\t\tvar self = this\n\t\tdelete self._headers[name.toLowerCase()]\n\t}\n\n\tClientRequest.prototype._onFinish = function () {\n\t\tvar self = this\n\n\t\tif (self._destroyed)\n\t\t\treturn\n\t\tvar opts = self._opts\n\n\t\tvar headersObj = self._headers\n\t\tvar body\n\t\tif (opts.method === 'POST' || opts.method === 'PUT' || opts.method === 'PATCH') {\n\t\t\tif (capability.blobConstructor) {\n\t\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t\t}), {\n\t\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t// get utf8 string\n\t\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t\t}\n\t\t}\n\n\t\tif (self._mode === 'fetch') {\n\t\t\tvar headers = Object.keys(headersObj).map(function (name) {\n\t\t\t\treturn [headersObj[name].name, headersObj[name].value]\n\t\t\t})\n\n\t\t\tglobal.fetch(self._opts.url, {\n\t\t\t\tmethod: self._opts.method,\n\t\t\t\theaders: headers,\n\t\t\t\tbody: body,\n\t\t\t\tmode: 'cors',\n\t\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin'\n\t\t\t}).then(function (response) {\n\t\t\t\tself._fetchResponse = response\n\t\t\t\tself._connect()\n\t\t\t}, function (reason) {\n\t\t\t\tself.emit('error', reason)\n\t\t\t})\n\t\t} else {\n\t\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\t\ttry {\n\t\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t\t} catch (err) {\n\t\t\t\tprocess.nextTick(function () {\n\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Can't set responseType on really old browsers\n\t\t\tif ('responseType' in xhr)\n\t\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\t\tif ('withCredentials' in xhr)\n\t\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\t\tObject.keys(headersObj).forEach(function (name) {\n\t\t\t\txhr.setRequestHeader(headersObj[name].name, headersObj[name].value)\n\t\t\t})\n\n\t\t\tself._response = null\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tswitch (xhr.readyState) {\n\t\t\t\t\tcase rStates.LOADING:\n\t\t\t\t\tcase rStates.DONE:\n\t\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\t\txhr.onprogress = function () {\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onerror = function () {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tself.emit('error', new Error('XHR error'))\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\txhr.send(body)\n\t\t\t} catch (err) {\n\t\t\t\tprocess.nextTick(function () {\n\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if xhr.status is readable and non-zero, indicating no error.\n\t * Even though the spec says it should be available in readyState 3,\n\t * accessing it throws an exception in IE8\n\t */\n\tfunction statusValid (xhr) {\n\t\ttry {\n\t\t\tvar status = xhr.status\n\t\t\treturn (status !== null && status !== 0)\n\t\t} catch (e) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tClientRequest.prototype._onXHRProgress = function () {\n\t\tvar self = this\n\n\t\tif (!statusValid(self._xhr) || self._destroyed)\n\t\t\treturn\n\n\t\tif (!self._response)\n\t\t\tself._connect()\n\n\t\tself._response._onXHRProgress()\n\t}\n\n\tClientRequest.prototype._connect = function () {\n\t\tvar self = this\n\n\t\tif (self._destroyed)\n\t\t\treturn\n\n\t\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode)\n\t\tself.emit('response', self._response)\n\t}\n\n\tClientRequest.prototype._write = function (chunk, encoding, cb) {\n\t\tvar self = this\n\n\t\tself._body.push(chunk)\n\t\tcb()\n\t}\n\n\tClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\t\tvar self = this\n\t\tself._destroyed = true\n\t\tif (self._response)\n\t\t\tself._response._destroyed = true\n\t\tif (self._xhr)\n\t\t\tself._xhr.abort()\n\t\t// Currently, there isn't a way to truly abort a fetch.\n\t\t// If you like bikeshedding, see https://github.com/whatwg/fetch/issues/27\n\t}\n\n\tClientRequest.prototype.end = function (data, encoding, cb) {\n\t\tvar self = this\n\t\tif (typeof data === 'function') {\n\t\t\tcb = data\n\t\t\tdata = undefined\n\t\t}\n\n\t\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n\t}\n\n\tClientRequest.prototype.flushHeaders = function () {}\n\tClientRequest.prototype.setTimeout = function () {}\n\tClientRequest.prototype.setNoDelay = function () {}\n\tClientRequest.prototype.setSocketKeepAlive = function () {}\n\n\t// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\n\tvar unsafeHeaders = [\n\t\t'accept-charset',\n\t\t'accept-encoding',\n\t\t'access-control-request-headers',\n\t\t'access-control-request-method',\n\t\t'connection',\n\t\t'content-length',\n\t\t'cookie',\n\t\t'cookie2',\n\t\t'date',\n\t\t'dnt',\n\t\t'expect',\n\t\t'host',\n\t\t'keep-alive',\n\t\t'origin',\n\t\t'referer',\n\t\t'te',\n\t\t'trailer',\n\t\t'transfer-encoding',\n\t\t'upgrade',\n\t\t'user-agent',\n\t\t'via'\n\t]\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, (function() { return this; }()), __webpack_require__(8)))\n\n/***/ },\n/* 526 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process, Buffer, global) {var capability = __webpack_require__(201)\n\tvar inherits = __webpack_require__(2)\n\tvar stream = __webpack_require__(205)\n\n\tvar rStates = exports.readyStates = {\n\t\tUNSENT: 0,\n\t\tOPENED: 1,\n\t\tHEADERS_RECEIVED: 2,\n\t\tLOADING: 3,\n\t\tDONE: 4\n\t}\n\n\tvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode) {\n\t\tvar self = this\n\t\tstream.Readable.call(self)\n\n\t\tself._mode = mode\n\t\tself.headers = {}\n\t\tself.rawHeaders = []\n\t\tself.trailers = {}\n\t\tself.rawTrailers = []\n\n\t\t// Fake the 'close' event, but only once 'end' fires\n\t\tself.on('end', function () {\n\t\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('close')\n\t\t\t})\n\t\t})\n\n\t\tif (mode === 'fetch') {\n\t\t\tself._fetchResponse = response\n\n\t\t\tself.url = response.url\n\t\t\tself.statusCode = response.status\n\t\t\tself.statusMessage = response.statusText\n\t\t\t// backwards compatible version of for (<item> of <iterable>):\n\t\t\t// for (var <item>,_i,_it = <iterable>[Symbol.iterator](); <item> = (_i = _it.next()).value,!_i.done;)\n\t\t\tfor (var header, _i, _it = response.headers[Symbol.iterator](); header = (_i = _it.next()).value, !_i.done;) {\n\t\t\t\tself.headers[header[0].toLowerCase()] = header[1]\n\t\t\t\tself.rawHeaders.push(header[0], header[1])\n\t\t\t}\n\n\t\t\t// TODO: this doesn't respect backpressure. Once WritableStream is available, this can be fixed\n\t\t\tvar reader = response.body.getReader()\n\t\t\tfunction read () {\n\t\t\t\treader.read().then(function (result) {\n\t\t\t\t\tif (self._destroyed)\n\t\t\t\t\t\treturn\n\t\t\t\t\tif (result.done) {\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\t\tread()\n\t\t\t\t})\n\t\t\t}\n\t\t\tread()\n\n\t\t} else {\n\t\t\tself._xhr = xhr\n\t\t\tself._pos = 0\n\n\t\t\tself.url = xhr.responseURL\n\t\t\tself.statusCode = xhr.status\n\t\t\tself.statusMessage = xhr.statusText\n\t\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\t\theaders.forEach(function (header) {\n\t\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\t\tif (matches) {\n\t\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t\t}\n\t\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tself._charset = 'x-user-defined'\n\t\t\tif (!capability.overrideMimeType) {\n\t\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\t\tif (mimeType) {\n\t\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\t\tif (charsetMatch) {\n\t\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!self._charset)\n\t\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t\t}\n\t\t}\n\t}\n\n\tinherits(IncomingMessage, stream.Readable)\n\n\tIncomingMessage.prototype._read = function () {}\n\n\tIncomingMessage.prototype._onXHRProgress = function () {\n\t\tvar self = this\n\n\t\tvar xhr = self._xhr\n\n\t\tvar response = null\n\t\tswitch (self._mode) {\n\t\t\tcase 'text:vbarray': // For IE9\n\t\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\t\tbreak\n\t\t\t\ttry {\n\t\t\t\t\t// This fails in IE8\n\t\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t\t} catch (e) {}\n\t\t\t\tif (response !== null) {\n\t\t\t\t\tself.push(new Buffer(response))\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// Falls through in IE8\t\n\t\t\tcase 'text':\n\t\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\t\tresponse = xhr.responseText\n\t\t\t\t} catch (e) {\n\t\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif (response.length > self._pos) {\n\t\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\t\tself.push(buffer)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t\t}\n\t\t\t\t\tself._pos = response.length\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'arraybuffer':\n\t\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\t\tbreak\n\t\t\t\tresponse = xhr.response\n\t\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\t\tbreak\n\t\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\t\tresponse = xhr.response\n\t\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\t\tbreak\n\t\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\t\tbreak\n\t\t\tcase 'ms-stream':\n\t\t\t\tresponse = xhr.response\n\t\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\t\tbreak\n\t\t\t\tvar reader = new global.MSStreamReader()\n\t\t\t\treader.onprogress = function () {\n\t\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.onload = function () {\n\t\t\t\t\tself.push(null)\n\t\t\t\t}\n\t\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\t\treader.readAsArrayBuffer(response)\n\t\t\t\tbreak\n\t\t}\n\n\t\t// The ms-stream case handles end separately in reader.onload()\n\t\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\t\tself.push(null)\n\t\t}\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8), __webpack_require__(1).Buffer, (function() { return this; }())))\n\n/***/ },\n/* 527 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\n\tmodule.exports = Array.isArray || function (arr) {\n\t  return toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ },\n/* 528 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// a passthrough stream.\n\t// basically just the most minimal sort of Transform stream.\n\t// Every written chunk gets output as-is.\n\n\t'use strict';\n\n\tmodule.exports = PassThrough;\n\n\tvar Transform = __webpack_require__(203);\n\n\t/*<replacement>*/\n\tvar util = __webpack_require__(17);\n\tutil.inherits = __webpack_require__(2);\n\t/*</replacement>*/\n\n\tutil.inherits(PassThrough, Transform);\n\n\tfunction PassThrough(options) {\n\t  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n\t  Transform.call(this, options);\n\t}\n\n\tPassThrough.prototype._transform = function (chunk, encoding, cb) {\n\t  cb(null, chunk);\n\t};\n\n/***/ },\n/* 529 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Buffer = __webpack_require__(1).Buffer\n\n\tmodule.exports = function (buf) {\n\t\t// If the buffer is backed by a Uint8Array, a faster version will work\n\t\tif (buf instanceof Uint8Array) {\n\t\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\t\treturn buf.buffer\n\t\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t\t// Otherwise we need to get a proper copy\n\t\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t\t}\n\t\t}\n\n\t\tif (Buffer.isBuffer(buf)) {\n\t\t\t// This is the slow version that will work with any Buffer\n\t\t\t// implementation (even in old browsers)\n\t\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\t\tvar len = buf.length\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tarrayCopy[i] = buf[i]\n\t\t\t}\n\t\t\treturn arrayCopy.buffer\n\t\t} else {\n\t\t\tthrow new Error('Argument must be a Buffer')\n\t\t}\n\t}\n\n\n/***/ },\n/* 530 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = {\n\t  isString: function(arg) {\n\t    return typeof(arg) === 'string';\n\t  },\n\t  isObject: function(arg) {\n\t    return typeof(arg) === 'object' && arg !== null;\n\t  },\n\t  isNull: function(arg) {\n\t    return arg === null;\n\t  },\n\t  isNullOrUndefined: function(arg) {\n\t    return arg == null;\n\t  }\n\t};\n\n\n/***/ },\n/* 531 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function isBuffer(arg) {\n\t  return arg && typeof arg === 'object'\n\t    && typeof arg.copy === 'function'\n\t    && typeof arg.fill === 'function'\n\t    && typeof arg.readUInt8 === 'function';\n\t}\n\n/***/ },\n/* 532 */\n/***/ function(module, exports) {\n\n\tmodule.exports = read\n\n\tvar MSB = 0x80\n\t  , REST = 0x7F\n\n\tfunction read(buf, offset) {\n\t  var res    = 0\n\t    , offset = offset || 0\n\t    , shift  = 0\n\t    , counter = offset\n\t    , b\n\t    , l = buf.length\n\t  \n\t  do {\n\t    if(counter >= l) {\n\t      read.bytesRead = 0\n\t      return undefined\n\t    }\n\t    b = buf[counter++]\n\t    res += shift < 28\n\t      ? (b & REST) << shift\n\t      : (b & REST) * Math.pow(2, shift)\n\t    shift += 7\n\t  } while (b >= MSB)\n\t  \n\t  read.bytes = counter - offset\n\t  \n\t  return res\n\t}\n\n\n/***/ },\n/* 533 */\n/***/ function(module, exports) {\n\n\tmodule.exports = encode\n\n\tvar MSB = 0x80\n\t  , REST = 0x7F\n\t  , MSBALL = ~REST\n\t  , INT = Math.pow(2, 31)\n\n\tfunction encode(num, out, offset) {\n\t  out = out || []\n\t  offset = offset || 0\n\t  var oldOffset = offset\n\n\t  while(num >= INT) {\n\t    out[offset++] = (num & 0xFF) | MSB\n\t    num /= 128\n\t  }\n\t  while(num & MSBALL) {\n\t    out[offset++] = (num & 0xFF) | MSB\n\t    num >>>= 7\n\t  }\n\t  out[offset] = num | 0\n\t  \n\t  encode.bytes = offset - oldOffset + 1\n\t  \n\t  return out\n\t}\n\n\n/***/ },\n/* 534 */\n/***/ function(module, exports) {\n\n\t\n\tvar N1 = Math.pow(2,  7)\n\tvar N2 = Math.pow(2, 14)\n\tvar N3 = Math.pow(2, 21)\n\tvar N4 = Math.pow(2, 28)\n\tvar N5 = Math.pow(2, 35)\n\tvar N6 = Math.pow(2, 42)\n\tvar N7 = Math.pow(2, 49)\n\tvar N8 = Math.pow(2, 56)\n\tvar N9 = Math.pow(2, 63)\n\n\tmodule.exports = function (value) {\n\t  return (\n\t    value < N1 ? 1\n\t  : value < N2 ? 2\n\t  : value < N3 ? 3\n\t  : value < N4 ? 4\n\t  : value < N5 ? 5\n\t  : value < N6 ? 6\n\t  : value < N7 ? 7\n\t  : value < N8 ? 8\n\t  : value < N9 ? 9\n\t  :              10\n\t  )\n\t}\n\n\n/***/ },\n/* 535 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar indexOf = __webpack_require__(482);\n\n\tvar Object_keys = function (obj) {\n\t    if (Object.keys) return Object.keys(obj)\n\t    else {\n\t        var res = [];\n\t        for (var key in obj) res.push(key)\n\t        return res;\n\t    }\n\t};\n\n\tvar forEach = function (xs, fn) {\n\t    if (xs.forEach) return xs.forEach(fn)\n\t    else for (var i = 0; i < xs.length; i++) {\n\t        fn(xs[i], i, xs);\n\t    }\n\t};\n\n\tvar defineProp = (function() {\n\t    try {\n\t        Object.defineProperty({}, '_', {});\n\t        return function(obj, name, value) {\n\t            Object.defineProperty(obj, name, {\n\t                writable: true,\n\t                enumerable: false,\n\t                configurable: true,\n\t                value: value\n\t            })\n\t        };\n\t    } catch(e) {\n\t        return function(obj, name, value) {\n\t            obj[name] = value;\n\t        };\n\t    }\n\t}());\n\n\tvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n\t'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n\t'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n\t'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n\t'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\n\tfunction Context() {}\n\tContext.prototype = {};\n\n\tvar Script = exports.Script = function NodeScript (code) {\n\t    if (!(this instanceof Script)) return new Script(code);\n\t    this.code = code;\n\t};\n\n\tScript.prototype.runInContext = function (context) {\n\t    if (!(context instanceof Context)) {\n\t        throw new TypeError(\"needs a 'context' argument.\");\n\t    }\n\t    \n\t    var iframe = document.createElement('iframe');\n\t    if (!iframe.style) iframe.style = {};\n\t    iframe.style.display = 'none';\n\t    \n\t    document.body.appendChild(iframe);\n\t    \n\t    var win = iframe.contentWindow;\n\t    var wEval = win.eval, wExecScript = win.execScript;\n\n\t    if (!wEval && wExecScript) {\n\t        // win.eval() magically appears when this is called in IE:\n\t        wExecScript.call(win, 'null');\n\t        wEval = win.eval;\n\t    }\n\t    \n\t    forEach(Object_keys(context), function (key) {\n\t        win[key] = context[key];\n\t    });\n\t    forEach(globals, function (key) {\n\t        if (context[key]) {\n\t            win[key] = context[key];\n\t        }\n\t    });\n\t    \n\t    var winKeys = Object_keys(win);\n\n\t    var res = wEval.call(win, this.code);\n\t    \n\t    forEach(Object_keys(win), function (key) {\n\t        // Avoid copying circular objects like `top` and `window` by only\n\t        // updating existing context properties or new properties in the `win`\n\t        // that was only introduced after the eval.\n\t        if (key in context || indexOf(winKeys, key) === -1) {\n\t            context[key] = win[key];\n\t        }\n\t    });\n\n\t    forEach(globals, function (key) {\n\t        if (!(key in context)) {\n\t            defineProp(context, key, win[key]);\n\t        }\n\t    });\n\t    \n\t    document.body.removeChild(iframe);\n\t    \n\t    return res;\n\t};\n\n\tScript.prototype.runInThisContext = function () {\n\t    return eval(this.code); // maybe...\n\t};\n\n\tScript.prototype.runInNewContext = function (context) {\n\t    var ctx = Script.createContext(context);\n\t    var res = this.runInContext(ctx);\n\n\t    forEach(Object_keys(ctx), function (key) {\n\t        context[key] = ctx[key];\n\t    });\n\n\t    return res;\n\t};\n\n\tforEach(Object_keys(Script.prototype), function (name) {\n\t    exports[name] = Script[name] = function (code) {\n\t        var s = Script(code);\n\t        return s[name].apply(s, [].slice.call(arguments, 1));\n\t    };\n\t});\n\n\texports.createScript = function (code) {\n\t    return exports.Script(code);\n\t};\n\n\texports.createContext = Script.createContext = function (context) {\n\t    var copy = new Context();\n\t    if(typeof context === 'object') {\n\t        forEach(Object_keys(context), function (key) {\n\t            copy[key] = context[key];\n\t        });\n\t    }\n\t    return copy;\n\t};\n\n\n/***/ },\n/* 536 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 537 */\n/***/ function(module, exports) {\n\n\t/* (ignored) */\n\n/***/ },\n/* 538 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(211);\n\tmodule.exports = __webpack_require__(210);\n\n\n/***/ }\n/******/ ]);"
  },
  {
    "path": "storage/style.css",
    "content": "html * {\n   color: #000 !important;\n   font-family: Arial !important;\n}"
  },
  {
    "path": "storage.html",
    "content": "<!doctype>\n<html>\n\n<head>\n    <title>IPFS + Ethereum Storage Application</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"./storage/style.css\" />\n    <script type=\"text/javascript\" src=\"./ipfs/ipfs.js\"></script>\n    <script type=\"text/javascript\" src=\"./web3/web3.min.js\"></script>\n    <script type=\"text/javascript\">\n\n    /* Configuration variables */\n    var ipfsHost    = 'localhost';\n    var ipfsAPIPort = '5001';\n    var ipfsWebPort = '8080';\n    var web3Host    = 'http://localhost';\n    var web3Port    = '8545';\n\n    /* IPFS initialization */\n    var ipfs = window.IpfsApi(ipfsHost, ipfsAPIPort)\n    ipfs.swarm.peers(function (err, res) {\n        if (err) {\n            console.error(err);\n        } else {\n            var numPeers = res.Peers === null ? 0 : res.Peers.length;\n            console.log(\"IPFS - connected to \" + numPeers + \" peers\");\n        }\n    });\n\n    /* web3 initialization */\n    var Web3 = require('web3');\n    var web3 = new Web3();\n    web3.setProvider(new web3.providers.HttpProvider(web3Host + ':' + web3Port));\n    if (!web3.isConnected()) {\n        console.error(\"Ethereum - no connection to RPC server\");\n    } else {\n        console.log(\"Ethereum - connected to RPC server\");\n    }\n    \n    /* JavaScript smart contract interface */\n    var contractInterface = [{\n        \"constant\": false,\n        \"inputs\": [{\n\t        \"name\": \"x\",\n\t        \"type\": \"string\"\n        }],\n        \"name\": \"set\",\n        \"outputs\": [],\n        \"type\": \"function\"\n    }, {\n        \"constant\": true,\n        \"inputs\": [],\n        \"name\": \"get\",\n        \"outputs\": [{\n\t        \"name\": \"x\",\n\t        \"type\": \"string\"\n        }],\n        \"type\": \"function\"\n    }];\n\n    var account = web3.eth.accounts[0];\n\n    var contractObject = {\n        from: account,\n        gas: 300000,\n        data: '0x6060604052610282806100126000396000f360606040526000357c0100000000000000000000000000000000000000000000000000000000900480634ed3885e146100445780636d4ce63c1461009a57610042565b005b6100986004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050909091905050610115565b005b6100a760048050506101c6565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156101075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b8060006000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016457805160ff1916838001178555610195565b82800160010185558215610195579182015b82811115610194578251826000505591602001919060010190610176565b5b5090506101c091906101a2565b808211156101bc57600081815060009055506001016101a2565b5090565b50505b50565b602060405190810160405280600081526020015060006000508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102735780601f1061024857610100808354040283529160200191610273565b820191906000526020600020905b81548152906001019060200180831161025657829003601f168201915b5050505050905061027f565b9056'\n    };\n\n    var sendDataObject = {\n        from: account,\n        gas: 300000,\n    };\n\n    window.ipfs = ipfs;\n    window.web3 = web3;\n    window.account = account;\n    window.contractObject = contractObject;\n    window.contract = web3.eth.contract(contractInterface);\n    window.ipfsAddress = \"http://\" + ipfsHost + ':' + ipfsWebPort + \"/ipfs\";\n\n    function deployStorage() {\n        window.IPFSHash = null;\n        window.currentData = null;\n\n        if (window.contractInstance) {\n            console.error('Contract already been deployed at: ', window.contractAddress);\n            return;\n        }\n\n        window.contract.new(window.contractObject, function (err, contract) {\n            if (err) {\n                console.error(\"Contract deployment error: \", err);\n            } else if (contract.address) {\n                window.contractAddress = contract.address;\n                window.contractInstance = window.contract.at(contract.address);\n                console.log(\"Contract successfully deployed at: \", contract.address);\n            } else if (contract.transactionHash) {\n                console.log(\"Awaiting contract deployment with transaction hash: \", contract.transactionHash);\n            } else {\n                console.error(\"Unresolved contract deployment error\");\n            }\n        });\n    }\n\n    function storeContent(url) {\n        window.ipfs.add(url, function(err, result) {\n            if (err) {\n                console.error(\"Content submission error:\", err);\n                return false;\n            } else if (result && result[0] && result[0].Hash) {\n                console.log(\"Content successfully stored. IPFS address:\", result[0].Hash);\n            } else {\n                console.error(\"Unresolved content submission error\");\n                return null;\n            }\n        });\n    }\n\n    function storeAddress(data) {\n        if (!window.contractInstance) {\n            console.error('Ensure the storage contract has been deployed');\n            return;\n        }\n\n        if (window.currentData == data) {\n            console.error(\"Overriding existing data with same data\");\n            return;\n        }\n\n        window.contractInstance.set.sendTransaction(data, window.sendDataObject, function (err, result) {\n            if (err) {\n                console.error(\"Transaction submission error:\", err);\n            } else {\n                window.currentData = data;\n                console.log(\"Address successfully stored. Transaction hash:\", result);\n            }\n        });\n    }\n\n    function fetchContent() {\n        if (!window.contractInstance) {\n            console.error(\"Storage contract has not been deployed\");\n            return;\n        }\n\n        window.contractInstance.get.call(function (err, result) {\n            if (err) {\n                console.error(\"Content fetch error:\", err);\n            } else if (result && window.IPFSHash == result) {\n                console.log(\"New data is not mined yet. Current data: \", result);\n                return;\n            } else if (result) {\n                window.IPFSHash = result;\n                var URL = window.ipfsAddress + \"/\" + result;\n                console.log(\"Content successfully retrieved. IPFS address\", result);\n                console.log(\"Content URL:\", URL);\n            } else {\n                console.error('No data, verify the transaction has been mined');\n            }\n        });\n    }\n\n    function getBalance() {\n        window.web3.eth.getBalance(window.account, function (err, balance) {\n            console.log(parseFloat(window.web3.fromWei(balance, \"ether\")));\n        });\n    }\n\n    </script>\n</head>\n\n<body>\n    <br/>\n    <h2>IPFS + Ethereum Storage Application</h2>\n\n    <hr/>\n    <br/>\n\n    <p>Start by opening the developer console to interact with the application. Verify that the console shows we are connect to our IPFS and geth clients. The following steps will guide you through setting up and operating our data storage solution using IPFS and Ethereum.</p>\n\n    <ol>\n        <li><code>deployStorage()</code>: Deploy the storage contract to your Ethereum blockchain. The geth client will show it received the deployment transaction, return a transaction hash to the console, and print out the contract transaction address after successful deployment.</li>\n        <br/>\n        <li><code>storeContent(URL)</code>: Store the specified URL content to IPFS. The IPFS client will receive the URL content for storage and return an IPFS address that will be provided to the smart contract.</li>\n        <br/>\n        <li><code>storeAddress(IPFS address)</code>: Submit a transaction to the Ethereum contract for storage on our blockchain.</li>\n        <br/>\n        <li><code>fetchContent()</code>: Gets the last stored IPFS address in the Ethereum contract and queries IPFS for the associated URL.</li>\n    </ol>\n\n    <br/>\n    <hr/>\n    <br/>\n\n    <p>Here is a concrete example. Let's say we want to upload an image of the <a href=\"https://ethereum.org/images/wallpaper-homestead.jpg\">Ethereum Homestead wallpaper</a>. For example purposes, my IPFS hash address for this wallpaper resolves to \"QmPJLNMiAp3QoCKdGAgzshNRbQiZ8wQmyjYkcUHJZzQ19u\". Then we have all the pieces to run the storage application.</p>\n\n    <p>Run the commands:</p>\n    <ol>\n        <li><code>deployStorage()</code></li>\n        <li><code>storeContent(\"https://ethereum.org/images/wallpaper-homestead.jpg\")</code></li>\n        <li><code>storeAddress(\"QmPJLNMiAp3QoCKdGAgzshNRbQiZ8wQmyjYkcUHJZzQ19u\")</code></li>\n        <li><code>fetchContent()</code></li>\n    </ol>\n\n    <p>This process will then return: \"http://localhost:8080/ipfs/QmPJLNMiAp3QoCKdGAgzshNRbQiZ8wQmyjYkcUHJZzQ19u\"</p>\n\n    <br/>\n    <hr/>\n    <br/>\n\n    <p>Troubleshooting: To verify there is a positive ether balance, run <code>getBalance()</code> to check the Ethereum wallet balance.</p>\n\n    <br/>\n    <hr/>\n</body>\n"
  }
]