UNPKG

682 kBSource Map (JSON)View Raw
1{"version":3,"file":"bsv.js","sources":["../lib/bn.js","../lib/br.js","../lib/bw.js","../lib/struct.js","../lib/base-58.js","../lib/cmp.js","../lib/workers-result.js","../lib/workers.js","../lib/hash.js","../lib/base-58-check.js","../lib/config.js","../lib/constants.js","../lib/op-code.js","../lib/point.js","../lib/pub-key.js","../lib/random.js","../lib/priv-key.js","../lib/sig.js","../lib/script.js","../lib/address.js","../lib/bip-32.js","../lib/bip-39-en-wordlist.js","../lib/bip-39.js","../lib/bip-39-jp-wordlist.js","../lib/key-pair.js","../lib/ecdsa.js","../lib/bsm.js","../lib/block-header.js","../lib/merkle.js","../lib/hash-cache.js","../lib/var-int.js","../lib/tx-in.js","../lib/tx-out.js","../lib/tx.js","../lib/block.js","../lib/interp.js","../lib/sig-operations.js","../lib/tx-out-map.js","../lib/tx-builder.js","../lib/tx-verifier.js","../lib/aes.js","../lib/cbc.js","../lib/aescbc.js","../lib/ach.js","../lib/ecies.js","../entry.js"],"sourcesContent":["/**\n * Big Number\n * ==========\n *\n * Since javascript numbers are only precise up to 53 bits, and bitcoin is\n * based on cryptography that uses 256 bit numbers, we must use a big number\n * library. The library we use at the moment is Fedor Indutny's bn.js library.\n * Since big numbers are extremely useful, we provide some very basic wrappers\n * for his big number class and expose it. The wrappers merely allow you to do,\n * say, bn.cmp(num) instead of just bn.cmp(bn), which is nice. The primary way\n * to use this is:\n * const bn = Bn(str) // str is base 10\n * const bn = Bn(num)\n * const bn = Bn().fromBuffer(buf)\n * const bn = Bn().fromSm(buf); // sign+magnitude format, first bit is sign\n *\n * For little endian, pass in an options value:\n * const bn = Bn().fromBuffer(buf, {endian: 'little'})\n * const bn = Bn().fromSm(buf, {endian: 'little'})\n *\n * Getting output:\n * const str = Bn().toString() // produces base 10 string\n * const buf = Bn().toBuffer() // produces buffer representation\n * const buf = Bn().toBuffer({size: 32}) //produced 32 byte buffer\n */\n'use strict'\n\nimport _Bn from 'bn.js'\n\nfunction Bn (n, base, ...rest) {\n if (!(this instanceof Bn)) {\n return new Bn(n, base, ...rest)\n }\n _Bn.call(this, n, base, ...rest)\n}\n\nObject.keys(_Bn).forEach(function (key) {\n Bn[key] = _Bn[key]\n})\nBn.prototype = Object.create(_Bn.prototype)\nBn.prototype.constructor = Bn\n\nfunction reverseBuf (buf) {\n const buf2 = Buffer.alloc(buf.length)\n for (let i = 0; i < buf.length; i++) {\n buf2[i] = buf[buf.length - 1 - i]\n }\n return buf2\n}\n\nBn.prototype.fromHex = function (hex, opts) {\n return this.fromBuffer(Buffer.from(hex, 'hex'), opts)\n}\n\nBn.prototype.toHex = function (opts) {\n return this.toBuffer(opts).toString('hex')\n}\n\nBn.prototype.toJSON = function () {\n return this.toString()\n}\n\nBn.prototype.fromJSON = function (str) {\n const bn = Bn(str)\n bn.copy(this)\n return this\n}\n\nBn.prototype.fromNumber = function (n) {\n const bn = Bn(n)\n bn.copy(this)\n return this\n}\n\nBn.prototype.toNumber = function () {\n return parseInt(this.toString(10), 10)\n}\n\nBn.prototype.fromString = function (str, base) {\n const bn = Bn(str, base)\n bn.copy(this)\n return this\n}\n\nBn.fromBuffer = function (buf, opts = { endian: 'big' }) {\n if (opts.endian === 'little') {\n buf = reverseBuf(buf)\n }\n const hex = buf.toString('hex')\n const bn = new Bn(hex, 16)\n return bn\n}\n\nBn.prototype.fromBuffer = function (buf, opts) {\n const bn = Bn.fromBuffer(buf, opts)\n bn.copy(this)\n\n return this\n}\n\nBn.prototype.toBuffer = function (opts = { size: undefined, endian: 'big' }) {\n let buf\n if (opts.size) {\n const hex = this.toString(16, 2)\n const natlen = hex.length / 2\n buf = Buffer.from(hex, 'hex')\n\n if (natlen === opts.size) {\n // pass\n } else if (natlen > opts.size) {\n buf = buf.slice(natlen - buf.length, buf.length)\n } else if (natlen < opts.size) {\n const rbuf = Buffer.alloc(opts.size)\n for (let i = 0; i < buf.length; i++) {\n rbuf[rbuf.length - 1 - i] = buf[buf.length - 1 - i]\n }\n for (let i = 0; i < opts.size - natlen; i++) {\n rbuf[i] = 0\n }\n buf = rbuf\n }\n } else {\n const hex = this.toString(16, 2)\n buf = Buffer.from(hex, 'hex')\n }\n\n if (opts.endian === 'little') {\n buf = reverseBuf(buf)\n }\n const longzero = Buffer.from([0])\n if (Buffer.compare(buf, longzero) === 0) {\n return Buffer.from([])\n }\n return buf\n}\n\nBn.prototype.toFastBuffer = Bn.prototype.toBuffer\n\nBn.fromFastBuffer = Bn.fromBuffer\nBn.prototype.fromFastBuffer = Bn.prototype.fromBuffer\n\n/**\n * Signed magnitude buffer. Most significant bit represents sign (0 = positive,\n * 1 = negative).\n */\nBn.prototype.fromSm = function (buf, opts = { endian: 'big' }) {\n if (buf.length === 0) {\n this.fromBuffer(Buffer.from([0]))\n }\n\n const endian = opts.endian\n if (endian === 'little') {\n buf = reverseBuf(buf)\n }\n\n if (buf[0] & 0x80) {\n buf[0] = buf[0] & 0x7f\n this.fromBuffer(buf)\n this.neg().copy(this)\n } else {\n this.fromBuffer(buf)\n }\n return this\n}\n\nBn.prototype.toSm = function (opts = { endian: 'big' }) {\n const endian = opts.endian\n\n let buf\n if (this.cmp(0) === -1) {\n buf = this.neg().toBuffer()\n if (buf[0] & 0x80) {\n buf = Buffer.concat([Buffer.from([0x80]), buf])\n } else {\n buf[0] = buf[0] | 0x80\n }\n } else {\n buf = this.toBuffer()\n if (buf[0] & 0x80) {\n buf = Buffer.concat([Buffer.from([0x00]), buf])\n }\n }\n\n if ((buf.length === 1) & (buf[0] === 0)) {\n buf = Buffer.from([])\n }\n\n if (endian === 'little') {\n buf = reverseBuf(buf)\n }\n\n return buf\n}\n\n/**\n * Produce a Bn from the \"bits\" value in a blockheader. Analagous to Bitcoin\n * Core's uint256 SetCompact method. bits is assumed to be UInt32.\n */\nBn.prototype.fromBits = function (bits, opts = { strict: false }) {\n // To performed bitwise operations in javascript, we need to convert to a\n // signed 32 bit value.\n let buf = Buffer.alloc(4)\n buf.writeUInt32BE(bits, 0)\n bits = buf.readInt32BE(0)\n if (opts.strict && bits & 0x00800000) {\n throw new Error('negative bit set')\n }\n const nsize = bits >> 24\n const nword = bits & 0x007fffff\n buf = Buffer.alloc(4)\n buf.writeInt32BE(nword)\n if (nsize <= 3) {\n buf = buf.slice(1, nsize + 1)\n } else {\n const fill = Buffer.alloc(nsize - 3)\n fill.fill(0)\n buf = Buffer.concat([buf, fill])\n }\n this.fromBuffer(buf)\n if (bits & 0x00800000) {\n Bn(0)\n .sub(this)\n .copy(this)\n }\n return this\n}\n\n/**\n * Convert Bn to the \"bits\" value in a blockheader. Analagous to Bitcoin\n * Core's uint256 GetCompact method. bits is a UInt32.\n */\nBn.prototype.toBits = function () {\n let buf\n if (this.lt(0)) {\n buf = this.neg().toBuffer()\n } else {\n buf = this.toBuffer()\n }\n let nsize = buf.length\n let nword\n if (nsize > 3) {\n nword = Buffer.concat([Buffer.from([0]), buf.slice(0, 3)]).readUInt32BE(0)\n } else if (nsize <= 3) {\n const blank = Buffer.alloc(3 - nsize + 1)\n blank.fill(0)\n nword = Buffer.concat([blank, buf.slice(0, nsize)]).readUInt32BE(0)\n }\n if (nword & 0x00800000) {\n // The most significant bit denotes sign. Do not want unless number is\n // actually negative.\n nword >>= 8\n nsize++\n }\n if (this.lt(0)) {\n nword |= 0x00800000\n }\n const bits = (nsize << 24) | nword\n // convert bits to UInt32 before returning\n buf = Buffer.alloc(4)\n buf.writeInt32BE(bits, 0)\n return buf.readUInt32BE(0)\n}\n\n// This is analogous to the constructor for CScriptNum in bitcoind. Many ops\n// in bitcoind's script interpreter use CScriptNum, which is not really a\n// proper bignum. Instead, an error is thrown if trying to input a number\n// bigger than 4 bytes. We copy that behavior here. There is one exception -\n// in CHECKLOCKTIMEVERIFY, the numbers are allowed to be up to 5 bytes long.\n// We allow for setting that variable here for use in CHECKLOCKTIMEVERIFY.\nBn.prototype.fromScriptNumBuffer = function (\n buf,\n fRequireMinimal,\n nMaxNumSize\n) {\n if (nMaxNumSize === undefined) {\n nMaxNumSize = 4\n }\n if (buf.length > nMaxNumSize) {\n throw new Error('script number overflow')\n }\n if (fRequireMinimal && buf.length > 0) {\n // Check that the number is encoded with the minimum possible\n // number of bytes.\n //\n // If the most-significant-byte - excluding the sign bit - is zero\n // then we're not minimal. Note how this test also rejects the\n // negative-zero encoding, 0x80.\n if ((buf[buf.length - 1] & 0x7f) === 0) {\n // One exception: if there's more than one byte and the most\n // significant bit of the second-most-significant-byte is set\n // it would conflict with the sign bit. An example of this case\n // is +-255, which encode to 0xff00 and 0xff80 respectively.\n // (big-endian).\n if (buf.length <= 1 || (buf[buf.length - 2] & 0x80) === 0) {\n throw new Error('non-minimally encoded script number')\n }\n }\n }\n return this.fromSm(buf, { endian: 'little' })\n}\n\n// The corollary to the above, with the notable exception that we do not throw\n// an error if the output is larger than four bytes. (Which can happen if\n// performing a numerical operation that results in an overflow to more than 4\n// bytes).\nBn.prototype.toScriptNumBuffer = function (buf) {\n return this.toSm({ endian: 'little' })\n}\n\nBn.prototype.neg = function () {\n const _neg = _Bn.prototype.neg.call(this)\n const neg = Object.create(Bn.prototype)\n _neg.copy(neg)\n return neg\n}\n\nBn.prototype.add = function (bn) {\n const _bn = _Bn.prototype.add.call(this, bn)\n bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\nBn.prototype.sub = function (bn) {\n const _bn = _Bn.prototype.sub.call(this, bn)\n bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\nBn.prototype.mul = function (bn) {\n const _bn = _Bn.prototype.mul.call(this, bn)\n bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\n/**\n * to be used if this is positive.\n */\nBn.prototype.mod = function (bn) {\n const _bn = _Bn.prototype.mod.call(this, bn)\n bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\n/**\n * to be used if this is negative.\n */\nBn.prototype.umod = function (bn) {\n const _bn = _Bn.prototype.umod.call(this, bn)\n bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\nBn.prototype.invm = function (bn) {\n const _bn = _Bn.prototype.invm.call(this, bn)\n bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\nBn.prototype.div = function (bn) {\n const _bn = _Bn.prototype.div.call(this, bn)\n bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\nBn.prototype.ushln = function (bits) {\n const _bn = _Bn.prototype.ushln.call(this, bits)\n const bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\nBn.prototype.ushrn = function (bits) {\n const _bn = _Bn.prototype.ushrn.call(this, bits)\n const bn = Object.create(Bn.prototype)\n _bn.copy(bn)\n return bn\n}\n\nBn.prototype.cmp = function (bn) {\n return _Bn.prototype.cmp.call(this, bn)\n}\n\n/**\n * All the standard big number operations operate on other big numbers. e.g.,\n * bn1.add(bn2). But it is frequenly valuble to add numbers or strings, e.g.\n * bn.add(5) or bn.add('5'). The decorator wraps all methods where this would\n * be convenient and makes that possible.\n */\nfunction decorate (name) {\n Bn.prototype['_' + name] = Bn.prototype[name]\n const f = function (b) {\n if (typeof b === 'string') {\n b = new Bn(b)\n } else if (typeof b === 'number') {\n b = new Bn(b.toString())\n }\n return this['_' + name](b)\n }\n Bn.prototype[name] = f\n}\n\nBn.prototype.eq = function (b) {\n return this.cmp(b) === 0\n}\n\nBn.prototype.neq = function (b) {\n return this.cmp(b) !== 0\n}\n\nBn.prototype.gt = function (b) {\n return this.cmp(b) > 0\n}\n\nBn.prototype.geq = function (b) {\n return this.cmp(b) >= 0\n}\n\nBn.prototype.lt = function (b) {\n return this.cmp(b) < 0\n}\n\nBn.prototype.leq = function (b) {\n return this.cmp(b) <= 0\n}\n\ndecorate('add')\ndecorate('sub')\ndecorate('mul')\ndecorate('mod')\ndecorate('invm')\ndecorate('div')\ndecorate('cmp')\ndecorate('gt')\ndecorate('geq')\ndecorate('lt')\ndecorate('leq')\n\nexport { Bn }\n","/**\n * Buffer Reader\n * =============\n *\n * This is a convenience class for reading VarInts and other basic types from a\n * buffer. This class is most useful for reading VarInts, and also for signed\n * or unsigned integers of various types. It can also read a buffer in reverse\n * order, which is useful in bitcoin which uses little endian numbers a lot so\n * you find that you must reverse things. You probably want to use it like:\n * varInt = new Br(buf).readnew VarInt()\n */\n'use strict'\n\nimport { Bn } from './bn'\n\nclass Br {\n constructor (buf) {\n this.fromObject({ buf })\n }\n\n fromObject (obj) {\n this.buf = obj.buf || this.buf || undefined\n this.pos = obj.pos || this.pos || 0\n return this\n }\n\n eof () {\n return this.pos >= this.buf.length\n }\n\n read (len = this.buf.length) {\n const buf = this.buf.slice(this.pos, this.pos + len)\n this.pos = this.pos + len\n return buf\n }\n\n readReverse (len = this.buf.length) {\n const buf = this.buf.slice(this.pos, this.pos + len)\n this.pos = this.pos + len\n const buf2 = Buffer.alloc(buf.length)\n for (let i = 0; i < buf2.length; i++) {\n buf2[i] = buf[buf.length - 1 - i]\n }\n return buf2\n }\n\n readUInt8 () {\n const val = this.buf.readUInt8(this.pos)\n this.pos = this.pos + 1\n return val\n }\n\n readInt8 () {\n const val = this.buf.readInt8(this.pos)\n this.pos = this.pos + 1\n return val\n }\n\n readUInt16BE () {\n const val = this.buf.readUInt16BE(this.pos)\n this.pos = this.pos + 2\n return val\n }\n\n readInt16BE () {\n const val = this.buf.readInt16BE(this.pos)\n this.pos = this.pos + 2\n return val\n }\n\n readUInt16LE () {\n const val = this.buf.readUInt16LE(this.pos)\n this.pos = this.pos + 2\n return val\n }\n\n readInt16LE () {\n const val = this.buf.readInt16LE(this.pos)\n this.pos = this.pos + 2\n return val\n }\n\n readUInt32BE () {\n const val = this.buf.readUInt32BE(this.pos)\n this.pos = this.pos + 4\n return val\n }\n\n readInt32BE () {\n const val = this.buf.readInt32BE(this.pos)\n this.pos = this.pos + 4\n return val\n }\n\n readUInt32LE () {\n const val = this.buf.readUInt32LE(this.pos)\n this.pos = this.pos + 4\n return val\n }\n\n readInt32LE () {\n const val = this.buf.readInt32LE(this.pos)\n this.pos = this.pos + 4\n return val\n }\n\n readUInt64BEBn () {\n const buf = this.buf.slice(this.pos, this.pos + 8)\n const bn = new Bn().fromBuffer(buf)\n this.pos = this.pos + 8\n return bn\n }\n\n readUInt64LEBn () {\n const buf = this.readReverse(8)\n const bn = new Bn().fromBuffer(buf)\n return bn\n }\n\n readVarIntNum () {\n const first = this.readUInt8()\n let bn, n\n switch (first) {\n case 0xfd:\n return this.readUInt16LE()\n case 0xfe:\n return this.readUInt32LE()\n case 0xff:\n bn = this.readUInt64LEBn()\n n = bn.toNumber()\n if (n <= Math.pow(2, 53)) {\n return n\n } else {\n throw new Error(\n 'number too large to retain precision - use readVarIntBn'\n )\n }\n default:\n return first\n }\n }\n\n readVarIntBuf () {\n const first = this.buf.readUInt8(this.pos)\n switch (first) {\n case 0xfd:\n return this.read(1 + 2)\n case 0xfe:\n return this.read(1 + 4)\n case 0xff:\n return this.read(1 + 8)\n default:\n return this.read(1)\n }\n }\n\n readVarIntBn () {\n const first = this.readUInt8()\n switch (first) {\n case 0xfd:\n return new Bn(this.readUInt16LE())\n case 0xfe:\n return new Bn(this.readUInt32LE())\n case 0xff:\n return this.readUInt64LEBn()\n default:\n return new Bn(first)\n }\n }\n}\n\nexport { Br }\n","/**\n * Buffer Writer\n * =============\n *\n * This is the writing complement of the Br. You can easily write\n * VarInts and other basic number types. The way to use it is: buf =\n * new Bw().write(buf1).write(buf2).toBuffer()\n */\n'use strict'\n\nclass Bw {\n constructor (bufs) {\n this.fromObject({ bufs })\n }\n\n fromObject (obj) {\n this.bufs = obj.bufs || this.bufs || []\n return this\n }\n\n getLength () {\n let len = 0\n for (const i in this.bufs) {\n const buf = this.bufs[i]\n len = len + buf.length\n }\n return len\n }\n\n toBuffer () {\n return Buffer.concat(this.bufs)\n }\n\n write (buf) {\n this.bufs.push(buf)\n return this\n }\n\n writeReverse (buf) {\n const buf2 = Buffer.alloc(buf.length)\n for (let i = 0; i < buf2.length; i++) {\n buf2[i] = buf[buf.length - 1 - i]\n }\n this.bufs.push(buf2)\n return this\n }\n\n writeUInt8 (n) {\n const buf = Buffer.alloc(1)\n buf.writeUInt8(n, 0)\n this.write(buf)\n return this\n }\n\n writeInt8 (n) {\n const buf = Buffer.alloc(1)\n buf.writeInt8(n, 0)\n this.write(buf)\n return this\n }\n\n writeUInt16BE (n) {\n const buf = Buffer.alloc(2)\n buf.writeUInt16BE(n, 0)\n this.write(buf)\n return this\n }\n\n writeInt16BE (n) {\n const buf = Buffer.alloc(2)\n buf.writeInt16BE(n, 0)\n this.write(buf)\n return this\n }\n\n writeUInt16LE (n) {\n const buf = Buffer.alloc(2)\n buf.writeUInt16LE(n, 0)\n this.write(buf)\n return this\n }\n\n writeInt16LE (n) {\n const buf = Buffer.alloc(2)\n buf.writeInt16LE(n, 0)\n this.write(buf)\n return this\n }\n\n writeUInt32BE (n) {\n const buf = Buffer.alloc(4)\n buf.writeUInt32BE(n, 0)\n this.write(buf)\n return this\n }\n\n writeInt32BE (n) {\n const buf = Buffer.alloc(4)\n buf.writeInt32BE(n, 0)\n this.write(buf)\n return this\n }\n\n writeUInt32LE (n) {\n const buf = Buffer.alloc(4)\n buf.writeUInt32LE(n, 0)\n this.write(buf)\n return this\n }\n\n writeInt32LE (n) {\n const buf = Buffer.alloc(4)\n buf.writeInt32LE(n, 0)\n this.write(buf)\n return this\n }\n\n writeUInt64BEBn (bn) {\n const buf = bn.toBuffer({ size: 8 })\n this.write(buf)\n return this\n }\n\n writeUInt64LEBn (bn) {\n const buf = bn.toBuffer({ size: 8 })\n this.writeReverse(buf)\n return this\n }\n\n writeVarIntNum (n) {\n const buf = Bw.varIntBufNum(n)\n this.write(buf)\n return this\n }\n\n writeVarIntBn (bn) {\n const buf = Bw.varIntBufBn(bn)\n this.write(buf)\n return this\n }\n\n static varIntBufNum (n) {\n let buf\n if (n < 253) {\n buf = Buffer.alloc(1)\n buf.writeUInt8(n, 0)\n } else if (n < 0x10000) {\n buf = Buffer.alloc(1 + 2)\n buf.writeUInt8(253, 0)\n buf.writeUInt16LE(n, 1)\n } else if (n < 0x100000000) {\n buf = Buffer.alloc(1 + 4)\n buf.writeUInt8(254, 0)\n buf.writeUInt32LE(n, 1)\n } else {\n buf = Buffer.alloc(1 + 8)\n buf.writeUInt8(255, 0)\n buf.writeInt32LE(n & -1, 1)\n buf.writeUInt32LE(Math.floor(n / 0x100000000), 5)\n }\n return buf\n }\n\n static varIntBufBn (bn) {\n let buf\n const n = bn.toNumber()\n if (n < 253) {\n buf = Buffer.alloc(1)\n buf.writeUInt8(n, 0)\n } else if (n < 0x10000) {\n buf = Buffer.alloc(1 + 2)\n buf.writeUInt8(253, 0)\n buf.writeUInt16LE(n, 1)\n } else if (n < 0x100000000) {\n buf = Buffer.alloc(1 + 4)\n buf.writeUInt8(254, 0)\n buf.writeUInt32LE(n, 1)\n } else {\n const bw = new Bw()\n bw.writeUInt8(255)\n bw.writeUInt64LEBn(bn)\n buf = bw.toBuffer()\n }\n return buf\n }\n}\n\nexport { Bw }\n","/**\n * Structure\n * =========\n *\n * A convenient structure to extend objects from that comes with very common\n * boiler plate instance methods:\n * - fromObject\n * - fromBr\n * - toBw\n * - fromBuffer\n * - fromFastBuffer\n * - toBuffer\n * - toFastBuffer\n * - fromHex\n * - toHex\n * - fromString\n * - toString\n * - fromJSON\n * - toJSON\n * - cloneByBuffer\n * - cloneByFastBuffer\n * - cloneByHex\n * - cloneByString\n * - cloneByJSON\n *\n * As well as static methods for:\n * - fromObject\n * - fromBr\n * - fromBuffer\n * - fromFastBuffer\n * - fromHex\n * - fromString\n * - fromJSON\n *\n * The \"expect\" method also facilitates deserializing a sequence of buffers\n * into an object.\n */\n'use strict'\n\nimport { Br } from './br'\nimport { Bw } from './bw'\nimport isHex from 'is-hex'\n\nclass Struct {\n constructor (obj) {\n this.fromObject(obj)\n }\n\n fromObject (obj) {\n if (!obj) {\n return this\n }\n for (const key of Object.keys(obj)) {\n if (obj[key] !== undefined) {\n this[key] = obj[key]\n }\n }\n return this\n }\n\n static fromObject (obj) {\n return new this().fromObject(obj)\n }\n\n fromBr (br) {\n if (!(br instanceof Br)) {\n throw new Error('br must be a buffer reader')\n }\n throw new Error('not implemented')\n }\n\n static fromBr (br) {\n return new this().fromBr(br)\n }\n\n asyncFromBr (br) {\n if (!(br instanceof Br)) {\n throw new Error('br must be a buffer reader')\n }\n throw new Error('not implemented')\n }\n\n static asyncFromBr (br) {\n return new this().asyncFromBr(br)\n }\n\n toBw (bw) {\n throw new Error('not implemented')\n }\n\n asyncToBw (bw) {\n throw new Error('not implemented')\n }\n\n /**\n * It is very often the case that you want to create a bitcoin object from a\n * stream of small buffers rather than from a buffer of the correct length.\n * For instance, if streaming from the network or disk. The genFromBuffers\n * method is a generator which produces an iterator. Use .next(buf) to pass\n * in a small buffer. The iterator will end when it has received enough data\n * to produce the object. In some cases it is able to yield the number of\n * bytes it is expecting, but that is not always known.\n */\n * genFromBuffers () {\n throw new Error('not implemented')\n }\n\n /**\n * A convenience method used by from the genFromBuffers* generators.\n * Basically lets you expect a certain number of bytes (len) and keeps\n * yielding until you give it enough. It yields the expected amount\n * remaining, and returns an object containing a buffer of the expected\n * length, and, if any, the remainder buffer.\n */\n * expect (len, startbuf) {\n let buf = startbuf\n const bw = new Bw()\n let gotlen = 0\n if (startbuf) {\n bw.write(startbuf)\n gotlen += startbuf.length\n }\n while (gotlen < len) {\n const remainderlen = len - gotlen\n buf = yield remainderlen\n if (!buf) {\n continue\n }\n bw.write(buf)\n gotlen += buf.length\n }\n buf = bw.toBuffer()\n const overlen = gotlen - len\n const remainderbuf = buf.slice(buf.length - overlen, buf.length)\n buf = buf.slice(0, buf.length - overlen)\n return {\n buf: buf,\n remainderbuf: remainderbuf\n }\n }\n\n /**\n * Convert a buffer into an object, i.e. deserialize the object.\n */\n fromBuffer (buf, ...rest) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('buf must be a buffer')\n }\n const br = new Br(buf)\n return this.fromBr(br, ...rest)\n }\n\n static fromBuffer (...rest) {\n return new this().fromBuffer(...rest)\n }\n\n asyncFromBuffer (buf, ...rest) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('buf must be a buffer')\n }\n const br = new Br(buf)\n return this.asyncFromBr(br, ...rest)\n }\n\n static asyncFromBuffer (buf, ...rest) {\n return new this().asyncFromBuffer(buf, ...rest)\n }\n\n /**\n * The complement of toFastBuffer - see description for toFastBuffer\n */\n fromFastBuffer (buf, ...rest) {\n if (buf.length === 0) {\n return this\n } else {\n return this.fromBuffer(buf, ...rest)\n }\n }\n\n static fromFastBuffer (...rest) {\n return new this().fromFastBuffer(...rest)\n }\n\n /**\n * Convert the object into a buffer, i.e. serialize the object. This method\n * may block the main thread.\n */\n toBuffer (...rest) {\n return this.toBw(...rest).toBuffer()\n }\n\n asyncToBuffer (...rest) {\n return this.asyncToBw(...rest).then(bw => bw.toBuffer())\n }\n\n /**\n * Sometimes the toBuffer method has cryptography and blocks the main thread,\n * and we need a non-blocking way to serialize an object. That is what\n * toFastBuffer is. Of course it defaults to just using toBuffer if an object\n * hasn't implemented it. If your regular toBuffer method blocks, like with\n * Bip32, then you should implement this method to be non-blocking. This\n * method is used to send objects to the workers. i.e., for converting a\n * Bip32 object to a string, we need to encode it as a buffer in a\n * non-blocking manner with toFastBuffer, send it to a worker, then the\n * worker converts it to a string, which is a blocking operation.\n *\n * It is very common to want to convert a blank object to a zero length\n * buffer, so we can transport a blank object to a worker. So that behavior\n * is included by default.\n */\n toFastBuffer (...rest) {\n if (Object.keys(this).length === 0) {\n return Buffer.alloc(0)\n } else {\n return this.toBuffer(...rest)\n }\n }\n\n fromHex (hex, ...rest) {\n if (!isHex(hex)) {\n throw new Error('invalid hex string')\n }\n const buf = Buffer.from(hex, 'hex')\n return this.fromBuffer(buf, ...rest)\n }\n\n static fromHex (hex, ...rest) {\n return new this().fromHex(hex, ...rest)\n }\n\n asyncFromHex (hex, ...rest) {\n if (!isHex(hex)) {\n throw new Error('invalid hex string')\n }\n const buf = Buffer.from(hex, 'hex')\n return this.asyncFromBuffer(buf, ...rest)\n }\n\n static asyncFromHex (hex, ...rest) {\n return new this().asyncFromHex(hex, ...rest)\n }\n\n fromFastHex (hex, ...rest) {\n if (!isHex(hex)) {\n throw new Error('invalid hex string')\n }\n const buf = Buffer.from(hex, 'hex')\n return this.fromFastBuffer(buf, ...rest)\n }\n\n static fromFastHex (hex, ...rest) {\n return new this().fromFastHex(hex, ...rest)\n }\n\n toHex (...rest) {\n return this.toBuffer(...rest).toString('hex')\n }\n\n asyncToHex (...rest) {\n return this.asyncToBuffer(...rest).then(buf => buf.toString('hex'))\n }\n\n toFastHex (...rest) {\n return this.toFastBuffer(...rest).toString('hex')\n }\n\n fromString (str, ...rest) {\n if (typeof str !== 'string') {\n throw new Error('str must be a string')\n }\n return this.fromHex(str, ...rest)\n }\n\n static fromString (str, ...rest) {\n return new this().fromString(str, ...rest)\n }\n\n asyncFromString (str, ...rest) {\n if (typeof str !== 'string') {\n throw new Error('str must be a string')\n }\n return this.asyncFromHex(str, ...rest)\n }\n\n static asyncFromString (str, ...rest) {\n return new this().asyncFromString(str, ...rest)\n }\n\n toString (...rest) {\n return this.toHex(...rest)\n }\n\n asyncToString (...rest) {\n return this.asyncToHex(...rest)\n }\n\n fromJSON (json) {\n throw new Error('not implemented')\n }\n\n static fromJSON (json, ...rest) {\n return new this().fromJSON(json, ...rest)\n }\n\n asyncFromJSON (json, ...rest) {\n throw new Error('not implemented')\n }\n\n static asyncFromJSON (json, ...rest) {\n return new this().asyncFromJSON(json, ...rest)\n }\n\n toJSON () {\n var json = {}\n for (var val in this) {\n // arrays\n if (Array.isArray(this[val])) {\n const arr = []\n for (var i in this[val]) {\n if (typeof this[val][i].toJSON === 'function') {\n arr.push(this[val][i].toJSON())\n } else {\n arr.push(JSON.stringify(this[val][i]))\n }\n }\n json[val] = arr\n // objects\n } else if (this[val] === null) {\n json[val] = this[val]\n } else if (\n typeof this[val] === 'object' &&\n typeof this[val].toJSON === 'function'\n ) {\n json[val] = this[val].toJSON()\n // booleans, numbers, and strings\n } else if (\n typeof this[val] === 'boolean' ||\n typeof this[val] === 'number' ||\n typeof this[val] === 'string'\n ) {\n json[val] = this[val]\n // buffers\n } else if (Buffer.isBuffer(this[val])) {\n json[val] = this[val].toString('hex')\n // map\n } else if (this[val] instanceof Map) {\n json[val] = JSON.stringify(this[val])\n // throw an error for objects that do not implement toJSON\n } else if (typeof this[val] === 'object') {\n throw new Error('not implemented')\n }\n }\n return json\n // throw new Error('not implemented')\n }\n\n asyncToJSON () {\n throw new Error('not implemented')\n }\n\n clone () {\n // TODO: Should this be more intelligent about picking which clone method\n // to default to?\n return this.cloneByJSON()\n }\n\n cloneByBuffer () {\n return new this.constructor().fromBuffer(this.toBuffer())\n }\n\n cloneByFastBuffer () {\n return new this.constructor().fromFastBuffer(this.toFastBuffer())\n }\n\n cloneByHex () {\n return new this.constructor().fromHex(this.toHex())\n }\n\n cloneByString () {\n return new this.constructor().fromString(this.toString())\n }\n\n cloneByJSON () {\n return new this.constructor().fromJSON(this.toJSON())\n }\n}\n\nexport { Struct }\n","/**\n * Base58 Encoding\n * ===============\n *\n * Base58 (no check)\n */\n'use strict'\n\nimport bs58 from 'bs58'\nimport { Struct } from './struct'\n\nclass Base58 extends Struct {\n constructor (buf) {\n super({ buf })\n }\n\n fromHex (hex) {\n return this.fromBuffer(Buffer.from(hex, 'hex'))\n }\n\n toHex () {\n return this.toBuffer().toString('hex')\n }\n\n static encode (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('Input should be a buffer')\n }\n return bs58.encode(buf)\n }\n\n static decode (str) {\n if (typeof str !== 'string') {\n throw new Error('Input should be a string')\n }\n return Buffer.from(bs58.decode(str))\n }\n\n fromBuffer (buf) {\n this.buf = buf\n return this\n }\n\n fromString (str) {\n const buf = Base58.decode(str)\n this.buf = buf\n return this\n }\n\n toBuffer () {\n return this.buf\n }\n\n toString () {\n return Base58.encode(this.buf)\n }\n}\n\nexport { Base58 }\n","/**\n * Constant-Time Buffer Compare\n * ============================\n *\n * A constant-time comparison function. This should be used in any security\n * sensitive code where leaking timing information may lead to lessened\n * security. Note that if the buffers are not equal in length, this function\n * loops for the longest buffer, which may not be necessary. Usually this\n * function should be used for buffers that would otherwise be equal length,\n * such as a hash, particularly Hmacs.\n *\n * The algorithm here, which is XORs each byte (or, if undefined, 0) with the\n * corresponding other byte, and then ORs that with a running total (d), is\n * adapted from here:\n *\n * https://groups.google.com/forum/#!topic/keyczar-discuss/VXHsoJSLKhM\n */\n'use strict'\nconst cmp = (buf1, buf2) => {\n if (!Buffer.isBuffer(buf1) || !Buffer.isBuffer(buf2)) {\n throw new Error('buf1 and buf2 must be buffers')\n }\n if (buf1.length !== buf2.length) {\n return false\n }\n\n let d = 0\n for (let i = 0; i < buf1.length; i++) {\n const x = buf1[i]\n const y = buf2[i]\n d |= x ^ y\n }\n\n return d === 0\n}\n\nexport { cmp }\n","/**\n * WorkersResult\n * =============\n *\n * A response sent back from a worker to the main thread. Contains the \"result\"\n * of the computation in the form of a buffer, resbuf. If the actual result is\n * an object with a .toFastBuffer method, the object is converted to a buffer\n * using that method. Otherwise it is JSON serialized into a buffer. The result\n * can also be an error, in which case the isError flag is set.\n */\n'use strict'\n\nimport { Bw } from './bw'\nimport { Struct } from './struct'\n\nclass WorkersResult extends Struct {\n constructor (resbuf, isError, id) {\n super({ resbuf, isError, id })\n }\n\n fromResult (result, id) {\n if (result.toFastBuffer) {\n this.resbuf = result.toFastBuffer()\n } else if (Buffer.isBuffer(result)) {\n this.resbuf = result\n } else {\n this.resbuf = Buffer.from(JSON.stringify(result))\n }\n this.isError = false\n this.id = id\n return this\n }\n\n static fromResult (result, id) {\n return new this().fromResult(result, id)\n }\n\n fromError (error, id) {\n this.resbuf = Buffer.from(JSON.stringify(error.message))\n this.isError = true\n this.id = id\n return this\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n bw.writeVarIntNum(this.resbuf.length)\n bw.write(this.resbuf)\n bw.writeUInt8(Number(this.isError))\n bw.writeVarIntNum(this.id)\n return bw\n }\n\n fromBr (br) {\n const resbuflen = br.readVarIntNum()\n this.resbuf = br.read(resbuflen)\n this.isError = Boolean(br.readUInt8())\n this.id = br.readVarIntNum()\n return this\n }\n}\n\nexport { WorkersResult }\n","/**\n * Workers\n * =======\n *\n * Workers manages either processes (in node) or threads (in a browser). The\n * workers are intended to handle CPU-heavy tasks that block IO. This class is\n * a little unusual in that it must use different interfaces whether in node or\n * in the browser. In node, we use node's build-in child_process fork to create\n * new workers we can communicate with. In the browser, we use web workers.\n * Unfortunately, node and web browsers do not have a common interface for\n * workers. There is a node module called webworker-threads for node that\n * mimics the browser's web workers, but unfortunately it does not support\n * require(), and thus isn't very useful in our case. Therefore we fall back to\n * process forks.\n *\n * You probably don't need to use this class directly. Use Work, which will\n * automatically spawn new workers if needed.\n */\n'use strict'\n\nimport { WorkersResult } from './workers-result'\n\nlet globalWorkers\n\nclass Workers {\n constructor (\n nativeWorkers = [],\n lastid = 0,\n incompconsteRes = [],\n promisemap = new Map()\n ) {\n this.nativeWorkers = nativeWorkers\n this.lastid = lastid\n this.incompconsteRes = incompconsteRes\n this.promisemap = promisemap\n }\n\n asyncObjectMethod (obj, methodname, args, id = this.lastid + 1) {\n if (!args) {\n throw new Error('must specify args')\n }\n const result = obj[methodname](...args)\n const workersResult = new WorkersResult().fromResult(result, id)\n return workersResult\n }\n\n static asyncObjectMethod (obj, methodname, args, id) {\n if (!globalWorkers) {\n globalWorkers = new Workers()\n }\n return globalWorkers.asyncObjectMethod(obj, methodname, args, id)\n }\n\n asyncClassMethod (classObj, methodname, args, id = this.lastid + 1) {\n if (!args) {\n throw new Error('must specify args')\n }\n const result = classObj[methodname](...args)\n const workersResult = new WorkersResult().fromResult(result, id)\n return workersResult\n }\n\n static asyncClassMethod (classObj, methodname, args, id) {\n if (!globalWorkers) {\n globalWorkers = new Workers()\n }\n return globalWorkers.asyncClassMethod(classObj, methodname, args, id)\n }\n\n static endGlobalWorkers () {\n if (globalWorkers && !process.browser) {\n globalWorkers = undefined\n }\n }\n}\n\nexport { Workers }\n","/**\n * Hash\n * ====\n *\n * Some hash functions are used through out bitcoin. We expose them here as a\n * convenience.\n */\n'use strict'\n\nimport { Workers } from './workers'\nimport hashjs from 'hash.js'\n\nclass Hash {}\n\nHash.sha1 = function (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('sha1 hash must be of a buffer')\n }\n const Sha1 = hashjs.sha1\n const hash = new Sha1().update(buf).digest()\n return Buffer.from(hash)\n}\n\nHash.sha1.blockSize = 512\n\nHash.asyncSha1 = async function (buf) {\n const args = [buf]\n const workersResult = await Workers.asyncClassMethod(Hash, 'sha1', args)\n return workersResult.resbuf\n}\n\nHash.sha256 = function (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('sha256 hash must be of a buffer')\n }\n const Sha256 = hashjs.sha256\n const hash = new Sha256().update(buf).digest()\n return Buffer.from(hash)\n}\n\nHash.sha256.blockSize = 512\n\nHash.asyncSha256 = async function (buf) {\n const args = [buf]\n const workersResult = await Workers.asyncClassMethod(Hash, 'sha256', args)\n return workersResult.resbuf\n}\n\nHash.sha256Sha256 = function (buf) {\n try {\n return Hash.sha256(Hash.sha256(buf))\n } catch (e) {\n throw new Error('sha256Sha256 hash must be of a buffer: ' + e)\n }\n}\n\nHash.asyncSha256Sha256 = async function (buf) {\n const args = [buf]\n const workersResult = await Workers.asyncClassMethod(\n Hash,\n 'sha256Sha256',\n args\n )\n return workersResult.resbuf\n}\n\nHash.ripemd160 = function (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('ripemd160 hash must be of a buffer')\n }\n const Ripemd160 = hashjs.ripemd160\n const hash = new Ripemd160().update(buf).digest()\n return Buffer.from(hash)\n}\n\nHash.asyncRipemd160 = async function (buf) {\n const args = [buf]\n const workersResult = await Workers.asyncClassMethod(Hash, 'ripemd160', args)\n return workersResult.resbuf\n}\n\nHash.sha256Ripemd160 = function (buf) {\n try {\n return Hash.ripemd160(Hash.sha256(buf))\n } catch (e) {\n throw new Error('sha256Ripemd160 hash must be of a buffer: ' + e)\n }\n}\n\nHash.asyncSha256Ripemd160 = async function (buf) {\n const args = [buf]\n const workersResult = await Workers.asyncClassMethod(\n Hash,\n 'sha256Ripemd160',\n args\n )\n return workersResult.resbuf\n}\n\nHash.sha512 = function (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('sha512 hash must be of a buffer')\n }\n const Sha512 = hashjs.sha512\n const hash = new Sha512().update(buf).digest()\n return Buffer.from(hash)\n}\n\nHash.asyncSha512 = async function (buf) {\n const args = [buf]\n const workersResult = await Workers.asyncClassMethod(Hash, 'sha512', args)\n return workersResult.resbuf\n}\n\nHash.sha512.blockSize = 1024\n\nHash.hmac = function (hashFStr, data, key) {\n if (hashFStr !== 'sha1' && hashFStr !== 'sha256' && hashFStr !== 'sha512') {\n throw new Error('invalid choice of hash function')\n }\n\n const hashf = Hash[hashFStr]\n\n if (!Buffer.isBuffer(data) || !Buffer.isBuffer(key)) {\n throw new Error('data and key must be buffers')\n }\n\n // http://en.wikipedia.org/wiki/Hash-based_message_authentication_code\n // http://tools.ietf.org/html/rfc4868#section-2\n const blockSize = hashf.blockSize / 8\n\n if (key.length > blockSize) {\n key = hashf(key)\n }\n\n if (key.length < blockSize) {\n const fill = Buffer.alloc(blockSize)\n fill.fill(0, key.length)\n key.copy(fill)\n key = fill\n }\n\n const oKeyPad = Buffer.alloc(blockSize)\n const iKeyPad = Buffer.alloc(blockSize)\n for (let i = 0; i < blockSize; i++) {\n oKeyPad[i] = 0x5c ^ key[i]\n iKeyPad[i] = 0x36 ^ key[i]\n }\n\n return hashf(\n Buffer.concat([oKeyPad, hashf(Buffer.concat([iKeyPad, data]))])\n )\n}\n\nHash.sha1Hmac = function (data, key) {\n return Hash.hmac('sha1', data, key)\n}\n\nHash.asyncSha1Hmac = async function (data, key) {\n const args = [data, key]\n const workersResult = await Workers.asyncClassMethod(Hash, 'sha1Hmac', args)\n return workersResult.resbuf\n}\n\nHash.sha1Hmac.bitsize = 160\n\nHash.sha256Hmac = function (data, key) {\n return Hash.hmac('sha256', data, key)\n}\n\nHash.asyncSha256Hmac = async function (data, key) {\n const args = [data, key]\n const workersResult = await Workers.asyncClassMethod(Hash, 'sha256Hmac', args)\n return workersResult.resbuf\n}\n\nHash.sha256Hmac.bitsize = 256\n\nHash.sha512Hmac = function (data, key) {\n return Hash.hmac('sha512', data, key)\n}\n\nHash.asyncSha512Hmac = async function (data, key) {\n const args = [data, key]\n const workersResult = await Workers.asyncClassMethod(Hash, 'sha512Hmac', args)\n return workersResult.resbuf\n}\n\nHash.sha512Hmac.bitsize = 512\n\nexport { Hash }\n","/**\n * Base58 Check Encoding\n * =====================\n *\n * Base58 check encoding. The usual way to use it is\n * new Base58Check(buf).toString() or new Base58Check(str).toBuffer().\n */\n'use strict'\n\nimport { Base58 } from './base-58'\nimport { cmp } from './cmp'\nimport { Hash } from './hash'\nimport { Struct } from './struct'\n\nclass Base58Check extends Struct {\n constructor (buf) {\n super({ buf })\n }\n\n fromHex (hex) {\n return this.fromBuffer(Buffer.from(hex, 'hex'))\n }\n\n toHex () {\n return this.toBuffer().toString('hex')\n }\n\n static decode (s) {\n if (typeof s !== 'string') {\n throw new Error('Input must be a string')\n }\n\n const buf = Base58.decode(s)\n\n if (buf.length < 4) {\n throw new Error('Input string too short')\n }\n\n const data = buf.slice(0, -4)\n const csum = buf.slice(-4)\n\n const hash = Hash.sha256Sha256(data)\n const hash4 = hash.slice(0, 4)\n\n if (!cmp(csum, hash4)) {\n throw new Error('Checksum mismatch')\n }\n\n return data\n }\n\n static encode (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('Input must be a buffer')\n }\n const checkedBuf = Buffer.alloc(buf.length + 4)\n const hash = Hash.sha256Sha256(buf)\n buf.copy(checkedBuf)\n hash.copy(checkedBuf, buf.length)\n return Base58.encode(checkedBuf)\n }\n\n fromBuffer (buf) {\n this.buf = buf\n return this\n }\n\n fromString (str) {\n const buf = Base58Check.decode(str)\n this.buf = buf\n return this\n }\n\n toBuffer () {\n return this.buf\n }\n\n toString () {\n return Base58Check.encode(this.buf)\n }\n}\n\nexport { Base58Check }\n","'use strict'\n\nclass Config {\n constructor (values) {\n this.keyDefined = (key) => key in values\n this.getValue = (key) => values[key]\n }\n\n get (key) {\n if (this.keyDefined(key)) {\n return this.getValue(key)\n } else {\n throw new Error(`Unknown configuration: ${key}`)\n }\n }\n}\n\nclass ConfigBuilder {\n constructor () {\n this.variables = {}\n }\n\n build () {\n return new Config(this.variables)\n }\n\n addValue (key, value) {\n if (value === undefined) {\n throw new Error(`Failed to add \"${key}\" property. The value cannot be undefined`)\n }\n if (key in this.variables) {\n throw new Error(`\"${key}\" already has a value defined.`)\n }\n this.variables[key] = value\n return this\n }\n\n addValueWithDefault (key, value, defaultValue) {\n if (defaultValue === undefined) {\n throw new Error(`Failed to add \"${key}\" property. Default value cannot be undefined`)\n }\n return this.addValue(key, value === undefined ? defaultValue : value)\n }\n}\n\nconst config = new ConfigBuilder()\n .addValue('NETWORK', process.env.NETWORK || 'mainnet')\n .build()\n\nexport { config }\n","/**\n * Constants\n * =========\n *\n * Constants used to distinguish mainnet from testnet.\n */\n'use strict'\nimport { config } from './config'\n\nconst Constants = {}\n\nConstants.Mainnet = {\n maxsize: 0x02000000, // MAX_SIZE\n Address: {\n pubKeyHash: 0x00\n },\n Bip32: {\n pubKey: 0x0488b21e,\n privKey: 0x0488ade4\n },\n Block: {\n maxNBits: 0x1d00ffff,\n magicNum: 0xf9beb4d9\n },\n Msg: {\n magicNum: 0xf9beb4d9,\n versionBytesNum: 70012 // as of Bitcoin Core v0.12.0\n },\n PrivKey: {\n versionByteNum: 0x80\n },\n TxBuilder: {\n dust: 546, // number of satoshis that an output can't be less than\n feePerKbNum: 0.00000500e8\n },\n Workers: {\n // Cannot be 5 seconds. This is actually too low for low end devices. We\n // have found by experimenting with Chrome developer tools that 60 seconds\n // works on low end mobile.\n timeout: 60000\n }\n}\n\nConstants.Testnet = Object.assign({}, Constants.Mainnet, {\n Address: {\n pubKeyHash: 0x6f\n },\n Bip32: {\n pubKey: 0x043587cf,\n privKey: 0x04358394\n },\n Block: {\n maxNBits: 0x1d00ffff,\n magicNum: 0x0b110907\n },\n Msg: {\n magicNum: 0x0b110907,\n versionBytesNum: 70012 // as of Bitcoin Core v0.12.0\n },\n PrivKey: {\n versionByteNum: 0xef\n }\n})\n\nConstants.Regtest = Object.assign({}, Constants.Mainnet, {\n Address: {\n pubKeyHash: 0x6f\n },\n Bip32: {\n pubKey: 0x043587cf,\n privKey: 0x04358394\n },\n Block: {\n maxNBits: 0x1d00ffff,\n magicNum: 0xdab5bffa\n },\n Msg: {\n magicNum: 0x0b110907,\n versionBytesNum: 70012 // as of Bitcoin Core v0.12.0\n },\n PrivKey: {\n versionByteNum: 0xef\n }\n})\n\n/**\n * Yours Bitcoin can be globally configured to mainnet or testnet. Via the\n * inject pattern, you always have access to the other network at any time.\n * However, it is very convenient to be able to change the default\n * configuration. The default is mainnet, which can be changed to testnet.\n */\n// Constants.Default = Object.assign({}, Constants.Mainnet)\nif (config.get('NETWORK') === 'testnet') {\n Constants.Default = Object.assign({}, Constants.Testnet)\n} else if (config.get('NETWORK') === 'mainnet') {\n Constants.Default = Object.assign({}, Constants.Mainnet)\n} else if (config.get('NETWORK') === 'regtest') {\n Constants.Default = Object.assign({}, Constants.Regtest)\n} else {\n throw new Error(\n `must set network in environment variable - mainnet, testnet or regtest?, received ${config.get('NETWORK')}`\n )\n}\n\nexport { Constants }\n","/*\n * OpCode\n * ======\n *\n * An opCode is one of the operations in the bitcoin scripting language. Each\n * operation is just a number from 0-255, and it has a corresponding string,\n * e.g. \"OP_RETURN\", which comes from the name of that constant in the bitcoind\n * source code. The way you probably want to use this is with\n * new OpCode(str).toNumber() or new OpCode(num).toString()\n */\n'use strict'\n\nimport { Struct } from './struct'\n\nconst map = {\n // push value\n OP_FALSE: 0x00,\n OP_0: 0x00,\n OP_PUSHDATA1: 0x4c,\n OP_PUSHDATA2: 0x4d,\n OP_PUSHDATA4: 0x4e,\n OP_1NEGATE: 0x4f,\n OP_RESERVED: 0x50,\n OP_TRUE: 0x51,\n OP_1: 0x51,\n OP_2: 0x52,\n OP_3: 0x53,\n OP_4: 0x54,\n OP_5: 0x55,\n OP_6: 0x56,\n OP_7: 0x57,\n OP_8: 0x58,\n OP_9: 0x59,\n OP_10: 0x5a,\n OP_11: 0x5b,\n OP_12: 0x5c,\n OP_13: 0x5d,\n OP_14: 0x5e,\n OP_15: 0x5f,\n OP_16: 0x60,\n\n // control\n OP_NOP: 0x61,\n OP_VER: 0x62,\n OP_IF: 0x63,\n OP_NOTIF: 0x64,\n OP_VERIF: 0x65,\n OP_VERNOTIF: 0x66,\n OP_ELSE: 0x67,\n OP_ENDIF: 0x68,\n OP_VERIFY: 0x69,\n OP_RETURN: 0x6a,\n\n // stack ops\n OP_TOALTSTACK: 0x6b,\n OP_FROMALTSTACK: 0x6c,\n OP_2DROP: 0x6d,\n OP_2DUP: 0x6e,\n OP_3DUP: 0x6f,\n OP_2OVER: 0x70,\n OP_2ROT: 0x71,\n OP_2SWAP: 0x72,\n OP_IFDUP: 0x73,\n OP_DEPTH: 0x74,\n OP_DROP: 0x75,\n OP_DUP: 0x76,\n OP_NIP: 0x77,\n OP_OVER: 0x78,\n OP_PICK: 0x79,\n OP_ROLL: 0x7a,\n OP_ROT: 0x7b,\n OP_SWAP: 0x7c,\n OP_TUCK: 0x7d,\n\n // data manipulation ops\n OP_CAT: 0x7e,\n OP_SUBSTR: 0x7f, // Replaced in BSV\n OP_SPLIT: 0x7f,\n OP_LEFT: 0x80, // Replaced in BSV\n OP_NUM2BIN: 0x80,\n OP_RIGHT: 0x81, // Replaced in BSV\n OP_BIN2NUM: 0x81,\n OP_SIZE: 0x82,\n\n // bit logic\n OP_INVERT: 0x83,\n OP_AND: 0x84,\n OP_OR: 0x85,\n OP_XOR: 0x86,\n OP_EQUAL: 0x87,\n OP_EQUALVERIFY: 0x88,\n OP_RESERVED1: 0x89,\n OP_RESERVED2: 0x8a,\n\n // numeric\n OP_1ADD: 0x8b,\n OP_1SUB: 0x8c,\n OP_2MUL: 0x8d,\n OP_2DIV: 0x8e,\n OP_NEGATE: 0x8f,\n OP_ABS: 0x90,\n OP_NOT: 0x91,\n OP_0NOTEQUAL: 0x92,\n\n OP_ADD: 0x93,\n OP_SUB: 0x94,\n OP_MUL: 0x95,\n OP_DIV: 0x96,\n OP_MOD: 0x97,\n OP_LSHIFT: 0x98,\n OP_RSHIFT: 0x99,\n\n OP_BOOLAND: 0x9a,\n OP_BOOLOR: 0x9b,\n OP_NUMEQUAL: 0x9c,\n OP_NUMEQUALVERIFY: 0x9d,\n OP_NUMNOTEQUAL: 0x9e,\n OP_LESSTHAN: 0x9f,\n OP_GREATERTHAN: 0xa0,\n OP_LESSTHANOREQUAL: 0xa1,\n OP_GREATERTHANOREQUAL: 0xa2,\n OP_MIN: 0xa3,\n OP_MAX: 0xa4,\n\n OP_WITHIN: 0xa5,\n\n // crypto\n OP_RIPEMD160: 0xa6,\n OP_SHA1: 0xa7,\n OP_SHA256: 0xa8,\n OP_HASH160: 0xa9,\n OP_HASH256: 0xaa,\n OP_CODESEPARATOR: 0xab,\n OP_CHECKSIG: 0xac,\n OP_CHECKSIGVERIFY: 0xad,\n OP_CHECKMULTISIG: 0xae,\n OP_CHECKMULTISIGVERIFY: 0xaf,\n\n // expansion\n OP_NOP1: 0xb0,\n OP_NOP2: 0xb1,\n OP_CHECKLOCKTIMEVERIFY: 0xb1,\n OP_NOP3: 0xb2,\n OP_CHECKSEQUENCEVERIFY: 0xb2,\n OP_NOP4: 0xb3,\n OP_NOP5: 0xb4,\n OP_NOP6: 0xb5,\n OP_NOP7: 0xb6,\n OP_NOP8: 0xb7,\n OP_NOP9: 0xb8,\n OP_NOP10: 0xb9,\n\n // template matching params\n OP_SMALLDATA: 0xf9,\n OP_SMALLINTEGER: 0xfa,\n OP_PUBKEYS: 0xfb,\n OP_PUBKEYHASH: 0xfd,\n OP_PUBKEY: 0xfe,\n\n OP_INVALIDOPCODE: 0xff\n}\n\nclass OpCode extends Struct {\n constructor (num) {\n super({ num })\n }\n\n fromNumber (num) {\n this.num = num\n return this\n }\n\n static fromNumber (num) {\n return new this().fromNumber(num)\n }\n\n toNumber () {\n return this.num\n }\n\n fromString (str) {\n const num = map[str]\n if (num === undefined) {\n throw new Error('Invalid opCodeStr')\n }\n this.num = num\n return this\n }\n\n static fromString (str) {\n return new this().fromString(str)\n }\n\n toString () {\n const str = OpCode.str[this.num]\n if (str === undefined) {\n if (this.num > 0 && this.num < OpCode.OP_PUSHDATA1) {\n return this.num.toString()\n }\n throw new Error('OpCode does not have a string representation')\n }\n return str\n }\n}\n\nOpCode.str = {}\n\nfor (const opCodeStr in map) {\n OpCode[opCodeStr] = map[opCodeStr]\n\n if (Object.prototype.hasOwnProperty.call(map, opCodeStr)) {\n OpCode.str[map[opCodeStr]] = opCodeStr\n }\n}\n\nexport { OpCode }\n","/**\n * Point (on secp256k1)\n * ====================\n *\n * A point is a point on the secp256k1 curve which is the elliptic curve used\n * by bitcoin. This code is a wrapper for Fedor Indutny's Point class from his\n * elliptic library. This code adds a few minor conveniences, but is mostly the\n * same. Since Fedor's code returns points and big numbers that are instances\n * of his point and big number classes, we have to wrap all the methods such as\n * getX() to return the Yours Bitcoin point and big number types.\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport elliptic from 'bitcoin-elliptic'\n\nconst ec = elliptic.curves.secp256k1\nconst _point = ec.curve.point()\nconst _Point = _point.constructor\n\nclass Point extends _Point {\n constructor (x, y, isRed) {\n super(ec.curve, x, y, isRed)\n }\n\n static fromX (isOdd, x) {\n const _point = ec.curve.pointFromX(x, isOdd)\n const point = Object.create(Point.prototype)\n return point.copyFrom(_point)\n }\n\n copyFrom (point) {\n if (!(point instanceof _Point)) {\n throw new Error('point should be an external point')\n }\n Object.keys(point).forEach(\n function (key) {\n this[key] = point[key]\n }.bind(this)\n )\n return this\n }\n\n add (p) {\n p = _Point.prototype.add.call(this, p)\n const point = Object.create(Point.prototype)\n return point.copyFrom(p)\n }\n\n mul (bn) {\n if (!bn.lt(Point.getN())) {\n throw new Error('point mul out of range')\n }\n const p = _Point.prototype.mul.call(this, bn)\n const point = Object.create(Point.prototype)\n return point.copyFrom(p)\n }\n\n mulAdd (bn1, point, bn2) {\n const p = _Point.prototype.mulAdd.call(this, bn1, point, bn2)\n point = Object.create(Point.prototype)\n return point.copyFrom(p)\n }\n\n getX () {\n const _x = _Point.prototype.getX.call(this)\n const x = Object.create(Bn.prototype)\n _x.copy(x)\n return x\n }\n\n getY () {\n const _y = _Point.prototype.getY.call(this)\n const y = Object.create(Bn.prototype)\n _y.copy(y)\n return y\n }\n\n fromX (isOdd, x) {\n const point = Point.fromX(isOdd, x)\n return this.copyFrom(point)\n }\n\n toJSON () {\n return {\n x: this.getX().toString(),\n y: this.getY().toString()\n }\n }\n\n fromJSON (json) {\n const x = new Bn().fromString(json.x)\n const y = new Bn().fromString(json.y)\n const point = new Point(x, y)\n return this.copyFrom(point)\n }\n\n toString () {\n return JSON.stringify(this.toJSON())\n }\n\n fromString (str) {\n const json = JSON.parse(str)\n const p = new Point().fromJSON(json)\n return this.copyFrom(p)\n }\n\n static getG () {\n const _g = ec.curve.g\n const g = Object.create(Point.prototype)\n return g.copyFrom(_g)\n }\n\n static getN () {\n return new Bn(ec.curve.n.toArray())\n }\n\n // https://www.iacr.org/archive/pkc2003/25670211/25670211.pdf\n validate () {\n const p2 = Point.fromX(this.getY().isOdd(), this.getX())\n if (!(p2.getY().cmp(this.getY()) === 0)) {\n throw new Error('Invalid y value of public key')\n }\n if (\n !(this.getX().gt(-1) && this.getX().lt(Point.getN())) ||\n !(this.getY().gt(-1) && this.getY().lt(Point.getN()))\n ) {\n throw new Error('Point does not lie on the curve')\n }\n return this\n }\n}\n\nexport { Point }\n","/**\n * Public Key\n * ==========\n *\n * A public key corresponds to a private key. If you have a private key, you\n * can find the corresponding public key with new PubKey().fromPrivKey(privKey).\n */\n'use strict'\n\nimport { Point } from './point'\nimport { Bn } from './bn'\nimport { Bw } from './bw'\nimport { Struct } from './struct'\nimport { Workers } from './workers'\n\nclass PubKey extends Struct {\n constructor (point, compressed) {\n super({ point, compressed })\n }\n\n fromJSON (json) {\n this.fromFastHex(json)\n return this\n }\n\n toJSON () {\n return this.toFastHex()\n }\n\n fromPrivKey (privKey) {\n this.fromObject({\n point: Point.getG().mul(privKey.bn),\n compressed: privKey.compressed\n })\n return this\n }\n\n static fromPrivKey (privKey) {\n return new this().fromPrivKey(privKey)\n }\n\n async asyncFromPrivKey (privKey) {\n const workersResult = await Workers.asyncObjectMethod(this, 'fromPrivKey', [\n privKey\n ])\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromPrivKey (privKey) {\n return new this().asyncFromPrivKey(privKey)\n }\n\n fromBuffer (buf, strict) {\n return this.fromDer(buf, strict)\n }\n\n async asyncFromBuffer (buf, strict) {\n const args = [buf, strict]\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'fromBuffer',\n args\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n fromFastBuffer (buf) {\n if (buf.length === 0) {\n return this\n }\n const compressed = Boolean(buf[0])\n buf = buf.slice(1)\n this.fromDer(buf)\n this.compressed = compressed\n return this\n }\n\n /**\n * In order to mimic the non-strict style of OpenSSL, set strict = false. For\n * information and what prefixes 0x06 and 0x07 mean, in addition to the normal\n * compressed and uncompressed public keys, see the message by Peter Wuille\n * where he discovered these \"hybrid pubKeys\" on the mailing list:\n * http://sourceforge.net/p/bitcoin/mailman/message/29416133/\n */\n fromDer (buf, strict) {\n if (strict === undefined) {\n strict = true\n } else {\n strict = false\n }\n if (\n buf[0] === 0x04 ||\n (!strict && (buf[0] === 0x06 || buf[0] === 0x07))\n ) {\n const xbuf = buf.slice(1, 33)\n const ybuf = buf.slice(33, 65)\n if (xbuf.length !== 32 || ybuf.length !== 32 || buf.length !== 65) {\n throw new Error('LEngth of x and y must be 32 bytes')\n }\n const x = new Bn(xbuf)\n const y = new Bn(ybuf)\n this.point = new Point(x, y)\n this.compressed = false\n } else if (buf[0] === 0x03) {\n const xbuf = buf.slice(1)\n const x = new Bn(xbuf)\n this.fromX(true, x)\n this.compressed = true\n } else if (buf[0] === 0x02) {\n const xbuf = buf.slice(1)\n const x = new Bn(xbuf)\n this.fromX(false, x)\n this.compressed = true\n } else {\n throw new Error('Invalid DER format pubKey')\n }\n return this\n }\n\n static fromDer (buf, strict) {\n return new this().fromDer(buf, strict)\n }\n\n fromString (str) {\n this.fromDer(Buffer.from(str, 'hex'))\n return this\n }\n\n fromX (odd, x) {\n if (typeof odd !== 'boolean') {\n throw new Error('Must specify whether y is odd or not (true or false)')\n }\n this.point = Point.fromX(odd, x)\n return this\n }\n\n static fromX (odd, x) {\n return new this().fromX(odd, x)\n }\n\n toBuffer () {\n const compressed = this.compressed === undefined ? true : this.compressed\n return this.toDer(compressed)\n }\n\n toFastBuffer () {\n if (!this.point) {\n return Buffer.alloc(0)\n }\n const bw = new Bw()\n const compressed =\n this.compressed === undefined ? true : Boolean(this.compressed)\n bw.writeUInt8(Number(compressed))\n bw.write(this.toDer(false))\n return bw.toBuffer()\n }\n\n toDer (compressed) {\n compressed = compressed === undefined ? this.compressed : compressed\n if (typeof compressed !== 'boolean') {\n throw new Error(\n 'Must specify whether the public key is compressed or not (true or false)'\n )\n }\n\n const x = this.point.getX()\n const y = this.point.getY()\n\n const xbuf = x.toBuffer({ size: 32 })\n const ybuf = y.toBuffer({ size: 32 })\n\n let prefix\n if (!compressed) {\n prefix = Buffer.from([0x04])\n return Buffer.concat([prefix, xbuf, ybuf])\n } else {\n const odd = ybuf[ybuf.length - 1] % 2\n if (odd) {\n prefix = Buffer.from([0x03])\n } else {\n prefix = Buffer.from([0x02])\n }\n return Buffer.concat([prefix, xbuf])\n }\n }\n\n toString () {\n const compressed = this.compressed === undefined ? true : this.compressed\n return this.toDer(compressed).toString('hex')\n }\n\n /**\n * Translated from bitcoind's IsCompressedOrUncompressedPubKey\n */\n static isCompressedOrUncompressed (buf) {\n if (buf.length < 33) {\n // Non-canonical public key: too short\n return false\n }\n if (buf[0] === 0x04) {\n if (buf.length !== 65) {\n // Non-canonical public key: invalid length for uncompressed key\n return false\n }\n } else if (buf[0] === 0x02 || buf[0] === 0x03) {\n if (buf.length !== 33) {\n // Non-canonical public key: invalid length for compressed key\n return false\n }\n } else {\n // Non-canonical public key: neither compressed nor uncompressed\n return false\n }\n return true\n }\n\n // https://www.iacr.org/archive/pkc2003/25670211/25670211.pdf\n validate () {\n if (this.point.isInfinity()) {\n throw new Error('point: Point cannot be equal to Infinity')\n }\n if (this.point.eq(new Point(new Bn(0), new Bn(0)))) {\n throw new Error('point: Point cannot be equal to 0, 0')\n }\n this.point.validate()\n return this\n }\n}\n\nexport { PubKey }\n","/**\n * Random Number Generator\n * =======================\n *\n * Random numbers are important in bitcoin primarily for generating private\n * keys. It is also important for creating signatures if you are using a random\n * value of k, but Yours Bitcoin defaults to using deterministic k. That means\n * computing a random private key, or a random seed for use in Bip39 or Bip32,\n * is the primary use of the random number generator. Note that the simplicity\n * of this class is extremely carefully considered. It is easy to audit that\n * this code runs node's randomBytes function. It is also easy to audit that\n * the randomBytes method is correctly interpreted as\n * window.crypto.getRandomValues when this code is browserified by browserify,\n * and thus also works correctly in the browser. We deliberately do not do\n * anything else to this random number in order to minimize possible errors in\n * this absolutely critical code.\n */\n'use strict'\n\nimport randomBytes from 'randombytes'\n\nclass Random {}\n\nRandom.getRandomBuffer = function (size) {\n return randomBytes(size)\n}\n\nexport { Random }\n","/**\n * Private Key\n * ===========\n *\n * A private key is used for signing transactions (or messages). The primary\n * way to use this is new PrivKey().fromRandom(), or new PrivKey().fromBuffer(buf).\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Point } from './point'\nimport { Constants } from './constants'\nimport { Base58Check } from './base-58-check'\nimport { Random } from './random'\nimport { Struct } from './struct'\n\nclass PrivKey extends Struct {\n constructor (bn, compressed, constants = null) {\n super({ bn, compressed })\n constants = constants || Constants.Default.PrivKey\n this.Constants = constants\n }\n\n fromJSON (json) {\n this.fromHex(json)\n return this\n }\n\n toJSON () {\n return this.toHex()\n }\n\n fromRandom () {\n let privBuf, bn, condition\n\n do {\n privBuf = Random.getRandomBuffer(32)\n bn = new Bn().fromBuffer(privBuf)\n condition = bn.lt(Point.getN())\n } while (!condition)\n\n this.fromObject({\n bn: bn,\n compressed: true\n })\n return this\n }\n\n static fromRandom () {\n return new this().fromRandom()\n }\n\n toBuffer () {\n let compressed = this.compressed\n\n if (compressed === undefined) {\n compressed = true\n }\n\n const privBuf = this.bn.toBuffer({ size: 32 })\n let buf\n if (compressed) {\n buf = Buffer.concat([\n Buffer.from([this.Constants.versionByteNum]),\n privBuf,\n Buffer.from([0x01])\n ])\n } else {\n buf = Buffer.concat([Buffer.from([this.Constants.versionByteNum]), privBuf])\n }\n\n return buf\n }\n\n fromBuffer (buf) {\n if (buf.length === 1 + 32 + 1 && buf[1 + 32 + 1 - 1] === 1) {\n this.compressed = true\n } else if (buf.length === 1 + 32) {\n this.compressed = false\n } else {\n throw new Error(\n 'Length of privKey buffer must be 33 (uncompressed pubKey) or 34 (compressed pubKey)'\n )\n }\n\n if (buf[0] !== this.Constants.versionByteNum) {\n throw new Error('Invalid versionByteNum byte')\n }\n\n return this.fromBn(new Bn().fromBuffer(buf.slice(1, 1 + 32)))\n }\n\n toBn () {\n return this.bn\n }\n\n fromBn (bn) {\n this.bn = bn\n return this\n }\n\n static fromBn (bn) {\n return new this().fromBn(bn)\n }\n\n validate () {\n if (!this.bn.lt(Point.getN())) {\n throw new Error('Number must be less than N')\n }\n if (typeof this.compressed !== 'boolean') {\n throw new Error(\n 'Must specify whether the corresponding public key is compressed or not (true or false)'\n )\n }\n return this\n }\n\n /**\n * Output the private key a Wallet Import Format (Wif) string.\n */\n toWif () {\n return Base58Check.encode(this.toBuffer())\n }\n\n /**\n * Input the private key from a Wallet Import Format (Wif) string.\n */\n fromWif (str) {\n return this.fromBuffer(Base58Check.decode(str))\n }\n\n static fromWif (str) {\n return new this().fromWif(str)\n }\n\n toString () {\n return this.toWif()\n }\n\n fromString (str) {\n return this.fromWif(str)\n }\n}\n\nPrivKey.Mainnet = class extends PrivKey {\n constructor (bn, compressed) {\n super(bn, compressed, Constants.Mainnet.PrivKey)\n }\n}\n\nPrivKey.Testnet = class extends PrivKey {\n constructor (bn, compressed) {\n super(bn, compressed, Constants.Testnet.PrivKey)\n }\n}\n\nexport { PrivKey }\n","/**\n * Signature\n * =========\n *\n * A signature is the thing you make when you want to sign a transaction, or\n * the thing you want to verify if you want to ensure that someone signed a\n * transaction. It has an r and s value, which are the cryptographic big\n * numbers that define a signature. And since this is a bitcoin library, it\n * also has nHashType, which is the way to hash a transaction and is used in\n * the binary format of a signature when it is in a transaction. We also\n * support a public key recover value, recovery, allowing one to compute the\n * public key from a signature. The \"compressed\" value is also necessary to\n * accurately compute the public key from a signature.\n *\n * There are a few different formats of a signature in bitcoin. One is DER, the\n * other is the TxFormat which is the same as DER but with the nHashType byte\n * appended, and the final one is Compact, which is used by Bitcoin Signed\n * Message (Bsm).\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Struct } from './struct'\n\n/**\n * r, s: big numbers constiting a cryptographic signature\n * nHashType: found at the end of a signature in a transaction\n * recovery: public key recovery number\n * compressed: whether the recovered pubKey is compressed\n */\nclass Sig extends Struct {\n constructor (r, s, nHashType, recovery, compressed) {\n super({ r, s, nHashType, recovery, compressed })\n }\n\n fromBuffer (buf) {\n try {\n return this.fromDer(buf, true)\n } catch (e) {}\n try {\n return this.fromCompact(buf)\n } catch (e) {}\n return this.fromTxFormat(buf)\n }\n\n toBuffer () {\n if (this.nHashType !== undefined) {\n return this.toTxFormat()\n } else if (this.recovery !== undefined) {\n return this.toCompact()\n }\n return this.toDer()\n }\n\n // The format used by \"message\"\n fromCompact (buf) {\n let compressed = true\n let recovery = buf.slice(0, 1)[0] - 27 - 4\n if (recovery < 0) {\n compressed = false\n recovery = recovery + 4\n }\n\n if (\n !(recovery === 0 || recovery === 1 || recovery === 2 || recovery === 3)\n ) {\n throw new Error('i must be 0, 1, 2, or 3')\n }\n\n this.compressed = compressed\n this.recovery = recovery\n\n const rsbuf = buf.slice(1)\n this.fromRS(rsbuf)\n\n return this\n }\n\n static fromCompact (buf) {\n return new this().fromCompact(buf)\n }\n\n fromRS (rsbuf) {\n const b2 = rsbuf.slice(0, 32)\n const b3 = rsbuf.slice(32, 64)\n if (b2.length !== 32) {\n throw new Error('r must be 32 bytes')\n }\n if (b3.length !== 32 || rsbuf.length > 64) {\n throw new Error('s must be 32 bytes')\n }\n this.r = new Bn().fromBuffer(b2)\n this.s = new Bn().fromBuffer(b3)\n return this\n }\n\n static fromRS (rsbuf) {\n return new this().fromRS(rsbuf)\n }\n\n // The format used in a tx, except without the nHashType at the end\n fromDer (buf, strict) {\n const obj = Sig.parseDer(buf, strict)\n this.r = obj.r\n this.s = obj.s\n\n return this\n }\n\n static fromDer (buf, strict) {\n return new this().fromDer(buf, strict)\n }\n\n // The format used in a tx\n fromTxFormat (buf) {\n if (buf.length === 0) {\n // allow setting a \"blank\" signature\n this.r = new Bn(1)\n this.s = new Bn(1)\n this.nHashType = 1\n return this\n }\n const nHashType = buf.readUInt8(buf.length - 1)\n const derbuf = buf.slice(0, buf.length - 1)\n this.fromDer(derbuf, false)\n this.nHashType = nHashType\n return this\n }\n\n static fromTxFormat (buf) {\n return new this().fromTxFormat(buf)\n }\n\n fromString (str) {\n return this.fromHex(str)\n }\n\n /**\n * In order to mimic the non-strict DER encoding of OpenSSL, set strict = false.\n */\n static parseDer (buf, strict) {\n if (strict === undefined) {\n strict = true\n }\n\n if (!Buffer.isBuffer(buf)) {\n throw new Error('DER formatted signature should be a buffer')\n }\n\n const header = buf[0]\n\n if (header !== 0x30) {\n throw new Error('Header byte should be 0x30')\n }\n\n let length = buf[1]\n const buflength = buf.slice(2).length\n if (strict && length !== buflength) {\n throw new Error('LEngth byte should length of what follows')\n } else {\n length = length < buflength ? length : buflength\n }\n\n const rheader = buf[2 + 0]\n if (rheader !== 0x02) {\n throw new Error('Integer byte for r should be 0x02')\n }\n\n const rlength = buf[2 + 1]\n const rbuf = buf.slice(2 + 2, 2 + 2 + rlength)\n const r = new Bn().fromBuffer(rbuf)\n const rneg = buf[2 + 1 + 1] === 0x00\n if (rlength !== rbuf.length) {\n throw new Error('LEngth of r incorrect')\n }\n\n const sheader = buf[2 + 2 + rlength + 0]\n if (sheader !== 0x02) {\n throw new Error('Integer byte for s should be 0x02')\n }\n\n const slength = buf[2 + 2 + rlength + 1]\n const sbuf = buf.slice(2 + 2 + rlength + 2, 2 + 2 + rlength + 2 + slength)\n const s = new Bn().fromBuffer(sbuf)\n const sneg = buf[2 + 2 + rlength + 2 + 2] === 0x00\n if (slength !== sbuf.length) {\n throw new Error('LEngth of s incorrect')\n }\n\n const sumlength = 2 + 2 + rlength + 2 + slength\n if (length !== sumlength - 2) {\n throw new Error('LEngth of signature incorrect')\n }\n\n const obj = {\n header: header,\n length: length,\n rheader: rheader,\n rlength: rlength,\n rneg: rneg,\n rbuf: rbuf,\n r: r,\n sheader: sheader,\n slength: slength,\n sneg: sneg,\n sbuf: sbuf,\n s: s\n }\n\n return obj\n }\n\n /**\n * This function is translated from bitcoind's IsDERSignature and is used in\n * the script interpreter. This \"DER\" format actually includes an extra byte,\n * the nHashType, at the end. It is really the tx format, not DER format.\n *\n * A canonical signature exists of: [30] [total len] [02] [len R] [R] [02] [len S] [S] [hashtype]\n * Where R and S are not negative (their first byte has its highest bit not set), and not\n * excessively padded (do not start with a 0 byte, unless an otherwise negative number follows,\n * in which case a single 0 byte is necessary and even required).\n *\n * See https://bitcointalk.org/index.php?topic=8392.msg127623#msg127623\n */\n static IsTxDer (buf) {\n if (buf.length < 9) {\n // Non-canonical signature: too short\n return false\n }\n if (buf.length > 73) {\n // Non-canonical signature: too long\n return false\n }\n if (buf[0] !== 0x30) {\n // Non-canonical signature: wrong type\n return false\n }\n if (buf[1] !== buf.length - 3) {\n // Non-canonical signature: wrong length marker\n return false\n }\n const nLEnR = buf[3]\n if (5 + nLEnR >= buf.length) {\n // Non-canonical signature: S length misplaced\n return false\n }\n const nLEnS = buf[5 + nLEnR]\n if (nLEnR + nLEnS + 7 !== buf.length) {\n // Non-canonical signature: R+S length mismatch\n return false\n }\n\n const R = buf.slice(4)\n if (buf[4 - 2] !== 0x02) {\n // Non-canonical signature: R value type mismatch\n return false\n }\n if (nLEnR === 0) {\n // Non-canonical signature: R length is zero\n return false\n }\n if (R[0] & 0x80) {\n // Non-canonical signature: R value negative\n return false\n }\n if (nLEnR > 1 && R[0] === 0x00 && !(R[1] & 0x80)) {\n // Non-canonical signature: R value excessively padded\n return false\n }\n\n const S = buf.slice(6 + nLEnR)\n if (buf[6 + nLEnR - 2] !== 0x02) {\n // Non-canonical signature: S value type mismatch\n return false\n }\n if (nLEnS === 0) {\n // Non-canonical signature: S length is zero\n return false\n }\n if (S[0] & 0x80) {\n // Non-canonical signature: S value negative\n return false\n }\n if (nLEnS > 1 && S[0] === 0x00 && !(S[1] & 0x80)) {\n // Non-canonical signature: S value excessively padded\n return false\n }\n return true\n }\n\n /**\n * Compares to bitcoind's IsLowDERSignature\n * See also Ecdsa signature algorithm which enforces this.\n * See also Bip 62, \"low S values in signatures\"\n */\n hasLowS () {\n if (\n this.s.lt(1) ||\n this.s.gt(\n Bn.fromBuffer(\n Buffer.from(\n '7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0',\n 'hex'\n )\n )\n )\n ) {\n return false\n }\n return true\n }\n\n /**\n * Ensures the nHashType is exactly equal to one of the standard options or combinations thereof.\n * Translated from bitcoind's IsDefinedHashtypeSignature\n */\n hasDefinedHashType () {\n if (\n this.nHashType < Sig.SIGHASH_ALL ||\n this.nHashType > Sig.SIGHASH_SINGLE\n ) {\n return false\n }\n return true\n }\n\n toCompact (recovery, compressed) {\n recovery = typeof recovery === 'number' ? recovery : this.recovery\n compressed =\n typeof compressed === 'boolean' ? compressed : this.compressed\n\n if (\n !(recovery === 0 || recovery === 1 || recovery === 2 || recovery === 3)\n ) {\n throw new Error('recovery must be equal to 0, 1, 2, or 3')\n }\n\n let val = recovery + 27 + 4\n if (compressed === false) {\n val = val - 4\n }\n const b1 = Buffer.from([val])\n const b2 = this.r.toBuffer({ size: 32 })\n const b3 = this.s.toBuffer({ size: 32 })\n return Buffer.concat([b1, b2, b3])\n }\n\n toRS () {\n return Buffer.concat([\n this.r.toBuffer({ size: 32 }),\n this.s.toBuffer({ size: 32 })\n ])\n }\n\n toDer () {\n const rnbuf = this.r.toBuffer()\n const snbuf = this.s.toBuffer()\n\n const rneg = rnbuf[0] & 0x80\n const sneg = snbuf[0] & 0x80\n\n const rbuf = rneg ? Buffer.concat([Buffer.from([0x00]), rnbuf]) : rnbuf\n const sbuf = sneg ? Buffer.concat([Buffer.from([0x00]), snbuf]) : snbuf\n\n const length = 2 + rbuf.length + 2 + sbuf.length\n const rlength = rbuf.length\n const slength = sbuf.length\n const rheader = 0x02\n const sheader = 0x02\n const header = 0x30\n\n const der = Buffer.concat([\n Buffer.from([header, length, rheader, rlength]),\n rbuf,\n Buffer.from([sheader, slength]),\n sbuf\n ])\n return der\n }\n\n toTxFormat () {\n const derbuf = this.toDer()\n const buf = Buffer.alloc(1)\n buf.writeUInt8(this.nHashType, 0)\n return Buffer.concat([derbuf, buf])\n }\n\n toString () {\n return this.toHex()\n }\n}\n\nSig.SIGHASH_ALL = 0x00000001\nSig.SIGHASH_NONE = 0x00000002\nSig.SIGHASH_SINGLE = 0x00000003\nSig.SIGHASH_FORKID = 0x00000040\nSig.SIGHASH_ANYONECANPAY = 0x00000080\n\nexport { Sig }\n","/*\n * Script\n * ======\n *\n * Script is the scripting language built into bitcoin. The Script class lets\n * you create an instance of a script, e.g. for a scriptSig or a scriptPubKey.\n * It understands both the binary format, as well as two different string\n * formats. The default string format, to/fromString, is a custom format only\n * used by Yours Bitcoin because it is isomorphic to the binary format (or as\n * isomorphic as it can be ... since OP_0 and OP_FALSE have the same byte\n * value, and so do OP_1 and OP_TRUE). The bitcoind string format is also\n * support, but that format is not isomorphic (i.e., if you pull in a string\n * and then write it again, you are likely to get back a different string, even\n * if you don't use OP_0, OP_FALSE, OP_1, or OP_TRUE).\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Br } from './br'\nimport { Bw } from './bw'\nimport { cmp } from './cmp'\nimport { OpCode } from './op-code'\nimport { PubKey } from './pub-key'\nimport { Sig } from './sig'\nimport { Struct } from './struct'\n\nclass Script extends Struct {\n constructor (chunks = []) {\n super({ chunks })\n }\n\n fromJSON (json) {\n return this.fromString(json)\n }\n\n toJSON () {\n return this.toString()\n }\n\n fromBuffer (buf) {\n this.chunks = []\n\n const br = new Br(buf)\n while (!br.eof()) {\n const opCodeNum = br.readUInt8()\n\n let len = 0\n let buf = Buffer.from([])\n if (opCodeNum > 0 && opCodeNum < OpCode.OP_PUSHDATA1) {\n len = opCodeNum\n this.chunks.push({\n buf: br.read(len),\n len: len,\n opCodeNum: opCodeNum\n })\n } else if (opCodeNum === OpCode.OP_PUSHDATA1) {\n try {\n len = br.readUInt8()\n buf = br.read(len)\n } catch (err) {\n br.read()\n }\n this.chunks.push({\n buf: buf,\n len: len,\n opCodeNum: opCodeNum\n })\n } else if (opCodeNum === OpCode.OP_PUSHDATA2) {\n try {\n len = br.readUInt16LE()\n buf = br.read(len)\n } catch (err) {\n br.read()\n }\n this.chunks.push({\n buf: buf,\n len: len,\n opCodeNum: opCodeNum\n })\n } else if (opCodeNum === OpCode.OP_PUSHDATA4) {\n try {\n len = br.readUInt32LE()\n buf = br.read(len)\n } catch (err) {\n br.read()\n }\n this.chunks.push({\n buf: buf,\n len: len,\n opCodeNum: opCodeNum\n })\n } else {\n this.chunks.push({\n opCodeNum: opCodeNum\n })\n }\n }\n\n return this\n }\n\n toBuffer () {\n const bw = new Bw()\n\n for (let i = 0; i < this.chunks.length; i++) {\n const chunk = this.chunks[i]\n const opCodeNum = chunk.opCodeNum\n bw.writeUInt8(opCodeNum)\n if (chunk.buf) {\n if (opCodeNum < OpCode.OP_PUSHDATA1) {\n bw.write(chunk.buf)\n } else if (opCodeNum === OpCode.OP_PUSHDATA1) {\n bw.writeUInt8(chunk.len)\n bw.write(chunk.buf)\n } else if (opCodeNum === OpCode.OP_PUSHDATA2) {\n bw.writeUInt16LE(chunk.len)\n bw.write(chunk.buf)\n } else if (opCodeNum === OpCode.OP_PUSHDATA4) {\n bw.writeUInt32LE(chunk.len)\n bw.write(chunk.buf)\n }\n }\n }\n\n return bw.toBuffer()\n }\n\n fromString (str) {\n this.chunks = []\n if (str === '' || str === undefined) {\n return this\n }\n\n const tokens = str.split(' ')\n let i = 0\n while (i < tokens.length) {\n const token = tokens[i]\n let opCodeNum\n try {\n const opCode = new OpCode().fromString(token)\n opCodeNum = opCode.toNumber()\n } catch (err) {}\n\n if (opCodeNum === undefined) {\n opCodeNum = parseInt(token, 10)\n if (opCodeNum > 0 && opCodeNum < OpCode.OP_PUSHDATA1) {\n this.chunks.push({\n buf: Buffer.from(tokens[i + 1].slice(2), 'hex'),\n len: opCodeNum,\n opCodeNum: opCodeNum\n })\n i = i + 2\n } else if (opCodeNum === 0) {\n this.chunks.push({\n opCodeNum: 0\n })\n i = i + 1\n } else {\n throw new Error('Invalid script')\n }\n } else if (\n opCodeNum === OpCode.OP_PUSHDATA1 ||\n opCodeNum === OpCode.OP_PUSHDATA2 ||\n opCodeNum === OpCode.OP_PUSHDATA4\n ) {\n if (tokens[i + 2].slice(0, 2) !== '0x') {\n throw new Error('Pushdata data must start with 0x')\n }\n this.chunks.push({\n buf: Buffer.from(tokens[i + 2].slice(2), 'hex'),\n len: parseInt(tokens[i + 1], 10),\n opCodeNum: opCodeNum\n })\n i = i + 3\n } else {\n this.chunks.push({\n opCodeNum: opCodeNum\n })\n i = i + 1\n }\n }\n return this\n }\n\n toString () {\n let str = ''\n\n for (let i = 0; i < this.chunks.length; i++) {\n const chunk = this.chunks[i]\n const opCodeNum = chunk.opCodeNum\n if (!chunk.buf) {\n if (OpCode.str[opCodeNum] !== undefined) {\n str = str + ' ' + new OpCode(opCodeNum).toString()\n } else {\n str = str + ' ' + '0x' + opCodeNum.toString(16)\n }\n } else {\n if (\n opCodeNum === OpCode.OP_PUSHDATA1 ||\n opCodeNum === OpCode.OP_PUSHDATA2 ||\n opCodeNum === OpCode.OP_PUSHDATA4\n ) {\n str = str + ' ' + new OpCode(opCodeNum).toString()\n }\n str = str + ' ' + chunk.len\n str = str + ' ' + '0x' + chunk.buf.toString('hex')\n }\n }\n\n return str.substr(1)\n }\n\n /**\n * Input the script from the script string format used in bitcoind data tests\n */\n fromBitcoindString (str) {\n const bw = new Bw()\n const tokens = str.split(' ')\n let i\n for (i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n if (token === '') {\n continue\n }\n if (token[0] === '0' && token[1] === 'x') {\n const hex = token.slice(2)\n bw.write(Buffer.from(hex, 'hex'))\n } else if (token[0] === \"'\") {\n const tstr = token.slice(1, token.length - 1)\n const cbuf = Buffer.from(tstr)\n const tbuf = new Script().writeBuffer(cbuf).toBuffer()\n bw.write(tbuf)\n } else if (OpCode['OP_' + token] !== undefined) {\n const opstr = 'OP_' + token\n const opCodeNum = OpCode[opstr]\n bw.writeUInt8(opCodeNum)\n } else if (typeof OpCode[token] === 'number') {\n const opstr = token\n const opCodeNum = OpCode[opstr]\n bw.writeUInt8(opCodeNum)\n } else if (!isNaN(parseInt(token, 10))) {\n const bn = new Bn(token)\n const script = new Script().writeBn(bn)\n const tbuf = script.toBuffer()\n bw.write(tbuf)\n } else {\n throw new Error('Could not determine type of script value')\n }\n }\n const buf = bw.toBuffer()\n return this.fromBuffer(buf)\n }\n\n static fromBitcoindString (str) {\n return new this().fromBitcoindString(str)\n }\n\n /**\n * Output the script to the script string format used in bitcoind data tests.\n */\n toBitcoindString () {\n let str = ''\n for (let i = 0; i < this.chunks.length; i++) {\n const chunk = this.chunks[i]\n if (chunk.buf) {\n const buf = new Script([chunk]).toBuffer()\n const hex = buf.toString('hex')\n str = str + ' ' + '0x' + hex\n } else if (OpCode.str[chunk.opCodeNum] !== undefined) {\n const ostr = new OpCode(chunk.opCodeNum).toString()\n str = str + ' ' + ostr.slice(3) // remove OP_\n } else {\n str = str + ' ' + '0x' + chunk.opCodeNum.toString(16)\n }\n }\n return str.substr(1)\n }\n\n /**\n * Input the script from the script string format used in bitcoind data tests\n */\n fromAsmString (str) {\n this.chunks = []\n\n const tokens = str.split(' ')\n let i = 0\n while (i < tokens.length) {\n const token = tokens[i]\n let opCode, opCodeNum\n try {\n opCode = OpCode.fromString(token)\n opCodeNum = opCode.toNumber()\n } catch (err) {\n opCode = undefined\n opCodeNum = undefined\n }\n\n // we start with two special cases, 0 and -1, which are handled specially in\n // toASM. see _chunkToString.\n if (token === '0') {\n opCodeNum = 0\n this.chunks.push({\n opCodeNum: opCodeNum\n })\n i = i + 1\n } else if (token === '-1') {\n opCodeNum = OpCode.OP_1NEGATE\n this.chunks.push({\n opCodeNum: opCodeNum\n })\n i = i + 1\n } else if (opCode === undefined) {\n const hex = tokens[i]\n const buf = Buffer.from(hex, 'hex')\n if (buf.toString('hex') !== hex) {\n throw new Error('invalid hex string in script')\n }\n const len = buf.length\n if (len >= 0 && len < OpCode.OP_PUSHDATA1) {\n opCodeNum = len\n } else if (len < Math.pow(2, 8)) {\n opCodeNum = OpCode.OP_PUSHDATA1\n } else if (len < Math.pow(2, 16)) {\n opCodeNum = OpCode.OP_PUSHDATA2\n } else if (len < Math.pow(2, 32)) {\n opCodeNum = OpCode.OP_PUSHDATA4\n }\n this.chunks.push({\n buf: buf,\n len: buf.length,\n opCodeNum: opCodeNum\n })\n i = i + 1\n } else {\n this.chunks.push({\n opCodeNum: opCodeNum\n })\n i = i + 1\n }\n }\n return this\n }\n\n static fromAsmString (str) {\n return new this().fromAsmString(str)\n }\n\n /**\n * Output the script to the script string format used in bitcoind data tests.\n */\n toAsmString () {\n var str = ''\n for (var i = 0; i < this.chunks.length; i++) {\n var chunk = this.chunks[i]\n str += this._chunkToString(chunk)\n }\n\n return str.substr(1)\n }\n\n _chunkToString (chunk, type) {\n var opCodeNum = chunk.opCodeNum\n var str = ''\n if (!chunk.buf) {\n // no data chunk\n if (typeof OpCode.str[opCodeNum] !== 'undefined') {\n // A few cases where the opcode name differs from reverseMap\n // aside from 1 to 16 data pushes.\n if (opCodeNum === 0) {\n // OP_0 -> 0\n str = str + ' 0'\n } else if (opCodeNum === 79) {\n // OP_1NEGATE -> 1\n str = str + ' -1'\n } else {\n str = str + ' ' + new OpCode(opCodeNum).toString()\n }\n } else {\n var numstr = opCodeNum.toString(16)\n if (numstr.length % 2 !== 0) {\n numstr = '0' + numstr\n }\n str = str + ' ' + numstr\n }\n } else {\n // data chunk\n if (chunk.len > 0) {\n str = str + ' ' + chunk.buf.toString('hex')\n }\n }\n return str\n }\n\n fromOpReturnData (dataBuf) {\n this.writeOpCode(OpCode.OP_RETURN)\n this.writeBuffer(dataBuf)\n return this\n }\n\n static fromOpReturnData (dataBuf) {\n return new this().fromOpReturnData(dataBuf)\n }\n\n fromSafeData (dataBuf) {\n this.writeOpCode(OpCode.OP_FALSE)\n this.writeOpCode(OpCode.OP_RETURN)\n this.writeBuffer(dataBuf)\n return this\n }\n\n static fromSafeData (dataBuf) {\n return new this().fromSafeData(dataBuf)\n }\n\n fromSafeDataArray (dataBufs) {\n this.writeOpCode(OpCode.OP_FALSE)\n this.writeOpCode(OpCode.OP_RETURN)\n for (const i in dataBufs) {\n const dataBuf = dataBufs[i]\n this.writeBuffer(dataBuf)\n }\n return this\n }\n\n static fromSafeDataArray (dataBufs) {\n return new this().fromSafeDataArray(dataBufs)\n }\n\n getData () {\n if (this.isSafeDataOut()) {\n const chunks = this.chunks.slice(2)\n const buffers = chunks.map(chunk => chunk.buf)\n return buffers\n }\n if (this.isOpReturn()) {\n const chunks = this.chunks.slice(1)\n const buffers = chunks.map(chunk => chunk.buf)\n return buffers\n }\n throw new Error('Unrecognized script type to get data from')\n }\n\n /**\n * Turn script into a standard pubKeyHash output script\n */\n fromPubKeyHash (hashBuf) {\n if (hashBuf.length !== 20) {\n throw new Error('hashBuf must be a 20 byte buffer')\n }\n this.writeOpCode(OpCode.OP_DUP)\n this.writeOpCode(OpCode.OP_HASH160)\n this.writeBuffer(hashBuf)\n this.writeOpCode(OpCode.OP_EQUALVERIFY)\n this.writeOpCode(OpCode.OP_CHECKSIG)\n return this\n }\n\n static fromPubKeyHash (hashBuf) {\n return new this().fromPubKeyHash(hashBuf)\n }\n\n static sortPubKeys (pubKeys) {\n return pubKeys.slice().sort((pubKey1, pubKey2) => {\n const buf1 = pubKey1.toBuffer()\n const buf2 = pubKey2.toBuffer()\n const len = Math.max(buf1.length, buf2.length)\n for (let i = 0; i <= len; i++) {\n if (buf1[i] === undefined) {\n return -1 // shorter strings come first\n }\n if (buf2[i] === undefined) {\n return 1\n }\n if (buf1[i] < buf2[i]) {\n return -1\n }\n if (buf1[i] > buf2[i]) {\n return 1\n } else {\n continue\n }\n }\n })\n }\n\n /**\n * Generate a multisig output script from a list of public keys. sort\n * defaults to true. If sort is true, the pubKeys are sorted\n * lexicographically.\n */\n fromPubKeys (m, pubKeys, sort = true) {\n if (typeof m !== 'number') {\n throw new Error('m must be a number')\n }\n if (sort === true) {\n pubKeys = Script.sortPubKeys(pubKeys)\n }\n this.writeOpCode(m + OpCode.OP_1 - 1)\n for (const i in pubKeys) {\n this.writeBuffer(pubKeys[i].toBuffer())\n }\n this.writeOpCode(pubKeys.length + OpCode.OP_1 - 1)\n this.writeOpCode(OpCode.OP_CHECKMULTISIG)\n return this\n }\n\n static fromPubKeys (m, pubKeys, sort) {\n return new this().fromPubKeys(m, pubKeys, sort)\n }\n\n removeCodeseparators () {\n const chunks = []\n for (let i = 0; i < this.chunks.length; i++) {\n if (this.chunks[i].opCodeNum !== OpCode.OP_CODESEPARATOR) {\n chunks.push(this.chunks[i])\n }\n }\n this.chunks = chunks\n return this\n }\n\n isPushOnly () {\n for (let i = 0; i < this.chunks.length; i++) {\n const chunk = this.chunks[i]\n const opCodeNum = chunk.opCodeNum\n if (opCodeNum > OpCode.OP_16) {\n return false\n }\n }\n return true\n }\n\n isOpReturn () {\n if (\n this.chunks[0].opCodeNum === OpCode.OP_RETURN &&\n this.chunks.filter(chunk => Buffer.isBuffer(chunk.buf)).length === this.chunks.slice(1).length\n ) {\n return true\n } else {\n return false\n }\n }\n\n isSafeDataOut () {\n if (this.chunks.length < 2) {\n return false\n }\n if (this.chunks[0].opCodeNum !== OpCode.OP_FALSE) {\n return false\n }\n var chunks = this.chunks.slice(1)\n var script2 = new Script(chunks)\n return script2.isOpReturn()\n }\n\n isPubKeyHashOut () {\n if (\n this.chunks[0] &&\n this.chunks[0].opCodeNum === OpCode.OP_DUP &&\n this.chunks[1] &&\n this.chunks[1].opCodeNum === OpCode.OP_HASH160 &&\n this.chunks[2].buf &&\n this.chunks[3] &&\n this.chunks[3].opCodeNum === OpCode.OP_EQUALVERIFY &&\n this.chunks[4] &&\n this.chunks[4].opCodeNum === OpCode.OP_CHECKSIG\n ) {\n return true\n } else {\n return false\n }\n }\n\n /**\n * A pubKeyHash input should consist of two push operations. The first push\n * operation may be OP_0, which means the signature is missing, which is true\n * for some partially signed (and invalid) transactions.\n */\n isPubKeyHashIn () {\n if (\n this.chunks.length === 2 &&\n (this.chunks[0].buf || this.chunks[0].opCodeNum === OpCode.OP_0) &&\n (this.chunks[1].buf || this.chunks[0].opCodeNum === OpCode.OP_0)\n ) {\n return true\n } else {\n return false\n }\n }\n\n isScriptHashOut () {\n const buf = this.toBuffer()\n return (\n buf.length === 23 &&\n buf[0] === OpCode.OP_HASH160 &&\n buf[1] === 0x14 &&\n buf[22] === OpCode.OP_EQUAL\n )\n }\n\n /**\n * Note that these are frequently indistinguishable from pubKeyHashin\n */\n isScriptHashIn () {\n if (!this.isPushOnly()) {\n return false\n }\n try {\n new Script().fromBuffer(this.chunks[this.chunks.length - 1].buf)\n } catch (err) {\n return false\n }\n return true\n }\n\n isMultiSigOut () {\n const m = this.chunks[0].opCodeNum - OpCode.OP_1 + 1\n if (!(m >= 1 && m <= 16)) {\n return false\n }\n const pubKeychunks = this.chunks.slice(1, this.chunks.length - 2)\n if (\n !pubKeychunks.every(chunk => {\n try {\n const buf = chunk.buf\n const pubKey = new PubKey().fromDer(buf)\n pubKey.validate()\n return true\n } catch (err) {\n return false\n }\n })\n ) {\n return false\n }\n const n = this.chunks[this.chunks.length - 2].opCodeNum - OpCode.OP_1 + 1\n if (!(n >= m && n <= 16)) {\n return false\n }\n if (this.chunks[1 + n + 1].opCodeNum !== OpCode.OP_CHECKMULTISIG) {\n return false\n }\n return true\n }\n\n isMultiSigIn () {\n if (this.chunks[0].opCodeNum !== OpCode.OP_0) {\n return false\n }\n const remaining = this.chunks.slice(1)\n if (remaining.length < 1) {\n return false\n }\n return remaining.every(\n chunk => Buffer.isBuffer(chunk.buf) && Sig.IsTxDer(chunk.buf)\n )\n }\n\n /**\n * Analagous to bitcoind's FindAndDelete Find and deconste equivalent chunks,\n * typically used with push data chunks. Note that this will find and deconste\n * not just the same data, but the same data with the same push data op as\n * produced by default. i.e., if a pushdata in a tx does not use the minimal\n * pushdata op, then when you try to remove the data it is pushing, it will not\n * be removed, because they do not use the same pushdata op.\n */\n findAndDelete (script) {\n const buf = script.toBuffer()\n for (let i = 0; i < this.chunks.length; i++) {\n const script2 = new Script([this.chunks[i]])\n const buf2 = script2.toBuffer()\n if (cmp(buf, buf2)) {\n this.chunks.splice(i, 1)\n }\n }\n return this\n }\n\n writeScript (script) {\n this.chunks = this.chunks.concat(script.chunks)\n return this\n }\n\n static writeScript (script) {\n return new this().writeScript(script)\n }\n\n writeString (str) {\n const script = new Script().fromString(str)\n this.chunks = this.chunks.concat(script.chunks)\n return this\n }\n\n static writeString (str) {\n return new this().writeString(str)\n }\n\n writeOpCode (opCodeNum) {\n this.chunks.push({ opCodeNum })\n return this\n }\n\n static writeOpCode (opCodeNum) {\n return new this().writeOpCode(opCodeNum)\n }\n\n setChunkOpCode (i, opCodeNum) {\n this.chunks[i] = { opCodeNum }\n return this\n }\n\n // write a big number in the minimal way\n writeBn (bn) {\n if (bn.cmp(0) === OpCode.OP_0) {\n this.chunks.push({\n opCodeNum: OpCode.OP_0\n })\n } else if (bn.cmp(-1) === 0) {\n this.chunks.push({\n opCodeNum: OpCode.OP_1NEGATE\n })\n } else if (bn.cmp(1) >= 0 && bn.cmp(16) <= 0) {\n // see OP_1 - OP_16\n this.chunks.push({\n opCodeNum: bn.toNumber() + OpCode.OP_1 - 1\n })\n } else {\n const buf = bn.toSm({ endian: 'little' })\n this.writeBuffer(buf)\n }\n return this\n }\n\n static writeBn (bn) {\n return new this().writeBn(bn)\n }\n\n writeNumber (number) {\n this.writeBn(new Bn().fromNumber(number))\n return this\n }\n\n static writeNumber (number) {\n return new this().writeNumber(number)\n }\n\n setChunkBn (i, bn) {\n this.chunks[i] = new Script().writeBn(bn).chunks[0]\n return this\n }\n\n // note: this does not necessarily write buffers in the minimal way\n // to write numbers in the minimal way, see writeBn\n writeBuffer (buf) {\n let opCodeNum\n const len = buf.length\n if (buf.length > 0 && buf.length < OpCode.OP_PUSHDATA1) {\n opCodeNum = buf.length\n } else if (buf.length === 0) {\n opCodeNum = OpCode.OP_0\n } else if (buf.length < Math.pow(2, 8)) {\n opCodeNum = OpCode.OP_PUSHDATA1\n } else if (buf.length < Math.pow(2, 16)) {\n opCodeNum = OpCode.OP_PUSHDATA2\n } else if (buf.length < Math.pow(2, 32)) {\n opCodeNum = OpCode.OP_PUSHDATA4\n } else {\n throw new Error(\"You can't push that much data\")\n }\n this.chunks.push({\n buf: buf,\n len: len,\n opCodeNum: opCodeNum\n })\n return this\n }\n\n static writeBuffer (buf) {\n return new this().writeBuffer(buf)\n }\n\n setChunkBuffer (i, buf) {\n this.chunks[i] = new Script().writeBuffer(buf).chunks[0]\n return this\n }\n\n // make sure a push is the smallest way to push that particular data\n // comes from bitcoind's script interpreter CheckMinimalPush function\n checkMinimalPush (i) {\n const chunk = this.chunks[i]\n const buf = chunk.buf\n const opCodeNum = chunk.opCodeNum\n if (!buf) {\n return true\n }\n if (buf.length === 0) {\n // Could have used OP_0.\n return opCodeNum === OpCode.OP_0\n } else if (buf.length === 1 && buf[0] >= 1 && buf[0] <= 16) {\n // Could have used OP_1 .. OP_16.\n return opCodeNum === OpCode.OP_1 + (buf[0] - 1)\n } else if (buf.length === 1 && buf[0] === 0x81) {\n // Could have used OP_1NEGATE.\n return opCodeNum === OpCode.OP_1NEGATE\n } else if (buf.length <= 75) {\n // Could have used a direct push (opCode indicating number of bytes pushed + those bytes).\n return opCodeNum === buf.length\n } else if (buf.length <= 255) {\n // Could have used OP_PUSHDATA.\n return opCodeNum === OpCode.OP_PUSHDATA1\n } else if (buf.length <= 65535) {\n // Could have used OP_PUSHDATA2.\n return opCodeNum === OpCode.OP_PUSHDATA2\n }\n return true\n }\n}\n\nexport { Script }\n","/**\n * Bitcoin Address\n * ===============\n *\n * A bitcoin address. Normal use cases:\n * const address = new Address().fromPubKey(pubKey)\n * const address = new Address().fromString(string)\n * const string = address.toString()\n * const script = address.toTxOutScript()\n * const isValid = Address.isValid(string)\n *\n * Can also do testnet:\n * const address = Address.Testnet()\n *\n * Note that an Address and an Addr are two completely different things. An\n * Address is what you send bitcoin to. An Addr is an ip address and port that\n * you connect to over the internet.\n */\n'use strict'\n\nimport { Base58Check } from './base-58-check'\nimport { Constants } from './constants'\nimport { Hash } from './hash'\nimport { OpCode } from './op-code'\nimport { PubKey } from './pub-key'\nimport { PrivKey } from './priv-key'\nimport { Script } from './script'\nimport { Struct } from './struct'\nimport { Workers } from './workers'\n\nclass Address extends Struct {\n constructor (versionByteNum, hashBuf, constants = null) {\n super({ versionByteNum, hashBuf })\n constants = constants || Constants.Default.Address\n this.Constants = constants\n }\n\n fromBuffer (buf) {\n if (buf.length !== 1 + 20) {\n throw new Error('address buffers must be exactly 21 bytes')\n }\n if (\n buf[0] !== this.Constants.pubKeyHash\n ) {\n throw new Error('address: invalid versionByteNum byte')\n }\n this.versionByteNum = buf[0]\n this.hashBuf = buf.slice(1)\n return this\n }\n\n fromPubKeyHashBuf (hashBuf) {\n this.hashBuf = hashBuf\n this.versionByteNum = this.Constants.pubKeyHash\n return this\n }\n\n static fromPubKeyHashBuf (hashBuf) {\n return new this().fromPubKeyHashBuf(hashBuf)\n }\n\n fromPubKey (pubKey) {\n const hashBuf = Hash.sha256Ripemd160(pubKey.toBuffer())\n return this.fromPubKeyHashBuf(hashBuf)\n }\n\n static fromPubKey (pubKey) {\n return new this().fromPubKey(pubKey)\n }\n\n async asyncFromPubKey (pubKey) {\n const args = [pubKey]\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'fromPubKey',\n args\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromPubKey (pubKey) {\n return new this().asyncFromPubKey(pubKey)\n }\n\n fromPrivKey (privKey) {\n const pubKey = new PubKey().fromPrivKey(privKey)\n const hashBuf = Hash.sha256Ripemd160(pubKey.toBuffer())\n return this.fromPubKeyHashBuf(hashBuf)\n }\n\n static fromPrivKey (privKey) {\n return new this().fromPrivKey(privKey)\n }\n\n async asyncFromPrivKey (privKey) {\n const args = [privKey]\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'fromPrivKey',\n args\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromPrivKey (privKey) {\n return new this().fromPrivKey(privKey)\n }\n\n fromRandom () {\n const randomPrivKey = new PrivKey().fromRandom()\n return this.fromPrivKey(randomPrivKey)\n }\n\n static fromRandom () {\n return new this().fromRandom()\n }\n\n async asyncFromRandom () {\n const args = []\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'fromRandom',\n args\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromRandom () {\n return new this().fromRandom()\n }\n\n fromString (str) {\n const buf = Base58Check.decode(str)\n return this.fromBuffer(buf)\n }\n\n async asyncFromString (str) {\n const args = [str]\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'fromString',\n args\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromString (str) {\n return new this().asyncFromString(str)\n }\n\n static isValid (addrstr) {\n let address\n try {\n address = new Address().fromString(addrstr)\n } catch (e) {\n return false\n }\n return address.isValid()\n }\n\n isValid () {\n try {\n this.validate()\n return true\n } catch (e) {\n return false\n }\n }\n\n toTxOutScript () {\n const script = new Script()\n script.writeOpCode(OpCode.OP_DUP)\n script.writeOpCode(OpCode.OP_HASH160)\n script.writeBuffer(this.hashBuf)\n script.writeOpCode(OpCode.OP_EQUALVERIFY)\n script.writeOpCode(OpCode.OP_CHECKSIG)\n\n return script\n }\n\n fromTxInScript (script) {\n const pubKeyHashBuf = Hash.sha256Ripemd160(script.chunks[1].buf || Buffer.from('00'.repeat(32), 'hex'))\n return this.fromPubKeyHashBuf(pubKeyHashBuf)\n }\n\n static fromTxInScript (script) {\n return new this().fromTxInScript(script)\n }\n\n fromTxOutScript (script) {\n return this.fromPubKeyHashBuf(script.chunks[2].buf)\n }\n\n static fromTxOutScript (script) {\n return new this().fromTxOutScript(script)\n }\n\n toBuffer () {\n const versionByteBuf = Buffer.from([this.versionByteNum])\n const buf = Buffer.concat([versionByteBuf, this.hashBuf])\n return buf\n }\n\n toJSON () {\n const json = {}\n if (this.hashBuf) {\n json.hashBuf = this.hashBuf.toString('hex')\n }\n if (typeof this.versionByteNum !== 'undefined') {\n json.versionByteNum = this.versionByteNum\n }\n return json\n }\n\n fromJSON (json) {\n if (json.hashBuf) {\n this.hashBuf = Buffer.from(json.hashBuf, 'hex')\n }\n if (typeof json.versionByteNum !== 'undefined') {\n this.versionByteNum = json.versionByteNum\n }\n return this\n }\n\n toString () {\n return Base58Check.encode(this.toBuffer())\n }\n\n async asyncToString () {\n const args = []\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'toString',\n args\n )\n return JSON.parse(workersResult.resbuf.toString())\n }\n\n validate () {\n if (!Buffer.isBuffer(this.hashBuf) || this.hashBuf.length !== 20) {\n throw new Error('hashBuf must be a buffer of 20 bytes')\n }\n if (\n this.versionByteNum !== this.Constants.pubKeyHash\n ) {\n throw new Error('invalid versionByteNum')\n }\n return this\n }\n}\n\nAddress.Mainnet = class extends Address {\n constructor (versionByteNum, hashBuf) {\n super(versionByteNum, hashBuf, Constants.Mainnet.Address)\n }\n}\n\nAddress.Testnet = class extends Address {\n constructor (versionByteNum, hashBuf) {\n super(versionByteNum, hashBuf, Constants.Testnet.Address)\n }\n}\n\nexport { Address }\n","/**\n * Bip32: HD Wallets\n * =================\n *\n * Bip32 is hierarchical deterministic wallets. The standard way to use this is:\n * const bip32 = new Bip32().fromRandom()\n * const bip32 = new Bip32().fromSeed(buf)\n * const bip32 = new Bip32().fromString(string)\n * const xprv = bip32.toString()\n * const xpub = bip32.toPublic().toString()\n *\n * This code was originally copied from here:\n *\n * https://github.com/sarchar/brainwallet.github.com\n *\n * It has faced mostly cosmetic alterations since it was copied.\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Bw } from './bw'\nimport { Base58Check } from './base-58-check'\nimport { Constants } from './constants'\nimport { Hash } from './hash'\nimport { Point } from './point'\nimport { PrivKey as PrivKeyClass } from './priv-key'\nimport { PubKey } from './pub-key'\nimport { Random } from './random'\nimport { Struct } from './struct'\nimport { Workers } from './workers'\n\nclass Bip32 extends Struct {\n constructor (\n versionBytesNum,\n depth,\n parentFingerPrint,\n childIndex,\n chainCode,\n privKey,\n pubKey,\n constants = null,\n PrivKey = PrivKeyClass\n ) {\n super({\n versionBytesNum,\n depth,\n parentFingerPrint,\n childIndex,\n chainCode,\n privKey,\n pubKey\n })\n constants = constants || Constants.Default.Bip32\n this.Constants = constants\n this.PrivKey = PrivKey\n }\n\n fromRandom () {\n this.versionBytesNum = this.Constants.privKey\n this.depth = 0x00\n this.parentFingerPrint = Buffer.from([0, 0, 0, 0])\n this.childIndex = 0\n this.chainCode = Random.getRandomBuffer(32)\n this.privKey = new this.PrivKey().fromRandom()\n this.pubKey = new PubKey().fromPrivKey(this.privKey)\n return this\n }\n\n static fromRandom () {\n return new this().fromRandom()\n }\n\n fromString (str) {\n return this.fromBuffer(Base58Check.decode(str))\n }\n\n /**\n * Use workers to convert a bip32 string into a bip32 object without\n * blocking.\n */\n async asyncFromString (str) {\n const args = [str]\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'fromString',\n args\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n fromSeed (bytes) {\n if (!Buffer.isBuffer(bytes)) {\n throw new Error('bytes must be a buffer')\n }\n if (bytes.length < 128 / 8) {\n throw new Error('Need more than 128 bits of entropy')\n }\n if (bytes.length > 512 / 8) {\n throw new Error('More than 512 bits of entropy is nonstandard')\n }\n const hash = Hash.sha512Hmac(bytes, Buffer.from('Bitcoin seed'))\n\n this.depth = 0x00\n this.parentFingerPrint = Buffer.from([0, 0, 0, 0])\n this.childIndex = 0\n this.chainCode = hash.slice(32, 64)\n this.versionBytesNum = this.Constants.privKey\n this.privKey = new this.PrivKey().fromBn(Bn().fromBuffer(hash.slice(0, 32)))\n this.pubKey = new PubKey().fromPrivKey(this.privKey)\n\n return this\n }\n\n static fromSeed (bytes) {\n return new this().fromSeed(bytes)\n }\n\n async asyncFromSeed (bytes) {\n const workersResult = await Workers.asyncObjectMethod(this, 'fromSeed', [\n bytes\n ])\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromSeed (bytes) {\n return new this().asyncFromSeed(bytes)\n }\n\n fromBuffer (buf) {\n // Both pub and private extended keys are 78 buf\n if (buf.length !== 78) {\n throw new Error('incorrect bip32 data length')\n }\n\n this.versionBytesNum = buf.slice(0, 4).readUInt32BE(0)\n this.depth = buf.slice(4, 5).readUInt8(0)\n this.parentFingerPrint = buf.slice(5, 9)\n this.childIndex = buf.slice(9, 13).readUInt32BE(0)\n this.chainCode = buf.slice(13, 45)\n const keyBytes = buf.slice(45, 78)\n\n const isPrivate = this.versionBytesNum === this.Constants.privKey\n const isPublic = this.versionBytesNum === this.Constants.pubKey\n\n if (isPrivate && keyBytes[0] === 0) {\n this.privKey = new this.PrivKey().fromBn(\n Bn().fromBuffer(keyBytes.slice(1, 33))\n )\n this.pubKey = new PubKey().fromPrivKey(this.privKey)\n } else if (isPublic && (keyBytes[0] === 0x02 || keyBytes[0] === 0x03)) {\n this.pubKey = new PubKey().fromDer(keyBytes)\n } else {\n throw new Error('Invalid key')\n }\n\n return this\n }\n\n /**\n * This is a faster version of .fromBuffer that reads in the output from\n * .toFastBuffer rather than from .toBuffer. .toFastBuffer outputs almost the\n * same thing as .toBuffer, except the public key is uncompressed. That makes\n * it larger, but also means that point multiplication doesn't have to be\n * used to derive the y value. So reading it in is faster. The only thing we\n * have to do is explicitely set the \"compressed\" value of public key to true\n * after reading it in. That is because although .toFastBuffer and\n * .fromFastBuffer transmit the public key in uncompressed form, we want it\n * to be set to compressed when stored in memory.\n */\n fromFastBuffer (buf) {\n if (buf.length === 0) {\n return this\n }\n if (buf.length !== 78 && buf.length !== 78 + 33) {\n throw new Error('incorrect bip32 fastBuffer data length: ' + buf.length)\n }\n\n this.versionBytesNum = buf.slice(0, 4).readUInt32BE(0)\n this.depth = buf.slice(4, 5).readUInt8(0)\n this.parentFingerPrint = buf.slice(5, 9)\n this.childIndex = buf.slice(9, 13).readUInt32BE(0)\n this.chainCode = buf.slice(13, 45)\n\n const keyBytes = buf.slice(45, buf.length)\n\n const isPrivate = this.versionBytesNum === this.Constants.privKey\n const isPublic = this.versionBytesNum === this.Constants.pubKey\n\n if (isPrivate && keyBytes[0] === 0 && buf.length === 78) {\n this.privKey = new this.PrivKey().fromBn(\n Bn().fromBuffer(keyBytes.slice(1, 33))\n )\n this.pubKey = new PubKey().fromPrivKey(this.privKey)\n } else if (isPublic && buf.length === 78 + 33) {\n this.pubKey = new PubKey().fromFastBuffer(keyBytes)\n this.pubKey.compressed = true\n } else {\n throw new Error('Invalid key')\n }\n\n return this\n }\n\n derive (path) {\n const e = path.split('/')\n\n if (path === 'm') {\n return this\n }\n\n let bip32 = this\n for (const i in e) {\n const c = e[i]\n\n if (i === '0') {\n if (c !== 'm') throw new Error('invalid path')\n continue\n }\n\n if (\n parseInt(c.replace(\"'\", ''), 10).toString() !== c.replace(\"'\", '')\n ) {\n throw new Error('invalid path')\n }\n\n const usePrivate = c.length > 1 && c[c.length - 1] === \"'\"\n let childIndex =\n parseInt(usePrivate ? c.slice(0, c.length - 1) : c, 10) & 0x7fffffff\n\n if (usePrivate) {\n childIndex += 0x80000000\n }\n\n bip32 = bip32.deriveChild(childIndex)\n }\n\n return bip32\n }\n\n async asyncDerive (path) {\n const workersResult = await Workers.asyncObjectMethod(this, 'derive', [\n path\n ])\n return new this.constructor().fromFastBuffer(workersResult.resbuf)\n }\n\n deriveChild (i) {\n if (typeof i !== 'number') {\n throw new Error('i must be a number')\n }\n\n let ib = []\n ib.push((i >> 24) & 0xff)\n ib.push((i >> 16) & 0xff)\n ib.push((i >> 8) & 0xff)\n ib.push(i & 0xff)\n ib = Buffer.from(ib)\n\n const usePrivate = (i & 0x80000000) !== 0\n\n const isPrivate = this.versionBytesNum === this.Constants.privKey\n\n if (usePrivate && (!this.privKey || !isPrivate)) {\n throw new Error('Cannot do private key derivation without private key')\n }\n\n let ret = null\n if (this.privKey) {\n let data = null\n\n if (usePrivate) {\n data = Buffer.concat([\n Buffer.from([0]),\n this.privKey.bn.toBuffer({ size: 32 }),\n ib\n ])\n } else {\n data = Buffer.concat([this.pubKey.toBuffer({ size: 32 }), ib])\n }\n\n const hash = Hash.sha512Hmac(data, this.chainCode)\n const il = Bn().fromBuffer(hash.slice(0, 32), { size: 32 })\n const ir = hash.slice(32, 64)\n\n // ki = IL + kpar (mod n).\n const k = il.add(this.privKey.bn).mod(Point.getN())\n\n ret = new this.constructor()\n ret.chainCode = ir\n\n ret.privKey = new this.PrivKey().fromBn(k)\n ret.pubKey = new PubKey().fromPrivKey(ret.privKey)\n } else {\n const data = Buffer.concat([this.pubKey.toBuffer(), ib])\n const hash = Hash.sha512Hmac(data, this.chainCode)\n const il = Bn().fromBuffer(hash.slice(0, 32))\n const ir = hash.slice(32, 64)\n\n // Ki = (IL + kpar)*G = IL*G + Kpar\n const ilG = Point.getG().mul(il)\n const Kpar = this.pubKey.point\n const Ki = ilG.add(Kpar)\n const newpub = new PubKey()\n newpub.point = Ki\n\n ret = new this.constructor()\n ret.chainCode = ir\n\n ret.pubKey = newpub\n }\n\n ret.childIndex = i\n const pubKeyhash = Hash.sha256Ripemd160(this.pubKey.toBuffer())\n ret.parentFingerPrint = pubKeyhash.slice(0, 4)\n ret.versionBytesNum = this.versionBytesNum\n ret.depth = this.depth + 1\n\n return ret\n }\n\n toPublic () {\n const bip32 = new this.constructor().fromObject(this)\n bip32.versionBytesNum = this.Constants.pubKey\n bip32.privKey = undefined\n return bip32\n }\n\n toBuffer () {\n const isPrivate = this.versionBytesNum === this.Constants.privKey\n const isPublic = this.versionBytesNum === this.Constants.pubKey\n if (isPrivate) {\n return new Bw()\n .writeUInt32BE(this.versionBytesNum)\n .writeUInt8(this.depth)\n .write(this.parentFingerPrint)\n .writeUInt32BE(this.childIndex)\n .write(this.chainCode)\n .writeUInt8(0)\n .write(this.privKey.bn.toBuffer({ size: 32 }))\n .toBuffer()\n } else if (isPublic) {\n if (this.pubKey.compressed === false) {\n throw new Error(\n 'cannot convert bip32 to buffer if pubKey is not compressed'\n )\n }\n return new Bw()\n .writeUInt32BE(this.versionBytesNum)\n .writeUInt8(this.depth)\n .write(this.parentFingerPrint)\n .writeUInt32BE(this.childIndex)\n .write(this.chainCode)\n .write(this.pubKey.toBuffer())\n .toBuffer()\n } else {\n throw new Error('bip32: invalid versionBytesNum byte')\n }\n }\n\n /**\n * This is the \"fast\" analog of toBuffer. It is almost the same as toBuffer,\n * and in fact is actually not any faster. The only difference is that it\n * adds an uncompressed rather than compressed public key to the output. This\n * is so that .fromFastBufer can read in the public key without having to do\n * fancy, slow point multiplication to derive the y value of the public key.\n * Thus, although .toFastBuffer is not any faster, .fromFastBuffer is faster.\n */\n toFastBuffer () {\n if (!this.versionBytesNum) {\n return Buffer.alloc(0)\n }\n const isPrivate = this.versionBytesNum === this.Constants.privKey\n const isPublic = this.versionBytesNum === this.Constants.pubKey\n if (isPrivate) {\n return new Bw()\n .writeUInt32BE(this.versionBytesNum)\n .writeUInt8(this.depth)\n .write(this.parentFingerPrint)\n .writeUInt32BE(this.childIndex)\n .write(this.chainCode)\n .writeUInt8(0)\n .write(this.privKey.bn.toBuffer({ size: 32 }))\n .toBuffer()\n } else if (isPublic) {\n return new Bw()\n .writeUInt32BE(this.versionBytesNum)\n .writeUInt8(this.depth)\n .write(this.parentFingerPrint)\n .writeUInt32BE(this.childIndex)\n .write(this.chainCode)\n .write(this.pubKey.toFastBuffer())\n .toBuffer()\n } else {\n throw new Error('bip32: invalid versionBytesNum byte')\n }\n }\n\n toString () {\n return Base58Check.encode(this.toBuffer())\n }\n\n /**\n * Use workers to convert a bip32 object into a bip32 string without\n * blocking.\n */\n async asyncToString () {\n const workersResult = await Workers.asyncObjectMethod(this, 'toString', [])\n return JSON.parse(workersResult.resbuf.toString())\n }\n\n toJSON () {\n return this.toFastHex()\n }\n\n fromJSON (json) {\n return this.fromFastHex(json)\n }\n\n isPrivate () {\n return this.versionBytesNum === this.Constants.privKey\n }\n}\n\nBip32.Mainnet = class extends Bip32 {\n constructor (\n versionBytesNum,\n depth,\n parentFingerPrint,\n childIndex,\n chainCode,\n privKey,\n pubKey\n ) {\n super(\n versionBytesNum,\n depth,\n parentFingerPrint,\n childIndex,\n chainCode,\n privKey,\n pubKey,\n Constants.Mainnet.Bip32,\n PrivKeyClass.Mainnet\n )\n }\n}\n\nBip32.Testnet = class extends Bip32 {\n constructor (\n versionBytesNum,\n depth,\n parentFingerPrint,\n childIndex,\n chainCode,\n privKey,\n pubKey\n ) {\n super(\n versionBytesNum,\n depth,\n parentFingerPrint,\n childIndex,\n chainCode,\n privKey,\n pubKey,\n Constants.Testnet.Bip32,\n PrivKeyClass.Testnet\n )\n }\n}\n\nexport { Bip32 }\n","'use strict'\nconst wordList = [\n 'abandon',\n 'ability',\n 'able',\n 'about',\n 'above',\n 'absent',\n 'absorb',\n 'abstract',\n 'absurd',\n 'abuse',\n 'access',\n 'accident',\n 'account',\n 'accuse',\n 'achieve',\n 'acid',\n 'acoustic',\n 'acquire',\n 'across',\n 'act',\n 'action',\n 'actor',\n 'actress',\n 'actual',\n 'adapt',\n 'add',\n 'addict',\n 'address',\n 'adjust',\n 'admit',\n 'adult',\n 'advance',\n 'advice',\n 'aerobic',\n 'affair',\n 'afford',\n 'afraid',\n 'again',\n 'age',\n 'agent',\n 'agree',\n 'ahead',\n 'aim',\n 'air',\n 'airport',\n 'aisle',\n 'alarm',\n 'album',\n 'alcohol',\n 'alert',\n 'alien',\n 'all',\n 'alley',\n 'allow',\n 'almost',\n 'alone',\n 'alpha',\n 'already',\n 'also',\n 'alter',\n 'always',\n 'amateur',\n 'amazing',\n 'among',\n 'amount',\n 'amused',\n 'analyst',\n 'anchor',\n 'ancient',\n 'anger',\n 'angle',\n 'angry',\n 'animal',\n 'ankle',\n 'announce',\n 'annual',\n 'another',\n 'answer',\n 'antenna',\n 'antique',\n 'anxiety',\n 'any',\n 'apart',\n 'apology',\n 'appear',\n 'apple',\n 'approve',\n 'april',\n 'arch',\n 'arctic',\n 'area',\n 'arena',\n 'argue',\n 'arm',\n 'armed',\n 'armor',\n 'army',\n 'around',\n 'arrange',\n 'arrest',\n 'arrive',\n 'arrow',\n 'art',\n 'artefact',\n 'artist',\n 'artwork',\n 'ask',\n 'aspect',\n 'assault',\n 'asset',\n 'assist',\n 'assume',\n 'asthma',\n 'athlete',\n 'atom',\n 'attack',\n 'attend',\n 'attitude',\n 'attract',\n 'auction',\n 'audit',\n 'august',\n 'aunt',\n 'author',\n 'auto',\n 'autumn',\n 'average',\n 'avocado',\n 'avoid',\n 'awake',\n 'aware',\n 'away',\n 'awesome',\n 'awful',\n 'awkward',\n 'axis',\n 'baby',\n 'bachelor',\n 'bacon',\n 'badge',\n 'bag',\n 'balance',\n 'balcony',\n 'ball',\n 'bamboo',\n 'banana',\n 'banner',\n 'bar',\n 'barely',\n 'bargain',\n 'barrel',\n 'base',\n 'basic',\n 'basket',\n 'battle',\n 'beach',\n 'bean',\n 'beauty',\n 'because',\n 'become',\n 'beef',\n 'before',\n 'begin',\n 'behave',\n 'behind',\n 'believe',\n 'below',\n 'belt',\n 'bench',\n 'benefit',\n 'best',\n 'betray',\n 'better',\n 'between',\n 'beyond',\n 'bicycle',\n 'bid',\n 'bike',\n 'bind',\n 'biology',\n 'bird',\n 'birth',\n 'bitter',\n 'black',\n 'blade',\n 'blame',\n 'blanket',\n 'blast',\n 'bleak',\n 'bless',\n 'blind',\n 'blood',\n 'blossom',\n 'blouse',\n 'blue',\n 'blur',\n 'blush',\n 'board',\n 'boat',\n 'body',\n 'boil',\n 'bomb',\n 'bone',\n 'bonus',\n 'book',\n 'boost',\n 'border',\n 'boring',\n 'borrow',\n 'boss',\n 'bottom',\n 'bounce',\n 'box',\n 'boy',\n 'bracket',\n 'brain',\n 'brand',\n 'brass',\n 'brave',\n 'bread',\n 'breeze',\n 'brick',\n 'bridge',\n 'brief',\n 'bright',\n 'bring',\n 'brisk',\n 'broccoli',\n 'broken',\n 'bronze',\n 'broom',\n 'brother',\n 'brown',\n 'brush',\n 'bubble',\n 'buddy',\n 'budget',\n 'buffalo',\n 'build',\n 'bulb',\n 'bulk',\n 'bullet',\n 'bundle',\n 'bunker',\n 'burden',\n 'burger',\n 'burst',\n 'bus',\n 'business',\n 'busy',\n 'butter',\n 'buyer',\n 'buzz',\n 'cabbage',\n 'cabin',\n 'cable',\n 'cactus',\n 'cage',\n 'cake',\n 'call',\n 'calm',\n 'camera',\n 'camp',\n 'can',\n 'canal',\n 'cancel',\n 'candy',\n 'cannon',\n 'canoe',\n 'canvas',\n 'canyon',\n 'capable',\n 'capital',\n 'captain',\n 'car',\n 'carbon',\n 'card',\n 'cargo',\n 'carpet',\n 'carry',\n 'cart',\n 'case',\n 'cash',\n 'casino',\n 'castle',\n 'casual',\n 'cat',\n 'catalog',\n 'catch',\n 'category',\n 'cattle',\n 'caught',\n 'cause',\n 'caution',\n 'cave',\n 'ceiling',\n 'celery',\n 'cement',\n 'census',\n 'century',\n 'cereal',\n 'certain',\n 'chair',\n 'chalk',\n 'champion',\n 'change',\n 'chaos',\n 'chapter',\n 'charge',\n 'chase',\n 'chat',\n 'cheap',\n 'check',\n 'cheese',\n 'chef',\n 'cherry',\n 'chest',\n 'chicken',\n 'chief',\n 'child',\n 'chimney',\n 'choice',\n 'choose',\n 'chronic',\n 'chuckle',\n 'chunk',\n 'churn',\n 'cigar',\n 'cinnamon',\n 'circle',\n 'citizen',\n 'city',\n 'civil',\n 'claim',\n 'clap',\n 'clarify',\n 'claw',\n 'clay',\n 'clean',\n 'clerk',\n 'clever',\n 'click',\n 'client',\n 'cliff',\n 'climb',\n 'clinic',\n 'clip',\n 'clock',\n 'clog',\n 'close',\n 'cloth',\n 'cloud',\n 'clown',\n 'club',\n 'clump',\n 'cluster',\n 'clutch',\n 'coach',\n 'coast',\n 'coconut',\n 'code',\n 'coffee',\n 'coil',\n 'coin',\n 'collect',\n 'color',\n 'column',\n 'combine',\n 'come',\n 'comfort',\n 'comic',\n 'common',\n 'company',\n 'concert',\n 'conduct',\n 'confirm',\n 'congress',\n 'connect',\n 'consider',\n 'control',\n 'convince',\n 'cook',\n 'cool',\n 'copper',\n 'copy',\n 'coral',\n 'core',\n 'corn',\n 'correct',\n 'cost',\n 'cotton',\n 'couch',\n 'country',\n 'couple',\n 'course',\n 'cousin',\n 'cover',\n 'coyote',\n 'crack',\n 'cradle',\n 'craft',\n 'cram',\n 'crane',\n 'crash',\n 'crater',\n 'crawl',\n 'crazy',\n 'cream',\n 'credit',\n 'creek',\n 'crew',\n 'cricket',\n 'crime',\n 'crisp',\n 'critic',\n 'crop',\n 'cross',\n 'crouch',\n 'crowd',\n 'crucial',\n 'cruel',\n 'cruise',\n 'crumble',\n 'crunch',\n 'crush',\n 'cry',\n 'crystal',\n 'cube',\n 'culture',\n 'cup',\n 'cupboard',\n 'curious',\n 'current',\n 'curtain',\n 'curve',\n 'cushion',\n 'custom',\n 'cute',\n 'cycle',\n 'dad',\n 'damage',\n 'damp',\n 'dance',\n 'danger',\n 'daring',\n 'dash',\n 'daughter',\n 'dawn',\n 'day',\n 'deal',\n 'debate',\n 'debris',\n 'decade',\n 'december',\n 'decide',\n 'decline',\n 'decorate',\n 'decrease',\n 'deer',\n 'defense',\n 'define',\n 'defy',\n 'degree',\n 'delay',\n 'deliver',\n 'demand',\n 'demise',\n 'denial',\n 'dentist',\n 'deny',\n 'depart',\n 'depend',\n 'deposit',\n 'depth',\n 'deputy',\n 'derive',\n 'describe',\n 'desert',\n 'design',\n 'desk',\n 'despair',\n 'destroy',\n 'detail',\n 'detect',\n 'develop',\n 'device',\n 'devote',\n 'diagram',\n 'dial',\n 'diamond',\n 'diary',\n 'dice',\n 'diesel',\n 'diet',\n 'differ',\n 'digital',\n 'dignity',\n 'dilemma',\n 'dinner',\n 'dinosaur',\n 'direct',\n 'dirt',\n 'disagree',\n 'discover',\n 'disease',\n 'dish',\n 'dismiss',\n 'disorder',\n 'display',\n 'distance',\n 'divert',\n 'divide',\n 'divorce',\n 'dizzy',\n 'doctor',\n 'document',\n 'dog',\n 'doll',\n 'dolphin',\n 'domain',\n 'donate',\n 'donkey',\n 'donor',\n 'door',\n 'dose',\n 'double',\n 'dove',\n 'draft',\n 'dragon',\n 'drama',\n 'drastic',\n 'draw',\n 'dream',\n 'dress',\n 'drift',\n 'drill',\n 'drink',\n 'drip',\n 'drive',\n 'drop',\n 'drum',\n 'dry',\n 'duck',\n 'dumb',\n 'dune',\n 'during',\n 'dust',\n 'dutch',\n 'duty',\n 'dwarf',\n 'dynamic',\n 'eager',\n 'eagle',\n 'early',\n 'earn',\n 'earth',\n 'easily',\n 'east',\n 'easy',\n 'echo',\n 'ecology',\n 'economy',\n 'edge',\n 'edit',\n 'educate',\n 'effort',\n 'egg',\n 'eight',\n 'either',\n 'elbow',\n 'elder',\n 'electric',\n 'elegant',\n 'element',\n 'elephant',\n 'elevator',\n 'elite',\n 'else',\n 'embark',\n 'embody',\n 'embrace',\n 'emerge',\n 'emotion',\n 'employ',\n 'empower',\n 'empty',\n 'enable',\n 'enact',\n 'end',\n 'endless',\n 'endorse',\n 'enemy',\n 'energy',\n 'enforce',\n 'engage',\n 'engine',\n 'enhance',\n 'enjoy',\n 'enlist',\n 'enough',\n 'enrich',\n 'enroll',\n 'ensure',\n 'enter',\n 'entire',\n 'entry',\n 'envelope',\n 'episode',\n 'equal',\n 'equip',\n 'era',\n 'erase',\n 'erode',\n 'erosion',\n 'error',\n 'erupt',\n 'escape',\n 'essay',\n 'essence',\n 'estate',\n 'eternal',\n 'ethics',\n 'evidence',\n 'evil',\n 'evoke',\n 'evolve',\n 'exact',\n 'example',\n 'excess',\n 'exchange',\n 'excite',\n 'exclude',\n 'excuse',\n 'execute',\n 'exercise',\n 'exhaust',\n 'exhibit',\n 'exile',\n 'exist',\n 'exit',\n 'exotic',\n 'expand',\n 'expect',\n 'expire',\n 'explain',\n 'expose',\n 'express',\n 'extend',\n 'extra',\n 'eye',\n 'eyebrow',\n 'fabric',\n 'face',\n 'faculty',\n 'fade',\n 'faint',\n 'faith',\n 'fall',\n 'false',\n 'fame',\n 'family',\n 'famous',\n 'fan',\n 'fancy',\n 'fantasy',\n 'farm',\n 'fashion',\n 'fat',\n 'fatal',\n 'father',\n 'fatigue',\n 'fault',\n 'favorite',\n 'feature',\n 'february',\n 'federal',\n 'fee',\n 'feed',\n 'feel',\n 'female',\n 'fence',\n 'festival',\n 'fetch',\n 'fever',\n 'few',\n 'fiber',\n 'fiction',\n 'field',\n 'figure',\n 'file',\n 'film',\n 'filter',\n 'final',\n 'find',\n 'fine',\n 'finger',\n 'finish',\n 'fire',\n 'firm',\n 'first',\n 'fiscal',\n 'fish',\n 'fit',\n 'fitness',\n 'fix',\n 'flag',\n 'flame',\n 'flash',\n 'flat',\n 'flavor',\n 'flee',\n 'flight',\n 'flip',\n 'float',\n 'flock',\n 'floor',\n 'flower',\n 'fluid',\n 'flush',\n 'fly',\n 'foam',\n 'focus',\n 'fog',\n 'foil',\n 'fold',\n 'follow',\n 'food',\n 'foot',\n 'force',\n 'forest',\n 'forget',\n 'fork',\n 'fortune',\n 'forum',\n 'forward',\n 'fossil',\n 'foster',\n 'found',\n 'fox',\n 'fragile',\n 'frame',\n 'frequent',\n 'fresh',\n 'friend',\n 'fringe',\n 'frog',\n 'front',\n 'frost',\n 'frown',\n 'frozen',\n 'fruit',\n 'fuel',\n 'fun',\n 'funny',\n 'furnace',\n 'fury',\n 'future',\n 'gadget',\n 'gain',\n 'galaxy',\n 'gallery',\n 'game',\n 'gap',\n 'garage',\n 'garbage',\n 'garden',\n 'garlic',\n 'garment',\n 'gas',\n 'gasp',\n 'gate',\n 'gather',\n 'gauge',\n 'gaze',\n 'general',\n 'genius',\n 'genre',\n 'gentle',\n 'genuine',\n 'gesture',\n 'ghost',\n 'giant',\n 'gift',\n 'giggle',\n 'ginger',\n 'giraffe',\n 'girl',\n 'give',\n 'glad',\n 'glance',\n 'glare',\n 'glass',\n 'glide',\n 'glimpse',\n 'globe',\n 'gloom',\n 'glory',\n 'glove',\n 'glow',\n 'glue',\n 'goat',\n 'goddess',\n 'gold',\n 'good',\n 'goose',\n 'gorilla',\n 'gospel',\n 'gossip',\n 'govern',\n 'gown',\n 'grab',\n 'grace',\n 'grain',\n 'grant',\n 'grape',\n 'grass',\n 'gravity',\n 'great',\n 'green',\n 'grid',\n 'grief',\n 'grit',\n 'grocery',\n 'group',\n 'grow',\n 'grunt',\n 'guard',\n 'guess',\n 'guide',\n 'guilt',\n 'guitar',\n 'gun',\n 'gym',\n 'habit',\n 'hair',\n 'half',\n 'hammer',\n 'hamster',\n 'hand',\n 'happy',\n 'harbor',\n 'hard',\n 'harsh',\n 'harvest',\n 'hat',\n 'have',\n 'hawk',\n 'hazard',\n 'head',\n 'health',\n 'heart',\n 'heavy',\n 'hedgehog',\n 'height',\n 'hello',\n 'helmet',\n 'help',\n 'hen',\n 'hero',\n 'hidden',\n 'high',\n 'hill',\n 'hint',\n 'hip',\n 'hire',\n 'history',\n 'hobby',\n 'hockey',\n 'hold',\n 'hole',\n 'holiday',\n 'hollow',\n 'home',\n 'honey',\n 'hood',\n 'hope',\n 'horn',\n 'horror',\n 'horse',\n 'hospital',\n 'host',\n 'hotel',\n 'hour',\n 'hover',\n 'hub',\n 'huge',\n 'human',\n 'humble',\n 'humor',\n 'hundred',\n 'hungry',\n 'hunt',\n 'hurdle',\n 'hurry',\n 'hurt',\n 'husband',\n 'hybrid',\n 'ice',\n 'icon',\n 'idea',\n 'identify',\n 'idle',\n 'ignore',\n 'ill',\n 'illegal',\n 'illness',\n 'image',\n 'imitate',\n 'immense',\n 'immune',\n 'impact',\n 'impose',\n 'improve',\n 'impulse',\n 'inch',\n 'include',\n 'income',\n 'increase',\n 'index',\n 'indicate',\n 'indoor',\n 'industry',\n 'infant',\n 'inflict',\n 'inform',\n 'inhale',\n 'inherit',\n 'initial',\n 'inject',\n 'injury',\n 'inmate',\n 'inner',\n 'innocent',\n 'input',\n 'inquiry',\n 'insane',\n 'insect',\n 'inside',\n 'inspire',\n 'install',\n 'intact',\n 'interest',\n 'into',\n 'invest',\n 'invite',\n 'involve',\n 'iron',\n 'island',\n 'isolate',\n 'issue',\n 'item',\n 'ivory',\n 'jacket',\n 'jaguar',\n 'jar',\n 'jazz',\n 'jealous',\n 'jeans',\n 'jelly',\n 'jewel',\n 'job',\n 'join',\n 'joke',\n 'journey',\n 'joy',\n 'judge',\n 'juice',\n 'jump',\n 'jungle',\n 'junior',\n 'junk',\n 'just',\n 'kangaroo',\n 'keen',\n 'keep',\n 'ketchup',\n 'key',\n 'kick',\n 'kid',\n 'kidney',\n 'kind',\n 'kingdom',\n 'kiss',\n 'kit',\n 'kitchen',\n 'kite',\n 'kitten',\n 'kiwi',\n 'knee',\n 'knife',\n 'knock',\n 'know',\n 'lab',\n 'label',\n 'labor',\n 'ladder',\n 'lady',\n 'lake',\n 'lamp',\n 'language',\n 'laptop',\n 'large',\n 'later',\n 'latin',\n 'laugh',\n 'laundry',\n 'lava',\n 'law',\n 'lawn',\n 'lawsuit',\n 'layer',\n 'lazy',\n 'leader',\n 'leaf',\n 'learn',\n 'leave',\n 'lecture',\n 'left',\n 'leg',\n 'legal',\n 'legend',\n 'leisure',\n 'lemon',\n 'lend',\n 'length',\n 'lens',\n 'leopard',\n 'lesson',\n 'letter',\n 'level',\n 'liar',\n 'liberty',\n 'library',\n 'license',\n 'life',\n 'lift',\n 'light',\n 'like',\n 'limb',\n 'limit',\n 'link',\n 'lion',\n 'liquid',\n 'list',\n 'little',\n 'live',\n 'lizard',\n 'load',\n 'loan',\n 'lobster',\n 'local',\n 'lock',\n 'logic',\n 'lonely',\n 'long',\n 'loop',\n 'lottery',\n 'loud',\n 'lounge',\n 'love',\n 'loyal',\n 'lucky',\n 'luggage',\n 'lumber',\n 'lunar',\n 'lunch',\n 'luxury',\n 'lyrics',\n 'machine',\n 'mad',\n 'magic',\n 'magnet',\n 'maid',\n 'mail',\n 'main',\n 'major',\n 'make',\n 'mammal',\n 'man',\n 'manage',\n 'mandate',\n 'mango',\n 'mansion',\n 'manual',\n 'maple',\n 'marble',\n 'march',\n 'margin',\n 'marine',\n 'market',\n 'marriage',\n 'mask',\n 'mass',\n 'master',\n 'match',\n 'material',\n 'math',\n 'matrix',\n 'matter',\n 'maximum',\n 'maze',\n 'meadow',\n 'mean',\n 'measure',\n 'meat',\n 'mechanic',\n 'medal',\n 'media',\n 'melody',\n 'melt',\n 'member',\n 'memory',\n 'mention',\n 'menu',\n 'mercy',\n 'merge',\n 'merit',\n 'merry',\n 'mesh',\n 'message',\n 'metal',\n 'method',\n 'middle',\n 'midnight',\n 'milk',\n 'million',\n 'mimic',\n 'mind',\n 'minimum',\n 'minor',\n 'minute',\n 'miracle',\n 'mirror',\n 'misery',\n 'miss',\n 'mistake',\n 'mix',\n 'mixed',\n 'mixture',\n 'mobile',\n 'model',\n 'modify',\n 'mom',\n 'moment',\n 'monitor',\n 'monkey',\n 'monster',\n 'month',\n 'moon',\n 'moral',\n 'more',\n 'morning',\n 'mosquito',\n 'mother',\n 'motion',\n 'motor',\n 'mountain',\n 'mouse',\n 'move',\n 'movie',\n 'much',\n 'muffin',\n 'mule',\n 'multiply',\n 'muscle',\n 'museum',\n 'mushroom',\n 'music',\n 'must',\n 'mutual',\n 'myself',\n 'mystery',\n 'myth',\n 'naive',\n 'name',\n 'napkin',\n 'narrow',\n 'nasty',\n 'nation',\n 'nature',\n 'near',\n 'neck',\n 'need',\n 'negative',\n 'neglect',\n 'neither',\n 'nephew',\n 'nerve',\n 'nest',\n 'net',\n 'network',\n 'neutral',\n 'never',\n 'news',\n 'next',\n 'nice',\n 'night',\n 'noble',\n 'noise',\n 'nominee',\n 'noodle',\n 'normal',\n 'north',\n 'nose',\n 'notable',\n 'note',\n 'nothing',\n 'notice',\n 'novel',\n 'now',\n 'nuclear',\n 'number',\n 'nurse',\n 'nut',\n 'oak',\n 'obey',\n 'object',\n 'oblige',\n 'obscure',\n 'observe',\n 'obtain',\n 'obvious',\n 'occur',\n 'ocean',\n 'october',\n 'odor',\n 'off',\n 'offer',\n 'office',\n 'often',\n 'oil',\n 'okay',\n 'old',\n 'olive',\n 'olympic',\n 'omit',\n 'once',\n 'one',\n 'onion',\n 'online',\n 'only',\n 'open',\n 'opera',\n 'opinion',\n 'oppose',\n 'option',\n 'orange',\n 'orbit',\n 'orchard',\n 'order',\n 'ordinary',\n 'organ',\n 'orient',\n 'original',\n 'orphan',\n 'ostrich',\n 'other',\n 'outdoor',\n 'outer',\n 'output',\n 'outside',\n 'oval',\n 'oven',\n 'over',\n 'own',\n 'owner',\n 'oxygen',\n 'oyster',\n 'ozone',\n 'pact',\n 'paddle',\n 'page',\n 'pair',\n 'palace',\n 'palm',\n 'panda',\n 'panel',\n 'panic',\n 'panther',\n 'paper',\n 'parade',\n 'parent',\n 'park',\n 'parrot',\n 'party',\n 'pass',\n 'patch',\n 'path',\n 'patient',\n 'patrol',\n 'pattern',\n 'pause',\n 'pave',\n 'payment',\n 'peace',\n 'peanut',\n 'pear',\n 'peasant',\n 'pelican',\n 'pen',\n 'penalty',\n 'pencil',\n 'people',\n 'pepper',\n 'perfect',\n 'permit',\n 'person',\n 'pet',\n 'phone',\n 'photo',\n 'phrase',\n 'physical',\n 'piano',\n 'picnic',\n 'picture',\n 'piece',\n 'pig',\n 'pigeon',\n 'pill',\n 'pilot',\n 'pink',\n 'pioneer',\n 'pipe',\n 'pistol',\n 'pitch',\n 'pizza',\n 'place',\n 'planet',\n 'plastic',\n 'plate',\n 'play',\n 'please',\n 'pledge',\n 'pluck',\n 'plug',\n 'plunge',\n 'poem',\n 'poet',\n 'point',\n 'polar',\n 'pole',\n 'police',\n 'pond',\n 'pony',\n 'pool',\n 'popular',\n 'portion',\n 'position',\n 'possible',\n 'post',\n 'potato',\n 'pottery',\n 'poverty',\n 'powder',\n 'power',\n 'practice',\n 'praise',\n 'predict',\n 'prefer',\n 'prepare',\n 'present',\n 'pretty',\n 'prevent',\n 'price',\n 'pride',\n 'primary',\n 'print',\n 'priority',\n 'prison',\n 'private',\n 'prize',\n 'problem',\n 'process',\n 'produce',\n 'profit',\n 'program',\n 'project',\n 'promote',\n 'proof',\n 'property',\n 'prosper',\n 'protect',\n 'proud',\n 'provide',\n 'public',\n 'pudding',\n 'pull',\n 'pulp',\n 'pulse',\n 'pumpkin',\n 'punch',\n 'pupil',\n 'puppy',\n 'purchase',\n 'purity',\n 'purpose',\n 'purse',\n 'push',\n 'put',\n 'puzzle',\n 'pyramid',\n 'quality',\n 'quantum',\n 'quarter',\n 'question',\n 'quick',\n 'quit',\n 'quiz',\n 'quote',\n 'rabbit',\n 'raccoon',\n 'race',\n 'rack',\n 'radar',\n 'radio',\n 'rail',\n 'rain',\n 'raise',\n 'rally',\n 'ramp',\n 'ranch',\n 'random',\n 'range',\n 'rapid',\n 'rare',\n 'rate',\n 'rather',\n 'raven',\n 'raw',\n 'razor',\n 'ready',\n 'real',\n 'reason',\n 'rebel',\n 'rebuild',\n 'recall',\n 'receive',\n 'recipe',\n 'record',\n 'recycle',\n 'reduce',\n 'reflect',\n 'reform',\n 'refuse',\n 'region',\n 'regret',\n 'regular',\n 'reject',\n 'relax',\n 'release',\n 'relief',\n 'rely',\n 'remain',\n 'remember',\n 'remind',\n 'remove',\n 'render',\n 'renew',\n 'rent',\n 'reopen',\n 'repair',\n 'repeat',\n 'replace',\n 'report',\n 'require',\n 'rescue',\n 'resemble',\n 'resist',\n 'resource',\n 'response',\n 'result',\n 'retire',\n 'retreat',\n 'return',\n 'reunion',\n 'reveal',\n 'review',\n 'reward',\n 'rhythm',\n 'rib',\n 'ribbon',\n 'rice',\n 'rich',\n 'ride',\n 'ridge',\n 'rifle',\n 'right',\n 'rigid',\n 'ring',\n 'riot',\n 'ripple',\n 'risk',\n 'ritual',\n 'rival',\n 'river',\n 'road',\n 'roast',\n 'robot',\n 'robust',\n 'rocket',\n 'romance',\n 'roof',\n 'rookie',\n 'room',\n 'rose',\n 'rotate',\n 'rough',\n 'round',\n 'route',\n 'royal',\n 'rubber',\n 'rude',\n 'rug',\n 'rule',\n 'run',\n 'runway',\n 'rural',\n 'sad',\n 'saddle',\n 'sadness',\n 'safe',\n 'sail',\n 'salad',\n 'salmon',\n 'salon',\n 'salt',\n 'salute',\n 'same',\n 'sample',\n 'sand',\n 'satisfy',\n 'satoshi',\n 'sauce',\n 'sausage',\n 'save',\n 'say',\n 'scale',\n 'scan',\n 'scare',\n 'scatter',\n 'scene',\n 'scheme',\n 'school',\n 'science',\n 'scissors',\n 'scorpion',\n 'scout',\n 'scrap',\n 'screen',\n 'script',\n 'scrub',\n 'sea',\n 'search',\n 'season',\n 'seat',\n 'second',\n 'secret',\n 'section',\n 'security',\n 'seed',\n 'seek',\n 'segment',\n 'select',\n 'sell',\n 'seminar',\n 'senior',\n 'sense',\n 'sentence',\n 'series',\n 'service',\n 'session',\n 'settle',\n 'setup',\n 'seven',\n 'shadow',\n 'shaft',\n 'shallow',\n 'share',\n 'shed',\n 'shell',\n 'sheriff',\n 'shield',\n 'shift',\n 'shine',\n 'ship',\n 'shiver',\n 'shock',\n 'shoe',\n 'shoot',\n 'shop',\n 'short',\n 'shoulder',\n 'shove',\n 'shrimp',\n 'shrug',\n 'shuffle',\n 'shy',\n 'sibling',\n 'sick',\n 'side',\n 'siege',\n 'sight',\n 'sign',\n 'silent',\n 'silk',\n 'silly',\n 'silver',\n 'similar',\n 'simple',\n 'since',\n 'sing',\n 'siren',\n 'sister',\n 'situate',\n 'six',\n 'size',\n 'skate',\n 'sketch',\n 'ski',\n 'skill',\n 'skin',\n 'skirt',\n 'skull',\n 'slab',\n 'slam',\n 'sleep',\n 'slender',\n 'slice',\n 'slide',\n 'slight',\n 'slim',\n 'slogan',\n 'slot',\n 'slow',\n 'slush',\n 'small',\n 'smart',\n 'smile',\n 'smoke',\n 'smooth',\n 'snack',\n 'snake',\n 'snap',\n 'sniff',\n 'snow',\n 'soap',\n 'soccer',\n 'social',\n 'sock',\n 'soda',\n 'soft',\n 'solar',\n 'soldier',\n 'solid',\n 'solution',\n 'solve',\n 'someone',\n 'song',\n 'soon',\n 'sorry',\n 'sort',\n 'soul',\n 'sound',\n 'soup',\n 'source',\n 'south',\n 'space',\n 'spare',\n 'spatial',\n 'spawn',\n 'speak',\n 'special',\n 'speed',\n 'spell',\n 'spend',\n 'sphere',\n 'spice',\n 'spider',\n 'spike',\n 'spin',\n 'spirit',\n 'split',\n 'spoil',\n 'sponsor',\n 'spoon',\n 'sport',\n 'spot',\n 'spray',\n 'spread',\n 'spring',\n 'spy',\n 'square',\n 'squeeze',\n 'squirrel',\n 'stable',\n 'stadium',\n 'staff',\n 'stage',\n 'stairs',\n 'stamp',\n 'stand',\n 'start',\n 'state',\n 'stay',\n 'steak',\n 'steel',\n 'stem',\n 'step',\n 'stereo',\n 'stick',\n 'still',\n 'sting',\n 'stock',\n 'stomach',\n 'stone',\n 'stool',\n 'story',\n 'stove',\n 'strategy',\n 'street',\n 'strike',\n 'strong',\n 'struggle',\n 'student',\n 'stuff',\n 'stumble',\n 'style',\n 'subject',\n 'submit',\n 'subway',\n 'success',\n 'such',\n 'sudden',\n 'suffer',\n 'sugar',\n 'suggest',\n 'suit',\n 'summer',\n 'sun',\n 'sunny',\n 'sunset',\n 'super',\n 'supply',\n 'supreme',\n 'sure',\n 'surface',\n 'surge',\n 'surprise',\n 'surround',\n 'survey',\n 'suspect',\n 'sustain',\n 'swallow',\n 'swamp',\n 'swap',\n 'swarm',\n 'swear',\n 'sweet',\n 'swift',\n 'swim',\n 'swing',\n 'switch',\n 'sword',\n 'symbol',\n 'symptom',\n 'syrup',\n 'system',\n 'table',\n 'tackle',\n 'tag',\n 'tail',\n 'talent',\n 'talk',\n 'tank',\n 'tape',\n 'target',\n 'task',\n 'taste',\n 'tattoo',\n 'taxi',\n 'teach',\n 'team',\n 'tell',\n 'ten',\n 'tenant',\n 'tennis',\n 'tent',\n 'term',\n 'test',\n 'text',\n 'thank',\n 'that',\n 'theme',\n 'then',\n 'theory',\n 'there',\n 'they',\n 'thing',\n 'this',\n 'thought',\n 'three',\n 'thrive',\n 'throw',\n 'thumb',\n 'thunder',\n 'ticket',\n 'tide',\n 'tiger',\n 'tilt',\n 'timber',\n 'time',\n 'tiny',\n 'tip',\n 'tired',\n 'tissue',\n 'title',\n 'toast',\n 'tobacco',\n 'today',\n 'toddler',\n 'toe',\n 'together',\n 'toilet',\n 'token',\n 'tomato',\n 'tomorrow',\n 'tone',\n 'tongue',\n 'tonight',\n 'tool',\n 'tooth',\n 'top',\n 'topic',\n 'topple',\n 'torch',\n 'tornado',\n 'tortoise',\n 'toss',\n 'total',\n 'tourist',\n 'toward',\n 'tower',\n 'town',\n 'toy',\n 'track',\n 'trade',\n 'traffic',\n 'tragic',\n 'train',\n 'transfer',\n 'trap',\n 'trash',\n 'travel',\n 'tray',\n 'treat',\n 'tree',\n 'trend',\n 'trial',\n 'tribe',\n 'trick',\n 'trigger',\n 'trim',\n 'trip',\n 'trophy',\n 'trouble',\n 'truck',\n 'true',\n 'truly',\n 'trumpet',\n 'trust',\n 'truth',\n 'try',\n 'tube',\n 'tuition',\n 'tumble',\n 'tuna',\n 'tunnel',\n 'turkey',\n 'turn',\n 'turtle',\n 'twelve',\n 'twenty',\n 'twice',\n 'twin',\n 'twist',\n 'two',\n 'type',\n 'typical',\n 'ugly',\n 'umbrella',\n 'unable',\n 'unaware',\n 'uncle',\n 'uncover',\n 'under',\n 'undo',\n 'unfair',\n 'unfold',\n 'unhappy',\n 'uniform',\n 'unique',\n 'unit',\n 'universe',\n 'unknown',\n 'unlock',\n 'until',\n 'unusual',\n 'unveil',\n 'update',\n 'upgrade',\n 'uphold',\n 'upon',\n 'upper',\n 'upset',\n 'urban',\n 'urge',\n 'usage',\n 'use',\n 'used',\n 'useful',\n 'useless',\n 'usual',\n 'utility',\n 'vacant',\n 'vacuum',\n 'vague',\n 'valid',\n 'valley',\n 'valve',\n 'van',\n 'vanish',\n 'vapor',\n 'various',\n 'vast',\n 'vault',\n 'vehicle',\n 'velvet',\n 'vendor',\n 'venture',\n 'venue',\n 'verb',\n 'verify',\n 'version',\n 'very',\n 'vessel',\n 'veteran',\n 'viable',\n 'vibrant',\n 'vicious',\n 'victory',\n 'video',\n 'view',\n 'village',\n 'vintage',\n 'violin',\n 'virtual',\n 'virus',\n 'visa',\n 'visit',\n 'visual',\n 'vital',\n 'vivid',\n 'vocal',\n 'voice',\n 'void',\n 'volcano',\n 'volume',\n 'vote',\n 'voyage',\n 'wage',\n 'wagon',\n 'wait',\n 'walk',\n 'wall',\n 'walnut',\n 'want',\n 'warfare',\n 'warm',\n 'warrior',\n 'wash',\n 'wasp',\n 'waste',\n 'water',\n 'wave',\n 'way',\n 'wealth',\n 'weapon',\n 'wear',\n 'weasel',\n 'weather',\n 'web',\n 'wedding',\n 'weekend',\n 'weird',\n 'welcome',\n 'west',\n 'wet',\n 'whale',\n 'what',\n 'wheat',\n 'wheel',\n 'when',\n 'where',\n 'whip',\n 'whisper',\n 'wide',\n 'width',\n 'wife',\n 'wild',\n 'will',\n 'win',\n 'window',\n 'wine',\n 'wing',\n 'wink',\n 'winner',\n 'winter',\n 'wire',\n 'wisdom',\n 'wise',\n 'wish',\n 'witness',\n 'wolf',\n 'woman',\n 'wonder',\n 'wood',\n 'wool',\n 'word',\n 'work',\n 'world',\n 'worry',\n 'worth',\n 'wrap',\n 'wreck',\n 'wrestle',\n 'wrist',\n 'write',\n 'wrong',\n 'yard',\n 'year',\n 'yellow',\n 'you',\n 'young',\n 'youth',\n 'zebra',\n 'zero',\n 'zone',\n 'zoo'\n]\nwordList.space = ' '\n\nexport { wordList }\n","/**\n * Bip39: Mnemonic Seeds\n * =====================\n *\n * Bip39 is a way to turn random entropy into a mnemonic (a string of words\n * from a wordlist), and then that mnemonic into a seed. The seed can then be\n * used in Bip32 to derive hierarchical deterministic keys. It does not go the\n * other way around (i.e., you cannot turn a seed into a mnemonic). The usual\n * way to use it is either to generate a new one, like this:\n *\n * const mnemonic = new Bip39().fromRandom().toString()\n *\n * or from a known mnemonic:\n *\n * const seed = new Bip39().fromString(mnemonic).toSeed()\n */\n'use strict'\n\nimport { Bw } from './bw'\nimport { Hash } from './hash'\nimport pbkdf2 from 'pbkdf2-compat'\nimport { Random } from './random'\nimport { Struct } from './struct'\nimport { wordList } from './bip-39-en-wordlist'\nimport { Workers } from './workers'\n\nclass Bip39 extends Struct {\n constructor (mnemonic, seed, wordlist = wordList) {\n super({ mnemonic, seed })\n this.Wordlist = wordlist\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n if (this.mnemonic) {\n const buf = Buffer.from(this.mnemonic)\n bw.writeVarIntNum(buf.length)\n bw.write(buf)\n } else {\n bw.writeVarIntNum(0)\n }\n if (this.seed) {\n bw.writeVarIntNum(this.seed.length)\n bw.write(this.seed)\n } else {\n bw.writeVarIntNum(0)\n }\n return bw\n }\n\n fromBr (br) {\n const mnemoniclen = br.readVarIntNum()\n if (mnemoniclen > 0) {\n this.mnemonic = br.read(mnemoniclen).toString()\n }\n const seedlen = br.readVarIntNum()\n if (seedlen > 0) {\n this.seed = br.read(seedlen)\n }\n return this\n }\n\n /**\n * Generate a random new mnemonic from the wordlist.\n */\n fromRandom (bits) {\n if (!bits) {\n bits = 128\n }\n if (bits % 32 !== 0) {\n throw new Error('bits must be multiple of 32')\n }\n if (bits < 128) {\n throw new Error('bits must be at least 128')\n }\n const buf = Random.getRandomBuffer(bits / 8)\n this.entropy2Mnemonic(buf)\n this.mnemonic2Seed()\n return this\n }\n\n static fromRandom (bits) {\n return new this().fromRandom(bits)\n }\n\n async asyncFromRandom (bits) {\n if (!bits) {\n bits = 128\n }\n const buf = Random.getRandomBuffer(bits / 8)\n let workersResult = await Workers.asyncObjectMethod(\n this,\n 'entropy2Mnemonic',\n [buf]\n )\n const bip39 = new Bip39().fromFastBuffer(workersResult.resbuf)\n workersResult = await Workers.asyncObjectMethod(\n bip39,\n 'mnemonic2Seed',\n []\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromRandom (bits) {\n return new this().asyncFromRandom(bits)\n }\n\n fromEntropy (buf) {\n this.entropy2Mnemonic(buf)\n return this\n }\n\n static fromEntropy (buf) {\n return new this().fromEntropy(buf)\n }\n\n async asyncFromEntropy (buf) {\n const workersResult = await Workers.asyncObjectMethod(this, 'fromEntropy', [\n buf\n ])\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static asyncFromEntropy (buf) {\n return new this().asyncFromEntropy(buf)\n }\n\n fromString (mnemonic) {\n this.mnemonic = mnemonic\n return this\n }\n\n toString () {\n return this.mnemonic\n }\n\n toSeed (passphrase) {\n this.mnemonic2Seed(passphrase)\n return this.seed\n }\n\n async asyncToSeed (passphrase) {\n if (passphrase === undefined) {\n passphrase = ''\n }\n const args = [passphrase]\n const workersResult = await Workers.asyncObjectMethod(this, 'toSeed', args)\n return workersResult.resbuf\n }\n\n /**\n * Generate a new mnemonic from some entropy generated somewhere else. The\n * entropy must be at least 128 bits.\n */\n entropy2Mnemonic (buf) {\n if (!Buffer.isBuffer(buf) || buf.length < 128 / 8) {\n throw new Error(\n 'Entropy is less than 128 bits. It must be 128 bits or more.'\n )\n }\n\n const hash = Hash.sha256(buf)\n let bin = ''\n const bits = buf.length * 8\n for (let i = 0; i < buf.length; i++) {\n bin = bin + ('00000000' + buf[i].toString(2)).slice(-8)\n }\n let hashbits = hash[0].toString(2)\n hashbits = ('00000000' + hashbits).slice(-8).slice(0, bits / 32)\n bin = bin + hashbits\n\n if (bin.length % 11 !== 0) {\n throw new Error(\n 'internal error - entropy not an even multiple of 11 bits - ' +\n bin.length\n )\n }\n\n let mnemonic = ''\n for (let i = 0; i < bin.length / 11; i++) {\n if (mnemonic !== '') {\n mnemonic = mnemonic + this.Wordlist.space\n }\n const wi = parseInt(bin.slice(i * 11, (i + 1) * 11), 2)\n mnemonic = mnemonic + this.Wordlist[wi]\n }\n\n this.mnemonic = mnemonic\n return this\n }\n\n /**\n * Check that a mnemonic is valid. This means there should be no superfluous\n * whitespace, no invalid words, and the checksum should match.\n */\n check () {\n const mnemonic = this.mnemonic\n\n // confirm no invalid words\n const words = mnemonic.split(this.Wordlist.space)\n let bin = ''\n for (let i = 0; i < words.length; i++) {\n const ind = this.Wordlist.indexOf(words[i])\n if (ind < 0) {\n return false\n }\n bin = bin + ('00000000000' + ind.toString(2)).slice(-11)\n }\n\n if (bin.length % 11 !== 0) {\n throw new Error(\n 'internal error - entropy not an even multiple of 11 bits - ' +\n bin.length\n )\n }\n\n // confirm checksum\n const cs = bin.length / 33\n const hashBits = bin.slice(-cs)\n const nonhashBits = bin.slice(0, bin.length - cs)\n const buf = Buffer.alloc(nonhashBits.length / 8)\n for (let i = 0; i < nonhashBits.length / 8; i++) {\n buf.writeUInt8(parseInt(bin.slice(i * 8, (i + 1) * 8), 2), i)\n }\n const hash = Hash.sha256(buf)\n let expectedHashBits = hash[0].toString(2)\n expectedHashBits = ('00000000' + expectedHashBits).slice(-8).slice(0, cs)\n\n return expectedHashBits === hashBits\n }\n\n /**\n * Convert a mnemonic to a seed. Does not check for validity of the mnemonic -\n * for that, you should manually run check() first.\n */\n mnemonic2Seed (passphrase = '') {\n let mnemonic = this.mnemonic\n if (!this.check()) {\n throw new Error(\n 'Mnemonic does not pass the check - was the mnemonic typed incorrectly? Are there extra spaces?'\n )\n }\n if (typeof passphrase !== 'string') {\n throw new Error('passphrase must be a string or undefined')\n }\n mnemonic = mnemonic.normalize('NFKD')\n passphrase = passphrase.normalize('NFKD')\n const mbuf = Buffer.from(mnemonic)\n const pbuf = Buffer.concat([\n Buffer.from('mnemonic'),\n Buffer.from(passphrase)\n ])\n this.seed = pbkdf2.pbkdf2Sync(mbuf, pbuf, 2048, 64, 'sha512')\n return this\n }\n\n isValid (passphrase = '') {\n let isValid\n try {\n isValid = !!this.mnemonic2Seed(passphrase)\n } catch (err) {\n isValid = false\n }\n return isValid\n }\n\n static isValid (mnemonic, passphrase = '') {\n return new Bip39(mnemonic).isValid(passphrase)\n }\n}\n\nexport { Bip39 }\n","'use strict'\nconst wordList = [\n 'あいこくしん',\n 'あいさつ',\n 'あいだ',\n 'あおぞら',\n 'あかちゃん',\n 'あきる',\n 'あけがた',\n 'あける',\n 'あこがれる',\n 'あさい',\n 'あさひ',\n 'あしあと',\n 'あじわう',\n 'あずかる',\n 'あずき',\n 'あそぶ',\n 'あたえる',\n 'あたためる',\n 'あたりまえ',\n 'あたる',\n 'あつい',\n 'あつかう',\n 'あっしゅく',\n 'あつまり',\n 'あつめる',\n 'あてな',\n 'あてはまる',\n 'あひる',\n 'あぶら',\n 'あぶる',\n 'あふれる',\n 'あまい',\n 'あまど',\n 'あまやかす',\n 'あまり',\n 'あみもの',\n 'あめりか',\n 'あやまる',\n 'あゆむ',\n 'あらいぐま',\n 'あらし',\n 'あらすじ',\n 'あらためる',\n 'あらゆる',\n 'あらわす',\n 'ありがとう',\n 'あわせる',\n 'あわてる',\n 'あんい',\n 'あんがい',\n 'あんこ',\n 'あんぜん',\n 'あんてい',\n 'あんない',\n 'あんまり',\n 'いいだす',\n 'いおん',\n 'いがい',\n 'いがく',\n 'いきおい',\n 'いきなり',\n 'いきもの',\n 'いきる',\n 'いくじ',\n 'いくぶん',\n 'いけばな',\n 'いけん',\n 'いこう',\n 'いこく',\n 'いこつ',\n 'いさましい',\n 'いさん',\n 'いしき',\n 'いじゅう',\n 'いじょう',\n 'いじわる',\n 'いずみ',\n 'いずれ',\n 'いせい',\n 'いせえび',\n 'いせかい',\n 'いせき',\n 'いぜん',\n 'いそうろう',\n 'いそがしい',\n 'いだい',\n 'いだく',\n 'いたずら',\n 'いたみ',\n 'いたりあ',\n 'いちおう',\n 'いちじ',\n 'いちど',\n 'いちば',\n 'いちぶ',\n 'いちりゅう',\n 'いつか',\n 'いっしゅん',\n 'いっせい',\n 'いっそう',\n 'いったん',\n 'いっち',\n 'いってい',\n 'いっぽう',\n 'いてざ',\n 'いてん',\n 'いどう',\n 'いとこ',\n 'いない',\n 'いなか',\n 'いねむり',\n 'いのち',\n 'いのる',\n 'いはつ',\n 'いばる',\n 'いはん',\n 'いびき',\n 'いひん',\n 'いふく',\n 'いへん',\n 'いほう',\n 'いみん',\n 'いもうと',\n 'いもたれ',\n 'いもり',\n 'いやがる',\n 'いやす',\n 'いよかん',\n 'いよく',\n 'いらい',\n 'いらすと',\n 'いりぐち',\n 'いりょう',\n 'いれい',\n 'いれもの',\n 'いれる',\n 'いろえんぴつ',\n 'いわい',\n 'いわう',\n 'いわかん',\n 'いわば',\n 'いわゆる',\n 'いんげんまめ',\n 'いんさつ',\n 'いんしょう',\n 'いんよう',\n 'うえき',\n 'うえる',\n 'うおざ',\n 'うがい',\n 'うかぶ',\n 'うかべる',\n 'うきわ',\n 'うくらいな',\n 'うくれれ',\n 'うけたまわる',\n 'うけつけ',\n 'うけとる',\n 'うけもつ',\n 'うける',\n 'うごかす',\n 'うごく',\n 'うこん',\n 'うさぎ',\n 'うしなう',\n 'うしろがみ',\n 'うすい',\n 'うすぎ',\n 'うすぐらい',\n 'うすめる',\n 'うせつ',\n 'うちあわせ',\n 'うちがわ',\n 'うちき',\n 'うちゅう',\n 'うっかり',\n 'うつくしい',\n 'うったえる',\n 'うつる',\n 'うどん',\n 'うなぎ',\n 'うなじ',\n 'うなずく',\n 'うなる',\n 'うねる',\n 'うのう',\n 'うぶげ',\n 'うぶごえ',\n 'うまれる',\n 'うめる',\n 'うもう',\n 'うやまう',\n 'うよく',\n 'うらがえす',\n 'うらぐち',\n 'うらない',\n 'うりあげ',\n 'うりきれ',\n 'うるさい',\n 'うれしい',\n 'うれゆき',\n 'うれる',\n 'うろこ',\n 'うわき',\n 'うわさ',\n 'うんこう',\n 'うんちん',\n 'うんてん',\n 'うんどう',\n 'えいえん',\n 'えいが',\n 'えいきょう',\n 'えいご',\n 'えいせい',\n 'えいぶん',\n 'えいよう',\n 'えいわ',\n 'えおり',\n 'えがお',\n 'えがく',\n 'えきたい',\n 'えくせる',\n 'えしゃく',\n 'えすて',\n 'えつらん',\n 'えのぐ',\n 'えほうまき',\n 'えほん',\n 'えまき',\n 'えもじ',\n 'えもの',\n 'えらい',\n 'えらぶ',\n 'えりあ',\n 'えんえん',\n 'えんかい',\n 'えんぎ',\n 'えんげき',\n 'えんしゅう',\n 'えんぜつ',\n 'えんそく',\n 'えんちょう',\n 'えんとつ',\n 'おいかける',\n 'おいこす',\n 'おいしい',\n 'おいつく',\n 'おうえん',\n 'おうさま',\n 'おうじ',\n 'おうせつ',\n 'おうたい',\n 'おうふく',\n 'おうべい',\n 'おうよう',\n 'おえる',\n 'おおい',\n 'おおう',\n 'おおどおり',\n 'おおや',\n 'おおよそ',\n 'おかえり',\n 'おかず',\n 'おがむ',\n 'おかわり',\n 'おぎなう',\n 'おきる',\n 'おくさま',\n 'おくじょう',\n 'おくりがな',\n 'おくる',\n 'おくれる',\n 'おこす',\n 'おこなう',\n 'おこる',\n 'おさえる',\n 'おさない',\n 'おさめる',\n 'おしいれ',\n 'おしえる',\n 'おじぎ',\n 'おじさん',\n 'おしゃれ',\n 'おそらく',\n 'おそわる',\n 'おたがい',\n 'おたく',\n 'おだやか',\n 'おちつく',\n 'おっと',\n 'おつり',\n 'おでかけ',\n 'おとしもの',\n 'おとなしい',\n 'おどり',\n 'おどろかす',\n 'おばさん',\n 'おまいり',\n 'おめでとう',\n 'おもいで',\n 'おもう',\n 'おもたい',\n 'おもちゃ',\n 'おやつ',\n 'おやゆび',\n 'およぼす',\n 'おらんだ',\n 'おろす',\n 'おんがく',\n 'おんけい',\n 'おんしゃ',\n 'おんせん',\n 'おんだん',\n 'おんちゅう',\n 'おんどけい',\n 'かあつ',\n 'かいが',\n 'がいき',\n 'がいけん',\n 'がいこう',\n 'かいさつ',\n 'かいしゃ',\n 'かいすいよく',\n 'かいぜん',\n 'かいぞうど',\n 'かいつう',\n 'かいてん',\n 'かいとう',\n 'かいふく',\n 'がいへき',\n 'かいほう',\n 'かいよう',\n 'がいらい',\n 'かいわ',\n 'かえる',\n 'かおり',\n 'かかえる',\n 'かがく',\n 'かがし',\n 'かがみ',\n 'かくご',\n 'かくとく',\n 'かざる',\n 'がぞう',\n 'かたい',\n 'かたち',\n 'がちょう',\n 'がっきゅう',\n 'がっこう',\n 'がっさん',\n 'がっしょう',\n 'かなざわし',\n 'かのう',\n 'がはく',\n 'かぶか',\n 'かほう',\n 'かほご',\n 'かまう',\n 'かまぼこ',\n 'かめれおん',\n 'かゆい',\n 'かようび',\n 'からい',\n 'かるい',\n 'かろう',\n 'かわく',\n 'かわら',\n 'がんか',\n 'かんけい',\n 'かんこう',\n 'かんしゃ',\n 'かんそう',\n 'かんたん',\n 'かんち',\n 'がんばる',\n 'きあい',\n 'きあつ',\n 'きいろ',\n 'ぎいん',\n 'きうい',\n 'きうん',\n 'きえる',\n 'きおう',\n 'きおく',\n 'きおち',\n 'きおん',\n 'きかい',\n 'きかく',\n 'きかんしゃ',\n 'ききて',\n 'きくばり',\n 'きくらげ',\n 'きけんせい',\n 'きこう',\n 'きこえる',\n 'きこく',\n 'きさい',\n 'きさく',\n 'きさま',\n 'きさらぎ',\n 'ぎじかがく',\n 'ぎしき',\n 'ぎじたいけん',\n 'ぎじにってい',\n 'ぎじゅつしゃ',\n 'きすう',\n 'きせい',\n 'きせき',\n 'きせつ',\n 'きそう',\n 'きぞく',\n 'きぞん',\n 'きたえる',\n 'きちょう',\n 'きつえん',\n 'ぎっちり',\n 'きつつき',\n 'きつね',\n 'きてい',\n 'きどう',\n 'きどく',\n 'きない',\n 'きなが',\n 'きなこ',\n 'きぬごし',\n 'きねん',\n 'きのう',\n 'きのした',\n 'きはく',\n 'きびしい',\n 'きひん',\n 'きふく',\n 'きぶん',\n 'きぼう',\n 'きほん',\n 'きまる',\n 'きみつ',\n 'きむずかしい',\n 'きめる',\n 'きもだめし',\n 'きもち',\n 'きもの',\n 'きゃく',\n 'きやく',\n 'ぎゅうにく',\n 'きよう',\n 'きょうりゅう',\n 'きらい',\n 'きらく',\n 'きりん',\n 'きれい',\n 'きれつ',\n 'きろく',\n 'ぎろん',\n 'きわめる',\n 'ぎんいろ',\n 'きんかくじ',\n 'きんじょ',\n 'きんようび',\n 'ぐあい',\n 'くいず',\n 'くうかん',\n 'くうき',\n 'くうぐん',\n 'くうこう',\n 'ぐうせい',\n 'くうそう',\n 'ぐうたら',\n 'くうふく',\n 'くうぼ',\n 'くかん',\n 'くきょう',\n 'くげん',\n 'ぐこう',\n 'くさい',\n 'くさき',\n 'くさばな',\n 'くさる',\n 'くしゃみ',\n 'くしょう',\n 'くすのき',\n 'くすりゆび',\n 'くせげ',\n 'くせん',\n 'ぐたいてき',\n 'くださる',\n 'くたびれる',\n 'くちこみ',\n 'くちさき',\n 'くつした',\n 'ぐっすり',\n 'くつろぐ',\n 'くとうてん',\n 'くどく',\n 'くなん',\n 'くねくね',\n 'くのう',\n 'くふう',\n 'くみあわせ',\n 'くみたてる',\n 'くめる',\n 'くやくしょ',\n 'くらす',\n 'くらべる',\n 'くるま',\n 'くれる',\n 'くろう',\n 'くわしい',\n 'ぐんかん',\n 'ぐんしょく',\n 'ぐんたい',\n 'ぐんて',\n 'けあな',\n 'けいかく',\n 'けいけん',\n 'けいこ',\n 'けいさつ',\n 'げいじゅつ',\n 'けいたい',\n 'げいのうじん',\n 'けいれき',\n 'けいろ',\n 'けおとす',\n 'けおりもの',\n 'げきか',\n 'げきげん',\n 'げきだん',\n 'げきちん',\n 'げきとつ',\n 'げきは',\n 'げきやく',\n 'げこう',\n 'げこくじょう',\n 'げざい',\n 'けさき',\n 'げざん',\n 'けしき',\n 'けしごむ',\n 'けしょう',\n 'げすと',\n 'けたば',\n 'けちゃっぷ',\n 'けちらす',\n 'けつあつ',\n 'けつい',\n 'けつえき',\n 'けっこん',\n 'けつじょ',\n 'けっせき',\n 'けってい',\n 'けつまつ',\n 'げつようび',\n 'げつれい',\n 'けつろん',\n 'げどく',\n 'けとばす',\n 'けとる',\n 'けなげ',\n 'けなす',\n 'けなみ',\n 'けぬき',\n 'げねつ',\n 'けねん',\n 'けはい',\n 'げひん',\n 'けぶかい',\n 'げぼく',\n 'けまり',\n 'けみかる',\n 'けむし',\n 'けむり',\n 'けもの',\n 'けらい',\n 'けろけろ',\n 'けわしい',\n 'けんい',\n 'けんえつ',\n 'けんお',\n 'けんか',\n 'げんき',\n 'けんげん',\n 'けんこう',\n 'けんさく',\n 'けんしゅう',\n 'けんすう',\n 'げんそう',\n 'けんちく',\n 'けんてい',\n 'けんとう',\n 'けんない',\n 'けんにん',\n 'げんぶつ',\n 'けんま',\n 'けんみん',\n 'けんめい',\n 'けんらん',\n 'けんり',\n 'こあくま',\n 'こいぬ',\n 'こいびと',\n 'ごうい',\n 'こうえん',\n 'こうおん',\n 'こうかん',\n 'ごうきゅう',\n 'ごうけい',\n 'こうこう',\n 'こうさい',\n 'こうじ',\n 'こうすい',\n 'ごうせい',\n 'こうそく',\n 'こうたい',\n 'こうちゃ',\n 'こうつう',\n 'こうてい',\n 'こうどう',\n 'こうない',\n 'こうはい',\n 'ごうほう',\n 'ごうまん',\n 'こうもく',\n 'こうりつ',\n 'こえる',\n 'こおり',\n 'ごかい',\n 'ごがつ',\n 'ごかん',\n 'こくご',\n 'こくさい',\n 'こくとう',\n 'こくない',\n 'こくはく',\n 'こぐま',\n 'こけい',\n 'こける',\n 'ここのか',\n 'こころ',\n 'こさめ',\n 'こしつ',\n 'こすう',\n 'こせい',\n 'こせき',\n 'こぜん',\n 'こそだて',\n 'こたい',\n 'こたえる',\n 'こたつ',\n 'こちょう',\n 'こっか',\n 'こつこつ',\n 'こつばん',\n 'こつぶ',\n 'こてい',\n 'こてん',\n 'ことがら',\n 'ことし',\n 'ことば',\n 'ことり',\n 'こなごな',\n 'こねこね',\n 'このまま',\n 'このみ',\n 'このよ',\n 'ごはん',\n 'こひつじ',\n 'こふう',\n 'こふん',\n 'こぼれる',\n 'ごまあぶら',\n 'こまかい',\n 'ごますり',\n 'こまつな',\n 'こまる',\n 'こむぎこ',\n 'こもじ',\n 'こもち',\n 'こもの',\n 'こもん',\n 'こやく',\n 'こやま',\n 'こゆう',\n 'こゆび',\n 'こよい',\n 'こよう',\n 'こりる',\n 'これくしょん',\n 'ころっけ',\n 'こわもて',\n 'こわれる',\n 'こんいん',\n 'こんかい',\n 'こんき',\n 'こんしゅう',\n 'こんすい',\n 'こんだて',\n 'こんとん',\n 'こんなん',\n 'こんびに',\n 'こんぽん',\n 'こんまけ',\n 'こんや',\n 'こんれい',\n 'こんわく',\n 'ざいえき',\n 'さいかい',\n 'さいきん',\n 'ざいげん',\n 'ざいこ',\n 'さいしょ',\n 'さいせい',\n 'ざいたく',\n 'ざいちゅう',\n 'さいてき',\n 'ざいりょう',\n 'さうな',\n 'さかいし',\n 'さがす',\n 'さかな',\n 'さかみち',\n 'さがる',\n 'さぎょう',\n 'さくし',\n 'さくひん',\n 'さくら',\n 'さこく',\n 'さこつ',\n 'さずかる',\n 'ざせき',\n 'さたん',\n 'さつえい',\n 'ざつおん',\n 'ざっか',\n 'ざつがく',\n 'さっきょく',\n 'ざっし',\n 'さつじん',\n 'ざっそう',\n 'さつたば',\n 'さつまいも',\n 'さてい',\n 'さといも',\n 'さとう',\n 'さとおや',\n 'さとし',\n 'さとる',\n 'さのう',\n 'さばく',\n 'さびしい',\n 'さべつ',\n 'さほう',\n 'さほど',\n 'さます',\n 'さみしい',\n 'さみだれ',\n 'さむけ',\n 'さめる',\n 'さやえんどう',\n 'さゆう',\n 'さよう',\n 'さよく',\n 'さらだ',\n 'ざるそば',\n 'さわやか',\n 'さわる',\n 'さんいん',\n 'さんか',\n 'さんきゃく',\n 'さんこう',\n 'さんさい',\n 'ざんしょ',\n 'さんすう',\n 'さんせい',\n 'さんそ',\n 'さんち',\n 'さんま',\n 'さんみ',\n 'さんらん',\n 'しあい',\n 'しあげ',\n 'しあさって',\n 'しあわせ',\n 'しいく',\n 'しいん',\n 'しうち',\n 'しえい',\n 'しおけ',\n 'しかい',\n 'しかく',\n 'じかん',\n 'しごと',\n 'しすう',\n 'じだい',\n 'したうけ',\n 'したぎ',\n 'したて',\n 'したみ',\n 'しちょう',\n 'しちりん',\n 'しっかり',\n 'しつじ',\n 'しつもん',\n 'してい',\n 'してき',\n 'してつ',\n 'じてん',\n 'じどう',\n 'しなぎれ',\n 'しなもの',\n 'しなん',\n 'しねま',\n 'しねん',\n 'しのぐ',\n 'しのぶ',\n 'しはい',\n 'しばかり',\n 'しはつ',\n 'しはらい',\n 'しはん',\n 'しひょう',\n 'しふく',\n 'じぶん',\n 'しへい',\n 'しほう',\n 'しほん',\n 'しまう',\n 'しまる',\n 'しみん',\n 'しむける',\n 'じむしょ',\n 'しめい',\n 'しめる',\n 'しもん',\n 'しゃいん',\n 'しゃうん',\n 'しゃおん',\n 'じゃがいも',\n 'しやくしょ',\n 'しゃくほう',\n 'しゃけん',\n 'しゃこ',\n 'しゃざい',\n 'しゃしん',\n 'しゃせん',\n 'しゃそう',\n 'しゃたい',\n 'しゃちょう',\n 'しゃっきん',\n 'じゃま',\n 'しゃりん',\n 'しゃれい',\n 'じゆう',\n 'じゅうしょ',\n 'しゅくはく',\n 'じゅしん',\n 'しゅっせき',\n 'しゅみ',\n 'しゅらば',\n 'じゅんばん',\n 'しょうかい',\n 'しょくたく',\n 'しょっけん',\n 'しょどう',\n 'しょもつ',\n 'しらせる',\n 'しらべる',\n 'しんか',\n 'しんこう',\n 'じんじゃ',\n 'しんせいじ',\n 'しんちく',\n 'しんりん',\n 'すあげ',\n 'すあし',\n 'すあな',\n 'ずあん',\n 'すいえい',\n 'すいか',\n 'すいとう',\n 'ずいぶん',\n 'すいようび',\n 'すうがく',\n 'すうじつ',\n 'すうせん',\n 'すおどり',\n 'すきま',\n 'すくう',\n 'すくない',\n 'すける',\n 'すごい',\n 'すこし',\n 'ずさん',\n 'すずしい',\n 'すすむ',\n 'すすめる',\n 'すっかり',\n 'ずっしり',\n 'ずっと',\n 'すてき',\n 'すてる',\n 'すねる',\n 'すのこ',\n 'すはだ',\n 'すばらしい',\n 'ずひょう',\n 'ずぶぬれ',\n 'すぶり',\n 'すふれ',\n 'すべて',\n 'すべる',\n 'ずほう',\n 'すぼん',\n 'すまい',\n 'すめし',\n 'すもう',\n 'すやき',\n 'すらすら',\n 'するめ',\n 'すれちがう',\n 'すろっと',\n 'すわる',\n 'すんぜん',\n 'すんぽう',\n 'せあぶら',\n 'せいかつ',\n 'せいげん',\n 'せいじ',\n 'せいよう',\n 'せおう',\n 'せかいかん',\n 'せきにん',\n 'せきむ',\n 'せきゆ',\n 'せきらんうん',\n 'せけん',\n 'せこう',\n 'せすじ',\n 'せたい',\n 'せたけ',\n 'せっかく',\n 'せっきゃく',\n 'ぜっく',\n 'せっけん',\n 'せっこつ',\n 'せっさたくま',\n 'せつぞく',\n 'せつだん',\n 'せつでん',\n 'せっぱん',\n 'せつび',\n 'せつぶん',\n 'せつめい',\n 'せつりつ',\n 'せなか',\n 'せのび',\n 'せはば',\n 'せびろ',\n 'せぼね',\n 'せまい',\n 'せまる',\n 'せめる',\n 'せもたれ',\n 'せりふ',\n 'ぜんあく',\n 'せんい',\n 'せんえい',\n 'せんか',\n 'せんきょ',\n 'せんく',\n 'せんげん',\n 'ぜんご',\n 'せんさい',\n 'せんしゅ',\n 'せんすい',\n 'せんせい',\n 'せんぞ',\n 'せんたく',\n 'せんちょう',\n 'せんてい',\n 'せんとう',\n 'せんぬき',\n 'せんねん',\n 'せんぱい',\n 'ぜんぶ',\n 'ぜんぽう',\n 'せんむ',\n 'せんめんじょ',\n 'せんもん',\n 'せんやく',\n 'せんゆう',\n 'せんよう',\n 'ぜんら',\n 'ぜんりゃく',\n 'せんれい',\n 'せんろ',\n 'そあく',\n 'そいとげる',\n 'そいね',\n 'そうがんきょう',\n 'そうき',\n 'そうご',\n 'そうしん',\n 'そうだん',\n 'そうなん',\n 'そうび',\n 'そうめん',\n 'そうり',\n 'そえもの',\n 'そえん',\n 'そがい',\n 'そげき',\n 'そこう',\n 'そこそこ',\n 'そざい',\n 'そしな',\n 'そせい',\n 'そせん',\n 'そそぐ',\n 'そだてる',\n 'そつう',\n 'そつえん',\n 'そっかん',\n 'そつぎょう',\n 'そっけつ',\n 'そっこう',\n 'そっせん',\n 'そっと',\n 'そとがわ',\n 'そとづら',\n 'そなえる',\n 'そなた',\n 'そふぼ',\n 'そぼく',\n 'そぼろ',\n 'そまつ',\n 'そまる',\n 'そむく',\n 'そむりえ',\n 'そめる',\n 'そもそも',\n 'そよかぜ',\n 'そらまめ',\n 'そろう',\n 'そんかい',\n 'そんけい',\n 'そんざい',\n 'そんしつ',\n 'そんぞく',\n 'そんちょう',\n 'ぞんび',\n 'ぞんぶん',\n 'そんみん',\n 'たあい',\n 'たいいん',\n 'たいうん',\n 'たいえき',\n 'たいおう',\n 'だいがく',\n 'たいき',\n 'たいぐう',\n 'たいけん',\n 'たいこ',\n 'たいざい',\n 'だいじょうぶ',\n 'だいすき',\n 'たいせつ',\n 'たいそう',\n 'だいたい',\n 'たいちょう',\n 'たいてい',\n 'だいどころ',\n 'たいない',\n 'たいねつ',\n 'たいのう',\n 'たいはん',\n 'だいひょう',\n 'たいふう',\n 'たいへん',\n 'たいほ',\n 'たいまつばな',\n 'たいみんぐ',\n 'たいむ',\n 'たいめん',\n 'たいやき',\n 'たいよう',\n 'たいら',\n 'たいりょく',\n 'たいる',\n 'たいわん',\n 'たうえ',\n 'たえる',\n 'たおす',\n 'たおる',\n 'たおれる',\n 'たかい',\n 'たかね',\n 'たきび',\n 'たくさん',\n 'たこく',\n 'たこやき',\n 'たさい',\n 'たしざん',\n 'だじゃれ',\n 'たすける',\n 'たずさわる',\n 'たそがれ',\n 'たたかう',\n 'たたく',\n 'ただしい',\n 'たたみ',\n 'たちばな',\n 'だっかい',\n 'だっきゃく',\n 'だっこ',\n 'だっしゅつ',\n 'だったい',\n 'たてる',\n 'たとえる',\n 'たなばた',\n 'たにん',\n 'たぬき',\n 'たのしみ',\n 'たはつ',\n 'たぶん',\n 'たべる',\n 'たぼう',\n 'たまご',\n 'たまる',\n 'だむる',\n 'ためいき',\n 'ためす',\n 'ためる',\n 'たもつ',\n 'たやすい',\n 'たよる',\n 'たらす',\n 'たりきほんがん',\n 'たりょう',\n 'たりる',\n 'たると',\n 'たれる',\n 'たれんと',\n 'たろっと',\n 'たわむれる',\n 'だんあつ',\n 'たんい',\n 'たんおん',\n 'たんか',\n 'たんき',\n 'たんけん',\n 'たんご',\n 'たんさん',\n 'たんじょうび',\n 'だんせい',\n 'たんそく',\n 'たんたい',\n 'だんち',\n 'たんてい',\n 'たんとう',\n 'だんな',\n 'たんにん',\n 'だんねつ',\n 'たんのう',\n 'たんぴん',\n 'だんぼう',\n 'たんまつ',\n 'たんめい',\n 'だんれつ',\n 'だんろ',\n 'だんわ',\n 'ちあい',\n 'ちあん',\n 'ちいき',\n 'ちいさい',\n 'ちえん',\n 'ちかい',\n 'ちから',\n 'ちきゅう',\n 'ちきん',\n 'ちけいず',\n 'ちけん',\n 'ちこく',\n 'ちさい',\n 'ちしき',\n 'ちしりょう',\n 'ちせい',\n 'ちそう',\n 'ちたい',\n 'ちたん',\n 'ちちおや',\n 'ちつじょ',\n 'ちてき',\n 'ちてん',\n 'ちぬき',\n 'ちぬり',\n 'ちのう',\n 'ちひょう',\n 'ちへいせん',\n 'ちほう',\n 'ちまた',\n 'ちみつ',\n 'ちみどろ',\n 'ちめいど',\n 'ちゃんこなべ',\n 'ちゅうい',\n 'ちゆりょく',\n 'ちょうし',\n 'ちょさくけん',\n 'ちらし',\n 'ちらみ',\n 'ちりがみ',\n 'ちりょう',\n 'ちるど',\n 'ちわわ',\n 'ちんたい',\n 'ちんもく',\n 'ついか',\n 'ついたち',\n 'つうか',\n 'つうじょう',\n 'つうはん',\n 'つうわ',\n 'つかう',\n 'つかれる',\n 'つくね',\n 'つくる',\n 'つけね',\n 'つける',\n 'つごう',\n 'つたえる',\n 'つづく',\n 'つつじ',\n 'つつむ',\n 'つとめる',\n 'つながる',\n 'つなみ',\n 'つねづね',\n 'つのる',\n 'つぶす',\n 'つまらない',\n 'つまる',\n 'つみき',\n 'つめたい',\n 'つもり',\n 'つもる',\n 'つよい',\n 'つるぼ',\n 'つるみく',\n 'つわもの',\n 'つわり',\n 'てあし',\n 'てあて',\n 'てあみ',\n 'ていおん',\n 'ていか',\n 'ていき',\n 'ていけい',\n 'ていこく',\n 'ていさつ',\n 'ていし',\n 'ていせい',\n 'ていたい',\n 'ていど',\n 'ていねい',\n 'ていひょう',\n 'ていへん',\n 'ていぼう',\n 'てうち',\n 'ておくれ',\n 'てきとう',\n 'てくび',\n 'でこぼこ',\n 'てさぎょう',\n 'てさげ',\n 'てすり',\n 'てそう',\n 'てちがい',\n 'てちょう',\n 'てつがく',\n 'てつづき',\n 'でっぱ',\n 'てつぼう',\n 'てつや',\n 'でぬかえ',\n 'てぬき',\n 'てぬぐい',\n 'てのひら',\n 'てはい',\n 'てぶくろ',\n 'てふだ',\n 'てほどき',\n 'てほん',\n 'てまえ',\n 'てまきずし',\n 'てみじか',\n 'てみやげ',\n 'てらす',\n 'てれび',\n 'てわけ',\n 'てわたし',\n 'でんあつ',\n 'てんいん',\n 'てんかい',\n 'てんき',\n 'てんぐ',\n 'てんけん',\n 'てんごく',\n 'てんさい',\n 'てんし',\n 'てんすう',\n 'でんち',\n 'てんてき',\n 'てんとう',\n 'てんない',\n 'てんぷら',\n 'てんぼうだい',\n 'てんめつ',\n 'てんらんかい',\n 'でんりょく',\n 'でんわ',\n 'どあい',\n 'といれ',\n 'どうかん',\n 'とうきゅう',\n 'どうぐ',\n 'とうし',\n 'とうむぎ',\n 'とおい',\n 'とおか',\n 'とおく',\n 'とおす',\n 'とおる',\n 'とかい',\n 'とかす',\n 'ときおり',\n 'ときどき',\n 'とくい',\n 'とくしゅう',\n 'とくてん',\n 'とくに',\n 'とくべつ',\n 'とけい',\n 'とける',\n 'とこや',\n 'とさか',\n 'としょかん',\n 'とそう',\n 'とたん',\n 'とちゅう',\n 'とっきゅう',\n 'とっくん',\n 'とつぜん',\n 'とつにゅう',\n 'とどける',\n 'ととのえる',\n 'とない',\n 'となえる',\n 'となり',\n 'とのさま',\n 'とばす',\n 'どぶがわ',\n 'とほう',\n 'とまる',\n 'とめる',\n 'ともだち',\n 'ともる',\n 'どようび',\n 'とらえる',\n 'とんかつ',\n 'どんぶり',\n 'ないかく',\n 'ないこう',\n 'ないしょ',\n 'ないす',\n 'ないせん',\n 'ないそう',\n 'なおす',\n 'ながい',\n 'なくす',\n 'なげる',\n 'なこうど',\n 'なさけ',\n 'なたでここ',\n 'なっとう',\n 'なつやすみ',\n 'ななおし',\n 'なにごと',\n 'なにもの',\n 'なにわ',\n 'なのか',\n 'なふだ',\n 'なまいき',\n 'なまえ',\n 'なまみ',\n 'なみだ',\n 'なめらか',\n 'なめる',\n 'なやむ',\n 'ならう',\n 'ならび',\n 'ならぶ',\n 'なれる',\n 'なわとび',\n 'なわばり',\n 'にあう',\n 'にいがた',\n 'にうけ',\n 'におい',\n 'にかい',\n 'にがて',\n 'にきび',\n 'にくしみ',\n 'にくまん',\n 'にげる',\n 'にさんかたんそ',\n 'にしき',\n 'にせもの',\n 'にちじょう',\n 'にちようび',\n 'にっか',\n 'にっき',\n 'にっけい',\n 'にっこう',\n 'にっさん',\n 'にっしょく',\n 'にっすう',\n 'にっせき',\n 'にってい',\n 'になう',\n 'にほん',\n 'にまめ',\n 'にもつ',\n 'にやり',\n 'にゅういん',\n 'にりんしゃ',\n 'にわとり',\n 'にんい',\n 'にんか',\n 'にんき',\n 'にんげん',\n 'にんしき',\n 'にんずう',\n 'にんそう',\n 'にんたい',\n 'にんち',\n 'にんてい',\n 'にんにく',\n 'にんぷ',\n 'にんまり',\n 'にんむ',\n 'にんめい',\n 'にんよう',\n 'ぬいくぎ',\n 'ぬかす',\n 'ぬぐいとる',\n 'ぬぐう',\n 'ぬくもり',\n 'ぬすむ',\n 'ぬまえび',\n 'ぬめり',\n 'ぬらす',\n 'ぬんちゃく',\n 'ねあげ',\n 'ねいき',\n 'ねいる',\n 'ねいろ',\n 'ねぐせ',\n 'ねくたい',\n 'ねくら',\n 'ねこぜ',\n 'ねこむ',\n 'ねさげ',\n 'ねすごす',\n 'ねそべる',\n 'ねだん',\n 'ねつい',\n 'ねっしん',\n 'ねつぞう',\n 'ねったいぎょ',\n 'ねぶそく',\n 'ねふだ',\n 'ねぼう',\n 'ねほりはほり',\n 'ねまき',\n 'ねまわし',\n 'ねみみ',\n 'ねむい',\n 'ねむたい',\n 'ねもと',\n 'ねらう',\n 'ねわざ',\n 'ねんいり',\n 'ねんおし',\n 'ねんかん',\n 'ねんきん',\n 'ねんぐ',\n 'ねんざ',\n 'ねんし',\n 'ねんちゃく',\n 'ねんど',\n 'ねんぴ',\n 'ねんぶつ',\n 'ねんまつ',\n 'ねんりょう',\n 'ねんれい',\n 'のいず',\n 'のおづま',\n 'のがす',\n 'のきなみ',\n 'のこぎり',\n 'のこす',\n 'のこる',\n 'のせる',\n 'のぞく',\n 'のぞむ',\n 'のたまう',\n 'のちほど',\n 'のっく',\n 'のばす',\n 'のはら',\n 'のべる',\n 'のぼる',\n 'のみもの',\n 'のやま',\n 'のらいぬ',\n 'のらねこ',\n 'のりもの',\n 'のりゆき',\n 'のれん',\n 'のんき',\n 'ばあい',\n 'はあく',\n 'ばあさん',\n 'ばいか',\n 'ばいく',\n 'はいけん',\n 'はいご',\n 'はいしん',\n 'はいすい',\n 'はいせん',\n 'はいそう',\n 'はいち',\n 'ばいばい',\n 'はいれつ',\n 'はえる',\n 'はおる',\n 'はかい',\n 'ばかり',\n 'はかる',\n 'はくしゅ',\n 'はけん',\n 'はこぶ',\n 'はさみ',\n 'はさん',\n 'はしご',\n 'ばしょ',\n 'はしる',\n 'はせる',\n 'ぱそこん',\n 'はそん',\n 'はたん',\n 'はちみつ',\n 'はつおん',\n 'はっかく',\n 'はづき',\n 'はっきり',\n 'はっくつ',\n 'はっけん',\n 'はっこう',\n 'はっさん',\n 'はっしん',\n 'はったつ',\n 'はっちゅう',\n 'はってん',\n 'はっぴょう',\n 'はっぽう',\n 'はなす',\n 'はなび',\n 'はにかむ',\n 'はぶらし',\n 'はみがき',\n 'はむかう',\n 'はめつ',\n 'はやい',\n 'はやし',\n 'はらう',\n 'はろうぃん',\n 'はわい',\n 'はんい',\n 'はんえい',\n 'はんおん',\n 'はんかく',\n 'はんきょう',\n 'ばんぐみ',\n 'はんこ',\n 'はんしゃ',\n 'はんすう',\n 'はんだん',\n 'ぱんち',\n 'ぱんつ',\n 'はんてい',\n 'はんとし',\n 'はんのう',\n 'はんぱ',\n 'はんぶん',\n 'はんぺん',\n 'はんぼうき',\n 'はんめい',\n 'はんらん',\n 'はんろん',\n 'ひいき',\n 'ひうん',\n 'ひえる',\n 'ひかく',\n 'ひかり',\n 'ひかる',\n 'ひかん',\n 'ひくい',\n 'ひけつ',\n 'ひこうき',\n 'ひこく',\n 'ひさい',\n 'ひさしぶり',\n 'ひさん',\n 'びじゅつかん',\n 'ひしょ',\n 'ひそか',\n 'ひそむ',\n 'ひたむき',\n 'ひだり',\n 'ひたる',\n 'ひつぎ',\n 'ひっこし',\n 'ひっし',\n 'ひつじゅひん',\n 'ひっす',\n 'ひつぜん',\n 'ぴったり',\n 'ぴっちり',\n 'ひつよう',\n 'ひてい',\n 'ひとごみ',\n 'ひなまつり',\n 'ひなん',\n 'ひねる',\n 'ひはん',\n 'ひびく',\n 'ひひょう',\n 'ひほう',\n 'ひまわり',\n 'ひまん',\n 'ひみつ',\n 'ひめい',\n 'ひめじし',\n 'ひやけ',\n 'ひやす',\n 'ひよう',\n 'びょうき',\n 'ひらがな',\n 'ひらく',\n 'ひりつ',\n 'ひりょう',\n 'ひるま',\n 'ひるやすみ',\n 'ひれい',\n 'ひろい',\n 'ひろう',\n 'ひろき',\n 'ひろゆき',\n 'ひんかく',\n 'ひんけつ',\n 'ひんこん',\n 'ひんしゅ',\n 'ひんそう',\n 'ぴんち',\n 'ひんぱん',\n 'びんぼう',\n 'ふあん',\n 'ふいうち',\n 'ふうけい',\n 'ふうせん',\n 'ぷうたろう',\n 'ふうとう',\n 'ふうふ',\n 'ふえる',\n 'ふおん',\n 'ふかい',\n 'ふきん',\n 'ふくざつ',\n 'ふくぶくろ',\n 'ふこう',\n 'ふさい',\n 'ふしぎ',\n 'ふじみ',\n 'ふすま',\n 'ふせい',\n 'ふせぐ',\n 'ふそく',\n 'ぶたにく',\n 'ふたん',\n 'ふちょう',\n 'ふつう',\n 'ふつか',\n 'ふっかつ',\n 'ふっき',\n 'ふっこく',\n 'ぶどう',\n 'ふとる',\n 'ふとん',\n 'ふのう',\n 'ふはい',\n 'ふひょう',\n 'ふへん',\n 'ふまん',\n 'ふみん',\n 'ふめつ',\n 'ふめん',\n 'ふよう',\n 'ふりこ',\n 'ふりる',\n 'ふるい',\n 'ふんいき',\n 'ぶんがく',\n 'ぶんぐ',\n 'ふんしつ',\n 'ぶんせき',\n 'ふんそう',\n 'ぶんぽう',\n 'へいあん',\n 'へいおん',\n 'へいがい',\n 'へいき',\n 'へいげん',\n 'へいこう',\n 'へいさ',\n 'へいしゃ',\n 'へいせつ',\n 'へいそ',\n 'へいたく',\n 'へいてん',\n 'へいねつ',\n 'へいわ',\n 'へきが',\n 'へこむ',\n 'べにいろ',\n 'べにしょうが',\n 'へらす',\n 'へんかん',\n 'べんきょう',\n 'べんごし',\n 'へんさい',\n 'へんたい',\n 'べんり',\n 'ほあん',\n 'ほいく',\n 'ぼうぎょ',\n 'ほうこく',\n 'ほうそう',\n 'ほうほう',\n 'ほうもん',\n 'ほうりつ',\n 'ほえる',\n 'ほおん',\n 'ほかん',\n 'ほきょう',\n 'ぼきん',\n 'ほくろ',\n 'ほけつ',\n 'ほけん',\n 'ほこう',\n 'ほこる',\n 'ほしい',\n 'ほしつ',\n 'ほしゅ',\n 'ほしょう',\n 'ほせい',\n 'ほそい',\n 'ほそく',\n 'ほたて',\n 'ほたる',\n 'ぽちぶくろ',\n 'ほっきょく',\n 'ほっさ',\n 'ほったん',\n 'ほとんど',\n 'ほめる',\n 'ほんい',\n 'ほんき',\n 'ほんけ',\n 'ほんしつ',\n 'ほんやく',\n 'まいにち',\n 'まかい',\n 'まかせる',\n 'まがる',\n 'まける',\n 'まこと',\n 'まさつ',\n 'まじめ',\n 'ますく',\n 'まぜる',\n 'まつり',\n 'まとめ',\n 'まなぶ',\n 'まぬけ',\n 'まねく',\n 'まほう',\n 'まもる',\n 'まゆげ',\n 'まよう',\n 'まろやか',\n 'まわす',\n 'まわり',\n 'まわる',\n 'まんが',\n 'まんきつ',\n 'まんぞく',\n 'まんなか',\n 'みいら',\n 'みうち',\n 'みえる',\n 'みがく',\n 'みかた',\n 'みかん',\n 'みけん',\n 'みこん',\n 'みじかい',\n 'みすい',\n 'みすえる',\n 'みせる',\n 'みっか',\n 'みつかる',\n 'みつける',\n 'みてい',\n 'みとめる',\n 'みなと',\n 'みなみかさい',\n 'みねらる',\n 'みのう',\n 'みのがす',\n 'みほん',\n 'みもと',\n 'みやげ',\n 'みらい',\n 'みりょく',\n 'みわく',\n 'みんか',\n 'みんぞく',\n 'むいか',\n 'むえき',\n 'むえん',\n 'むかい',\n 'むかう',\n 'むかえ',\n 'むかし',\n 'むぎちゃ',\n 'むける',\n 'むげん',\n 'むさぼる',\n 'むしあつい',\n 'むしば',\n 'むじゅん',\n 'むしろ',\n 'むすう',\n 'むすこ',\n 'むすぶ',\n 'むすめ',\n 'むせる',\n 'むせん',\n 'むちゅう',\n 'むなしい',\n 'むのう',\n 'むやみ',\n 'むよう',\n 'むらさき',\n 'むりょう',\n 'むろん',\n 'めいあん',\n 'めいうん',\n 'めいえん',\n 'めいかく',\n 'めいきょく',\n 'めいさい',\n 'めいし',\n 'めいそう',\n 'めいぶつ',\n 'めいれい',\n 'めいわく',\n 'めぐまれる',\n 'めざす',\n 'めした',\n 'めずらしい',\n 'めだつ',\n 'めまい',\n 'めやす',\n 'めんきょ',\n 'めんせき',\n 'めんどう',\n 'もうしあげる',\n 'もうどうけん',\n 'もえる',\n 'もくし',\n 'もくてき',\n 'もくようび',\n 'もちろん',\n 'もどる',\n 'もらう',\n 'もんく',\n 'もんだい',\n 'やおや',\n 'やける',\n 'やさい',\n 'やさしい',\n 'やすい',\n 'やすたろう',\n 'やすみ',\n 'やせる',\n 'やそう',\n 'やたい',\n 'やちん',\n 'やっと',\n 'やっぱり',\n 'やぶる',\n 'やめる',\n 'ややこしい',\n 'やよい',\n 'やわらかい',\n 'ゆうき',\n 'ゆうびんきょく',\n 'ゆうべ',\n 'ゆうめい',\n 'ゆけつ',\n 'ゆしゅつ',\n 'ゆせん',\n 'ゆそう',\n 'ゆたか',\n 'ゆちゃく',\n 'ゆでる',\n 'ゆにゅう',\n 'ゆびわ',\n 'ゆらい',\n 'ゆれる',\n 'ようい',\n 'ようか',\n 'ようきゅう',\n 'ようじ',\n 'ようす',\n 'ようちえん',\n 'よかぜ',\n 'よかん',\n 'よきん',\n 'よくせい',\n 'よくぼう',\n 'よけい',\n 'よごれる',\n 'よさん',\n 'よしゅう',\n 'よそう',\n 'よそく',\n 'よっか',\n 'よてい',\n 'よどがわく',\n 'よねつ',\n 'よやく',\n 'よゆう',\n 'よろこぶ',\n 'よろしい',\n 'らいう',\n 'らくがき',\n 'らくご',\n 'らくさつ',\n 'らくだ',\n 'らしんばん',\n 'らせん',\n 'らぞく',\n 'らたい',\n 'らっか',\n 'られつ',\n 'りえき',\n 'りかい',\n 'りきさく',\n 'りきせつ',\n 'りくぐん',\n 'りくつ',\n 'りけん',\n 'りこう',\n 'りせい',\n 'りそう',\n 'りそく',\n 'りてん',\n 'りねん',\n 'りゆう',\n 'りゅうがく',\n 'りよう',\n 'りょうり',\n 'りょかん',\n 'りょくちゃ',\n 'りょこう',\n 'りりく',\n 'りれき',\n 'りろん',\n 'りんご',\n 'るいけい',\n 'るいさい',\n 'るいじ',\n 'るいせき',\n 'るすばん',\n 'るりがわら',\n 'れいかん',\n 'れいぎ',\n 'れいせい',\n 'れいぞうこ',\n 'れいとう',\n 'れいぼう',\n 'れきし',\n 'れきだい',\n 'れんあい',\n 'れんけい',\n 'れんこん',\n 'れんさい',\n 'れんしゅう',\n 'れんぞく',\n 'れんらく',\n 'ろうか',\n 'ろうご',\n 'ろうじん',\n 'ろうそく',\n 'ろくが',\n 'ろこつ',\n 'ろじうら',\n 'ろしゅつ',\n 'ろせん',\n 'ろてん',\n 'ろめん',\n 'ろれつ',\n 'ろんぎ',\n 'ろんぱ',\n 'ろんぶん',\n 'ろんり',\n 'わかす',\n 'わかめ',\n 'わかやま',\n 'わかれる',\n 'わしつ',\n 'わじまし',\n 'わすれもの',\n 'わらう',\n 'われる'\n]\nwordList.space = ' '\nexport { wordList }\n","/**\n * KeyPair\n * =======\n *\n * A keyPair is a collection of a private key and a public key.\n * const keyPair = new KeyPair().fromRandom()\n * const keyPair = new KeyPair().fromPrivKey(privKey)\n * const privKey = keyPair.privKey\n * const pubKey = keyPair.pubKey\n */\n'use strict'\n\nimport { PrivKey as DefaultPrivKey } from './priv-key'\nimport { PubKey } from './pub-key'\nimport { Struct } from './struct'\nimport { Bw } from './bw'\n\nclass KeyPair extends Struct {\n constructor (privKey, pubKey, PrivKey = DefaultPrivKey) {\n super({ privKey, pubKey })\n this.PrivKey = PrivKey\n }\n\n fromJSON (json) {\n if (json.privKey) {\n this.privKey = this.PrivKey.fromJSON(json.privKey)\n }\n if (json.pubKey) {\n this.pubKey = PubKey.fromJSON(json.pubKey)\n }\n return this\n }\n\n fromBr (br) {\n const buflen1 = br.readUInt8()\n if (buflen1 > 0) {\n this.privKey = new this.PrivKey().fromFastBuffer(br.read(buflen1))\n }\n const buflen2 = br.readUInt8()\n if (buflen2 > 0) {\n this.pubKey = new PubKey().fromFastBuffer(br.read(buflen2))\n }\n return this\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n if (this.privKey) {\n const privKeybuf = this.privKey.toFastBuffer()\n bw.writeUInt8(privKeybuf.length)\n bw.write(privKeybuf)\n } else {\n bw.writeUInt8(0)\n }\n if (this.pubKey) {\n const pubKeybuf = this.pubKey.toFastBuffer()\n bw.writeUInt8(pubKeybuf.length)\n bw.write(pubKeybuf)\n } else {\n bw.writeUInt8(0)\n }\n return bw\n }\n\n fromString (str) {\n return this.fromJSON(JSON.parse(str))\n }\n\n toString () {\n return JSON.stringify(this.toJSON())\n }\n\n toPublic () {\n const keyPair = new KeyPair().fromObject(this)\n keyPair.privKey = undefined\n return keyPair\n }\n\n fromPrivKey (privKey) {\n this.privKey = privKey\n this.pubKey = new PubKey().fromPrivKey(privKey)\n return this\n }\n\n static fromPrivKey (privKey) {\n return new this().fromPrivKey(privKey)\n }\n\n async asyncFromPrivKey (privKey) {\n this.privKey = privKey\n this.pubKey = await new PubKey().asyncFromPrivKey(privKey)\n return this\n }\n\n static asyncFromPrivKey (privKey) {\n return new this().asyncFromPrivKey(privKey)\n }\n\n fromRandom () {\n this.privKey = new this.PrivKey().fromRandom()\n this.pubKey = new PubKey().fromPrivKey(this.privKey)\n return this\n }\n\n static fromRandom () {\n return new this().fromRandom()\n }\n\n async asyncFromRandom () {\n this.privKey = new this.PrivKey().fromRandom()\n return this.asyncFromPrivKey(this.privKey)\n }\n\n static asyncFromRandom () {\n return new this().asyncFromRandom()\n }\n}\n\nKeyPair.Mainnet = class extends KeyPair {\n constructor (privKey, pubKey) {\n super(privKey, pubKey, DefaultPrivKey.Mainnet)\n }\n}\n\nKeyPair.Testnet = class extends KeyPair {\n constructor (privKey, pubKey) {\n super(privKey, pubKey, DefaultPrivKey.Testnet)\n }\n}\n\nexport { KeyPair }\n","/**\n * Ecdsa\n * =====\n *\n * Ecdsa is the signature algorithm used by bitcoin. The way you probably want\n * to use this is with the static Ecdsa.sign( ... ) and Ecdsa.verify( ... )\n * functions. Note that in bitcoin, the hashBuf is little endian, so if you are\n * signing or verifying something that has to do with a transaction, you should\n * explicitly plug in that it is little endian as an option to the sign and\n * verify functions.\n *\n * This implementation of Ecdsa uses deterministic signatures as defined in RFC\n * 6979 as the default, which has become a defacto standard in bitcoin wallets\n * due to recurring security issues around using a value of k pulled from a\n * possibly faulty entropy pool. If you use the same value of k twice, someone\n * can derive your private key. Deterministic k prevents this without needing\n * an entropy pool.\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Br } from './br'\nimport { Hash } from './hash'\nimport { KeyPair } from './key-pair'\nimport { Point } from './point'\nimport { PubKey } from './pub-key'\nimport { Random } from './random'\nimport { Sig } from './sig'\nimport { Struct } from './struct'\nimport { Workers } from './workers'\n\nclass Ecdsa extends Struct {\n constructor (sig, keyPair, hashBuf, k, endian, verified) {\n super({ sig, keyPair, hashBuf, k, endian, verified })\n }\n\n toJSON () {\n return {\n sig: this.sig ? this.sig.toString() : undefined,\n keyPair: this.keyPair\n ? this.keyPair.toBuffer().toString('hex')\n : undefined,\n hashBuf: this.hashBuf ? this.hashBuf.toString('hex') : undefined,\n k: this.k ? this.k.toString() : undefined,\n endian: this.endian,\n verified: this.verified\n }\n }\n\n fromJSON (json) {\n this.sig = json.sig ? new Sig().fromString(json.sig) : undefined\n this.keyPair = json.keyPair\n ? new KeyPair().fromBuffer(Buffer.from(json.keyPair, 'hex'))\n : undefined\n this.hashBuf = json.hashBuf ? Buffer.from(json.hashBuf, 'hex') : undefined\n this.k = json.k ? new Bn().fromString(json.k) : undefined\n this.endian = json.endian\n this.verified = json.verified\n return this\n }\n\n toBuffer () {\n const str = JSON.stringify(this.toJSON())\n return Buffer.from(str)\n }\n\n fromBuffer (buf) {\n const json = JSON.parse(buf.toString())\n return this.fromJSON(json)\n }\n\n calcrecovery () {\n for (let recovery = 0; recovery < 4; recovery++) {\n let Qprime\n this.sig.recovery = recovery\n try {\n Qprime = this.sig2PubKey()\n } catch (e) {\n continue\n }\n\n if (Qprime.point.eq(this.keyPair.pubKey.point)) {\n const compressed = this.keyPair.pubKey.compressed\n this.sig.compressed =\n this.keyPair.pubKey.compressed === undefined ? true : compressed\n return this\n }\n }\n\n this.sig.recovery = undefined\n throw new Error('Unable to find valid recovery factor')\n }\n\n async asyncCalcrecovery () {\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'calcrecovery',\n []\n )\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n /**\n * Calculates the recovery factor, and mutates sig so that it now contains\n * the recovery factor and the \"compressed\" variable. Throws an exception on\n * failure.\n */\n static calcrecovery (sig, pubKey, hashBuf) {\n const ecdsa = new Ecdsa().fromObject({\n sig: sig,\n keyPair: new KeyPair().fromObject({ pubKey: pubKey }),\n hashBuf: hashBuf\n })\n return ecdsa.calcrecovery().sig\n }\n\n static async asyncCalcrecovery (sig, pubKey, hashBuf) {\n const workersResult = await Workers.asyncClassMethod(\n Ecdsa,\n 'calcrecovery',\n [sig, pubKey, hashBuf]\n )\n return new Sig().fromFastBuffer(workersResult.resbuf)\n }\n\n fromString (str) {\n const obj = JSON.parse(str)\n if (obj.hashBuf) {\n this.hashBuf = Buffer.from(obj.hashBuf, 'hex')\n }\n if (obj.keyPair) {\n this.keyPair = new KeyPair().fromString(obj.keyPair)\n }\n if (obj.sig) {\n this.sig = new Sig().fromString(obj.sig)\n }\n if (obj.k) {\n this.k = new Bn(obj.k, 10)\n }\n return this\n }\n\n randomK () {\n const N = Point.getN()\n let k\n do {\n k = new Bn().fromBuffer(Random.getRandomBuffer(32))\n } while (!(k.lt(N) && k.gt(0)))\n this.k = k\n return this\n }\n\n /**\n * The traditional Ecdsa algorithm uses a purely random value of k. This has\n * the negative that when signing, your entropy must be good, or the private\n * key can be recovered if two signatures use the same value of k. It turns out\n * that k does not have to be purely random. It can be deterministic, so long\n * as an attacker can't guess it. RFC 6979 specifies how to do this using a\n * combination of the private key and the hash of the thing to be signed. It is\n * best practice to use this value, which can be tested for byte-for-byte\n * accuracy, and is resistant to a broken RNG. Note that it is actually the\n * case that bitcoin private keys have been compromised through that attack.\n * Deterministic k is a best practice.\n *\n * https://tools.ietf.org/html/rfc6979#section-3.2\n */\n deterministicK (badrs) {\n let v = Buffer.alloc(32)\n v.fill(0x01)\n let k = Buffer.alloc(32)\n k.fill(0x00)\n const x = this.keyPair.privKey.bn.toBuffer({ size: 32 })\n k = Hash.sha256Hmac(\n Buffer.concat([v, Buffer.from([0x00]), x, this.hashBuf]),\n k\n )\n v = Hash.sha256Hmac(v, k)\n k = Hash.sha256Hmac(\n Buffer.concat([v, Buffer.from([0x01]), x, this.hashBuf]),\n k\n )\n v = Hash.sha256Hmac(v, k)\n v = Hash.sha256Hmac(v, k)\n let T = new Bn().fromBuffer(v)\n const N = Point.getN()\n\n // if r or s were invalid when this function was used in signing,\n // we do not want to actually compute r, s here for efficiency, so,\n // we can increment badrs. explained at end of RFC 6979 section 3.2\n if (badrs === undefined) {\n badrs = 0\n }\n // also explained in 3.2, we must ensure T is in the proper range (0, N)\n for (let i = 0; i < badrs || !(T.lt(N) && T.gt(0)); i++) {\n k = Hash.sha256Hmac(Buffer.concat([v, Buffer.from([0x00])]), k)\n v = Hash.sha256Hmac(v, k)\n v = Hash.sha256Hmac(v, k)\n T = new Bn().fromBuffer(v)\n }\n\n this.k = T\n return this\n }\n\n /**\n * Information about public key recovery:\n * https://bitcointalk.org/index.php?topic=6430.0\n * http://stackoverflow.com/questions/19665491/how-do-i-get-an-ecdsa-public-key-from-just-a-bitcoin-signature-sec1-4-1-6-k\n * This code was originally taken from BitcoinJS\n */\n sig2PubKey () {\n const recovery = this.sig.recovery\n if (\n !(recovery === 0 || recovery === 1 || recovery === 2 || recovery === 3)\n ) {\n throw new Error('i must be equal to 0, 1, 2, or 3')\n }\n\n const e = new Bn().fromBuffer(this.hashBuf)\n const r = this.sig.r\n const s = this.sig.s\n\n // A set LSB signifies that the y-coordinate is odd\n const isYOdd = recovery & 1\n\n // The more significant bit specifies whether we should use the\n // first or second candidate key.\n const isSecondKey = recovery >> 1\n\n const n = Point.getN()\n const G = Point.getG()\n\n // 1.1 LEt x = r + jn\n const x = isSecondKey ? r.add(n) : r\n const R = Point.fromX(isYOdd, x)\n\n // 1.4 Check that nR is at infinity\n let errm = ''\n try {\n R.mul(n)\n } catch (err) {\n errm = err.message\n }\n if (errm !== 'point mul out of range') {\n throw new Error('nR is not a valid curve point')\n }\n\n // Compute -e from e\n const eNeg = e.neg().umod(n)\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n const rInv = r.invm(n)\n\n // const Q = R.multiplyTwo(s, G, eNeg).mul(rInv)\n const Q = R.mul(s)\n .add(G.mul(eNeg))\n .mul(rInv)\n\n const pubKey = new PubKey(Q)\n pubKey.compressed = this.sig.compressed\n pubKey.validate()\n\n return pubKey\n }\n\n async asyncSig2PubKey () {\n const workersResult = await Workers.asyncObjectMethod(\n this,\n 'sig2PubKey',\n []\n )\n return PubKey.fromFastBuffer(workersResult.resbuf)\n }\n\n static sig2PubKey (sig, hashBuf) {\n const ecdsa = new Ecdsa().fromObject({\n sig: sig,\n hashBuf: hashBuf\n })\n return ecdsa.sig2PubKey()\n }\n\n static async asyncSig2PubKey (sig, hashBuf) {\n const ecdsa = new Ecdsa().fromObject({\n sig: sig,\n hashBuf: hashBuf\n })\n const pubKey = await ecdsa.asyncSig2PubKey()\n return pubKey\n }\n\n verifyStr (enforceLowS = true) {\n if (!Buffer.isBuffer(this.hashBuf) || this.hashBuf.length !== 32) {\n return 'hashBuf must be a 32 byte buffer'\n }\n\n try {\n this.keyPair.pubKey.validate()\n } catch (e) {\n return 'Invalid pubKey: ' + e\n }\n\n const r = this.sig.r\n const s = this.sig.s\n if (\n !(r.gt(0) && r.lt(Point.getN())) ||\n !(s.gt(0) && s.lt(Point.getN()))\n ) {\n return 'r and s not in range'\n }\n\n if (enforceLowS) {\n if (!this.sig.hasLowS()) {\n return 's is too high and does not satisfy low s contraint - see bip 62'\n }\n }\n\n const e = new Bn().fromBuffer(\n this.hashBuf,\n this.endian ? { endian: this.endian } : undefined\n )\n const n = Point.getN()\n const sinv = s.invm(n)\n const u1 = sinv.mul(e).mod(n)\n const u2 = sinv.mul(r).mod(n)\n\n const p = Point.getG().mulAdd(u1, this.keyPair.pubKey.point, u2)\n // const p = Point.getG().mulAdd(u1, this.keyPair.pubKey.point, u2)\n if (p.isInfinity()) {\n return 'p is infinity'\n }\n\n if (\n !(\n p\n .getX()\n .mod(n)\n .cmp(r) === 0\n )\n ) {\n return 'Invalid signature'\n } else {\n return false\n }\n }\n\n sign () {\n const hashBuf =\n this.endian === 'little'\n ? new Br(this.hashBuf).readReverse()\n : this.hashBuf\n\n const privKey = this.keyPair.privKey\n\n const d = privKey.bn\n\n if (!hashBuf || !privKey || !d) {\n throw new Error('invalid parameters')\n }\n\n if (!Buffer.isBuffer(hashBuf) || hashBuf.length !== 32) {\n throw new Error('hashBuf must be a 32 byte buffer')\n }\n\n const N = Point.getN()\n const G = Point.getG()\n const e = new Bn().fromBuffer(hashBuf)\n\n // try different values of k until r, s are valid\n let badrs = 0\n let k, Q, r, s\n do {\n if (!this.k || badrs > 0) {\n this.deterministicK(badrs)\n }\n badrs++\n k = this.k\n Q = G.mul(k)\n r = Q.getX().mod(N)\n s = k\n .invm(N)\n .mul(e.add(d.mul(r)))\n .mod(N)\n } while (r.cmp(0) <= 0 || s.cmp(0) <= 0)\n\n // enforce low s\n // see Bip 62, \"low S values in signatures\"\n if (\n s.gt(\n new Bn().fromBuffer(\n Buffer.from(\n '7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0',\n 'hex'\n )\n )\n )\n ) {\n s = Point.getN().sub(s)\n }\n this.sig = Sig.fromObject({\n r: r,\n s: s,\n compressed: this.keyPair.pubKey.compressed\n })\n return this\n }\n\n async asyncSign () {\n const workersResult = await Workers.asyncObjectMethod(this, 'sign', [])\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n signRandomK () {\n this.randomK()\n return this.sign()\n }\n\n toString () {\n const obj = {}\n if (this.hashBuf) {\n obj.hashBuf = this.hashBuf.toString('hex')\n }\n if (this.keyPair) {\n obj.keyPair = this.keyPair.toString()\n }\n if (this.sig) {\n obj.sig = this.sig.toString()\n }\n if (this.k) {\n obj.k = this.k.toString()\n }\n return JSON.stringify(obj)\n }\n\n verify (enforceLowS = true) {\n if (!this.verifyStr(enforceLowS)) {\n this.verified = true\n } else {\n this.verified = false\n }\n return this\n }\n\n async asyncVerify (enforceLowS = true) {\n const workersResult = await Workers.asyncObjectMethod(this, 'verify', [\n enforceLowS\n ])\n return this.fromFastBuffer(workersResult.resbuf)\n }\n\n static sign (hashBuf, keyPair, endian) {\n return new Ecdsa()\n .fromObject({\n hashBuf: hashBuf,\n endian: endian,\n keyPair: keyPair\n })\n .sign().sig\n }\n\n static async asyncSign (hashBuf, keyPair, endian) {\n const ecdsa = new Ecdsa().fromObject({\n hashBuf: hashBuf,\n endian: endian,\n keyPair: keyPair\n })\n await ecdsa.asyncSign()\n return ecdsa.sig\n }\n\n static verify (hashBuf, sig, pubKey, endian, enforceLowS = true) {\n return new Ecdsa()\n .fromObject({\n hashBuf: hashBuf,\n endian: endian,\n sig: sig,\n keyPair: new KeyPair().fromObject({ pubKey: pubKey })\n })\n .verify(enforceLowS).verified\n }\n\n static async asyncVerify (hashBuf, sig, pubKey, endian, enforceLowS = true) {\n const ecdsa = new Ecdsa().fromObject({\n hashBuf: hashBuf,\n endian: endian,\n sig: sig,\n keyPair: new KeyPair().fromObject({ pubKey: pubKey })\n })\n await ecdsa.asyncVerify(enforceLowS)\n return ecdsa.verified\n }\n}\n\nexport { Ecdsa }\n","/**\n * Bitcoin Signed Message\n * ======================\n *\n * \"Bitcoin Signed Message\" just refers to a standard way of signing and\n * verifying an arbitrary message. The standard way to do this involves using a\n * \"Bitcoin Signed Message:\\n\" prefix, which this code does. You are probably\n * interested in the static Bsm.sign( ... ) and Bsm.verify( ... ) functions,\n * which deal with a base64 string representing the compressed format of a\n * signature.\n */\n'use strict'\n\nimport { Address } from './address'\nimport { Bw } from './bw'\nimport { cmp } from './cmp'\nimport { Ecdsa } from './ecdsa'\nimport { Hash } from './hash'\nimport { KeyPair } from './key-pair'\nimport { Sig } from './sig'\nimport { Struct } from './struct'\nimport { Workers } from './workers'\n\nclass Bsm extends Struct {\n constructor (messageBuf, keyPair, sig, address, verified) {\n super({ messageBuf, keyPair, sig, address, verified })\n }\n\n static magicHash (messageBuf) {\n if (!Buffer.isBuffer(messageBuf)) {\n throw new Error('messageBuf must be a buffer')\n }\n const bw = new Bw()\n bw.writeVarIntNum(Bsm.magicBytes.length)\n bw.write(Bsm.magicBytes)\n bw.writeVarIntNum(messageBuf.length)\n bw.write(messageBuf)\n const buf = bw.toBuffer()\n\n const hashBuf = Hash.sha256Sha256(buf)\n\n return hashBuf\n }\n\n static async asyncMagicHash (messageBuf) {\n const args = [messageBuf]\n const workersResult = await Workers.asyncClassMethod(Bsm, 'magicHash', args)\n return workersResult.resbuf\n }\n\n static sign (messageBuf, keyPair) {\n const m = new Bsm(messageBuf, keyPair)\n m.sign()\n const sigbuf = m.sig.toCompact()\n const sigstr = sigbuf.toString('base64')\n return sigstr\n }\n\n static async asyncSign (messageBuf, keyPair) {\n const args = [messageBuf, keyPair]\n const workersResult = await Workers.asyncClassMethod(Bsm, 'sign', args)\n const sigstr = JSON.parse(workersResult.resbuf.toString())\n return sigstr\n }\n\n static verify (messageBuf, sigstr, address) {\n const sigbuf = Buffer.from(sigstr, 'base64')\n const message = new Bsm()\n message.messageBuf = messageBuf\n message.sig = new Sig().fromCompact(sigbuf)\n message.address = address\n\n return message.verify().verified\n }\n\n static async asyncVerify (messageBuf, sigstr, address) {\n const args = [messageBuf, sigstr, address]\n const workersResult = await Workers.asyncClassMethod(Bsm, 'verify', args)\n const res = JSON.parse(workersResult.resbuf.toString())\n return res\n }\n\n sign () {\n const hashBuf = Bsm.magicHash(this.messageBuf)\n const ecdsa = new Ecdsa().fromObject({\n hashBuf: hashBuf,\n keyPair: this.keyPair\n })\n ecdsa.sign()\n ecdsa.calcrecovery()\n this.sig = ecdsa.sig\n return this\n }\n\n verify () {\n const hashBuf = Bsm.magicHash(this.messageBuf)\n\n const ecdsa = new Ecdsa()\n ecdsa.hashBuf = hashBuf\n ecdsa.sig = this.sig\n ecdsa.keyPair = new KeyPair()\n ecdsa.keyPair.pubKey = ecdsa.sig2PubKey()\n\n if (!ecdsa.verify()) {\n this.verified = false\n return this\n }\n\n const address = new Address().fromPubKey(\n ecdsa.keyPair.pubKey,\n undefined,\n this.sig.compressed\n )\n // TODO: what if livenet/testnet mismatch?\n if (cmp(address.hashBuf, this.address.hashBuf)) {\n this.verified = true\n } else {\n this.verified = false\n }\n\n return this\n }\n}\n\nBsm.magicBytes = Buffer.from('Bitcoin Signed Message:\\n')\n\nexport { Bsm }\n","/**\n * Block Header\n * ============\n *\n * Every block contains a blockHeader. This is probably not something you will\n * personally use, but it's here if you need it.\n */\n'use strict'\n\nimport { Bw } from './bw'\nimport { Struct } from './struct'\n\nclass BlockHeader extends Struct {\n constructor (\n versionBytesNum,\n prevBlockHashBuf,\n merkleRootBuf,\n time,\n bits,\n nonce\n ) {\n super({\n versionBytesNum,\n prevBlockHashBuf,\n merkleRootBuf,\n time,\n bits,\n nonce\n })\n }\n\n fromJSON (json) {\n this.fromObject({\n versionBytesNum: json.versionBytesNum,\n prevBlockHashBuf: Buffer.from(json.prevBlockHashBuf, 'hex'),\n merkleRootBuf: Buffer.from(json.merkleRootBuf, 'hex'),\n time: json.time,\n bits: json.bits,\n nonce: json.nonce\n })\n return this\n }\n\n toJSON () {\n return {\n versionBytesNum: this.versionBytesNum,\n prevBlockHashBuf: this.prevBlockHashBuf.toString('hex'),\n merkleRootBuf: this.merkleRootBuf.toString('hex'),\n time: this.time,\n bits: this.bits,\n nonce: this.nonce\n }\n }\n\n fromBr (br) {\n this.versionBytesNum = br.readUInt32LE()\n this.prevBlockHashBuf = br.read(32)\n this.merkleRootBuf = br.read(32)\n this.time = br.readUInt32LE()\n this.bits = br.readUInt32LE()\n this.nonce = br.readUInt32LE()\n return this\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n bw.writeUInt32LE(this.versionBytesNum)\n bw.write(this.prevBlockHashBuf)\n bw.write(this.merkleRootBuf)\n bw.writeUInt32LE(this.time)\n bw.writeUInt32LE(this.bits)\n bw.writeUInt32LE(this.nonce)\n return bw\n }\n}\n\nexport { BlockHeader }\n","/**\n * Merkle\n * ======\n *\n * A node in a Merkle tree (possibly the root node, in which case it is the\n * Merkle root). A node either contains a buffer or links to two other nodes.\n */\n'use strict'\n\nimport { Hash } from './hash'\nimport { Struct } from './struct'\n\nclass Merkle extends Struct {\n constructor (hashBuf, buf, merkle1, merkle2) {\n super({ hashBuf, buf, merkle1, merkle2 })\n }\n\n hash () {\n if (this.hashBuf) {\n return this.hashBuf\n }\n if (this.buf) {\n return Hash.sha256Sha256(this.buf)\n }\n const hashBuf1 = this.merkle1.hash()\n const hashBuf2 = this.merkle2.hash()\n this.buf = Buffer.concat([hashBuf1, hashBuf2])\n return Hash.sha256Sha256(this.buf)\n }\n\n fromBuffers (bufs) {\n if (bufs.length < 1) {\n throw new Error('buffers must have a length')\n }\n bufs = bufs.slice()\n const log = Math.log2(bufs.length)\n if (!Number.isInteger(log)) {\n // If a merkle tree does not have a number of ends that is a power of 2,\n // then we have to copy the last value until it is a power of 2. Note\n // that we copy *the actual object* over and over again, which ensures\n // that when we finds its hash, the hash is cached.\n const lastval = bufs[bufs.length - 1]\n var len = Math.pow(2, Math.ceil(log))\n for (let i = bufs.length; i < len; i++) {\n bufs.push(lastval)\n }\n }\n const bufs1 = bufs.slice(0, bufs.length / 2)\n const bufs2 = bufs.slice(bufs.length / 2)\n this.fromBufferArrays(bufs1, bufs2)\n return this\n }\n\n static fromBuffers (bufs) {\n return new this().fromBuffers(bufs)\n }\n\n /**\n * Takes two arrays, both of which *must* be of a length that is a power of\n * two.\n */\n fromBufferArrays (bufs1, bufs2) {\n if (bufs1.length === 1) {\n this.merkle1 = new Merkle(undefined, bufs1[0])\n this.merkle2 = new Merkle(undefined, bufs2[0])\n return this\n }\n const bufs11 = bufs1.slice(0, bufs1.length / 2)\n const bufs12 = bufs1.slice(bufs1.length / 2)\n this.merkle1 = new Merkle().fromBufferArrays(bufs11, bufs12)\n const bufs21 = bufs2.slice(0, bufs2.length / 2)\n const bufs22 = bufs2.slice(bufs2.length / 2)\n this.merkle2 = new Merkle().fromBufferArrays(bufs21, bufs22)\n return this\n }\n\n static fromBufferArrays (bufs1, bufs2) {\n return new this().fromBufferArrays(bufs1, bufs2)\n }\n\n leavesNum () {\n if (this.merkle1) {\n return this.merkle1.leavesNum() + this.merkle2.leavesNum()\n }\n if (this.buf) {\n return 1\n }\n throw new Error('invalid number of leaves')\n }\n}\n\nexport { Merkle }\n","/**\n * Hash Cache\n * ==========\n *\n * For use in sighash.\n */\n'use strict'\n\nimport { Struct } from './struct'\n\nclass HashCache extends Struct {\n constructor (prevoutsHashBuf, sequenceHashBuf, outputsHashBuf) {\n super()\n this.fromObject({ prevoutsHashBuf, sequenceHashBuf, outputsHashBuf })\n }\n\n fromBuffer (buf) {\n return this.fromJSON(JSON.parse(buf.toString()))\n }\n\n toBuffer () {\n return Buffer.from(JSON.stringify(this.toJSON()))\n }\n\n fromJSON (json) {\n this.prevoutsHashBuf = json.prevoutsHashBuf ? Buffer.from(json.prevoutsHashBuf, 'hex') : undefined\n this.sequenceHashBuf = json.sequenceHashBuf ? Buffer.from(json.sequenceHashBuf, 'hex') : undefined\n this.outputsHashBuf = json.outputsHashBuf ? Buffer.from(json.outputsHashBuf, 'hex') : undefined\n return this\n }\n\n toJSON () {\n return {\n prevoutsHashBuf: this.prevoutsHashBuf ? this.prevoutsHashBuf.toString('hex') : undefined,\n sequenceHashBuf: this.sequenceHashBuf ? this.sequenceHashBuf.toString('hex') : undefined,\n outputsHashBuf: this.outputsHashBuf ? this.outputsHashBuf.toString('hex') : undefined\n }\n }\n}\n\nexport { HashCache }\n","/**\n * VarInt (a.k.a. Compact Size)\n * ============================\n *\n * A varInt is a varible sized integer, and it is a format that is unique to\n * bitcoin, and used throughout bitcoin to represent the length of binary data\n * in a compact format that can take up as little as 1 byte or as much as 9\n * bytes.\n */\n'use strict'\n\nimport { Br } from './br'\nimport { Bw } from './bw'\nimport { Struct } from './struct'\n\nclass VarInt extends Struct {\n constructor (buf) {\n super({ buf })\n }\n\n fromJSON (json) {\n this.fromObject({\n buf: Buffer.from(json, 'hex')\n })\n return this\n }\n\n toJSON () {\n return this.buf.toString('hex')\n }\n\n fromBuffer (buf) {\n this.buf = buf\n return this\n }\n\n fromBr (br) {\n this.buf = br.readVarIntBuf()\n return this\n }\n\n fromBn (bn) {\n this.buf = new Bw().writeVarIntBn(bn).toBuffer()\n return this\n }\n\n static fromBn (bn) {\n return new this().fromBn(bn)\n }\n\n fromNumber (num) {\n this.buf = new Bw().writeVarIntNum(num).toBuffer()\n return this\n }\n\n static fromNumber (num) {\n return new this().fromNumber(num)\n }\n\n toBuffer () {\n return this.buf\n }\n\n toBn () {\n return new Br(this.buf).readVarIntBn()\n }\n\n toNumber () {\n return new Br(this.buf).readVarIntNum()\n }\n}\n\nexport { VarInt }\n","/*\n * Transaction Input\n * =================\n *\n * An input to a transaction. The way you probably want to use this is through\n * the convenient method of new TxIn(txHashBuf, txOutNum, script, nSequence) (i.e., you\n * can leave out the scriptVi, which is computed automatically if you leave it\n * out.)\n */\n'use strict'\n\nimport { Bw } from './bw'\nimport { VarInt } from './var-int'\nimport { OpCode } from './op-code'\nimport { Script } from './script'\nimport { Struct } from './struct'\n\nclass TxIn extends Struct {\n constructor (txHashBuf, txOutNum, scriptVi, script, nSequence = 0xffffffff) {\n super({ txHashBuf, txOutNum, scriptVi, script, nSequence })\n }\n\n setScript (script) {\n this.scriptVi = VarInt.fromNumber(script.toBuffer().length)\n this.script = script\n return this\n }\n\n fromProperties (txHashBuf, txOutNum, script, nSequence) {\n this.fromObject({ txHashBuf, txOutNum, nSequence })\n this.setScript(script)\n return this\n }\n\n static fromProperties (txHashBuf, txOutNum, script, nSequence) {\n return new this().fromProperties(txHashBuf, txOutNum, script, nSequence)\n }\n\n fromJSON (json) {\n this.fromObject({\n txHashBuf:\n typeof json.txHashBuf !== 'undefined'\n ? Buffer.from(json.txHashBuf, 'hex')\n : undefined,\n txOutNum: json.txOutNum,\n scriptVi:\n typeof json.scriptVi !== 'undefined'\n ? VarInt.fromJSON(json.scriptVi)\n : undefined,\n script:\n typeof json.script !== 'undefined'\n ? Script.fromJSON(json.script)\n : undefined,\n nSequence: json.nSequence\n })\n return this\n }\n\n toJSON () {\n return {\n txHashBuf:\n typeof this.txHashBuf !== 'undefined'\n ? this.txHashBuf.toString('hex')\n : undefined,\n txOutNum: this.txOutNum,\n scriptVi:\n typeof this.scriptVi !== 'undefined'\n ? this.scriptVi.toJSON()\n : undefined,\n script:\n typeof this.script !== 'undefined' ? this.script.toJSON() : undefined,\n nSequence: this.nSequence\n }\n }\n\n fromBr (br) {\n this.txHashBuf = br.read(32)\n this.txOutNum = br.readUInt32LE()\n this.scriptVi = VarInt.fromBuffer(br.readVarIntBuf())\n this.script = Script.fromBuffer(br.read(this.scriptVi.toNumber()))\n this.nSequence = br.readUInt32LE()\n return this\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n bw.write(this.txHashBuf)\n bw.writeUInt32LE(this.txOutNum)\n bw.write(this.scriptVi.buf)\n bw.write(this.script.toBuffer())\n bw.writeUInt32LE(this.nSequence)\n return bw\n }\n\n /**\n * Generate txIn with blank signatures from a txOut and its\n * txHashBuf+txOutNum. A \"blank\" signature is just an OP_0. The pubKey also\n * defaults to blank but can be substituted with the real public key if you\n * know what it is.\n */\n fromPubKeyHashTxOut (txHashBuf, txOutNum, txOut, pubKey) {\n const script = new Script()\n if (txOut.script.isPubKeyHashOut()) {\n script.writeOpCode(OpCode.OP_0) // blank signature\n if (pubKey) {\n script.writeBuffer(pubKey.toBuffer())\n } else {\n script.writeOpCode(OpCode.OP_0)\n }\n } else {\n throw new Error('txOut must be of type pubKeyHash')\n }\n this.txHashBuf = txHashBuf\n this.txOutNum = txOutNum\n this.setScript(script)\n return this\n }\n\n hasNullInput () {\n const hex = this.txHashBuf.toString('hex')\n if (\n hex ===\n '0000000000000000000000000000000000000000000000000000000000000000' &&\n this.txOutNum === 0xffffffff\n ) {\n return true\n }\n return false\n }\n\n /**\n * Analagous to bitcoind's SetNull in COutPoint\n */\n setNullInput () {\n this.txHashBuf = Buffer.alloc(32)\n this.txHashBuf.fill(0)\n this.txOutNum = 0xffffffff // -1 cast to unsigned int\n }\n}\n\n/* Interpret sequence numbers as relative lock-time constraints. */\nTxIn.LOCKTIME_VERIFY_SEQUENCE = 1 << 0\n\n/* Setting nSequence to this value for every input in a transaction disables\n * nLockTime. */\nTxIn.SEQUENCE_FINAL = 0xffffffff\n\n/* Below flags apply in the context of Bip 68 */\n/* If this flag set, txIn.nSequence is NOT interpreted as a relative lock-time.\n * */\nTxIn.SEQUENCE_LOCKTIME_DISABLE_FLAG = 1 << 31\n\n/* If txIn.nSequence encodes a relative lock-time and this flag is set, the\n * relative lock-time has units of 512 seconds, otherwise it specifies blocks\n * with a granularity of 1. */\nTxIn.SEQUENCE_LOCKTIME_TYPE_FLAG = 1 << 22\n\n/* If txIn.nSequence encodes a relative lock-time, this mask is applied to\n * extract that lock-time from the sequence field. */\nTxIn.SEQUENCE_LOCKTIME_MASK = 0x0000ffff\n\n/* In order to use the same number of bits to encode roughly the same\n * wall-clock duration, and because blocks are naturally limited to occur\n * every 600s on average, the minimum granularity for time-based relative\n * lock-time is fixed at 512 seconds. Converting from CTxIn::nSequence to\n * seconds is performed by multiplying by 512 = 2^9, or equivalently\n * shifting up by 9 bits. */\nTxIn.SEQUENCE_LOCKTIME_GRANULARITY = 9\n\nexport { TxIn }\n","/**\n * Transaction Output\n * ==================\n *\n * An output to a transaction. The way you normally want to make one is with\n * new TxOut(valueBn, script) (i.e., just as with TxIn, you can leave out the\n * scriptVi, since it can be computed automatically.\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Bw } from './bw'\nimport { Script } from './script'\nimport { Struct } from './struct'\nimport { VarInt } from './var-int'\n\nclass TxOut extends Struct {\n constructor (valueBn, scriptVi, script) {\n super({ valueBn, scriptVi, script })\n }\n\n setScript (script) {\n this.scriptVi = VarInt.fromNumber(script.toBuffer().length)\n this.script = script\n return this\n }\n\n fromProperties (valueBn, script) {\n this.fromObject({ valueBn })\n this.setScript(script)\n return this\n }\n\n static fromProperties (valueBn, script) {\n return new this().fromProperties(valueBn, script)\n }\n\n fromJSON (json) {\n this.fromObject({\n valueBn: new Bn().fromJSON(json.valueBn),\n scriptVi: new VarInt().fromJSON(json.scriptVi),\n script: new Script().fromJSON(json.script)\n })\n return this\n }\n\n toJSON () {\n return {\n valueBn: this.valueBn.toJSON(),\n scriptVi: this.scriptVi.toJSON(),\n script: this.script.toJSON()\n }\n }\n\n fromBr (br) {\n this.valueBn = br.readUInt64LEBn()\n this.scriptVi = VarInt.fromNumber(br.readVarIntNum())\n this.script = new Script().fromBuffer(br.read(this.scriptVi.toNumber()))\n return this\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n bw.writeUInt64LEBn(this.valueBn)\n bw.write(this.scriptVi.buf)\n bw.write(this.script.toBuffer())\n return bw\n }\n}\n\nexport { TxOut }\n","/**\n * Transaction\n * ===========\n *\n * A bitcoin transaction.\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Br } from './br'\nimport { Bw } from './bw'\nimport { Ecdsa } from './ecdsa'\nimport { Hash } from './hash'\nimport { HashCache } from './hash-cache'\nimport { Script } from './script'\nimport { Sig } from './sig'\nimport { Struct } from './struct'\nimport { TxIn } from './tx-in'\nimport { TxOut } from './tx-out'\nimport { VarInt } from './var-int'\nimport { Workers } from './workers'\n\nclass Tx extends Struct {\n constructor (\n versionBytesNum = 1,\n txInsVi = VarInt.fromNumber(0),\n txIns = [],\n txOutsVi = VarInt.fromNumber(0),\n txOuts = [],\n nLockTime = 0\n ) {\n super({ versionBytesNum, txInsVi, txIns, txOutsVi, txOuts, nLockTime })\n }\n\n fromJSON (json) {\n const txIns = []\n json.txIns.forEach(function (txIn) {\n txIns.push(new TxIn().fromJSON(txIn))\n })\n const txOuts = []\n json.txOuts.forEach(function (txOut) {\n txOuts.push(new TxOut().fromJSON(txOut))\n })\n this.fromObject({\n versionBytesNum: json.versionBytesNum,\n txInsVi: new VarInt().fromJSON(json.txInsVi),\n txIns: txIns,\n txOutsVi: new VarInt().fromJSON(json.txOutsVi),\n txOuts: txOuts,\n nLockTime: json.nLockTime\n })\n return this\n }\n\n toJSON () {\n const txIns = []\n this.txIns.forEach(function (txIn) {\n txIns.push(txIn.toJSON())\n })\n const txOuts = []\n this.txOuts.forEach(function (txOut) {\n txOuts.push(txOut.toJSON())\n })\n return {\n versionBytesNum: this.versionBytesNum,\n txInsVi: this.txInsVi.toJSON(),\n txIns: txIns,\n txOutsVi: this.txOutsVi.toJSON(),\n txOuts: txOuts,\n nLockTime: this.nLockTime\n }\n }\n\n fromBr (br) {\n this.versionBytesNum = br.readUInt32LE()\n this.txInsVi = new VarInt(br.readVarIntBuf())\n const txInsNum = this.txInsVi.toNumber()\n this.txIns = []\n for (let i = 0; i < txInsNum; i++) {\n this.txIns.push(new TxIn().fromBr(br))\n }\n this.txOutsVi = new VarInt(br.readVarIntBuf())\n const txOutsNum = this.txOutsVi.toNumber()\n this.txOuts = []\n for (let i = 0; i < txOutsNum; i++) {\n this.txOuts.push(new TxOut().fromBr(br))\n }\n this.nLockTime = br.readUInt32LE()\n return this\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n bw.writeUInt32LE(this.versionBytesNum)\n bw.write(this.txInsVi.buf)\n for (let i = 0; i < this.txIns.length; i++) {\n this.txIns[i].toBw(bw)\n }\n bw.write(this.txOutsVi.buf)\n for (let i = 0; i < this.txOuts.length; i++) {\n this.txOuts[i].toBw(bw)\n }\n bw.writeUInt32LE(this.nLockTime)\n return bw\n }\n\n // https://github.com/Bitcoin-UAHF/spec/blob/master/replay-protected-sighash.md\n hashPrevouts () {\n const bw = new Bw()\n for (const i in this.txIns) {\n const txIn = this.txIns[i]\n bw.write(txIn.txHashBuf) // outpoint (1/2)\n bw.writeUInt32LE(txIn.txOutNum) // outpoint (2/2)\n }\n return Hash.sha256Sha256(bw.toBuffer())\n }\n\n hashSequence () {\n const bw = new Bw()\n for (const i in this.txIns) {\n const txIn = this.txIns[i]\n bw.writeUInt32LE(txIn.nSequence)\n }\n return Hash.sha256Sha256(bw.toBuffer())\n }\n\n hashOutputs () {\n const bw = new Bw()\n for (const i in this.txOuts) {\n const txOut = this.txOuts[i]\n bw.write(txOut.toBuffer())\n }\n return Hash.sha256Sha256(bw.toBuffer())\n }\n\n /**\n * For a normal transaction, subScript is usually the scriptPubKey. For a\n * p2sh transaction, subScript is usually the redeemScript. If you're not\n * normal because you're using OP_CODESEPARATORs, you know what to do.\n */\n sighash (nHashType, nIn, subScript, valueBn, flags = 0, hashCache = new HashCache()) {\n // start with UAHF part (Bitcoin SV)\n // https://github.com/Bitcoin-UAHF/spec/blob/master/replay-protected-sighash.md\n if (\n nHashType & Sig.SIGHASH_FORKID &&\n flags & Tx.SCRIPT_ENABLE_SIGHASH_FORKID\n ) {\n let hashPrevouts = Buffer.alloc(32, 0)\n let hashSequence = Buffer.alloc(32, 0)\n let hashOutputs = Buffer.alloc(32, 0)\n\n if (!(nHashType & Sig.SIGHASH_ANYONECANPAY)) {\n hashPrevouts = hashCache.prevoutsHashBuf ? hashCache.prevoutsHashBuf : hashCache.prevoutsHashBuf = this.hashPrevouts()\n }\n\n if (\n !(nHashType & Sig.SIGHASH_ANYONECANPAY) &&\n (nHashType & 0x1f) !== Sig.SIGHASH_SINGLE &&\n (nHashType & 0x1f) !== Sig.SIGHASH_NONE\n ) {\n hashSequence = hashCache.sequenceHashBuf ? hashCache.sequenceHashBuf : hashCache.sequenceHashBuf = this.hashSequence()\n }\n\n if (\n (nHashType & 0x1f) !== Sig.SIGHASH_SINGLE &&\n (nHashType & 0x1f) !== Sig.SIGHASH_NONE\n ) {\n hashOutputs = hashCache.outputsHashBuf ? hashCache.outputsHashBuf : hashCache.outputsHashBuf = this.hashOutputs()\n } else if (\n (nHashType & 0x1f) === Sig.SIGHASH_SINGLE &&\n nIn < this.txOuts.length\n ) {\n hashOutputs = Hash.sha256Sha256(this.txOuts[nIn].toBuffer())\n }\n\n const bw = new Bw()\n bw.writeUInt32LE(this.versionBytesNum)\n bw.write(hashPrevouts)\n bw.write(hashSequence)\n bw.write(this.txIns[nIn].txHashBuf) // outpoint (1/2)\n bw.writeUInt32LE(this.txIns[nIn].txOutNum) // outpoint (2/2)\n bw.writeVarIntNum(subScript.toBuffer().length)\n bw.write(subScript.toBuffer())\n bw.writeUInt64LEBn(valueBn)\n bw.writeUInt32LE(this.txIns[nIn].nSequence)\n bw.write(hashOutputs)\n bw.writeUInt32LE(this.nLockTime)\n bw.writeUInt32LE(nHashType >>> 0)\n\n return new Br(Hash.sha256Sha256(bw.toBuffer())).readReverse()\n }\n\n // original bitcoin code follows - not related to UAHF (Bitcoin SV)\n const txcopy = this.cloneByBuffer()\n\n subScript = new Script().fromBuffer(subScript.toBuffer())\n subScript.removeCodeseparators()\n\n for (let i = 0; i < txcopy.txIns.length; i++) {\n txcopy.txIns[i] = TxIn.fromBuffer(txcopy.txIns[i].toBuffer()).setScript(\n new Script()\n )\n }\n\n txcopy.txIns[nIn] = TxIn.fromBuffer(\n txcopy.txIns[nIn].toBuffer()\n ).setScript(subScript)\n\n if ((nHashType & 31) === Sig.SIGHASH_NONE) {\n txcopy.txOuts.length = 0\n txcopy.txOutsVi = VarInt.fromNumber(0)\n\n for (let i = 0; i < txcopy.txIns.length; i++) {\n if (i !== nIn) {\n txcopy.txIns[i].nSequence = 0\n }\n }\n } else if ((nHashType & 31) === Sig.SIGHASH_SINGLE) {\n // The SIGHASH_SINGLE bug.\n // https://bitcointalk.org/index.php?topic=260595.0\n if (nIn > txcopy.txOuts.length - 1) {\n return Buffer.from(\n '0000000000000000000000000000000000000000000000000000000000000001',\n 'hex'\n )\n }\n\n txcopy.txOuts.length = nIn + 1\n txcopy.txOutsVi = VarInt.fromNumber(nIn + 1)\n\n for (let i = 0; i < txcopy.txOuts.length; i++) {\n if (i < nIn) {\n txcopy.txOuts[i] = TxOut.fromProperties(\n new Bn().fromBuffer(Buffer.from('ffffffffffffffff', 'hex')),\n new Script()\n )\n }\n }\n\n for (let i = 0; i < txcopy.txIns.length; i++) {\n if (i !== nIn) {\n txcopy.txIns[i].nSequence = 0\n }\n }\n }\n // else, SIGHASH_ALL\n\n if (nHashType & Sig.SIGHASH_ANYONECANPAY) {\n txcopy.txIns[0] = txcopy.txIns[nIn]\n txcopy.txIns.length = 1\n txcopy.txInsVi = VarInt.fromNumber(1)\n }\n\n const buf = new Bw()\n .write(txcopy.toBuffer())\n .writeInt32LE(nHashType)\n .toBuffer()\n return new Br(Hash.sha256Sha256(buf)).readReverse()\n }\n\n async asyncSighash (nHashType, nIn, subScript, valueBn, flags = 0, hashCache = {}) {\n const workersResult = await Workers.asyncObjectMethod(this, 'sighash', [\n nHashType,\n nIn,\n subScript,\n valueBn,\n flags,\n hashCache\n ])\n return workersResult.resbuf\n }\n\n // This function returns a signature but does not update any inputs\n sign (keyPair, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID, nIn, subScript, valueBn, flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID, hashCache = {}) {\n const hashBuf = this.sighash(nHashType, nIn, subScript, valueBn, flags, hashCache)\n const sig = Ecdsa.sign(hashBuf, keyPair, 'little').fromObject({\n nHashType: nHashType\n })\n return sig\n }\n\n async asyncSign (keyPair, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID, nIn, subScript, valueBn, flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID, hashCache = {}) {\n const workersResult = await Workers.asyncObjectMethod(this, 'sign', [\n keyPair,\n nHashType,\n nIn,\n subScript,\n valueBn,\n flags,\n hashCache\n ])\n return new Sig().fromFastBuffer(workersResult.resbuf)\n }\n\n // This function takes a signature as input and does not parse any inputs\n verify (\n sig,\n pubKey,\n nIn,\n subScript,\n enforceLowS = false,\n valueBn,\n flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID,\n hashCache = {}\n ) {\n const hashBuf = this.sighash(sig.nHashType, nIn, subScript, valueBn, flags, hashCache)\n return Ecdsa.verify(hashBuf, sig, pubKey, 'little', enforceLowS)\n }\n\n async asyncVerify (\n sig,\n pubKey,\n nIn,\n subScript,\n enforceLowS = false,\n valueBn,\n flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID,\n hashCache = {}\n ) {\n const workersResult = await Workers.asyncObjectMethod(this, 'verify', [\n sig,\n pubKey,\n nIn,\n subScript,\n enforceLowS,\n valueBn,\n flags,\n hashCache\n ])\n return JSON.parse(workersResult.resbuf.toString())\n }\n\n hash () {\n return Hash.sha256Sha256(this.toBuffer())\n }\n\n async asyncHash () {\n const workersResult = await Workers.asyncObjectMethod(this, 'hash', [])\n return workersResult.resbuf\n }\n\n id () {\n return new Br(this.hash()).readReverse().toString('hex')\n }\n\n async asyncId () {\n const workersResult = await Workers.asyncObjectMethod(this, 'id', [])\n return JSON.parse(workersResult.resbuf.toString())\n }\n\n addTxIn (txHashBuf, txOutNum, script, nSequence) {\n let txIn\n if (txHashBuf instanceof TxIn) {\n txIn = txHashBuf\n } else {\n txIn = new TxIn()\n .fromObject({ txHashBuf, txOutNum, nSequence })\n .setScript(script)\n }\n this.txIns.push(txIn)\n this.txInsVi = VarInt.fromNumber(this.txInsVi.toNumber() + 1)\n return this\n }\n\n addTxOut (valueBn, script) {\n let txOut\n if (valueBn instanceof TxOut) {\n txOut = valueBn\n } else {\n txOut = new TxOut().fromObject({ valueBn }).setScript(script)\n }\n this.txOuts.push(txOut)\n this.txOutsVi = VarInt.fromNumber(this.txOutsVi.toNumber() + 1)\n return this\n }\n\n /**\n * Analagous to bitcoind's IsCoinBase function in transaction.h\n */\n isCoinbase () {\n return this.txIns.length === 1 && this.txIns[0].hasNullInput()\n }\n\n /**\n * BIP 69 sorting. Be sure to sign after sorting.\n */\n sort () {\n this.txIns.sort((first, second) => {\n return new Br(first.txHashBuf).readReverse().compare(new Br(second.txHashBuf).readReverse()) ||\n first.txOutNum - second.txOutNum\n })\n\n this.txOuts.sort((first, second) => {\n return first.valueBn.sub(second.valueBn).toNumber() ||\n first.script.toBuffer().compare(second.script.toBuffer())\n })\n\n return this\n }\n}\n\nTx.MAX_MONEY = 21000000 * 1e8\n\n// This is defined on Interp, but Tx cannot depend on Interp - must redefine here\nTx.SCRIPT_ENABLE_SIGHASH_FORKID = 1 << 16\n\nexport { Tx }\n","/**\n * Block\n * =====\n *\n * A block, of course, is a collection of transactions. This class is somewhat\n * incompconste at the moment. In the future, it should support the ability to\n * check to see if a transaction is in a block (thanks to the magic of merkle\n * trees). You will probably never use Yours Bitcoin to create a block, since almost\n * everyone will use bitcoind for that. As such, the primary way to use this is\n * new Block().fromBuffer(buf), which will parse the block and prepare its insides\n * for you to inspect.\n */\n'use strict'\n\nimport { Br } from './br'\nimport { Bw } from './bw'\nimport { BlockHeader } from './block-header'\nimport { Hash } from './hash'\nimport { Merkle } from './merkle'\nimport { Struct } from './struct'\nimport { Tx } from './tx'\nimport { VarInt } from './var-int'\nimport { Workers } from './workers'\n\nclass Block extends Struct {\n constructor (blockHeader, txsVi, txs) {\n super({ blockHeader, txsVi, txs })\n }\n\n fromJSON (json) {\n const txs = []\n json.txs.forEach(function (tx) {\n txs.push(new Tx().fromJSON(tx))\n })\n this.fromObject({\n blockHeader: new BlockHeader().fromJSON(json.blockHeader),\n txsVi: new VarInt().fromJSON(json.txsVi),\n txs: txs\n })\n return this\n }\n\n toJSON () {\n const txs = []\n this.txs.forEach(function (tx) {\n txs.push(tx.toJSON())\n })\n return {\n blockHeader: this.blockHeader.toJSON(),\n txsVi: this.txsVi.toJSON(),\n txs: txs\n }\n }\n\n fromBr (br) {\n this.blockHeader = new BlockHeader().fromBr(br)\n this.txsVi = new VarInt(br.readVarIntBuf())\n const txsNum = this.txsVi.toNumber()\n this.txs = []\n for (let i = 0; i < txsNum; i++) {\n this.txs.push(new Tx().fromBr(br))\n }\n return this\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n bw.write(this.blockHeader.toBuffer())\n bw.write(this.txsVi.buf)\n const txsNum = this.txsVi.toNumber()\n for (let i = 0; i < txsNum; i++) {\n this.txs[i].toBw(bw)\n }\n return bw\n }\n\n hash () {\n return Hash.sha256Sha256(this.blockHeader.toBuffer())\n }\n\n async asyncHash () {\n const workersResult = await Workers.asyncObjectMethod(this, 'hash', [])\n return workersResult.resbuf\n }\n\n id () {\n return new Br(this.hash()).readReverse().toString('hex')\n }\n\n async asyncId () {\n const workersResult = await Workers.asyncObjectMethod(this, 'id', [])\n return JSON.parse(workersResult.resbuf.toString())\n }\n\n verifyMerkleRoot () {\n const txsbufs = this.txs.map(tx => tx.toBuffer())\n const merkleRootBuf = Merkle.fromBuffers(txsbufs).hash()\n return Buffer.compare(merkleRootBuf, this.blockHeader.merkleRootBuf)\n }\n\n /**\n * Sometimes we don't want to parse an entire block into memory. Instead, we\n * simply want to iterate through all transactions in the block. That is what\n * this method is for. This method returns an efficient iterator which can be\n * used in a `for (tx of txs)` construct that returns each tx one at a time\n * without first parsing all of them into memory.\n *\n * @param {Buffer} blockBuf A buffer of a block.\n */\n static iterateTxs (blockBuf) {\n const br = new Br(blockBuf)\n const blockHeader = new BlockHeader().fromBr(br)\n const txsVi = new VarInt(br.readVarIntBuf())\n const txsNum = txsVi.toNumber()\n return {\n blockHeader,\n txsVi,\n txsNum,\n * [Symbol.iterator] () {\n for (let i = 0; i < txsNum; i++) {\n yield new Tx().fromBr(br)\n }\n }\n }\n }\n}\n\nBlock.MAX_BLOCK_SIZE = 1000000\n\nexport { Block }\n","/**\n * Script Interpreter\n * ==================\n *\n * Bitcoin transactions contain scripts. Each input has a script called the\n * scriptSig, and each output has a script called the scriptPubKey. To validate\n * an input, the ScriptSig is executed, then with the same stack, the\n * scriptPubKey from the output corresponding to that input is run. The primary\n * way to use this class is via the verify function:\n *\n * new Interp().verify( ... )\n *\n * In some ways, the script interpreter is one of the most poorly architected\n * components of Yours Bitcoin because of the giant switch statement in step(). But\n * that is deliberately so to make it similar to bitcoin core, and thus easier\n * to audit.\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Bw } from './bw'\nimport { cmp } from './cmp'\nimport { Hash } from './hash'\nimport { OpCode } from './op-code'\nimport { PubKey } from './pub-key'\nimport { Script } from './script'\nimport { Sig } from './sig'\nimport { Struct } from './struct'\nimport { Tx } from './tx'\nimport { TxIn } from './tx-in'\n\n class Interp extends Struct {\n constructor (\n script,\n tx,\n nIn,\n stack = [],\n altStack = [],\n pc = 0,\n pBeginCodeHash = 0,\n nOpCount = 0,\n ifStack = [],\n errStr = '',\n flags = Interp.defaultFlags,\n valueBn = new Bn(0)\n ) {\n super({\n script,\n tx,\n nIn,\n stack,\n altStack,\n pc,\n pBeginCodeHash,\n nOpCount,\n ifStack,\n errStr,\n flags,\n valueBn\n })\n }\n\n initialize () {\n this.script = new Script()\n this.stack = []\n this.altStack = []\n this.pc = 0\n this.pBeginCodeHash = 0\n this.nOpCount = 0\n this.ifStack = []\n this.errStr = ''\n this.flags = Interp.defaultFlags\n return this\n }\n\n fromJSON (json) {\n this.fromJSONNoTx(json)\n this.tx = json.tx ? new Tx().fromJSON(json.tx) : undefined\n return this\n }\n /**\n * Convert JSON containing everything but the tx to an interp object.\n */\n fromJSONNoTx (json) {\n this.fromObject({\n script:\n json.script !== undefined\n ? new Script().fromJSON(json.script)\n : undefined,\n nIn: json.nIn\n })\n this.stack = []\n json.stack.forEach(\n function (hex) {\n this.stack.push(Buffer.from(hex, 'hex'))\n }.bind(this)\n )\n this.altStack = []\n json.altStack.forEach(\n function (hex) {\n this.altStack.push(Buffer.from(hex, 'hex'))\n }.bind(this)\n )\n this.fromObject({\n pc: json.pc,\n pBeginCodeHash: json.pBeginCodeHash,\n nOpCount: json.nOpCount,\n ifStack: json.ifStack,\n errStr: json.errStr,\n flags: json.flags\n })\n return this\n }\n\n fromBr (br) {\n let jsonNoTxBufLEn = br.readVarIntNum()\n let jsonNoTxBuf = br.read(jsonNoTxBufLEn)\n this.fromJSONNoTx(JSON.parse(jsonNoTxBuf.toString()))\n let txbuflen = br.readVarIntNum()\n if (txbuflen > 0) {\n let txbuf = br.read(txbuflen)\n this.tx = new Tx().fromFastBuffer(txbuf)\n }\n return this\n }\n\n toJSON () {\n let json = this.toJSONNoTx()\n json.tx = this.tx ? this.tx.toJSON() : undefined\n return json\n }\n\n /**\n * Convert everything but the tx to JSON.\n */\n toJSONNoTx () {\n let stack = []\n this.stack.forEach(function (buf) {\n stack.push(buf.toString('hex'))\n })\n let altStack = []\n this.altStack.forEach(function (buf) {\n altStack.push(buf.toString('hex'))\n })\n return {\n script: this.script ? this.script.toJSON() : undefined,\n nIn: this.nIn,\n stack: stack,\n altStack: altStack,\n pc: this.pc,\n pBeginCodeHash: this.pBeginCodeHash,\n nOpCount: this.nOpCount,\n ifStack: this.ifStack,\n errStr: this.errStr,\n flags: this.flags\n }\n }\n\n toBw (bw) {\n if (!bw) {\n bw = new Bw()\n }\n let jsonNoTxBuf = Buffer.from(JSON.stringify(this.toJSONNoTx()))\n bw.writeVarIntNum(jsonNoTxBuf.length)\n bw.write(jsonNoTxBuf)\n if (this.tx) {\n let txbuf = this.tx.toFastBuffer()\n bw.writeVarIntNum(txbuf.length)\n bw.write(txbuf)\n } else {\n bw.writeVarIntNum(0)\n }\n return bw\n }\n\n /**\n * In order to make auduting the script interpreter easier, we use the same\n * constants as bitcoin core, including the flags, which customize the\n * operation of the interpreter.\n */\n static getFlags (flagstr) {\n let flags = 0\n if (flagstr.indexOf('NONE') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_NONE\n }\n if (flagstr.indexOf('P2SH') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_P2SH\n }\n if (flagstr.indexOf('STRICTENC') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_STRICTENC\n }\n if (flagstr.indexOf('DERSIG') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_DERSIG\n }\n if (flagstr.indexOf('LOW_S') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_LOW_S\n }\n if (flagstr.indexOf('NULLDUMMY') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_NULLDUMMY\n }\n if (flagstr.indexOf('SIGPUSHONLY') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_SIGPUSHONLY\n }\n if (flagstr.indexOf('MINIMALDATA') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_MINIMALDATA\n }\n if (flagstr.indexOf('DISCOURAGE_UPGRADABLE_NOPS') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS\n }\n if (flagstr.indexOf('CLEANSTACK') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_CLEANSTACK\n }\n if (flagstr.indexOf('CHECKLOCKTIMEVERIFY') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY\n }\n if (flagstr.indexOf('CHECKSEQUENCEVERIFY') !== -1) {\n flags = flags | Interp.SCRIPT_VERIFY_CHECKSEQUENCEVERIFY\n }\n if (flagstr.indexOf('SIGHASH_FORKID') !== -1) {\n flags = flags | Interp.SCRIPT_ENABLE_SIGHASH_FORKID\n }\n return flags\n }\n\n static castToBool (buf) {\n for (let i = 0; i < buf.length; i++) {\n if (buf[i] !== 0) {\n // can be negative zero\n if (i === buf.length - 1 && buf[i] === 0x80) {\n return false\n }\n return true\n }\n }\n return false\n }\n\n /**\n * Translated from bitcoin core's CheckSigEncoding\n */\n checkSigEncoding (buf) {\n // Empty signature. Not strictly DER encoded, but allowed to provide a\n // compact way to provide an invalid signature for use with CHECK(MULTI)SIG\n if (buf.length === 0) {\n return true\n }\n if (\n (this.flags &\n (Interp.SCRIPT_VERIFY_DERSIG |\n Interp.SCRIPT_VERIFY_LOW_S |\n Interp.SCRIPT_VERIFY_STRICTENC)) !==\n 0 &&\n !Sig.IsTxDer(buf)\n ) {\n this.errStr = 'SCRIPT_ERR_SIG_DER'\n return false\n } else if ((this.flags & Interp.SCRIPT_VERIFY_LOW_S) !== 0) {\n let sig = new Sig().fromTxFormat(buf)\n if (!sig.hasLowS()) {\n this.errStr = 'SCRIPT_ERR_SIG_DER'\n return false\n }\n } else if ((this.flags & Interp.SCRIPT_VERIFY_STRICTENC) !== 0) {\n let sig = new Sig().fromTxFormat(buf)\n if (!sig.hasDefinedHashType()) {\n this.errStr = 'SCRIPT_ERR_SIG_HASHTYPE'\n return false\n }\n }\n return true\n }\n\n /**\n * Translated from bitcoin core's CheckPubKeyEncoding\n */\n checkPubKeyEncoding (buf) {\n if (\n (this.flags & Interp.SCRIPT_VERIFY_STRICTENC) !== 0 &&\n !PubKey.isCompressedOrUncompressed(buf)\n ) {\n this.errStr = 'SCRIPT_ERR_PUBKEYTYPE'\n return false\n }\n return true\n }\n\n /**\n * Translated from bitcoin core's CheckLockTime\n */\n checkLockTime (nLockTime) {\n // There are two kinds of nLockTime: lock-by-blockheight\n // and lock-by-blocktime, distinguished by whether\n // nLockTime < LOCKTIME_THRESHOLD.\n //\n // We want to compare apples to apples, so fail the script\n // unless the type of nLockTime being tested is the same as\n // the nLockTime in the transaction.\n if (\n !(\n (this.tx.nLockTime < Interp.LOCKTIME_THRESHOLD &&\n nLockTime < Interp.LOCKTIME_THRESHOLD) ||\n (this.tx.nLockTime >= Interp.LOCKTIME_THRESHOLD &&\n nLockTime >= Interp.LOCKTIME_THRESHOLD)\n )\n ) {\n return false\n }\n\n // Now that we know we're comparing apples-to-apples, the\n // comparison is a simple numeric one.\n if (nLockTime > this.tx.nLockTime) {\n return false\n }\n\n // Finally the nLockTime feature can be disabled and thus\n // CHECKLOCKTIMEVERIFY bypassed if every txIn has been\n // finalized by setting nSequence to maxint. The\n // transaction would be allowed into the blockchain, making\n // the opCode ineffective.\n //\n // Testing if this vin is not final is sufficient to\n // prevent this condition. Alternatively we could test all\n // inputs, but testing just this input minimizes the data\n // required to prove correct CHECKLOCKTIMEVERIFY execution.\n if (TxIn.SEQUENCE_FINAL === this.tx.txIns[this.nIn].nSequence) {\n return false\n }\n\n return true\n }\n\n /**\n * Translated from bitcoin core's CheckSequence.\n */\n checkSequence (nSequence) {\n // Relative lock times are supported by comparing the passed\n // in operand to the sequence number of the input.\n let txToSequence = this.tx.txIns[this.nIn].nSequence\n\n // Fail if the transaction's version number is not set high\n // enough to trigger Bip 68 rules.\n if (this.tx.versionBytesNum < 2) {\n return false\n }\n\n // Sequence numbers with their most significant bit set are not\n // consensus constrained. Testing that the transaction's sequence\n // number do not have this bit set prevents using this property\n // to get around a CHECKSEQUENCEVERIFY check.\n if (txToSequence & TxIn.SEQUENCE_LOCKTIME_DISABLE_FLAG) {\n return false\n }\n\n // Mask off any bits that do not have consensus-enforced meaning\n // before doing the integer comparisons\n let nLockTimeMask =\n TxIn.SEQUENCE_LOCKTIME_TYPE_FLAG | TxIn.SEQUENCE_LOCKTIME_MASK\n let txToSequenceMasked = txToSequence & nLockTimeMask\n let nSequenceMasked = nSequence & nLockTimeMask\n\n // There are two kinds of nSequence: lock-by-blockheight\n // and lock-by-blocktime, distinguished by whether\n // nSequenceMasked < CTxIn::SEQUENCE_LOCKTIME_TYPE_FLAG.\n //\n // We want to compare apples to apples, so fail the script\n // unless the type of nSequenceMasked being tested is the same as\n // the nSequenceMasked in the transaction.\n if (\n !(\n (txToSequenceMasked < TxIn.SEQUENCE_LOCKTIME_TYPE_FLAG &&\n nSequenceMasked < TxIn.SEQUENCE_LOCKTIME_TYPE_FLAG) ||\n (txToSequenceMasked >= TxIn.SEQUENCE_LOCKTIME_TYPE_FLAG &&\n nSequenceMasked >= TxIn.SEQUENCE_LOCKTIME_TYPE_FLAG)\n )\n ) {\n return false\n }\n\n // Now that we know we're comparing apples-to-apples, the\n // comparison is a simple numeric one.\n if (nSequenceMasked > txToSequenceMasked) {\n return false\n }\n\n return true\n }\n\n /**\n * Based on bitcoin core's EvalScript function, with the inner loop moved to\n * Interp.prototype.step()\n * bitcoin core commit: b5d1b1092998bc95313856d535c632ea5a8f9104\n */\n * eval () {\n if (this.script.toBuffer().length > 10000) {\n this.errStr = 'SCRIPT_ERR_SCRIPT_SIZE'\n yield false\n }\n\n try {\n while (this.pc < this.script.chunks.length) {\n let fSuccess = this.step()\n if (!fSuccess) {\n yield false\n } else {\n yield fSuccess\n }\n }\n\n // Size limits\n if (this.stack.length + this.altStack.length > 1000) {\n this.errStr = 'SCRIPT_ERR_STACK_SIZE'\n yield false\n }\n } catch (e) {\n this.errStr = 'SCRIPT_ERR_UNKNOWN_ERROR: ' + e\n yield false\n }\n\n if (this.ifStack.length > 0) {\n this.errStr = 'SCRIPT_ERR_UNBALANCED_CONDITIONAL'\n yield false\n }\n\n yield true\n }\n\n /**\n * Based on the inner loop of bitcoin core's EvalScript function\n */\n step () {\n let fRequireMinimal =\n (this.flags & Interp.SCRIPT_VERIFY_MINIMALDATA) !== 0\n\n // bool fExec = !count(ifStack.begin(), ifStack.end(), false)\n let fExec = !(this.ifStack.indexOf(false) + 1)\n\n //\n // Read instruction\n //\n let chunk = this.script.chunks[this.pc]\n this.pc++\n let opCodeNum = chunk.opCodeNum\n if (opCodeNum === undefined) {\n this.errStr = 'SCRIPT_ERR_BAD_OPCODE'\n return false\n }\n if (chunk.buf && chunk.buf.length > Interp.MAX_SCRIPT_ELEMENT_SIZE) {\n this.errStr = 'SCRIPT_ERR_PUSH_SIZE'\n return false\n }\n\n // Note how OpCode.OP_RESERVED does not count towards the opCode limit.\n if (opCodeNum > OpCode.OP_16 && ++this.nOpCount > 201) {\n this.errStr = 'SCRIPT_ERR_OP_COUNT'\n return false\n }\n\n if (\n opCodeNum === OpCode.OP_LEFT ||\n opCodeNum === OpCode.OP_RIGHT ||\n opCodeNum === OpCode.OP_2MUL ||\n opCodeNum === OpCode.OP_2DIV\n ) {\n this.errStr = 'SCRIPT_ERR_DISABLED_OPCODE'\n return false\n }\n\n if (fExec && opCodeNum >= 0 && opCodeNum <= OpCode.OP_PUSHDATA4) {\n if (fRequireMinimal && !this.script.checkMinimalPush(this.pc - 1)) {\n this.errStr = 'SCRIPT_ERR_MINIMALDATA'\n return false\n }\n if (!chunk.buf) {\n this.stack.push(Interp.false)\n } else if (chunk.len !== chunk.buf.length) {\n throw new Error('LEngth of push value not equal to length of data')\n } else {\n this.stack.push(chunk.buf)\n }\n } else if (\n fExec ||\n (OpCode.OP_IF <= opCodeNum && opCodeNum <= OpCode.OP_ENDIF)\n ) {\n switch (opCodeNum) {\n //\n // Push value\n //\n case OpCode.OP_1NEGATE:\n case OpCode.OP_1:\n case OpCode.OP_2:\n case OpCode.OP_3:\n case OpCode.OP_4:\n case OpCode.OP_5:\n case OpCode.OP_6:\n case OpCode.OP_7:\n case OpCode.OP_8:\n case OpCode.OP_9:\n case OpCode.OP_10:\n case OpCode.OP_11:\n case OpCode.OP_12:\n case OpCode.OP_13:\n case OpCode.OP_14:\n case OpCode.OP_15:\n case OpCode.OP_16:\n {\n // ( -- value)\n // ScriptNum bn((int)opCode - (int)(OpCode.OP_1 - 1))\n let n = opCodeNum - (OpCode.OP_1 - 1)\n let buf = new Bn(n).toScriptNumBuffer()\n this.stack.push(buf)\n // The result of these opCodes should always be the minimal way to push the data\n // they push, so no need for a CheckMinimalPush here.\n }\n break\n\n //\n // Control\n //\n case OpCode.OP_NOP:\n break\n\n case OpCode.OP_CHECKLOCKTIMEVERIFY:\n {\n if (!(this.flags & Interp.SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY)) {\n // not enabled; treat as a NOP2\n if (\n this.flags & Interp.SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS\n ) {\n this.errStr = 'SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS'\n return false\n }\n break\n }\n\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n // Note that elsewhere numeric opCodes are limited to\n // operands in the range -2**31+1 to 2**31-1, however it is\n // legal for opCodes to produce results exceeding that\n // range. This limitation is implemented by CScriptNum's\n // default 4-byte limit.\n //\n // If we kept to that limit we'd have a year 2038 problem,\n // even though the nLockTime field in transactions\n // themselves is uint32 which only becomes meaningless\n // after the year 2106.\n //\n // Thus as a special case we tell CScriptNum to accept up\n // to 5-byte bignums, which are good until 2**39-1, well\n // beyond the 2**32-1 limit of the nLockTime field itself.\n let nLockTimebuf = this.stack[this.stack.length - 1]\n let nLockTimebn = new Bn().fromScriptNumBuffer(\n nLockTimebuf,\n fRequireMinimal,\n 5\n )\n let nLockTime = nLockTimebn.toNumber()\n\n // In the rare event that the argument may be < 0 due to\n // some arithmetic being done first, you can always use\n // 0 MAX CHECKLOCKTIMEVERIFY.\n if (nLockTime < 0) {\n this.errStr = 'SCRIPT_ERR_NEGATIVE_LOCKTIME'\n return false\n }\n\n // Actually compare the specified lock time with the transaction.\n if (!this.checkLockTime(nLockTime)) {\n this.errStr = 'SCRIPT_ERR_UNSATISFIED_LOCKTIME'\n return false\n }\n }\n break\n\n case OpCode.OP_CHECKSEQUENCEVERIFY:\n {\n if (!(this.flags & Interp.SCRIPT_VERIFY_CHECKSEQUENCEVERIFY)) {\n // not enabled; treat as a NOP3\n if (\n this.flags & Interp.SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS\n ) {\n this.errStr = 'SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS'\n return false\n }\n break\n }\n\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n // nSequence, like nLockTime, is a 32-bit unsigned integer\n // field. See the comment in CHECKLOCKTIMEVERIFY regarding\n // 5-byte numeric operands.\n let nSequencebuf = this.stack[this.stack.length - 1]\n let nSequencebn = new Bn().fromScriptNumBuffer(\n nSequencebuf,\n fRequireMinimal,\n 5\n )\n let nSequence = nSequencebn.toNumber()\n\n // In the rare event that the argument may be < 0 due to\n // some arithmetic being done first, you can always use\n // 0 MAX CHECKSEQUENCEVERIFY.\n if (nSequence < 0) {\n this.errStr = 'SCRIPT_ERR_NEGATIVE_LOCKTIME'\n return false\n }\n\n // To provide for future soft-fork extensibility, if the\n // operand has the disabled lock-time flag set,\n // CHECKSEQUENCEVERIFY behaves as a NOP.\n if ((nSequence & TxIn.SEQUENCE_LOCKTIME_DISABLE_FLAG) !== 0) {\n break\n }\n\n // Compare the specified sequence number with the input.\n if (!this.checkSequence(nSequence)) {\n this.errStr = 'SCRIPT_ERR_UNSATISFIED_LOCKTIME'\n return false\n }\n }\n break\n\n case OpCode.OP_NOP1:\n case OpCode.OP_NOP3:\n case OpCode.OP_NOP4:\n case OpCode.OP_NOP5:\n case OpCode.OP_NOP6:\n case OpCode.OP_NOP7:\n case OpCode.OP_NOP8:\n case OpCode.OP_NOP9:\n case OpCode.OP_NOP10:\n if (this.flags & Interp.SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS) {\n this.errStr = 'SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS'\n return false\n }\n break\n\n case OpCode.OP_IF:\n case OpCode.OP_NOTIF:\n {\n // <expression> if [statements] [else [statements]] endif\n // bool fValue = false\n let fValue = false\n if (fExec) {\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_UNBALANCED_CONDITIONAL'\n return false\n }\n let buf = this.stack.pop()\n fValue = Interp.castToBool(buf)\n if (opCodeNum === OpCode.OP_NOTIF) {\n fValue = !fValue\n }\n }\n this.ifStack.push(fValue)\n }\n break\n\n case OpCode.OP_ELSE:\n if (this.ifStack.length === 0) {\n this.errStr = 'SCRIPT_ERR_UNBALANCED_CONDITIONAL'\n return false\n }\n this.ifStack[this.ifStack.length - 1] = !this.ifStack[\n this.ifStack.length - 1\n ]\n break\n\n case OpCode.OP_ENDIF:\n if (this.ifStack.length === 0) {\n this.errStr = 'SCRIPT_ERR_UNBALANCED_CONDITIONAL'\n return false\n }\n this.ifStack.pop()\n break\n\n case OpCode.OP_VERIFY:\n {\n // (true -- ) or\n // (false -- false) and return\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf = this.stack[this.stack.length - 1]\n let fValue = Interp.castToBool(buf)\n if (fValue) {\n this.stack.pop()\n } else {\n this.errStr = 'SCRIPT_ERR_VERIFY'\n return false\n }\n }\n break\n\n case OpCode.OP_RETURN: {\n this.errStr = 'SCRIPT_ERR_OP_RETURN'\n return false\n }\n // unreachable code: break\n\n //\n // Stack ops\n //\n case OpCode.OP_TOALTSTACK:\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n this.altStack.push(this.stack.pop())\n break\n\n case OpCode.OP_FROMALTSTACK:\n if (this.altStack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_ALTSTACK_OPERATION'\n return false\n }\n this.stack.push(this.altStack.pop())\n break\n\n case OpCode.OP_2DROP:\n // (x1 x2 -- )\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n this.stack.pop()\n this.stack.pop()\n break\n\n case OpCode.OP_2DUP:\n {\n // (x1 x2 -- x1 x2 x1 x2)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf1 = this.stack[this.stack.length - 2]\n let buf2 = this.stack[this.stack.length - 1]\n this.stack.push(buf1)\n this.stack.push(buf2)\n }\n break\n\n case OpCode.OP_3DUP:\n {\n // (x1 x2 x3 -- x1 x2 x3 x1 x2 x3)\n if (this.stack.length < 3) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf1 = this.stack[this.stack.length - 3]\n let buf2 = this.stack[this.stack.length - 2]\n let buf3 = this.stack[this.stack.length - 1]\n this.stack.push(buf1)\n this.stack.push(buf2)\n this.stack.push(buf3)\n }\n break\n\n case OpCode.OP_2OVER:\n {\n // (x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2)\n if (this.stack.length < 4) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf1 = this.stack[this.stack.length - 4]\n let buf2 = this.stack[this.stack.length - 3]\n this.stack.push(buf1)\n this.stack.push(buf2)\n }\n break\n\n case OpCode.OP_2ROT:\n {\n // (x1 x2 x3 x4 x5 x6 -- x3 x4 x5 x6 x1 x2)\n if (this.stack.length < 6) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let spliced = this.stack.splice(this.stack.length - 6, 2)\n this.stack.push(spliced[0])\n this.stack.push(spliced[1])\n }\n break\n\n case OpCode.OP_2SWAP:\n {\n // (x1 x2 x3 x4 -- x3 x4 x1 x2)\n if (this.stack.length < 4) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let spliced = this.stack.splice(this.stack.length - 4, 2)\n this.stack.push(spliced[0])\n this.stack.push(spliced[1])\n }\n break\n\n case OpCode.OP_IFDUP:\n {\n // (x - 0 | x x)\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf = this.stack[this.stack.length - 1]\n let fValue = Interp.castToBool(buf)\n if (fValue) {\n this.stack.push(buf)\n }\n }\n break\n\n case OpCode.OP_DEPTH:\n {\n // -- stacksize\n let buf = new Bn(this.stack.length).toScriptNumBuffer()\n this.stack.push(buf)\n }\n break\n\n case OpCode.OP_DROP:\n // (x -- )\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n this.stack.pop()\n break\n\n case OpCode.OP_DUP:\n // (x -- x x)\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n this.stack.push(this.stack[this.stack.length - 1])\n break\n\n case OpCode.OP_NIP:\n // (x1 x2 -- x2)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n this.stack.splice(this.stack.length - 2, 1)\n break\n\n case OpCode.OP_OVER:\n // (x1 x2 -- x1 x2 x1)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n this.stack.push(this.stack[this.stack.length - 2])\n break\n\n case OpCode.OP_PICK:\n case OpCode.OP_ROLL:\n {\n // (xn ... x2 x1 x0 n - xn ... x2 x1 x0 xn)\n // (xn ... x2 x1 x0 n - ... x2 x1 x0 xn)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf = this.stack[this.stack.length - 1]\n let bn = new Bn().fromScriptNumBuffer(buf, fRequireMinimal)\n let n = bn.toNumber()\n this.stack.pop()\n if (n < 0 || n >= this.stack.length) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n buf = this.stack[this.stack.length - n - 1]\n if (opCodeNum === OpCode.OP_ROLL) {\n this.stack.splice(this.stack.length - n - 1, 1)\n }\n this.stack.push(buf)\n }\n break\n\n case OpCode.OP_ROT:\n {\n // (x1 x2 x3 -- x2 x3 x1)\n // x2 x1 x3 after first swap\n // x2 x3 x1 after second swap\n if (this.stack.length < 3) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let x1 = this.stack[this.stack.length - 3]\n let x2 = this.stack[this.stack.length - 2]\n let x3 = this.stack[this.stack.length - 1]\n this.stack[this.stack.length - 3] = x2\n this.stack[this.stack.length - 2] = x3\n this.stack[this.stack.length - 1] = x1\n }\n break\n\n case OpCode.OP_SWAP:\n {\n // (x1 x2 -- x2 x1)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let x1 = this.stack[this.stack.length - 2]\n let x2 = this.stack[this.stack.length - 1]\n this.stack[this.stack.length - 2] = x2\n this.stack[this.stack.length - 1] = x1\n }\n break\n\n case OpCode.OP_TUCK:\n // (x1 x2 -- x2 x1 x2)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n this.stack.splice(\n this.stack.length - 2,\n 0,\n this.stack[this.stack.length - 1]\n )\n break\n\n case OpCode.OP_SIZE:\n {\n // (in -- in size)\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let bn = new Bn(this.stack[this.stack.length - 1].length)\n this.stack.push(bn.toScriptNumBuffer())\n }\n break\n\n //\n // Bitwise logic\n //\n case OpCode.OP_OR:\n case OpCode.OP_AND:\n case OpCode.OP_XOR:\n // (x1 x2 -- out)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf1 = this.stack[this.stack.length - 2]\n let buf2 = this.stack[this.stack.length - 1]\n\n if (buf1.length != buf2.length) {\n this.errStr = 'SCRIPT_ERR_INVALID_OPERAND_SIZE'\n return false\n }\n\n switch (opCodeNum) {\n case OpCode.OP_AND:\n for(let i = 0; i < buf1.length; i++) {\n buf1[i] &= buf2[i]\n }\n break\n case OpCode.OP_OR:\n for(let i = 0; i < buf1.length; i++) {\n buf1[i] |= buf2[i]\n }\n break\n case OpCode.OP_XOR:\n for(let i = 0; i < buf1.length; i++) {\n buf1[i] ^= buf2[i]\n }\n break\n }\n\n // pop out buf2\n this.stack.pop();\n break\n case OpCode.OP_INVERT:\n // (x -- out)\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf = this.stack[this.stack.length - 1]\n for(let i = 0; i < buf.length; i++) {\n buf[i] = ~buf[i]\n }\n break\n case OpCode.OP_LSHIFT:\n case OpCode.OP_RSHIFT:\n // (x n -- out)\n {\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n let buf1 = this.stack[this.stack.length - 2]\n let value = new Bn(buf1)\n let n = new Bn().fromScriptNumBuffer(\n this.stack[this.stack.length - 1],\n fRequireMinimal\n ).toNumber()\n if(n < 0) {\n this.errStr = 'SCRIPT_ERR_INVALID_NUMBER_RANGE'\n return false\n }\n\n this.stack.pop()\n this.stack.pop()\n \n switch(opCodeNum) {\n case OpCode.OP_LSHIFT:\n value = value.ushln(n)\n break\n case OpCode.OP_RSHIFT:\n value = value.ushrn(n)\n break\n }\n\n let buf2 = value.toBuffer().slice(-buf1.length)\n if(buf2.length < buf1.length) {\n buf2 = Buffer.concat([Buffer.alloc(buf1.length - buf2.length), buf2])\n }\n\n this.stack.push(buf2)\n break\n }\n case OpCode.OP_EQUAL:\n case OpCode.OP_EQUALVERIFY:\n // case OpCode.OP_NOTEQUAL: // use OpCode.OP_NUMNOTEQUAL\n {\n // (x1 x2 - bool)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf1 = this.stack[this.stack.length - 2]\n let buf2 = this.stack[this.stack.length - 1]\n let fEqual = cmp(buf1, buf2)\n // OpCode.OP_NOTEQUAL is disabled because it would be too easy to say\n // something like n != 1 and have some wiseguy pass in 1 with extra\n // zero bytes after it (numerically, 0x01 == 0x0001 == 0x000001)\n // if (opCode == OpCode.OP_NOTEQUAL)\n // fEqual = !fEqual\n this.stack.pop()\n this.stack.pop()\n this.stack.push(fEqual ? Interp.true : Interp.false)\n if (opCodeNum === OpCode.OP_EQUALVERIFY) {\n if (fEqual) {\n this.stack.pop()\n } else {\n this.errStr = 'SCRIPT_ERR_EQUALVERIFY'\n return false\n }\n }\n }\n break\n\n //\n // Numeric\n //\n case OpCode.OP_1ADD:\n case OpCode.OP_1SUB:\n case OpCode.OP_NEGATE:\n case OpCode.OP_ABS:\n case OpCode.OP_NOT:\n case OpCode.OP_0NOTEQUAL:\n {\n // (in -- out)\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf = this.stack[this.stack.length - 1]\n let bn = new Bn().fromScriptNumBuffer(buf, fRequireMinimal)\n switch (opCodeNum) {\n case OpCode.OP_1ADD:\n bn = bn.add(1)\n break\n case OpCode.OP_1SUB:\n bn = bn.sub(1)\n break\n case OpCode.OP_NEGATE:\n bn = bn.neg()\n break\n case OpCode.OP_ABS:\n if (bn.lt(0)) bn = bn.neg()\n break\n case OpCode.OP_NOT:\n bn = new Bn(bn.eq(0) + 0)\n break\n case OpCode.OP_0NOTEQUAL:\n bn = new Bn(bn.neq(0) + 0)\n break\n // default: assert(!\"invalid opCode\"); break; // TODO: does this ever occur?\n }\n this.stack.pop()\n this.stack.push(bn.toScriptNumBuffer())\n }\n break\n\n case OpCode.OP_ADD:\n case OpCode.OP_SUB:\n case OpCode.OP_MUL:\n case OpCode.OP_DIV:\n case OpCode.OP_MOD:\n case OpCode.OP_BOOLAND:\n case OpCode.OP_BOOLOR:\n case OpCode.OP_NUMEQUAL:\n case OpCode.OP_NUMEQUALVERIFY:\n case OpCode.OP_NUMNOTEQUAL:\n case OpCode.OP_LESSTHAN:\n case OpCode.OP_GREATERTHAN:\n case OpCode.OP_LESSTHANOREQUAL:\n case OpCode.OP_GREATERTHANOREQUAL:\n case OpCode.OP_MIN:\n case OpCode.OP_MAX:\n {\n // (x1 x2 -- out)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let bn1 = new Bn().fromScriptNumBuffer(\n this.stack[this.stack.length - 2],\n fRequireMinimal\n )\n let bn2 = new Bn().fromScriptNumBuffer(\n this.stack[this.stack.length - 1],\n fRequireMinimal\n )\n let bn = new Bn(0)\n\n switch (opCodeNum) {\n case OpCode.OP_ADD:\n bn = bn1.add(bn2)\n break\n\n case OpCode.OP_SUB:\n bn = bn1.sub(bn2)\n break\n\n case OpCode.OP_MUL:\n bn = bn1.mul(bn2)\n break\n\n case OpCode.OP_DIV:\n if (bn2 == 0) {\n this.errStr = \"SCRIPT_ERR_DIV_BY_ZERO\"\n return false\n }\n bn = bn1.div(bn2)\n break\n\n case OpCode.OP_MOD:\n if (bn2 == 0) {\n this.errStr = \"SCRIPT_ERR_DIV_BY_ZERO\"\n return false\n }\n bn = bn1.mod(bn2)\n break\n\n // case OpCode.OP_BOOLAND: bn = (bn1 != bnZero && bn2 != bnZero); break\n case OpCode.OP_BOOLAND:\n bn = new Bn((bn1.neq(0) && bn2.neq(0)) + 0)\n break\n // case OpCode.OP_BOOLOR: bn = (bn1 != bnZero || bn2 != bnZero); break\n case OpCode.OP_BOOLOR:\n bn = new Bn((bn1.neq(0) || bn2.neq(0)) + 0)\n break\n // case OpCode.OP_NUMEQUAL: bn = (bn1 == bn2); break\n case OpCode.OP_NUMEQUAL:\n bn = new Bn(bn1.eq(bn2) + 0)\n break\n // case OpCode.OP_NUMEQUALVERIFY: bn = (bn1 == bn2); break\n case OpCode.OP_NUMEQUALVERIFY:\n bn = new Bn(bn1.eq(bn2) + 0)\n break\n // case OpCode.OP_NUMNOTEQUAL: bn = (bn1 != bn2); break\n case OpCode.OP_NUMNOTEQUAL:\n bn = new Bn(bn1.neq(bn2) + 0)\n break\n // case OpCode.OP_LESSTHAN: bn = (bn1 < bn2); break\n case OpCode.OP_LESSTHAN:\n bn = new Bn(bn1.lt(bn2) + 0)\n break\n // case OpCode.OP_GREATERTHAN: bn = (bn1 > bn2); break\n case OpCode.OP_GREATERTHAN:\n bn = new Bn(bn1.gt(bn2) + 0)\n break\n // case OpCode.OP_LESSTHANOREQUAL: bn = (bn1 <= bn2); break\n case OpCode.OP_LESSTHANOREQUAL:\n bn = new Bn(bn1.leq(bn2) + 0)\n break\n // case OpCode.OP_GREATERTHANOREQUAL: bn = (bn1 >= bn2); break\n case OpCode.OP_GREATERTHANOREQUAL:\n bn = new Bn(bn1.geq(bn2) + 0)\n break\n case OpCode.OP_MIN:\n bn = bn1.lt(bn2) ? bn1 : bn2\n break\n case OpCode.OP_MAX:\n bn = bn1.gt(bn2) ? bn1 : bn2\n break\n // default: assert(!\"invalid opCode\"); break; //TODO: does this ever occur?\n }\n this.stack.pop()\n this.stack.pop()\n this.stack.push(bn.toScriptNumBuffer())\n\n if (opCodeNum === OpCode.OP_NUMEQUALVERIFY) {\n // if (CastToBool(stacktop(-1)))\n if (Interp.castToBool(this.stack[this.stack.length - 1])) {\n this.stack.pop()\n } else {\n this.errStr = 'SCRIPT_ERR_NUMEQUALVERIFY'\n return false\n }\n }\n }\n break\n\n case OpCode.OP_WITHIN:\n {\n // (x min max -- out)\n if (this.stack.length < 3) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let bn1 = new Bn().fromScriptNumBuffer(\n this.stack[this.stack.length - 3],\n fRequireMinimal\n )\n let bn2 = new Bn().fromScriptNumBuffer(\n this.stack[this.stack.length - 2],\n fRequireMinimal\n )\n let bn3 = new Bn().fromScriptNumBuffer(\n this.stack[this.stack.length - 1],\n fRequireMinimal\n )\n // bool fValue = (bn2 <= bn1 && bn1 < bn3)\n let fValue = bn2.leq(bn1) && bn1.lt(bn3)\n this.stack.pop()\n this.stack.pop()\n this.stack.pop()\n this.stack.push(fValue ? Interp.true : Interp.false)\n }\n break\n\n //\n // Crypto\n //\n case OpCode.OP_RIPEMD160:\n case OpCode.OP_SHA1:\n case OpCode.OP_SHA256:\n case OpCode.OP_HASH160:\n case OpCode.OP_HASH256:\n {\n // (in -- hash)\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n let buf = this.stack[this.stack.length - 1]\n // valtype vchnew Hash((opCode == OpCode.OP_RIPEMD160 || opCode == OpCode.OP_SHA1 || opCode == OpCode.OP_HASH160) ? 20 : 32)\n let bufHash\n if (opCodeNum === OpCode.OP_RIPEMD160) {\n bufHash = Hash.ripemd160(buf)\n } else if (opCodeNum === OpCode.OP_SHA1) {\n bufHash = Hash.sha1(buf)\n } else if (opCodeNum === OpCode.OP_SHA256) {\n bufHash = Hash.sha256(buf)\n } else if (opCodeNum === OpCode.OP_HASH160) {\n bufHash = Hash.sha256Ripemd160(buf)\n } else if (opCodeNum === OpCode.OP_HASH256) {\n bufHash = Hash.sha256Sha256(buf)\n }\n this.stack.pop()\n this.stack.push(bufHash)\n }\n break\n\n case OpCode.OP_CODESEPARATOR:\n // Hash starts after the code separator\n this.pBeginCodeHash = this.pc\n break\n\n case OpCode.OP_CHECKSIG:\n case OpCode.OP_CHECKSIGVERIFY:\n {\n // (sig pubKey -- bool)\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n let bufSig = this.stack[this.stack.length - 2]\n let bufPubKey = this.stack[this.stack.length - 1]\n\n // Subset of script starting at the most recent codeseparator\n // CScript scriptCode(pBeginCodeHash, pend)\n let subScript = new Script().fromObject({\n chunks: this.script.chunks.slice(this.pBeginCodeHash)\n })\n\n // https://github.com/Bitcoin-UAHF/spec/blob/master/replay-protected-sighash.md\n let nHashType =\n bufSig.length > 0 ? bufSig.readUInt8(bufSig.length - 1) : 0\n if (nHashType & Sig.SIGHASH_FORKID) {\n if (!(this.flags & Interp.SCRIPT_ENABLE_SIGHASH_FORKID)) {\n this.errStr = 'SCRIPT_ERR_ILLEGAL_FORKID'\n return false\n }\n } else {\n subScript.findAndDelete(new Script().writeBuffer(bufSig))\n }\n\n if (\n !this.checkSigEncoding(bufSig) ||\n !this.checkPubKeyEncoding(bufPubKey)\n ) {\n // serror is set\n return false\n }\n\n let fSuccess\n try {\n let sig = new Sig().fromTxFormat(bufSig)\n let pubKey = new PubKey().fromBuffer(bufPubKey, false)\n fSuccess = this.tx.verify(\n sig,\n pubKey,\n this.nIn,\n subScript,\n Boolean(this.flags & Interp.SCRIPT_VERIFY_LOW_S),\n this.valueBn,\n this.flags\n )\n } catch (e) {\n // invalid sig or pubKey\n fSuccess = false\n }\n\n this.stack.pop()\n this.stack.pop()\n // stack.push_back(fSuccess ? vchTrue : vchFalse)\n this.stack.push(fSuccess ? Interp.true : Interp.false)\n if (opCodeNum === OpCode.OP_CHECKSIGVERIFY) {\n if (fSuccess) {\n this.stack.pop()\n } else {\n this.errStr = 'SCRIPT_ERR_CHECKSIGVERIFY'\n return false\n }\n }\n }\n break\n\n case OpCode.OP_CHECKMULTISIG:\n case OpCode.OP_CHECKMULTISIGVERIFY:\n {\n // ([sig ...] num_of_signatures [pubKey ...] num_of_pubKeys -- bool)\n\n let i = 1\n if (this.stack.length < i) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n let nKeysCount = new Bn()\n .fromScriptNumBuffer(\n this.stack[this.stack.length - i],\n fRequireMinimal\n )\n .toNumber()\n if (nKeysCount < 0 || nKeysCount > 20) {\n this.errStr = 'SCRIPT_ERR_PUBKEY_COUNT'\n return false\n }\n this.nOpCount += nKeysCount\n if (this.nOpCount > 201) {\n this.errStr = 'SCRIPT_ERR_OP_COUNT'\n return false\n }\n // int ikey = ++i\n let ikey = ++i\n i += nKeysCount\n if (this.stack.length < i) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n let nSigsCount = new Bn()\n .fromScriptNumBuffer(\n this.stack[this.stack.length - i],\n fRequireMinimal\n )\n .toNumber()\n if (nSigsCount < 0 || nSigsCount > nKeysCount) {\n this.errStr = 'SCRIPT_ERR_SIG_COUNT'\n return false\n }\n // int isig = ++i\n let isig = ++i\n i += nSigsCount\n if (this.stack.length < i) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n // Subset of script starting at the most recent codeseparator\n let subScript = new Script().fromObject({\n chunks: this.script.chunks.slice(this.pBeginCodeHash)\n })\n\n for (let k = 0; k < nSigsCount; k++) {\n let bufSig = this.stack[this.stack.length - isig - k]\n\n // https://github.com/Bitcoin-UAHF/spec/blob/master/replay-protected-sighash.md\n let nHashType =\n bufSig.length > 0 ? bufSig.readUInt8(bufSig.length - 1) : 0\n if (nHashType & Sig.SIGHASH_FORKID) {\n if (!(this.flags & Interp.SCRIPT_ENABLE_SIGHASH_FORKID)) {\n this.errStr = 'SCRIPT_ERR_ILLEGAL_FORKID'\n return false\n }\n } else {\n // Drop the signature, since there's no way for a signature to sign itself\n subScript.findAndDelete(new Script().writeBuffer(bufSig))\n }\n }\n\n let fSuccess = true\n while (fSuccess && nSigsCount > 0) {\n // valtype& vchSig = stacktop(-isig)\n let bufSig = this.stack[this.stack.length - isig]\n // valtype& vchPubKey = stacktop(-ikey)\n let bufPubKey = this.stack[this.stack.length - ikey]\n\n if (\n !this.checkSigEncoding(bufSig) ||\n !this.checkPubKeyEncoding(bufPubKey)\n ) {\n // serror is set\n return false\n }\n\n let fOk\n try {\n let sig = new Sig().fromTxFormat(bufSig)\n let pubKey = new PubKey().fromBuffer(bufPubKey, false)\n fOk = this.tx.verify(\n sig,\n pubKey,\n this.nIn,\n subScript,\n Boolean(this.flags & Interp.SCRIPT_VERIFY_LOW_S),\n this.valueBn,\n this.flags\n )\n } catch (e) {\n // invalid sig or pubKey\n fOk = false\n }\n\n if (fOk) {\n isig++\n nSigsCount--\n }\n ikey++\n nKeysCount--\n\n // If there are more signatures left than keys left,\n // then too many signatures have failed\n if (nSigsCount > nKeysCount) {\n fSuccess = false\n }\n }\n\n // Clean up stack of actual arguments\n while (i-- > 1) {\n this.stack.pop()\n }\n\n // A bug causes CHECKMULTISIG to consume one extra argument\n // whose contents were not checked in any way.\n //\n // Unfortunately this is a potential source of mutability,\n // so optionally verify it is exactly equal to zero prior\n // to removing it from the stack.\n if (this.stack.length < 1) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n if (\n this.flags & Interp.SCRIPT_VERIFY_NULLDUMMY &&\n this.stack[this.stack.length - 1].length\n ) {\n this.errStr = 'SCRIPT_ERR_SIG_NULLDUMMY'\n return false\n }\n this.stack.pop()\n\n // stack.push_back(fSuccess ? vchTrue : vchFalse)\n this.stack.push(fSuccess ? Interp.true : Interp.false)\n\n if (opCodeNum === OpCode.OP_CHECKMULTISIGVERIFY) {\n if (fSuccess) {\n this.stack.pop()\n } else {\n this.errStr = 'SCRIPT_ERR_CHECKMULTISIGVERIFY'\n return false\n }\n }\n }\n break\n\n //\n // Byte string operations\n //\n case OpCode.OP_CAT:\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n let vch1 = this.stack[this.stack.length - 2]\n let vch2 = this.stack[this.stack.length - 1]\n \n this.stack[this.stack.length - 2] = Buffer.concat([vch1, vch2])\n this.stack.pop()\n break\n\n case OpCode.OP_SPLIT:\n if (this.stack.length < 2) {\n this.errStr = 'SCRIPT_ERR_INVALID_STACK_OPERATION'\n return false\n }\n\n let data = this.stack[this.stack.length - 2]\n let position = new Bn().fromScriptNumBuffer(\n this.stack[this.stack.length - 1],\n fRequireMinimal\n )\n\n if(position.lt(0) || position.gt(data.length)) {\n this.errStr = 'SCRIPT_ERR_INVALID_SPLIT_RANGE'\n return false\n }\n\n let n1 = data.slice(0, position)\n let n2 = data.slice(position)\n\n this.stack.pop()\n this.stack.pop()\n\n this.stack.push(n1)\n this.stack.push(n2)\n\n break\n\n default:\n this.errStr = 'SCRIPT_ERR_BAD_OPCODE'\n return false\n }\n }\n\n return true\n }\n\n /**\n * This function has the same interface as bitcoin core's VerifyScript and is\n * the function you want to use to know if a particular input in a\n * transaction is valid or not. It simply iterates over the results generated\n * by the results method.\n */\n verify (scriptSig, scriptPubKey, tx, nIn, flags, valueBn) {\n let results = this.results(\n scriptSig,\n scriptPubKey,\n tx,\n nIn,\n flags,\n valueBn\n )\n for (let success of results) {\n if (!success) {\n return false\n }\n }\n return true\n }\n\n /**\n * Gives you the results of the execution each operation of the scripSig and\n * scriptPubKey corresponding to a particular input (nIn) for the concerned\n * transaction (tx). Each result can be either true or false. If true, then\n * the operation did not invalidate the transaction. If false, then the\n * operation has invalidated the script, and the transaction is not valid.\n * flags is a number that can pass in some special flags, such as whether or\n * not to execute the redeemScript in a p2sh transaction.\n *\n * This method is translated from bitcoin core's VerifyScript. This function\n * is a generator, thus you can and need to iterate through it. To\n * automatically return true or false, use the verify method.\n */\n * results (scriptSig, scriptPubKey, tx, nIn, flags, valueBn) {\n let stackCopy\n\n this.fromObject({\n script: scriptSig,\n tx: tx,\n nIn: nIn,\n flags: flags,\n valueBn: valueBn\n })\n\n if (\n (flags & Interp.SCRIPT_VERIFY_SIGPUSHONLY) !== 0 &&\n !scriptSig.isPushOnly()\n ) {\n this.errStr = this.errStr || 'SCRIPT_ERR_SIG_PUSHONLY'\n yield false\n }\n\n yield * this.eval()\n\n if (flags & Interp.SCRIPT_VERIFY_P2SH) {\n stackCopy = this.stack.slice()\n }\n\n let stack = this.stack\n this.initialize()\n this.fromObject({\n script: scriptPubKey,\n stack: stack,\n tx: tx,\n nIn: nIn,\n flags: flags,\n valueBn: valueBn\n })\n\n yield * this.eval()\n\n if (this.stack.length === 0) {\n this.errStr = this.errStr || 'SCRIPT_ERR_EVAL_FALSE'\n yield false\n }\n\n let buf = this.stack[this.stack.length - 1]\n if (!Interp.castToBool(buf)) {\n this.errStr = this.errStr || 'SCRIPT_ERR_EVAL_FALSE'\n yield false\n }\n\n // Additional validation for spend-to-script-hash transactions:\n if (flags & Interp.SCRIPT_VERIFY_P2SH && scriptPubKey.isScriptHashOut()) {\n // scriptSig must be literals-only or validation fails\n if (!scriptSig.isPushOnly()) {\n this.errStr = this.errStr || 'SCRIPT_ERR_SIG_PUSHONLY'\n yield false\n }\n\n // Restore stack.\n let tmp = stack\n stack = stackCopy\n stackCopy = tmp\n\n // stack cannot be empty here, because if it was the\n // P2SH HASH <> EQUAL scriptPubKey would be evaluated with\n // an empty stack and the EvalScript above would yield false.\n if (stack.length === 0) {\n throw new Error('internal error - stack copy empty')\n }\n\n let pubKeySerialized = stack[stack.length - 1]\n let scriptPubKey2 = new Script().fromBuffer(pubKeySerialized)\n stack.pop()\n\n this.initialize()\n this.fromObject({\n script: scriptPubKey2,\n stack: stack,\n tx: tx,\n nIn: nIn,\n flags: flags,\n valueBn: valueBn\n })\n\n yield * this.eval()\n\n if (stack.length === 0) {\n this.errStr = this.errStr || 'SCRIPT_ERR_EVAL_FALSE'\n yield false\n }\n\n if (!Interp.castToBool(stack[stack.length - 1])) {\n this.errStr = this.errStr || 'SCRIPT_ERR_EVAL_FALSE'\n yield false\n } else {\n yield true\n }\n }\n\n // The CLEANSTACK check is only performed after potential P2SH evaluation,\n // as the non-P2SH evaluation of a P2SH script will obviously not result in\n // a clean stack (the P2SH inputs remain).\n if ((flags & Interp.SCRIPT_VERIFY_CLEANSTACK) !== 0) {\n // Disallow CLEANSTACK without P2SH, as otherwise a switch\n // CLEANSTACK->P2SH+CLEANSTACK would be possible, which is not a softfork\n // (and P2SH should be one).\n if (!(flags & Interp.SCRIPT_VERIFY_P2SH)) {\n throw new Error('cannot use CLEANSTACK without P2SH')\n }\n if (stack.length !== 1) {\n this.errStr = this.errStr || 'SCRIPT_ERR_CLEANSTACK'\n yield false\n }\n }\n\n yield true\n }\n\n /**\n * If the script has failed, this methods returns valuable debug\n * information about exactly where the script failed. It is a\n * JSON-compatible object so it can be easily stringified. pc refers to the\n * currently executing opcode.\n */\n getDebugObject () {\n let pc = this.pc - 1 // pc is incremented immediately after getting\n return {\n errStr: this.errStr,\n scriptStr: this.script ? this.script.toString() : 'no script found',\n pc: pc,\n stack: this.stack.map(buf => buf.toString('hex')),\n altStack: this.altStack.map(buf => buf.toString('hex')),\n opCodeStr: this.script\n ? OpCode.fromNumber(this.script.chunks[pc].opCodeNum).toString()\n : 'no script found'\n }\n }\n\n getDebugString () {\n return JSON.stringify(this.getDebugObject(), null, 2)\n }\n }\n\n Interp.true = Buffer.from([1])\n Interp.false = Buffer.from([])\n\n Interp.MAX_SCRIPT_ELEMENT_SIZE = 520\n Interp.LOCKTIME_THRESHOLD = 500000000 // Tue Nov 5 00:53:20 1985 UTC\n\n // flags taken from bitcoin core\n // bitcoin core commit: b5d1b1092998bc95313856d535c632ea5a8f9104\n Interp.SCRIPT_VERIFY_NONE = 0\n\n // Evaluate P2SH subScripts (softfork safe, Bip16).\n Interp.SCRIPT_VERIFY_P2SH = 1 << 0\n\n // Passing a non-strict-DER signature or one with undefined hashtype to a checksig operation causes script failure.\n // Passing a pubKey that is not (0x04 + 64 bytes) or (0x02 or 0x03 + 32 bytes) to checksig causes that pubKey to be\n // skipped (not softfork safe: this flag can widen the validity of OP_CHECKSIG OP_NOT).\n Interp.SCRIPT_VERIFY_STRICTENC = 1 << 1\n\n // Passing a non-strict-DER signature to a checksig operation causes script failure (softfork safe, Bip62 rule 1)\n Interp.SCRIPT_VERIFY_DERSIG = 1 << 2\n\n // Passing a non-strict-DER signature or one with S > order/2 to a checksig operation causes script failure\n // (softfork safe, Bip62 rule 5).\n Interp.SCRIPT_VERIFY_LOW_S = 1 << 3\n\n // verify dummy stack item consumed by CHECKMULTISIG is of zero-length (softfork safe, Bip62 rule 7).\n Interp.SCRIPT_VERIFY_NULLDUMMY = 1 << 4\n\n // Using a non-push operator in the scriptSig causes script failure (softfork safe, Bip62 rule 2).\n Interp.SCRIPT_VERIFY_SIGPUSHONLY = 1 << 5\n\n // Require minimal encodings for all push operations (OP_0... OP_16, OP_1NEGATE where possible, direct\n // pushes up to 75 bytes, OP_PUSHDATA up to 255 bytes, OP_PUSHDATA2 for anything larger). Evaluating\n // any other push causes the script to fail (Bip62 rule 3).\n // In addition, whenever a stack element is interpreted as a number, it must be of minimal length (Bip62 rule 4).\n // (softfork safe)\n Interp.SCRIPT_VERIFY_MINIMALDATA = 1 << 6\n\n // Discourage use of NOPs reserved for upgrades (NOP1-10)\n //\n // Provided so that nodes can avoid accepting or mining transactions\n // containing executed NOP's whose meaning may change after a soft-fork,\n // thus rendering the script invalid; with this flag set executing\n // discouraged NOPs fails the script. This verification flag will never be\n // a mandatory flag applied to scripts in a block. NOPs that are not\n // executed, e.g. within an unexecuted IF ENDIF block, are *not* rejected.\n Interp.SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS = 1 << 7\n\n // Require that only a single stack element remains after evaluation. This\n // changes the success criterion from \"At least one stack element must\n // remain, and when interpreted as a boolean, it must be true\" to \"Exactly\n // one stack element must remain, and when interpreted as a boolean, it must\n // be true\". (softfork safe, Bip62 rule 6)\n // Note: CLEANSTACK should never be used without P2SH.\n Interp.SCRIPT_VERIFY_CLEANSTACK = 1 << 8\n\n // Verify CHECKLOCKTIMEVERIFY\n //\n // See Bip65 for details.\n Interp.SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY = 1 << 9\n\n // support CHECKSEQUENCEVERIFY opCode\n //\n // See Bip112 for details\n Interp.SCRIPT_VERIFY_CHECKSEQUENCEVERIFY = 1 << 10\n\n // used for UAHF\n // https://github.com/Bitcoin-UAHF/spec/blob/master/replay-protected-sighash.md\n Interp.SCRIPT_ENABLE_SIGHASH_FORKID = 1 << 16\n\n // These are the things we wish to verify by default. At the time of writing,\n // P2SH and CHECKLOCKTIMEVERIFY are both active, but CHECKSEQUENCEVERIFY is\n // not.\n Interp.defaultFlags =\n Interp.SCRIPT_VERIFY_P2SH | Interp.SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY\n // Interp.defaultFlags = Interp.SCRIPT_VERIFY_P2SH | Interp.SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY | Interp.SCRIPT_VERIFY_CHECKSEQUENCEVERIFY\n\nexport { Interp }\n","/**\n * PubKey Map\n * ==========\n *\n * A map from (transaction hash, output number) to (script chunk index, pubKey).\n * Whening signing a bitcoin transaction, we need to be able to sign an input\n * with the correct key and also we need to know where to put signature when we\n * get it. This mapping allows us to find the key for an associated input (which\n * is identified by tx output hash and number) with which to sign the\n * transaction and then also to know where to insert the signature into the\n * input script. This gets us the public key, and we need a different method to\n * get the private key. That is because we often know the public key to be used\n * but may not have access to the private key until the entire tx is sent to\n * where the private keys are.\n */\n'use strict'\n\nimport { Struct } from './struct'\nimport { Sig } from './sig'\n\nclass SigOperations extends Struct {\n constructor (map = new Map()) {\n super({ map })\n }\n\n toJSON () {\n const json = {}\n this.map.forEach((arr, label) => {\n json[label] = arr.map(obj => ({\n nScriptChunk: obj.nScriptChunk,\n type: obj.type, // 'sig' or 'pubKey'\n addressStr: obj.addressStr,\n nHashType: obj.nHashType,\n log: obj.log\n }))\n })\n return json\n }\n\n fromJSON (json) {\n Object.keys(json).forEach(label => {\n this.map.set(label, json[label].map(obj => ({\n nScriptChunk: obj.nScriptChunk,\n type: obj.type,\n addressStr: obj.addressStr,\n nHashType: obj.nHashType,\n log: obj.log\n })))\n })\n return this\n }\n\n /**\n * Set an address to in the map for use with single-sig.\n *\n * @param {Buffer} txHashBuf The hash of a transsaction. Note that this is\n * *not* the reversed transaction id, but is the raw hash.\n * @param {Number} txOutNum The output number, a.k.a. the \"vout\".\n * @param {Number} nScriptChunk The index of the chunk of the script where\n * we are going to place the signature.\n * @param {String} addressStr The addressStr coresponding to this (txHashBuf,\n * txOutNum, nScriptChunk) where we are going to sign and insert the\n * signature or public key.\n * @param {Number} nHashType Usually = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID\n */\n setOne (txHashBuf, txOutNum, nScriptChunk, type = 'sig', addressStr, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID) {\n const label = txHashBuf.toString('hex') + ':' + txOutNum\n const obj = { nScriptChunk, type, addressStr, nHashType }\n this.map.set(label, [obj])\n return this\n }\n\n /**\n * Set a bunch of addresses for signing an input such as for use with multi-sig.\n *\n * @param {Buffer} txHashBuf The hash of a transsaction. Note that this is\n * *not* the reversed transaction id, but is the raw hash.\n * @param {Number} txOutNum The output number, a.k.a. the \"vout\".\n * @param {Array} arr Must take the form of [{nScriptChunk, type, addressStr, nHashType}, ...]\n */\n setMany (txHashBuf, txOutNum, arr) {\n const label = txHashBuf.toString('hex') + ':' + txOutNum\n arr = arr.map(obj => ({\n type: obj.type || 'sig',\n nHashType: obj.nHashType || Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID,\n ...obj\n }))\n this.map.set(label, arr)\n return this\n }\n\n addOne (txHashBuf, txOutNum, nScriptChunk, type = 'sig', addressStr, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID) {\n const arr = this.get(txHashBuf, txOutNum) || []\n arr.push({\n nScriptChunk,\n type,\n addressStr,\n nHashType\n })\n this.setMany(txHashBuf, txOutNum, arr)\n return this\n }\n\n /**\n * Get an address from the map\n *\n * @param {Buffer} txHashBuf The hash of a transction. Note that this is *not*\n * the reversed transaction id, but is the raw hash.\n * @param {Number} txOutNum The output number, a.k.a. the \"vout\".\n * @param {Number} nScriptChunk The index of the chunk of the script where\n * we are going to place the signature.\n * @returns {PubKey}\n */\n get (txHashBuf, txOutNum) {\n const label = txHashBuf.toString('hex') + ':' + txOutNum\n return this.map.get(label)\n }\n}\n\nexport { SigOperations }\n","/**\n * Transaction Output Map\n * ======================\n *\n * A map from a transaction hash and output number to that particular output.\n * Note that the map is from the transaction *hash*, which is the value that\n * occurs in the blockchain, not the id, which is the reverse of the hash. The\n * TxOutMap is necessary when signing a transction to get the script and value\n * of that output which is plugged into the sighash algorithm.\n */\n'use strict'\n\nimport { Struct } from './struct'\nimport { TxOut } from './tx-out'\n\nclass TxOutMap extends Struct {\n constructor (map = new Map()) {\n super({ map })\n }\n\n toJSON () {\n const json = {}\n this.map.forEach((txOut, label) => {\n json[label] = txOut.toHex()\n })\n return json\n }\n\n fromJSON (json) {\n Object.keys(json).forEach(label => {\n this.map.set(label, TxOut.fromHex(json[label]))\n })\n return this\n }\n\n set (txHashBuf, txOutNum, txOut) {\n const label = txHashBuf.toString('hex') + ':' + txOutNum\n this.map.set(label, txOut)\n return this\n }\n\n get (txHashBuf, txOutNum) {\n const label = txHashBuf.toString('hex') + ':' + txOutNum\n return this.map.get(label)\n }\n\n setTx (tx) {\n const txhashhex = tx.hash().toString('hex')\n tx.txOuts.forEach((txOut, index) => {\n const label = txhashhex + ':' + index\n this.map.set(label, txOut)\n })\n return this\n }\n}\n\nexport { TxOutMap }\n","/**\n * Transaction Builder\n * ===================\n */\n'use strict'\n\nimport { Address } from './address'\nimport { Constants as Cst } from './constants'\nimport { Bn } from './bn'\nimport { HashCache } from './hash-cache'\nimport { Script } from './script'\nimport { SigOperations } from './sig-operations'\nimport { Sig } from './sig'\nimport { Struct } from './struct'\nimport { Tx } from './tx'\nimport { TxIn } from './tx-in'\nimport { TxOut } from './tx-out'\nimport { TxOutMap } from './tx-out-map'\nimport { VarInt } from './var-int'\n\nconst Constants = Cst.Default.TxBuilder\n\nclass TxBuilder extends Struct {\n constructor (\n tx = new Tx(),\n txIns = [],\n txOuts = [],\n uTxOutMap = new TxOutMap(),\n sigOperations = new SigOperations(),\n changeScript,\n changeAmountBn,\n feeAmountBn,\n feePerKbNum = Constants.feePerKbNum,\n nLockTime = 0,\n versionBytesNum = 1,\n sigsPerInput = 1,\n dust = Constants.dust,\n dustChangeToFees = false,\n hashCache = new HashCache()\n ) {\n super({\n tx,\n txIns,\n txOuts,\n uTxOutMap,\n sigOperations,\n changeScript,\n changeAmountBn,\n feeAmountBn,\n feePerKbNum,\n nLockTime,\n versionBytesNum,\n sigsPerInput,\n dust,\n dustChangeToFees,\n hashCache\n })\n }\n\n toJSON () {\n const json = {}\n json.tx = this.tx.toHex()\n json.txIns = this.txIns.map(txIn => txIn.toHex())\n json.txOuts = this.txOuts.map(txOut => txOut.toHex())\n json.uTxOutMap = this.uTxOutMap.toJSON()\n json.sigOperations = this.sigOperations.toJSON()\n json.changeScript = this.changeScript ? this.changeScript.toHex() : undefined\n json.changeAmountBn = this.changeAmountBn ? this.changeAmountBn.toNumber() : undefined\n json.feeAmountBn = this.feeAmountBn ? this.feeAmountBn.toNumber() : undefined\n json.feePerKbNum = this.feePerKbNum\n json.sigsPerInput = this.sigsPerInput\n json.dust = this.dust\n json.dustChangeToFees = this.dustChangeToFees\n json.hashCache = this.hashCache.toJSON()\n return json\n }\n\n fromJSON (json) {\n this.tx = new Tx().fromHex(json.tx)\n this.txIns = json.txIns.map(txIn => TxIn.fromHex(txIn))\n this.txOuts = json.txOuts.map(txOut => TxOut.fromHex(txOut))\n this.uTxOutMap = new TxOutMap().fromJSON(json.uTxOutMap)\n this.sigOperations = new SigOperations().fromJSON(json.sigOperations)\n this.changeScript = json.changeScript ? new Script().fromHex(json.changeScript) : undefined\n this.changeAmountBn = json.changeAmountBn ? new Bn(json.changeAmountBn) : undefined\n this.feeAmountBn = json.feeAmountBn ? new Bn(json.feeAmountBn) : undefined\n this.feePerKbNum = json.feePerKbNum || this.feePerKbNum\n this.sigsPerInput = json.sigsPerInput || this.sigsPerInput\n this.dust = json.dust || this.dust\n this.dustChangeToFees =\n json.dustChangeToFees || this.dustChangeToFees\n this.hashCache = HashCache.fromJSON(json.hashCache)\n return this\n }\n\n setFeePerKbNum (feePerKbNum) {\n if (typeof feePerKbNum !== 'number' || feePerKbNum <= 0) {\n throw new Error('cannot set a fee of zero or less')\n }\n this.feePerKbNum = feePerKbNum\n return this\n }\n\n setChangeAddress (changeAddress) {\n this.changeScript = changeAddress.toTxOutScript()\n return this\n }\n\n setChangeScript (changeScript) {\n this.changeScript = changeScript\n return this\n }\n\n /**\n * nLockTime is an unsigned integer.\n */\n setNLocktime (nLockTime) {\n this.nLockTime = nLockTime\n return this\n }\n\n setVersion (versionBytesNum) {\n this.versionBytesNum = versionBytesNum\n return this\n }\n\n /**\n * Sometimes one of your outputs or the change output will be less than\n * dust. Values less than dust cannot be broadcast. If you are OK with\n * sending dust amounts to fees, then set this value to true.\n */\n setDust (dust = Constants.dust) {\n this.dust = dust\n return this\n }\n\n /**\n * Sometimes one of your outputs or the change output will be less than\n * dust. Values less than dust cannot be broadcast. If you are OK with\n * sending dust amounts to fees, then set this value to true. We\n * preferentially send all dust to the change if possible. However, that\n * might not be possible if the change itself is less than dust, in which\n * case all dust goes to fees.\n */\n sendDustChangeToFees (dustChangeToFees = false) {\n this.dustChangeToFees = dustChangeToFees\n return this\n }\n\n /**\n * Import a transaction partially signed by someone else. The only thing you\n * can do after this is sign one or more inputs. Usually used for multisig\n * transactions. uTxOutMap is optional. It is not necessary so long as you\n * pass in the txOut when you sign. You need to know the output when signing\n * an input, including the script in the output, which is why this is\n * necessary when signing an input.\n */\n importPartiallySignedTx (tx, uTxOutMap = this.uTxOutMap, sigOperations = this.sigOperations) {\n this.tx = tx\n this.uTxOutMap = uTxOutMap\n this.sigOperations = sigOperations\n return this\n }\n\n /**\n * Pay \"from\" a script - in other words, add an input to the transaction.\n */\n inputFromScript (txHashBuf, txOutNum, txOut, script, nSequence) {\n if (\n !Buffer.isBuffer(txHashBuf) ||\n !(typeof txOutNum === 'number') ||\n !(txOut instanceof TxOut) ||\n !(script instanceof Script)\n ) {\n throw new Error('invalid one of: txHashBuf, txOutNum, txOut, script')\n }\n this.txIns.push(\n TxIn.fromProperties(txHashBuf, txOutNum, script, nSequence)\n )\n this.uTxOutMap.set(txHashBuf, txOutNum, txOut)\n return this\n }\n\n addSigOperation (txHashBuf, txOutNum, nScriptChunk, type, addressStr, nHashType) {\n this.sigOperations.addOne(txHashBuf, txOutNum, nScriptChunk, type, addressStr, nHashType)\n return this\n }\n\n /**\n * Pay \"from\" a pubKeyHash output - in other words, add an input to the\n * transaction.\n */\n inputFromPubKeyHash (txHashBuf, txOutNum, txOut, pubKey, nSequence, nHashType) {\n if (\n !Buffer.isBuffer(txHashBuf) ||\n typeof txOutNum !== 'number' ||\n !(txOut instanceof TxOut)\n ) {\n throw new Error('invalid one of: txHashBuf, txOutNum, txOut')\n }\n this.txIns.push(\n new TxIn()\n .fromObject({ nSequence })\n .fromPubKeyHashTxOut(txHashBuf, txOutNum, txOut, pubKey)\n )\n this.uTxOutMap.set(txHashBuf, txOutNum, txOut)\n const addressStr = Address.fromTxOutScript(txOut.script).toString()\n this.addSigOperation(txHashBuf, txOutNum, 0, 'sig', addressStr, nHashType)\n this.addSigOperation(txHashBuf, txOutNum, 1, 'pubKey', addressStr)\n return this\n }\n\n /**\n * An address to send funds to, along with the amount. The amount should be\n * denominated in satoshis, not bitcoins.\n */\n outputToAddress (valueBn, addr) {\n if (!(addr instanceof Address) || !(valueBn instanceof Bn)) {\n throw new Error('addr must be an Address, and valueBn must be a Bn')\n }\n const script = new Script().fromPubKeyHash(addr.hashBuf)\n this.outputToScript(valueBn, script)\n return this\n }\n\n /**\n * A script to send funds to, along with the amount. The amount should be\n * denominated in satoshis, not bitcoins.\n */\n outputToScript (valueBn, script) {\n if (!(script instanceof Script) || !(valueBn instanceof Bn)) {\n throw new Error('script must be a Script, and valueBn must be a Bn')\n }\n const txOut = TxOut.fromProperties(valueBn, script)\n this.txOuts.push(txOut)\n return this\n }\n\n buildOutputs () {\n let outAmountBn = new Bn(0)\n this.txOuts.forEach(txOut => {\n if (txOut.valueBn.lt(this.dust) && !txOut.script.isOpReturn() && !txOut.script.isSafeDataOut()) {\n throw new Error('cannot create output lesser than dust')\n }\n outAmountBn = outAmountBn.add(txOut.valueBn)\n this.tx.addTxOut(txOut)\n })\n return outAmountBn\n }\n\n buildInputs (outAmountBn, extraInputsNum = 0) {\n let inAmountBn = new Bn(0)\n for (const txIn of this.txIns) {\n const txOut = this.uTxOutMap.get(txIn.txHashBuf, txIn.txOutNum)\n inAmountBn = inAmountBn.add(txOut.valueBn)\n this.tx.addTxIn(txIn)\n if (inAmountBn.geq(outAmountBn)) {\n if (extraInputsNum <= 0) {\n break\n }\n extraInputsNum--\n }\n }\n if (inAmountBn.lt(outAmountBn)) {\n throw new Error(\n 'not enough funds for outputs: inAmountBn ' +\n inAmountBn.toNumber() +\n ' outAmountBn ' +\n outAmountBn.toNumber()\n )\n }\n return inAmountBn\n }\n\n // Thanks to SigOperations, if those are accurately used, then we can\n // accurately estimate what the size of the transaction is going to be once\n // all the signatures and public keys are inserted.\n estimateSize () {\n // largest possible sig size. final 1 is for pushdata at start. second to\n // final is sighash byte. the rest are DER encoding.\n const sigSize = 1 + 1 + 1 + 1 + 32 + 1 + 1 + 32 + 1 + 1\n // length of script, y odd, x value - assumes compressed public key\n const pubKeySize = 1 + 1 + 33\n\n let size = this.tx.toBuffer().length\n\n this.tx.txIns.forEach((txIn) => {\n const { txHashBuf, txOutNum } = txIn\n const sigOperations = this.sigOperations.get(txHashBuf, txOutNum)\n sigOperations.forEach((obj) => {\n const { nScriptChunk, type } = obj\n const script = new Script([txIn.script.chunks[nScriptChunk]])\n const scriptSize = script.toBuffer().length\n size -= scriptSize\n if (type === 'sig') {\n size += sigSize\n } else if (obj.type === 'pubKey') {\n size += pubKeySize\n } else {\n throw new Error('unsupported sig operations type')\n }\n })\n })\n\n // size = size + sigSize * this.tx.txIns.length\n size = size + 1 // assume txInsVi increases by 1 byte\n return Math.round(size)\n }\n\n estimateFee (extraFeeAmount = new Bn(0)) {\n // old style rounding up per kb - pays too high fees:\n // const fee = Math.ceil(this.estimateSize() / 1000) * this.feePerKbNum\n\n // new style pays lower fees - rounds up to satoshi, not per kb:\n const fee = Math.ceil(this.estimateSize() / 1000 * this.feePerKbNum)\n\n return new Bn(fee).add(extraFeeAmount)\n }\n\n /**\n * Builds the transaction and adds the appropriate fee by subtracting from\n * the change output. Note that by default the TxBuilder will use as many\n * inputs as necessary to pay the output amounts and the required fee. The\n * TxBuilder will not necessarily us all the inputs. To force the TxBuilder\n * to use all the inputs (such as if you wish to spend the entire balance\n * of a wallet), set the argument useAllInputs = true.\n */\n build (opts = { useAllInputs: false }) {\n let minFeeAmountBn\n if (this.txIns.length <= 0) {\n throw Error('tx-builder number of inputs must be greater than 0')\n }\n if (!this.changeScript) {\n throw new Error('must specify change script to use build method')\n }\n for (\n let extraInputsNum = opts.useAllInputs ? this.txIns.length - 1 : 0;\n extraInputsNum < this.txIns.length;\n extraInputsNum++\n ) {\n this.tx = new Tx()\n const outAmountBn = this.buildOutputs()\n const changeTxOut = TxOut.fromProperties(new Bn(0), this.changeScript)\n this.tx.addTxOut(changeTxOut)\n\n let inAmountBn\n try {\n inAmountBn = this.buildInputs(outAmountBn, extraInputsNum)\n } catch (err) {\n if (err.message.includes('not enough funds for outputs')) {\n throw new Error('unable to gather enough inputs for outputs and fee')\n } else {\n throw err\n }\n }\n\n // Set change amount from inAmountBn - outAmountBn\n this.changeAmountBn = inAmountBn.sub(outAmountBn)\n changeTxOut.valueBn = this.changeAmountBn\n\n minFeeAmountBn = this.estimateFee()\n if (\n this.changeAmountBn.geq(minFeeAmountBn) &&\n this.changeAmountBn.sub(minFeeAmountBn).gt(this.dust)\n ) {\n break\n }\n }\n if (this.changeAmountBn.geq(minFeeAmountBn)) {\n // Subtract fee from change\n this.feeAmountBn = minFeeAmountBn\n this.changeAmountBn = this.changeAmountBn.sub(this.feeAmountBn)\n this.tx.txOuts[this.tx.txOuts.length - 1].valueBn = this.changeAmountBn\n\n if (this.changeAmountBn.lt(this.dust)) {\n if (this.dustChangeToFees) {\n // Remove the change amount since it is less than dust and the\n // builder has requested dust be sent to fees.\n this.tx.txOuts.pop()\n this.tx.txOutsVi = VarInt.fromNumber(this.tx.txOutsVi.toNumber() - 1)\n this.feeAmountBn = this.feeAmountBn.add(this.changeAmountBn)\n this.changeAmountBn = new Bn(0)\n } else {\n throw new Error('unable to create change amount greater than dust')\n }\n }\n\n this.tx.nLockTime = this.nLockTime\n this.tx.versionBytesNum = this.versionBytesNum\n if (this.tx.txOuts.length === 0) {\n throw new Error(\n 'outputs length is zero - unable to create any outputs greater than dust'\n )\n }\n return this\n } else {\n throw new Error('unable to gather enough inputs for outputs and fee')\n }\n }\n\n // BIP 69 sorting. call after build() but before sign()\n sort () {\n this.tx.sort()\n return this\n }\n\n /**\n * Check if all signatures are present in a multisig input script.\n */\n static allSigsPresent (m, script) {\n // The first element is a Famous MultiSig Bug OP_0, and last element is the\n // redeemScript. The rest are signatures.\n let present = 0\n for (let i = 1; i < script.chunks.length - 1; i++) {\n if (script.chunks[i].buf) {\n present++\n }\n }\n return present === m\n }\n\n /**\n * Remove blank signatures in a multisig input script.\n */\n static removeBlankSigs (script) {\n // The first element is a Famous MultiSig Bug OP_0, and last element is the\n // redeemScript. The rest are signatures.\n script = new Script(script.chunks.slice()) // copy the script\n for (let i = 1; i < script.chunks.length - 1; i++) {\n if (!script.chunks[i].buf) {\n script.chunks.splice(i, 1) // remove ith element\n }\n }\n return script\n }\n\n fillSig (nIn, nScriptChunk, sig) {\n const txIn = this.tx.txIns[nIn]\n txIn.script.chunks[nScriptChunk] = new Script().writeBuffer(\n sig.toTxFormat()\n ).chunks[0]\n txIn.scriptVi = VarInt.fromNumber(txIn.script.toBuffer().length)\n return this\n }\n\n /**\n * Sign an input, but do not fill the signature into the transaction. Return\n * the signature.\n *\n * For a normal transaction, subScript is usually the scriptPubKey. If\n * you're not normal because you're using OP_CODESEPARATORs, you know what\n * to do.\n */\n getSig (keyPair, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID, nIn, subScript, flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID) {\n let valueBn\n if (\n nHashType & Sig.SIGHASH_FORKID &&\n flags & Tx.SCRIPT_ENABLE_SIGHASH_FORKID\n ) {\n const txHashBuf = this.tx.txIns[nIn].txHashBuf\n const txOutNum = this.tx.txIns[nIn].txOutNum\n const txOut = this.uTxOutMap.get(txHashBuf, txOutNum)\n if (!txOut) {\n throw new Error('for SIGHASH_FORKID must provide UTXOs')\n }\n valueBn = txOut.valueBn\n }\n return this.tx.sign(keyPair, nHashType, nIn, subScript, valueBn, flags, this.hashCache)\n }\n\n /**\n * Asynchronously sign an input in a worker, but do not fill the signature\n * into the transaction. Return the signature.\n */\n asyncGetSig (keyPair, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID, nIn, subScript, flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID) {\n let valueBn\n if (\n nHashType & Sig.SIGHASH_FORKID &&\n flags & Tx.SCRIPT_ENABLE_SIGHASH_FORKID\n ) {\n const txHashBuf = this.tx.txIns[nIn].txHashBuf\n const txOutNum = this.tx.txIns[nIn].txOutNum\n const txOut = this.uTxOutMap.get(txHashBuf, txOutNum)\n if (!txOut) {\n throw new Error('for SIGHASH_FORKID must provide UTXOs')\n }\n valueBn = txOut.valueBn\n }\n return this.tx.asyncSign(\n keyPair,\n nHashType,\n nIn,\n subScript,\n valueBn,\n flags,\n this.hashCache\n )\n }\n\n /**\n * Sign ith input with keyPair and insert the signature into the transaction.\n * This method only works for some standard transaction types. For\n * non-standard transaction types, use getSig.\n */\n signTxIn (nIn, keyPair, txOut, nScriptChunk, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID, flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID) {\n const txIn = this.tx.txIns[nIn]\n const script = txIn.script\n if (nScriptChunk === undefined && script.isPubKeyHashIn()) {\n nScriptChunk = 0\n }\n if (nScriptChunk === undefined) {\n throw new Error('cannot sign unknown script type for input ' + nIn)\n }\n const txHashBuf = txIn.txHashBuf\n const txOutNum = txIn.txOutNum\n if (!txOut) {\n txOut = this.uTxOutMap.get(txHashBuf, txOutNum)\n }\n const outScript = txOut.script\n const subScript = outScript // true for standard script types\n const sig = this.getSig(keyPair, nHashType, nIn, subScript, flags, this.hashCache)\n this.fillSig(nIn, nScriptChunk, sig)\n return this\n }\n\n /**\n * Asynchronously sign ith input with keyPair in a worker and insert the\n * signature into the transaction. This method only works for some standard\n * transaction types. For non-standard transaction types, use asyncGetSig.\n */\n async asyncSignTxIn (nIn, keyPair, txOut, nScriptChunk, nHashType = Sig.SIGHASH_ALL | Sig.SIGHASH_FORKID, flags = Tx.SCRIPT_ENABLE_SIGHASH_FORKID) {\n const txIn = this.tx.txIns[nIn]\n const script = txIn.script\n if (nScriptChunk === undefined && script.isPubKeyHashIn()) {\n nScriptChunk = 0\n }\n if (nScriptChunk === undefined) {\n throw new Error('cannot sign unknown script type for input ' + nIn)\n }\n const txHashBuf = txIn.txHashBuf\n const txOutNum = txIn.txOutNum\n if (!txOut) {\n txOut = this.uTxOutMap.get(txHashBuf, txOutNum)\n }\n const outScript = txOut.script\n const subScript = outScript // true for standard script types\n const sig = await this.asyncGetSig(keyPair, nHashType, nIn, subScript, flags, this.hashCache)\n this.fillSig(nIn, nScriptChunk, sig)\n return this\n }\n\n signWithKeyPairs (keyPairs) {\n // produce map of addresses to private keys\n const addressStrMap = {}\n for (const keyPair of keyPairs) {\n const addressStr = Address.fromPubKey(keyPair.pubKey).toString()\n addressStrMap[addressStr] = keyPair\n }\n // loop through all inputs\n for (const nIn in this.tx.txIns) {\n const txIn = this.tx.txIns[nIn]\n // for each input, use sigOperations to get list of signatures and pubkeys\n // to be produced and inserted\n const arr = this.sigOperations.get(txIn.txHashBuf, txIn.txOutNum)\n for (const obj of arr) {\n // for each pubkey, get the privkey from the privkey map and sign the input\n const { nScriptChunk, type, addressStr, nHashType } = obj\n const keyPair = addressStrMap[addressStr]\n if (!keyPair) {\n obj.log = `cannot find keyPair for addressStr ${addressStr}`\n continue\n }\n const txOut = this.uTxOutMap.get(txIn.txHashBuf, txIn.txOutNum)\n if (type === 'sig') {\n this.signTxIn(nIn, keyPair, txOut, nScriptChunk, nHashType)\n obj.log = 'successfully inserted signature'\n } else if (type === 'pubKey') {\n txIn.script.chunks[nScriptChunk] = new Script().writeBuffer(\n keyPair.pubKey.toBuffer()\n ).chunks[0]\n txIn.setScript(txIn.script)\n obj.log = 'successfully inserted public key'\n } else {\n obj.log = `cannot perform operation of type ${type}`\n continue\n }\n }\n }\n return this\n }\n}\n\nexport { TxBuilder }\n","/**\n * Transaction Verifier\n * ====================\n */\n'use strict'\n\nimport { Bn } from './bn'\nimport { Block } from './block'\nimport { Interp } from './interp'\nimport { Struct } from './struct'\nimport { Tx } from './tx'\nimport { Workers } from './workers'\n\nclass TxVerifier extends Struct {\n constructor (tx, txOutMap, errStr, interp) {\n super({ tx, txOutMap, errStr, interp })\n }\n\n /**\n * Verifies that the transaction is valid both by performing basic checks, such\n * as ensuring that no two inputs are the same, as well as by verifying every\n * script. The two checks are checkStr, which is analagous to bitcoind's\n * CheckTransaction, and verifyStr, which runs the script interpreter.\n *\n * This does NOT check that any possible claimed fees are accurate; checking\n * that the fees are accurate requires checking that the input transactions are\n * valid, which is not performed by this test. That check is done with the\n * normal verify function.\n */\n verify (flags = Interp.SCRIPT_ENABLE_SIGHASH_FORKID) {\n return !this.checkStr() && !this.verifyStr(flags)\n }\n\n /*\n * Returns true if the transaction was verified successfully (that is no\n * error was found), and false otherwise. In case an error was found the\n * error message can be accessed by calling this.getDebugString().\n */\n async asyncVerify (flags) {\n const verifyStr = await this.asyncVerifyStr(flags)\n return !this.checkStr() && !verifyStr\n }\n\n /**\n * Convenience method to verify a transaction.\n */\n static verify (tx, txOutMap, flags) {\n return new TxVerifier(tx, txOutMap).verify(flags)\n }\n\n static asyncVerify (tx, txOutMap, flags) {\n return new TxVerifier(tx, txOutMap).asyncVerify(flags)\n }\n\n /**\n * Check that a transaction passes basic sanity tests. If not, return a string\n * describing the error. This function contains the same logic as\n * CheckTransaction in bitcoin core.\n */\n checkStr () {\n // Basic checks that don't depend on any context\n if (this.tx.txIns.length === 0 || this.tx.txInsVi.toNumber() === 0) {\n this.errStr = 'transaction txIns empty'\n return this.errStr\n }\n if (this.tx.txOuts.length === 0 || this.tx.txOutsVi.toNumber() === 0) {\n this.errStr = 'transaction txOuts empty'\n return this.errStr\n }\n\n // Size limits\n if (this.tx.toBuffer().length > Block.MAX_BLOCK_SIZE) {\n this.errStr = 'transaction over the maximum block size'\n return this.errStr\n }\n\n // Check for negative or overflow output values\n let valueoutbn = new Bn(0)\n for (let i = 0; i < this.tx.txOuts.length; i++) {\n const txOut = this.tx.txOuts[i]\n if (txOut.valueBn.lt(0)) {\n this.errStr = 'transaction txOut ' + i + ' negative'\n return this.errStr\n }\n if (txOut.valueBn.gt(Tx.MAX_MONEY)) {\n this.errStr = 'transaction txOut ' + i + ' greater than MAX_MONEY'\n return this.errStr\n }\n valueoutbn = valueoutbn.add(txOut.valueBn)\n if (valueoutbn.gt(Tx.MAX_MONEY)) {\n this.errStr =\n 'transaction txOut ' + i + ' total output greater than MAX_MONEY'\n return this.errStr\n }\n }\n\n // Check for duplicate inputs\n const txInmap = {}\n for (let i = 0; i < this.tx.txIns.length; i++) {\n const txIn = this.tx.txIns[i]\n const inputid = txIn.txHashBuf.toString('hex') + ':' + txIn.txOutNum\n if (txInmap[inputid] !== undefined) {\n this.errStr = 'transaction input ' + i + ' duplicate input'\n return this.errStr\n }\n txInmap[inputid] = true\n }\n\n if (this.tx.isCoinbase()) {\n const buf = this.tx.txIns[0].script.toBuffer()\n if (buf.length < 2 || buf.length > 100) {\n this.errStr = 'coinbase trasaction script size invalid'\n return this.errStr\n }\n } else {\n for (let i = 0; i < this.tx.txIns.length; i++) {\n if (this.tx.txIns[i].hasNullInput()) {\n this.errStr = 'transaction input ' + i + ' has null input'\n return this.errStr\n }\n }\n }\n return false\n }\n\n /**\n * verify the transaction inputs by running the script interpreter. Returns a\n * string of the script interpreter is invalid, otherwise returns false.\n */\n verifyStr (flags) {\n for (let i = 0; i < this.tx.txIns.length; i++) {\n if (!this.verifyNIn(i, flags)) {\n this.errStr = 'input ' + i + ' failed script verify'\n return this.errStr\n }\n }\n return false\n }\n\n async asyncVerifyStr (flags) {\n for (let i = 0; i < this.tx.txIns.length; i++) {\n const verifyNIn = await this.asyncVerifyNIn(i, flags)\n if (!verifyNIn) {\n this.errStr = 'input ' + i + ' failed script verify'\n return this.errStr\n }\n }\n return false\n }\n\n /**\n * Verify a particular input by running the script interpreter. Returns true if\n * the input is valid, false otherwise.\n */\n verifyNIn (nIn, flags) {\n const txIn = this.tx.txIns[nIn]\n const scriptSig = txIn.script\n const txOut = this.txOutMap.get(txIn.txHashBuf, txIn.txOutNum)\n if (!txOut) {\n console.log('output ' + txIn.txOutNum + ' not found')\n return false\n }\n const scriptPubKey = txOut.script\n const valueBn = txOut.valueBn\n this.interp = new Interp()\n const verified = this.interp.verify(\n scriptSig,\n scriptPubKey,\n this.tx,\n nIn,\n flags,\n valueBn\n )\n return verified\n }\n\n async asyncVerifyNIn (nIn, flags) {\n const txIn = this.tx.txIns[nIn]\n const scriptSig = txIn.script\n const txOut = this.txOutMap.get(txIn.txHashBuf, txIn.txOutNum)\n if (!txOut) {\n console.log('output ' + txIn.txOutNum + ' not found')\n return false\n }\n const scriptPubKey = txOut.script\n const valueBn = txOut.valueBn\n this.interp = new Interp()\n const workersResult = await Workers.asyncObjectMethod(\n this.interp,\n 'verify',\n [scriptSig, scriptPubKey, this.tx, nIn, flags, valueBn]\n )\n const verified = JSON.parse(workersResult.resbuf.toString())\n return verified\n }\n\n getDebugObject () {\n return {\n errStr: this.errStr,\n interpFailure: this.interp ? this.interp.getDebugObject() : undefined\n }\n }\n\n getDebugString () {\n return JSON.stringify(this.getDebugObject(), null, 2)\n }\n}\n\nexport { TxVerifier }\n","/**\n * Aes (experimental)\n * ==================\n *\n * Advanced Encryption Standard (Aes). This is a low-level tool for encrypting\n * or decrypting blocks of data. There is almost never a reason to use this -\n * don't use it unless you need to encrypt or decrypt individual blocks.\n */\n'use strict'\n\nimport _Aes from 'aes'\n\nclass Aes { }\n\nAes.encrypt = function (messageBuf, keyBuf) {\n const key = Aes.buf2Words(keyBuf)\n const message = Aes.buf2Words(messageBuf)\n const a = new _Aes(key)\n const enc = a.encrypt(message)\n const encBuf = Aes.words2Buf(enc)\n return encBuf\n}\n\nAes.decrypt = function (encBuf, keyBuf) {\n const enc = Aes.buf2Words(encBuf)\n const key = Aes.buf2Words(keyBuf)\n const a = new _Aes(key)\n const message = a.decrypt(enc)\n const messageBuf = Aes.words2Buf(message)\n return messageBuf\n}\n\nAes.buf2Words = function (buf) {\n if (buf.length % 4) {\n throw new Error('buf length must be a multiple of 4')\n }\n\n const words = []\n\n for (let i = 0; i < buf.length / 4; i++) {\n words.push(buf.readUInt32BE(i * 4))\n }\n\n return words\n}\n\nAes.words2Buf = function (words) {\n const buf = Buffer.alloc(words.length * 4)\n\n for (let i = 0; i < words.length; i++) {\n buf.writeUInt32BE(words[i], i * 4)\n }\n\n return buf\n}\n\nexport { Aes }\n","/**\n * Cbc\n * ===\n *\n * Cipher Block Chaining (Cbc). This is a low-level tool for chaining multiple\n * encrypted blocks together, usually with Aes. This is a low-level tool that\n * does not include authentication. You should only be using this if you have\n * authentication at another step. It is best combined with Hmac.\n *\n * http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28Cbc.29\n */\n'use strict'\n\nimport { cmp } from './cmp'\n\nclass Cbc {}\n\nCbc.buf2BlocksBuf = function (buf, blockSize) {\n const bytesize = blockSize / 8\n const blockBufs = []\n\n for (let i = 0; i <= buf.length / bytesize; i++) {\n let blockBuf = buf.slice(i * bytesize, i * bytesize + bytesize)\n\n if (blockBuf.length < blockSize) {\n blockBuf = Cbc.pkcs7Pad(blockBuf, blockSize)\n }\n\n blockBufs.push(blockBuf)\n }\n\n return blockBufs\n}\n\nCbc.blockBufs2Buf = function (blockBufs) {\n let last = blockBufs[blockBufs.length - 1]\n last = Cbc.pkcs7Unpad(last)\n blockBufs[blockBufs.length - 1] = last\n\n const buf = Buffer.concat(blockBufs)\n\n return buf\n}\n\nCbc.encrypt = function (messageBuf, ivBuf, blockCipher, cipherKeyBuf) {\n const blockSize = ivBuf.length * 8\n const blockBufs = Cbc.buf2BlocksBuf(messageBuf, blockSize)\n const encBufs = Cbc.encryptBlocks(blockBufs, ivBuf, blockCipher, cipherKeyBuf)\n const encBuf = Buffer.concat(encBufs)\n return encBuf\n}\n\nCbc.decrypt = function (encBuf, ivBuf, blockCipher, cipherKeyBuf) {\n const bytesize = ivBuf.length\n const encBufs = []\n for (let i = 0; i < encBuf.length / bytesize; i++) {\n encBufs.push(encBuf.slice(i * bytesize, i * bytesize + bytesize))\n }\n const blockBufs = Cbc.decryptBlocks(encBufs, ivBuf, blockCipher, cipherKeyBuf)\n const buf = Cbc.blockBufs2Buf(blockBufs)\n return buf\n}\n\nCbc.encryptBlock = function (blockBuf, ivBuf, blockCipher, cipherKeyBuf) {\n const xorbuf = Cbc.xorBufs(blockBuf, ivBuf)\n const encBuf = blockCipher.encrypt(xorbuf, cipherKeyBuf)\n return encBuf\n}\n\nCbc.decryptBlock = function (encBuf, ivBuf, blockCipher, cipherKeyBuf) {\n const xorbuf = blockCipher.decrypt(encBuf, cipherKeyBuf)\n const blockBuf = Cbc.xorBufs(xorbuf, ivBuf)\n return blockBuf\n}\n\nCbc.encryptBlocks = function (blockBufs, ivBuf, blockCipher, cipherKeyBuf) {\n const encBufs = []\n\n for (let i = 0; i < blockBufs.length; i++) {\n const blockBuf = blockBufs[i]\n const encBuf = Cbc.encryptBlock(blockBuf, ivBuf, blockCipher, cipherKeyBuf)\n\n encBufs.push(encBuf)\n\n ivBuf = encBuf\n }\n\n return encBufs\n}\n\nCbc.decryptBlocks = function (encBufs, ivBuf, blockCipher, cipherKeyBuf) {\n const blockBufs = []\n\n for (let i = 0; i < encBufs.length; i++) {\n const encBuf = encBufs[i]\n const blockBuf = Cbc.decryptBlock(encBuf, ivBuf, blockCipher, cipherKeyBuf)\n\n blockBufs.push(blockBuf)\n\n ivBuf = encBuf\n }\n\n return blockBufs\n}\n\nCbc.pkcs7Pad = function (buf, blockSize) {\n const bytesize = blockSize / 8\n const padbytesize = bytesize - buf.length\n const pad = Buffer.alloc(padbytesize)\n pad.fill(padbytesize)\n const paddedbuf = Buffer.concat([buf, pad])\n return paddedbuf\n}\n\nCbc.pkcs7Unpad = function (paddedbuf) {\n const padlength = paddedbuf[paddedbuf.length - 1]\n const padbuf = paddedbuf.slice(paddedbuf.length - padlength, paddedbuf.length)\n const padbuf2 = Buffer.alloc(padlength)\n padbuf2.fill(padlength)\n if (!cmp(padbuf, padbuf2)) {\n throw new Error('invalid padding')\n }\n return paddedbuf.slice(0, paddedbuf.length - padlength)\n}\n\nCbc.xorBufs = function (buf1, buf2) {\n if (buf1.length !== buf2.length) {\n throw new Error('bufs must have the same length')\n }\n\n const buf = Buffer.alloc(buf1.length)\n\n for (let i = 0; i < buf1.length; i++) {\n buf[i] = buf1[i] ^ buf2[i]\n }\n\n return buf\n}\n\nexport { Cbc }\n","/**\n * Aescbc (experimental)\n * =====================\n *\n * This is a convenience class for using Aes with Cbc. This is a low-level tool\n * that does not include authentication. You should only use this if you are\n * authenticating your data somehow else.\n */\n'use strict'\n\nimport { Aes } from './aes'\nimport { Cbc } from './cbc'\nimport { Random } from './random'\n\nclass Aescbc { }\n\nAescbc.encrypt = function (messageBuf, cipherKeyBuf, ivBuf, concatIvBuf = true) {\n ivBuf = ivBuf || Random.getRandomBuffer(128 / 8)\n const ctBuf = Cbc.encrypt(messageBuf, ivBuf, Aes, cipherKeyBuf)\n if (concatIvBuf) {\n return Buffer.concat([ivBuf, ctBuf])\n } else {\n return ctBuf\n }\n}\n\nAescbc.decrypt = function (encBuf, cipherKeyBuf, ivBuf = false) {\n if (!ivBuf) {\n const ivBuf = encBuf.slice(0, 128 / 8)\n const ctBuf = encBuf.slice(128 / 8)\n return Cbc.decrypt(ctBuf, ivBuf, Aes, cipherKeyBuf)\n } else {\n const ctBuf = encBuf\n return Cbc.decrypt(ctBuf, ivBuf, Aes, cipherKeyBuf)\n }\n}\n\nexport { Aescbc }\n","/**\n * Ach (Aes+Cbc+Hmac) (experimental)\n * =================================\n *\n * An \"encrypt-then-MAC\" that uses Aes, Cbc and SHA256 Hmac. This is suitable\n * for general encryption of data.\n *\n * The encrypted data takes the form:\n * (256 bit hmac)(128 bit iv)(128+ bits Aes+Cbc encrypted message)\n */\n'use strict'\n\nimport { Aescbc } from './aescbc'\nimport { Hash } from './hash'\nimport { Random } from './random'\nimport { Workers } from './workers'\nimport { cmp } from './cmp'\n\nclass Ach { }\n\nAch.encrypt = function (messageBuf, cipherKeyBuf, ivBuf) {\n const encBuf = Aescbc.encrypt(messageBuf, cipherKeyBuf, ivBuf)\n const hmacbuf = Hash.sha256Hmac(encBuf, cipherKeyBuf)\n return Buffer.concat([hmacbuf, encBuf])\n}\n\nAch.asyncEncrypt = async function (messageBuf, cipherKeyBuf, ivBuf) {\n if (!ivBuf) {\n ivBuf = Random.getRandomBuffer(128 / 8)\n }\n const args = [messageBuf, cipherKeyBuf, ivBuf]\n const workersResult = await Workers.asyncClassMethod(Ach, 'encrypt', args)\n return workersResult.resbuf\n}\n\nAch.decrypt = function (encBuf, cipherKeyBuf) {\n if (encBuf.length < (256 + 128 + 128) / 8) {\n throw new Error(\n 'The encrypted data must be at least 256+128+128 bits, which is the length of the Hmac plus the iv plus the smallest encrypted data size'\n )\n }\n const hmacbuf = encBuf.slice(0, 256 / 8)\n encBuf = encBuf.slice(256 / 8, encBuf.length)\n const hmacbuf2 = Hash.sha256Hmac(encBuf, cipherKeyBuf)\n if (!cmp(hmacbuf, hmacbuf2)) {\n throw new Error(\n 'Message authentication failed - Hmacs are not equivalent'\n )\n }\n return Aescbc.decrypt(encBuf, cipherKeyBuf)\n}\n\nAch.asyncDecrypt = async function (encBuf, cipherKeyBuf) {\n const args = [encBuf, cipherKeyBuf]\n const workersResult = await Workers.asyncClassMethod(Ach, 'decrypt', args)\n return workersResult.resbuf\n}\n\nexport { Ach }\n","/**\n * Ecies\n * =====\n */\n'use strict'\n\nimport { Aescbc } from './aescbc'\nimport { cmp } from './cmp'\nimport { Hash } from './hash'\nimport { KeyPair } from './key-pair'\nimport { Point } from './point'\nimport { PubKey } from './pub-key'\nimport { Random } from './random'\nimport { Workers } from './workers'\n\nclass Ecies {}\n\nEcies.ivkEkM = function (privKey, pubKey) {\n const r = privKey.bn\n const KB = pubKey.point\n const P = KB.mul(r)\n const S = new PubKey(P)\n const Sbuf = S.toBuffer()\n const hash = Hash.sha512(Sbuf)\n return {\n iv: hash.slice(0, 16),\n kE: hash.slice(16, 32),\n kM: hash.slice(32, 64)\n }\n}\n\nEcies.electrumEncrypt = function (messageBuf, toPubKey, fromKeyPair, noKey = false) {\n if (!Buffer.isBuffer(messageBuf)) {\n throw new Error('messageBuf must be a buffer')\n }\n let Rbuf\n if (fromKeyPair === null) {\n fromKeyPair = KeyPair.fromRandom()\n }\n if (!noKey) {\n Rbuf = fromKeyPair.pubKey.toDer(true)\n }\n const { iv, kE, kM } = Ecies.ivkEkM(fromKeyPair.privKey, toPubKey)\n const ciphertext = Aescbc.encrypt(messageBuf, kE, iv, false)\n const BIE1 = Buffer.from('BIE1')\n let encBuf\n if (Rbuf) {\n encBuf = Buffer.concat([BIE1, Rbuf, ciphertext])\n } else {\n encBuf = Buffer.concat([BIE1, ciphertext])\n }\n const hmac = Hash.sha256Hmac(encBuf, kM)\n return Buffer.concat([encBuf, hmac])\n}\n\nEcies.electrumDecrypt = function (encBuf, toPrivKey, fromPubKey = null) {\n if (!Buffer.isBuffer(encBuf)) {\n throw new Error('encBuf must be a buffer')\n }\n const tagLength = 32\n\n const magic = encBuf.slice(0, 4)\n if (!magic.equals(Buffer.from('BIE1'))) {\n throw new Error('Invalid Magic')\n }\n let offset = 4\n if (fromPubKey === null) {\n // BIE1 use compressed public key, length is always 33.\n const pub = encBuf.slice(4, 37)\n fromPubKey = PubKey.fromDer(pub)\n offset = 37\n }\n const { iv, kE, kM } = Ecies.ivkEkM(toPrivKey, fromPubKey)\n const ciphertext = encBuf.slice(offset, encBuf.length - tagLength)\n const hmac = encBuf.slice(encBuf.length - tagLength, encBuf.length)\n\n const hmac2 = Hash.sha256Hmac(encBuf.slice(0, encBuf.length - tagLength), kM)\n\n if (!hmac.equals(hmac2)) {\n throw new Error('Invalid checksum')\n }\n return Aescbc.decrypt(ciphertext, kE, iv)\n}\n\nEcies.bitcoreEncrypt = function (messageBuf, toPubKey, fromKeyPair, ivBuf) {\n if (!fromKeyPair) {\n fromKeyPair = KeyPair.fromRandom()\n }\n const r = fromKeyPair.privKey.bn\n const RPubKey = fromKeyPair.pubKey\n const RBuf = RPubKey.toDer(true)\n const KB = toPubKey.point\n const P = KB.mul(r)\n const S = P.getX()\n const Sbuf = S.toBuffer({ size: 32 })\n const kEkM = Hash.sha512(Sbuf)\n const kE = kEkM.slice(0, 32)\n const kM = kEkM.slice(32, 64)\n const c = Aescbc.encrypt(messageBuf, kE, ivBuf)\n const d = Hash.sha256Hmac(c, kM)\n const encBuf = Buffer.concat([RBuf, c, d])\n return encBuf\n}\n\nEcies.asyncBitcoreEncrypt = async function (\n messageBuf,\n toPubKey,\n fromKeyPair,\n ivBuf\n) {\n if (!fromKeyPair) {\n fromKeyPair = await KeyPair.asyncFromRandom()\n }\n if (!ivBuf) {\n ivBuf = Random.getRandomBuffer(128 / 8)\n }\n const args = [messageBuf, toPubKey, fromKeyPair, ivBuf]\n const workersResult = await Workers.asyncClassMethod(Ecies, 'bitcoreEncrypt', args)\n return workersResult.resbuf\n}\n\nEcies.bitcoreDecrypt = function (encBuf, toPrivKey) {\n const kB = toPrivKey.bn\n const fromPubKey = PubKey.fromDer(encBuf.slice(0, 33))\n const R = fromPubKey.point\n const P = R.mul(kB)\n if (P.eq(new Point())) {\n throw new Error('P equals 0')\n }\n const S = P.getX()\n const Sbuf = S.toBuffer({ size: 32 })\n const kEkM = Hash.sha512(Sbuf)\n const kE = kEkM.slice(0, 32)\n const kM = kEkM.slice(32, 64)\n const c = encBuf.slice(33, encBuf.length - 32)\n const d = encBuf.slice(encBuf.length - 32, encBuf.length)\n const d2 = Hash.sha256Hmac(c, kM)\n if (!cmp(d, d2)) {\n throw new Error('Invalid checksum')\n }\n const messageBuf = Aescbc.decrypt(c, kE)\n return messageBuf\n}\n\nEcies.asyncBitcoreDecrypt = async function (encBuf, toPrivKey) {\n const args = [encBuf, toPrivKey]\n const workersResult = await Workers.asyncClassMethod(Ecies, 'bitcoreDecrypt', args)\n return workersResult.resbuf\n}\n\nexport { Ecies }\n","/**\n * bsv\n * ===\n *\n * entry.js is the entry point for a the js bundlers.\n * Webpack and microbundlers, both start use this file as\n * the entry point to bundle the entire library.\n */\nimport aes from 'aes'\nimport bnjs from 'bn.js'\nimport bs58 from 'bs58'\n\nimport elliptic from 'bitcoin-elliptic'\nimport hashjs from 'hash.js'\nimport pbkdf2compat from 'pbkdf2-compat'\n\n// Dependencies, subject to change.\nconst deps = {\n aes,\n bnjs,\n bs58,\n elliptic,\n hashjs,\n pbkdf2compat\n}\n\nexport { deps }\n\n// version string.\nexport { version } from './package.json'\n\n// Main bitcoin library - bitcoin protocols, standards, cryptography, and\n// utilities.\nexport * from './lib/address'\nexport * from './lib/bip-32'\nexport * from './lib/bip-39'\nexport * from './lib/bip-39-words'\nexport * from './lib/bn'\nexport * from './lib/br'\nexport * from './lib/bsm'\nexport * from './lib/bw'\nexport * from './lib/base-58'\nexport * from './lib/base-58-check'\nexport * from './lib/block'\nexport * from './lib/block-header'\nexport * from './lib/constants'\nexport * from './lib/ecdsa'\nexport * from './lib/hash'\nexport * from './lib/interp'\nexport * from './lib/key-pair'\nexport * from './lib/op-code'\nexport * from './lib/point'\nexport * from './lib/priv-key'\nexport * from './lib/pub-key'\nexport * from './lib/random'\nexport * from './lib/script'\nexport * from './lib/sig'\nexport * from './lib/struct'\nexport * from './lib/tx'\nexport * from './lib/tx-builder'\nexport * from './lib/tx-in'\nexport * from './lib/tx-out'\nexport * from './lib/tx-out-map'\nexport * from './lib/tx-verifier'\nexport * from './lib/var-int'\nexport * from './lib/workers'\nexport * from './lib/workers-result'\nexport * from './lib/cmp'\n\n// Encryption tools. Some bitcoin standards use Aes encryption, so that's why\n// these are available.\nexport * from './lib/ach'\nexport * from './lib/aes'\nexport * from './lib/aescbc'\nexport * from './lib/cbc'\nexport * from './lib/ecies'\n"],"names":["Bn","n","base","rest","_Bn","call","Object","keys","forEach","key","prototype","create","constructor","reverseBuf","buf","buf2","Buffer","alloc","length","i","fromHex","hex","opts","fromBuffer","from","toHex","toBuffer","toString","toJSON","fromJSON","str","bn","copy","fromNumber","toNumber","parseInt","fromString","endian","size","undefined","natlen","slice","rbuf","longzero","compare","toFastBuffer","fromFastBuffer","fromSm","neg","toSm","cmp","concat","fromBits","bits","strict","writeUInt32BE","readInt32BE","Error","nsize","nword","writeInt32BE","fill","sub","toBits","lt","readUInt32BE","blank","fromScriptNumBuffer","fRequireMinimal","nMaxNumSize","toScriptNumBuffer","_neg","add","_bn","mul","mod","umod","invm","div","ushln","ushrn","decorate","name","f","b","eq","neq","gt","geq","leq","Br","fromObject","obj","pos","eof","read","len","readReverse","readUInt8","val","readInt8","readUInt16BE","readInt16BE","readUInt16LE","readInt16LE","readUInt32LE","readInt32LE","readUInt64BEBn","readUInt64LEBn","readVarIntNum","first","Math","pow","readVarIntBuf","readVarIntBn","Bw","bufs","getLength","write","push","writeReverse","writeUInt8","writeInt8","writeUInt16BE","writeInt16BE","writeUInt16LE","writeInt16LE","writeUInt32LE","writeInt32LE","writeUInt64BEBn","writeUInt64LEBn","writeVarIntNum","varIntBufNum","writeVarIntBn","varIntBufBn","floor","bw","Struct","fromBr","br","asyncFromBr","toBw","asyncToBw","genFromBuffers","expect","startbuf","gotlen","remainderlen","overlen","remainderbuf","isBuffer","asyncFromBuffer","asyncToBuffer","then","isHex","asyncFromHex","fromFastHex","asyncToHex","toFastHex","asyncFromString","asyncToString","json","asyncFromJSON","Array","isArray","arr","JSON","stringify","Map","asyncToJSON","clone","cloneByJSON","cloneByBuffer","cloneByFastBuffer","cloneByHex","cloneByString","Base58","encode","bs58","decode","buf1","d","x","y","WorkersResult","resbuf","isError","id","fromResult","result","fromError","error","message","Number","resbuflen","Boolean","globalWorkers","Workers","nativeWorkers","lastid","incompconsteRes","promisemap","asyncObjectMethod","methodname","args","workersResult","asyncClassMethod","classObj","endGlobalWorkers","process","browser","Hash","sha1","Sha1","hashjs","hash","update","digest","blockSize","asyncSha1","sha256","Sha256","asyncSha256","sha256Sha256","e","asyncSha256Sha256","ripemd160","Ripemd160","asyncRipemd160","sha256Ripemd160","asyncSha256Ripemd160","sha512","Sha512","asyncSha512","hmac","hashFStr","data","hashf","oKeyPad","iKeyPad","sha1Hmac","asyncSha1Hmac","bitsize","sha256Hmac","asyncSha256Hmac","sha512Hmac","asyncSha512Hmac","Base58Check","s","csum","hash4","checkedBuf","Config","values","keyDefined","getValue","get","ConfigBuilder","variables","build","addValue","value","addValueWithDefault","defaultValue","config","env","NETWORK","Constants","Mainnet","maxsize","Address","pubKeyHash","Bip32","pubKey","privKey","Block","maxNBits","magicNum","Msg","versionBytesNum","PrivKey","versionByteNum","TxBuilder","dust","feePerKbNum","timeout","Testnet","assign","Regtest","Default","map","OP_FALSE","OP_0","OP_PUSHDATA1","OP_PUSHDATA2","OP_PUSHDATA4","OP_1NEGATE","OP_RESERVED","OP_TRUE","OP_1","OP_2","OP_3","OP_4","OP_5","OP_6","OP_7","OP_8","OP_9","OP_10","OP_11","OP_12","OP_13","OP_14","OP_15","OP_16","OP_NOP","OP_VER","OP_IF","OP_NOTIF","OP_VERIF","OP_VERNOTIF","OP_ELSE","OP_ENDIF","OP_VERIFY","OP_RETURN","OP_TOALTSTACK","OP_FROMALTSTACK","OP_2DROP","OP_2DUP","OP_3DUP","OP_2OVER","OP_2ROT","OP_2SWAP","OP_IFDUP","OP_DEPTH","OP_DROP","OP_DUP","OP_NIP","OP_OVER","OP_PICK","OP_ROLL","OP_ROT","OP_SWAP","OP_TUCK","OP_CAT","OP_SUBSTR","OP_SPLIT","OP_LEFT","OP_NUM2BIN","OP_RIGHT","OP_BIN2NUM","OP_SIZE","OP_INVERT","OP_AND","OP_OR","OP_XOR","OP_EQUAL","OP_EQUALVERIFY","OP_RESERVED1","OP_RESERVED2","OP_1ADD","OP_1SUB","OP_2MUL","OP_2DIV","OP_NEGATE","OP_ABS","OP_NOT","OP_0NOTEQUAL","OP_ADD","OP_SUB","OP_MUL","OP_DIV","OP_MOD","OP_LSHIFT","OP_RSHIFT","OP_BOOLAND","OP_BOOLOR","OP_NUMEQUAL","OP_NUMEQUALVERIFY","OP_NUMNOTEQUAL","OP_LESSTHAN","OP_GREATERTHAN","OP_LESSTHANOREQUAL","OP_GREATERTHANOREQUAL","OP_MIN","OP_MAX","OP_WITHIN","OP_RIPEMD160","OP_SHA1","OP_SHA256","OP_HASH160","OP_HASH256","OP_CODESEPARATOR","OP_CHECKSIG","OP_CHECKSIGVERIFY","OP_CHECKMULTISIG","OP_CHECKMULTISIGVERIFY","OP_NOP1","OP_NOP2","OP_CHECKLOCKTIMEVERIFY","OP_NOP3","OP_CHECKSEQUENCEVERIFY","OP_NOP4","OP_NOP5","OP_NOP6","OP_NOP7","OP_NOP8","OP_NOP9","OP_NOP10","OP_SMALLDATA","OP_SMALLINTEGER","OP_PUBKEYS","OP_PUBKEYHASH","OP_PUBKEY","OP_INVALIDOPCODE","OpCode","num","opCodeStr","hasOwnProperty","ec","elliptic","curves","secp256k1","_point","curve","point","_Point","Point","isRed","fromX","isOdd","pointFromX","copyFrom","bind","p","getN","mulAdd","bn1","bn2","getX","_x","getY","_y","parse","getG","_g","g","toArray","validate","p2","PubKey","compressed","fromPrivKey","asyncFromPrivKey","fromDer","xbuf","ybuf","odd","toDer","prefix","isCompressedOrUncompressed","isInfinity","Random","getRandomBuffer","randomBytes","constants","fromRandom","privBuf","condition","fromBn","toBn","toWif","fromWif","Sig","r","nHashType","recovery","fromCompact","fromTxFormat","toTxFormat","toCompact","rsbuf","fromRS","b2","b3","parseDer","derbuf","header","buflength","rheader","rlength","rneg","sheader","slength","sbuf","sneg","sumlength","IsTxDer","nLEnR","nLEnS","R","S","hasLowS","hasDefinedHashType","SIGHASH_ALL","SIGHASH_SINGLE","b1","toRS","rnbuf","snbuf","der","SIGHASH_NONE","SIGHASH_FORKID","SIGHASH_ANYONECANPAY","Script","chunks","opCodeNum","err","chunk","tokens","split","token","opCode","substr","fromBitcoindString","tstr","cbuf","tbuf","writeBuffer","opstr","isNaN","script","writeBn","toBitcoindString","ostr","fromAsmString","toAsmString","_chunkToString","type","numstr","fromOpReturnData","dataBuf","writeOpCode","fromSafeData","fromSafeDataArray","dataBufs","getData","isSafeDataOut","buffers","isOpReturn","fromPubKeyHash","hashBuf","sortPubKeys","pubKeys","sort","pubKey1","pubKey2","max","fromPubKeys","m","removeCodeseparators","isPushOnly","filter","script2","isPubKeyHashOut","isPubKeyHashIn","isScriptHashOut","isScriptHashIn","isMultiSigOut","pubKeychunks","every","isMultiSigIn","remaining","findAndDelete","splice","writeScript","writeString","setChunkOpCode","writeNumber","number","setChunkBn","setChunkBuffer","checkMinimalPush","fromPubKeyHashBuf","fromPubKey","asyncFromPubKey","randomPrivKey","asyncFromRandom","isValid","addrstr","address","toTxOutScript","fromTxInScript","pubKeyHashBuf","repeat","fromTxOutScript","versionByteBuf","depth","parentFingerPrint","childIndex","chainCode","PrivKeyClass","fromSeed","bytes","asyncFromSeed","keyBytes","isPrivate","isPublic","derive","path","bip32","c","replace","usePrivate","deriveChild","asyncDerive","ib","ret","il","ir","k","ilG","Kpar","Ki","newpub","pubKeyhash","toPublic","wordList","space","Bip39","mnemonic","seed","wordlist","Wordlist","mnemoniclen","seedlen","entropy2Mnemonic","mnemonic2Seed","bip39","fromEntropy","asyncFromEntropy","toSeed","passphrase","asyncToSeed","bin","hashbits","wi","check","words","ind","indexOf","cs","hashBits","nonhashBits","expectedHashBits","normalize","mbuf","pbuf","pbkdf2","pbkdf2Sync","KeyPair","DefaultPrivKey","buflen1","buflen2","privKeybuf","pubKeybuf","keyPair","Ecdsa","sig","verified","calcrecovery","Qprime","sig2PubKey","asyncCalcrecovery","ecdsa","randomK","N","deterministicK","badrs","v","T","isYOdd","isSecondKey","G","errm","eNeg","rInv","Q","asyncSig2PubKey","verifyStr","enforceLowS","sinv","u1","u2","sign","asyncSign","signRandomK","verify","asyncVerify","Bsm","messageBuf","magicHash","magicBytes","asyncMagicHash","sigbuf","sigstr","res","BlockHeader","prevBlockHashBuf","merkleRootBuf","time","nonce","Merkle","merkle1","merkle2","hashBuf1","hashBuf2","fromBuffers","log","log2","isInteger","lastval","ceil","bufs1","bufs2","fromBufferArrays","bufs11","bufs12","bufs21","bufs22","leavesNum","HashCache","prevoutsHashBuf","sequenceHashBuf","outputsHashBuf","VarInt","TxIn","txHashBuf","txOutNum","scriptVi","nSequence","setScript","fromProperties","fromPubKeyHashTxOut","txOut","hasNullInput","setNullInput","LOCKTIME_VERIFY_SEQUENCE","SEQUENCE_FINAL","SEQUENCE_LOCKTIME_DISABLE_FLAG","SEQUENCE_LOCKTIME_TYPE_FLAG","SEQUENCE_LOCKTIME_MASK","SEQUENCE_LOCKTIME_GRANULARITY","TxOut","valueBn","Tx","txInsVi","txIns","txOutsVi","txOuts","nLockTime","txIn","txInsNum","txOutsNum","hashPrevouts","hashSequence","hashOutputs","sighash","nIn","subScript","flags","hashCache","SCRIPT_ENABLE_SIGHASH_FORKID","txcopy","asyncSighash","asyncHash","asyncId","addTxIn","addTxOut","isCoinbase","second","MAX_MONEY","blockHeader","txsVi","txs","tx","txsNum","verifyMerkleRoot","txsbufs","iterateTxs","blockBuf","Symbol","iterator","MAX_BLOCK_SIZE","Interp","stack","altStack","pc","pBeginCodeHash","nOpCount","ifStack","errStr","defaultFlags","initialize","fromJSONNoTx","jsonNoTxBufLEn","jsonNoTxBuf","txbuflen","txbuf","toJSONNoTx","getFlags","flagstr","SCRIPT_VERIFY_NONE","SCRIPT_VERIFY_P2SH","SCRIPT_VERIFY_STRICTENC","SCRIPT_VERIFY_DERSIG","SCRIPT_VERIFY_LOW_S","SCRIPT_VERIFY_NULLDUMMY","SCRIPT_VERIFY_SIGPUSHONLY","SCRIPT_VERIFY_MINIMALDATA","SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS","SCRIPT_VERIFY_CLEANSTACK","SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY","SCRIPT_VERIFY_CHECKSEQUENCEVERIFY","castToBool","checkSigEncoding","checkPubKeyEncoding","checkLockTime","LOCKTIME_THRESHOLD","checkSequence","txToSequence","nLockTimeMask","txToSequenceMasked","nSequenceMasked","eval","fSuccess","step","fExec","MAX_SCRIPT_ELEMENT_SIZE","false","nLockTimebuf","nLockTimebn","nSequencebuf","nSequencebn","fValue","pop","buf3","spliced","x1","x2","x3","fEqual","true","bn3","bufHash","bufSig","bufPubKey","nKeysCount","ikey","nSigsCount","isig","fOk","vch1","vch2","position","n1","n2","scriptSig","scriptPubKey","results","success","stackCopy","tmp","pubKeySerialized","scriptPubKey2","getDebugObject","scriptStr","getDebugString","SigOperations","label","nScriptChunk","addressStr","set","setOne","setMany","addOne","TxOutMap","setTx","txhashhex","index","Cst","uTxOutMap","sigOperations","changeScript","changeAmountBn","feeAmountBn","sigsPerInput","dustChangeToFees","setFeePerKbNum","setChangeAddress","changeAddress","setChangeScript","setNLocktime","setVersion","setDust","sendDustChangeToFees","importPartiallySignedTx","inputFromScript","addSigOperation","inputFromPubKeyHash","outputToAddress","addr","outputToScript","buildOutputs","outAmountBn","buildInputs","extraInputsNum","inAmountBn","estimateSize","sigSize","pubKeySize","scriptSize","round","estimateFee","extraFeeAmount","fee","useAllInputs","minFeeAmountBn","changeTxOut","includes","allSigsPresent","present","removeBlankSigs","fillSig","getSig","asyncGetSig","signTxIn","outScript","asyncSignTxIn","signWithKeyPairs","keyPairs","addressStrMap","pact","state","o","observer","onFulfilled","onRejected","callback","_this","thenable","test","body","stage","shouldContinue","updateValue","reject","_resumeAfterTest","_resumeAfterBody","_resumeAfterUpdate","TxVerifier","txOutMap","interp","checkStr","asyncVerifyStr","valueoutbn","txInmap","inputid","verifyNIn","asyncVerifyNIn","console","interpFailure","Aes","encrypt","keyBuf","buf2Words","a","_Aes","enc","encBuf","words2Buf","decrypt","Cbc","buf2BlocksBuf","bytesize","blockBufs","pkcs7Pad","blockBufs2Buf","last","pkcs7Unpad","ivBuf","blockCipher","cipherKeyBuf","encBufs","encryptBlocks","decryptBlocks","encryptBlock","xorbuf","xorBufs","decryptBlock","padbytesize","pad","paddedbuf","padlength","padbuf","padbuf2","Aescbc","concatIvBuf","ctBuf","Ach","hmacbuf","asyncEncrypt","hmacbuf2","asyncDecrypt","Ecies","ivkEkM","KB","P","Sbuf","iv","kE","kM","electrumEncrypt","toPubKey","fromKeyPair","noKey","Rbuf","ciphertext","BIE1","electrumDecrypt","toPrivKey","tagLength","magic","equals","offset","pub","hmac2","bitcoreEncrypt","RPubKey","RBuf","kEkM","asyncBitcoreEncrypt","bitcoreDecrypt","kB","d2","asyncBitcoreDecrypt","deps","aes","bnjs","pbkdf2compat"],"mappings":"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f,SApae,EAqaf,OArae,EAsaf,QAtae,EAuaf,SAvae,EAwaf,QAxae,EAyaf,OAzae,EA0af,KA1ae,EA2af,SA3ae,EA4af,MA5ae,EA6af,SA7ae,EA8af,KA9ae,EA+af,UA/ae,EAgbf,SAhbe,EAibf,SAjbe,EAkbf,SAlbe,EAmbf,OAnbe,EAobf,SApbe,EAqbf,QArbe,EAsbf,MAtbe,EAubf,OAvbe,EAwbf,KAxbe,EAybf,QAzbe,EA0bf,MA1be,EA2bf,OA3be,EA4bf,QA5be,EA6bf,QA7be,EA8bf,MA9be,EA+bf,UA/be,EAgcf,MAhce,EAicf,KAjce,EAkcf,MAlce,EAmcf,QAnce,EAocf,QApce,EAqcf,QArce,EAscf,UAtce,EAucf,QAvce,EAwcf,SAxce,EAycf,UAzce,EA0cf,UA1ce,EA2cf,MA3ce,EA4cf,SA5ce,EA6cf,QA7ce,EA8cf,MA9ce,EA+cf,QA/ce,EAgdf,OAhde,EAidf,SAjde,EAkdf,QAlde,EAmdf,QAnde,EAodf,QApde,EAqdf,SArde,EAsdf,MAtde,EAudf,QAvde,EAwdf,QAxde,EAydf,SAzde,EA0df,OA1de,EA2df,QA3de,EA4df,QA5de,EA6df,UA7de,EA8df,QA9de,EA+df,QA/de,EAgef,MAhee,EAief,SAjee,EAkef,SAlee,EAmef,QAnee,EAoef,QApee,EAqef,SAree,EAsef,QAtee,EAuef,QAvee,EAwef,SAxee,EAyef,MAzee,EA0ef,SA1ee,EA2ef,OA3ee,EA4ef,MA5ee,EA6ef,QA7ee,EA8ef,MA9ee,EA+ef,QA/ee,EAgff,SAhfe,EAiff,SAjfe,EAkff,SAlfe,EAmff,QAnfe,EAoff,UApfe,EAqff,QArfe,EAsff,MAtfe,EAuff,UAvfe,EAwff,UAxfe,EAyff,SAzfe,EA0ff,MA1fe,EA2ff,SA3fe,EA4ff,UA5fe,EA6ff,SA7fe,EA8ff,UA9fe,EA+ff,QA/fe,EAggBf,QAhgBe,EAigBf,SAjgBe,EAkgBf,OAlgBe,EAmgBf,QAngBe,EAogBf,UApgBe,EAqgBf,KArgBe,EAsgBf,MAtgBe,EAugBf,SAvgBe,EAwgBf,QAxgBe,EAygBf,QAzgBe,EA0gBf,QA1gBe,EA2gBf,OA3gBe,EA4gBf,MA5gBe,EA6gBf,MA7gBe,EA8gBf,QA9gBe,EA+gBf,MA/gBe,EAghBf,OAhhBe,EAihBf,QAjhBe,EAkhBf,OAlhBe,EAmhBf,SAnhBe,EAohBf,MAphBe,EAqhBf,OArhBe,EAshBf,OAthBe,EAuhBf,OAvhBe,EAwhBf,OAxhBe,EAyhBf,OAzhBe,EA0hBf,MA1hBe,EA2hBf,OA3hBe,EA4hBf,MA5hBe,EA6hBf,MA7hBe,EA8hBf,KA9hBe,EA+hBf,MA/hBe,EAgiBf,MAhiBe,EAiiBf,MAjiBe,EAkiBf,QAliBe,EAmiBf,MAniBe,EAoiBf,OApiBe,EAqiBf,MAriBe,EAsiBf,OAtiBe,EAuiBf,SAviBe,EAwiBf,OAxiBe,EAyiBf,OAziBe,EA0iBf,OA1iBe,EA2iBf,MA3iBe,EA4iBf,OA5iBe,EA6iBf,QA7iBe,EA8iBf,MA9iBe,EA+iBf,MA/iBe,EAgjBf,MAhjBe,EAijBf,SAjjBe,EAkjBf,SAljBe,EAmjBf,MAnjBe,EAojBf,MApjBe,EAqjBf,SArjBe,EAsjBf,QAtjBe,EAujBf,KAvjBe,EAwjBf,OAxjBe,EAyjBf,QAzjBe,EA0jBf,OA1jBe,EA2jBf,OA3jBe,EA4jBf,UA5jBe,EA6jBf,SA7jBe,EA8jBf,SA9jBe,EA+jBf,UA/jBe,EAgkBf,UAhkBe,EAikBf,OAjkBe,EAkkBf,MAlkBe,EAmkBf,QAnkBe,EAokBf,QApkBe,EAqkBf,SArkBe,EAskBf,QAtkBe,EAukBf,SAvkBe,EAwkBf,QAxkBe,EAykBf,SAzkBe,EA0kBf,OA1kBe,EA2kBf,QA3kBe,EA4kBf,OA5kBe,EA6kBf,KA7kBe,EA8kBf,SA9kBe,EA+kBf,SA/kBe,EAglBf,OAhlBe,EAilBf,QAjlBe,EAklBf,SAllBe,EAmlBf,QAnlBe,EAolBf,QAplBe,EAqlBf,SArlBe,EAslBf,OAtlBe,EAulBf,QAvlBe,EAwlBf,QAxlBe,EAylBf,QAzlBe,EA0lBf,QA1lBe,EA2lBf,QA3lBe,EA4lBf,OA5lBe,EA6lBf,QA7lBe,EA8lBf,OA9lBe,EA+lBf,UA/lBe,EAgmBf,SAhmBe,EAimBf,OAjmBe,EAkmBf,OAlmBe,EAmmBf,KAnmBe,EAomBf,OApmBe,EAqmBf,OArmBe,EAsmBf,SAtmBe,EAumBf,OAvmBe,EAwmBf,OAxmBe,EAymBf,QAzmBe,EA0mBf,OA1mBe,EA2mBf,SA3mBe,EA4mBf,QA5mBe,EA6mBf,SA7mBe,EA8mBf,QA9mBe,EA+mBf,UA/mBe,EAgnBf,MAhnBe,EAinBf,OAjnBe,EAknBf,QAlnBe,EAmnBf,OAnnBe,EAonBf,SApnBe,EAqnBf,QArnBe,EAsnBf,UAtnBe,EAunBf,QAvnBe,EAwnBf,SAxnBe,EAynBf,QAznBe,EA0nBf,SA1nBe,EA2nBf,UA3nBe,EA4nBf,SA5nBe,EA6nBf,SA7nBe,EA8nBf,OA9nBe,EA+nBf,OA/nBe,EAgoBf,MAhoBe,EAioBf,QAjoBe,EAkoBf,QAloBe,EAmoBf,QAnoBe,EAooBf,QApoBe,EAqoBf,SAroBe,EAsoBf,QAtoBe,EAuoBf,SAvoBe,EAwoBf,QAxoBe,EAyoBf,OAzoBe,EA0oBf,KA1oBe,EA2oBf,SA3oBe,EA4oBf,QA5oBe,EA6oBf,MA7oBe,EA8oBf,SA9oBe,EA+oBf,MA/oBe,EAgpBf,OAhpBe,EAipBf,OAjpBe,EAkpBf,MAlpBe,EAmpBf,OAnpBe,EAopBf,MAppBe,EAqpBf,QArpBe,EAspBf,QAtpBe,EAupBf,KAvpBe,EAwpBf,OAxpBe,EAypBf,SAzpBe,EA0pBf,MA1pBe,EA2pBf,SA3pBe,EA4pBf,KA5pBe,EA6pBf,OA7pBe,EA8pBf,QA9pBe,EA+pBf,SA/pBe,EAgqBf,OAhqBe,EAiqBf,UAjqBe,EAkqBf,SAlqBe,EAmqBf,UAnqBe,EAoqBf,SApqBe,EAqqBf,KArqBe,EAsqBf,MAtqBe,EAuqBf,MAvqBe,EAwqBf,QAxqBe,EAyqBf,OAzqBe,EA0qBf,UA1qBe,EA2qBf,OA3qBe,EA4qBf,OA5qBe,EA6qBf,KA7qBe,EA8qBf,OA9qBe,EA+qBf,SA/qBe,EAgrBf,OAhrBe,EAirBf,QAjrBe,EAkrBf,MAlrBe,EAmrBf,MAnrBe,EAorBf,QAprBe,EAqrBf,OArrBe,EAsrBf,MAtrBe,EAurBf,MAvrBe,EAwrBf,QAxrBe,EAyrBf,QAzrBe,EA0rBf,MA1rBe,EA2rBf,MA3rBe,EA4rBf,OA5rBe,EA6rBf,QA7rBe,EA8rBf,MA9rBe,EA+rBf,KA/rBe,EAgsBf,SAhsBe,EAisBf,KAjsBe,EAksBf,MAlsBe,EAmsBf,OAnsBe,EAosBf,OApsBe,EAqsBf,MArsBe,EAssBf,QAtsBe,EAusBf,MAvsBe,EAwsBf,QAxsBe,EAysBf,MAzsBe,EA0sBf,OA1sBe,EA2sBf,OA3sBe,EA4sBf,OA5sBe,EA6sBf,QA7sBe,EA8sBf,OA9sBe,EA+sBf,OA/sBe,EAgtBf,KAhtBe,EAitBf,MAjtBe,EAktBf,OAltBe,EAmtBf,KAntBe,EAotBf,MAptBe,EAqtBf,MArtBe,EAstBf,QAttBe,EAutBf,MAvtBe,EAwtBf,MAxtBe,EAytBf,OAztBe,EA0tBf,QA1tBe,EA2tBf,QA3tBe,EA4tBf,MA5tBe,EA6tBf,SA7tBe,EA8tBf,OA9tBe,EA+tBf,SA/tBe,EAguBf,QAhuBe,EAiuBf,QAjuBe,EAkuBf,OAluBe,EAmuBf,KAnuBe,EAouBf,SApuBe,EAquBf,OAruBe,EAsuBf,UAtuBe,EAuuBf,OAvuBe,EAwuBf,QAxuBe,EAyuBf,QAzuBe,EA0uBf,MA1uBe,EA2uBf,OA3uBe,EA4uBf,OA5uBe,EA6uBf,OA7uBe,EA8uBf,QA9uBe,EA+uBf,OA/uBe,EAgvBf,MAhvBe,EAivBf,KAjvBe,EAkvBf,OAlvBe,EAmvBf,SAnvBe,EAovBf,MApvBe,EAqvBf,QArvBe,EAsvBf,QAtvBe,EAuvBf,MAvvBe,EAwvBf,QAxvBe,EAyvBf,SAzvBe,EA0vBf,MA1vBe,EA2vBf,KA3vBe,EA4vBf,QA5vBe,EA6vBf,SA7vBe,EA8vBf,QA9vBe,EA+vBf,QA/vBe,EAgwBf,SAhwBe,EAiwBf,KAjwBe,EAkwBf,MAlwBe,EAmwBf,MAnwBe,EAowBf,QApwBe,EAqwBf,OArwBe,EAswBf,MAtwBe,EAuwBf,SAvwBe,EAwwBf,QAxwBe,EAywBf,OAzwBe,EA0wBf,QA1wBe,EA2wBf,SA3wBe,EA4wBf,SA5wBe,EA6wBf,OA7wBe,EA8wBf,OA9wBe,EA+wBf,MA/wBe,EAgxBf,QAhxBe,EAixBf,QAjxBe,EAkxBf,SAlxBe,EAmxBf,MAnxBe,EAoxBf,MApxBe,EAqxBf,MArxBe,EAsxBf,QAtxBe,EAuxBf,OAvxBe,EAwxBf,OAxxBe,EAyxBf,OAzxBe,EA0xBf,SA1xBe,EA2xBf,OA3xBe,EA4xBf,OA5xBe,EA6xBf,OA7xBe,EA8xBf,OA9xBe,EA+xBf,MA/xBe,EAgyBf,MAhyBe,EAiyBf,MAjyBe,EAkyBf,SAlyBe,EAmyBf,MAnyBe,EAoyBf,MApyBe,EAqyBf,OAryBe,EAsyBf,SAtyBe,EAuyBf,QAvyBe,EAwyBf,QAxyBe,EAyyBf,QAzyBe,EA0yBf,MA1yBe,EA2yBf,MA3yBe,EA4yBf,OA5yBe,EA6yBf,OA7yBe,EA8yBf,OA9yBe,EA+yBf,OA/yBe,EAgzBf,OAhzBe,EAizBf,SAjzBe,EAkzBf,OAlzBe,EAmzBf,OAnzBe,EAozBf,MApzBe,EAqzBf,OArzBe,EAszBf,MAtzBe,EAuzBf,SAvzBe,EAwzBf,OAxzBe,EAyzBf,MAzzBe,EA0zBf,OA1zBe,EA2zBf,OA3zBe,EA4zBf,OA5zBe,EA6zBf,OA7zBe,EA8zBf,OA9zBe,EA+zBf,QA/zBe,EAg0Bf,KAh0Be,EAi0Bf,KAj0Be,EAk0Bf,OAl0Be,EAm0Bf,MAn0Be,EAo0Bf,MAp0Be,EAq0Bf,QAr0Be,EAs0Bf,SAt0Be,EAu0Bf,MAv0Be,EAw0Bf,OAx0Be,EAy0Bf,QAz0Be,EA00Bf,MA10Be,EA20Bf,OA30Be,EA40Bf,SA50Be,EA60Bf,KA70Be,EA80Bf,MA90Be,EA+0Bf,MA/0Be,EAg1Bf,QAh1Be,EAi1Bf,MAj1Be,EAk1Bf,QAl1Be,EAm1Bf,OAn1Be,EAo1Bf,OAp1Be,EAq1Bf,UAr1Be,EAs1Bf,QAt1Be,EAu1Bf,OAv1Be,EAw1Bf,QAx1Be,EAy1Bf,MAz1Be,EA01Bf,KA11Be,EA21Bf,MA31Be,EA41Bf,QA51Be,EA61Bf,MA71Be,EA81Bf,MA91Be,EA+1Bf,MA/1Be,EAg2Bf,KAh2Be,EAi2Bf,MAj2Be,EAk2Bf,SAl2Be,EAm2Bf,OAn2Be,EAo2Bf,QAp2Be,EAq2Bf,MAr2Be,EAs2Bf,MAt2Be,EAu2Bf,SAv2Be,EAw2Bf,QAx2Be,EAy2Bf,MAz2Be,EA02Bf,OA12Be,EA22Bf,MA32Be,EA42Bf,MA52Be,EA62Bf,MA72Be,EA82Bf,QA92Be,EA+2Bf,OA/2Be,EAg3Bf,UAh3Be,EAi3Bf,MAj3Be,EAk3Bf,OAl3Be,EAm3Bf,MAn3Be,EAo3Bf,OAp3Be,EAq3Bf,KAr3Be,EAs3Bf,MAt3Be,EAu3Bf,OAv3Be,EAw3Bf,QAx3Be,EAy3Bf,OAz3Be,EA03Bf,SA13Be,EA23Bf,QA33Be,EA43Bf,MA53Be,EA63Bf,QA73Be,EA83Bf,OA93Be,EA+3Bf,MA/3Be,EAg4Bf,SAh4Be,EAi4Bf,QAj4Be,EAk4Bf,KAl4Be,EAm4Bf,MAn4Be,EAo4Bf,MAp4Be,EAq4Bf,UAr4Be,EAs4Bf,MAt4Be,EAu4Bf,QAv4Be,EAw4Bf,KAx4Be,EAy4Bf,SAz4Be,EA04Bf,SA14Be,EA24Bf,OA34Be,EA44Bf,SA54Be,EA64Bf,SA74Be,EA84Bf,QA94Be,EA+4Bf,QA/4Be,EAg5Bf,QAh5Be,EAi5Bf,SAj5Be,EAk5Bf,SAl5Be,EAm5Bf,MAn5Be,EAo5Bf,SAp5Be,EAq5Bf,QAr5Be,EAs5Bf,UAt5Be,EAu5Bf,OAv5Be,EAw5Bf,UAx5Be,EAy5Bf,QAz5Be,EA05Bf,UA15Be,EA25Bf,QA35Be,EA45Bf,SA55Be,EA65Bf,QA75Be,EA85Bf,QA95Be,EA+5Bf,SA/5Be,EAg6Bf,SAh6Be,EAi6Bf,QAj6Be,EAk6Bf,QAl6Be,EAm6Bf,QAn6Be,EAo6Bf,OAp6Be,EAq6Bf,UAr6Be,EAs6Bf,OAt6Be,EAu6Bf,SAv6Be,EAw6Bf,QAx6Be,EAy6Bf,QAz6Be,EA06Bf,QA16Be,EA26Bf,SA36Be,EA46Bf,SA56Be,EA66Bf,QA76Be,EA86Bf,UA96Be,EA+6Bf,MA/6Be,EAg7Bf,QAh7Be,EAi7Bf,QAj7Be,EAk7Bf,SAl7Be,EAm7Bf,MAn7Be,EAo7Bf,QAp7Be,EAq7Bf,SAr7Be,EAs7Bf,OAt7Be,EAu7Bf,MAv7Be,EAw7Bf,OAx7Be,EAy7Bf,QAz7Be,EA07Bf,QA17Be,EA27Bf,KA37Be,EA47Bf,MA57Be,EA67Bf,SA77Be,EA87Bf,OA97Be,EA+7Bf,OA/7Be,EAg8Bf,OAh8Be,EAi8Bf,KAj8Be,EAk8Bf,MAl8Be,EAm8Bf,MAn8Be,EAo8Bf,SAp8Be,EAq8Bf,KAr8Be,EAs8Bf,OAt8Be,EAu8Bf,OAv8Be,EAw8Bf,MAx8Be,EAy8Bf,QAz8Be,EA08Bf,QA18Be,EA28Bf,MA38Be,EA48Bf,MA58Be,EA68Bf,UA78Be,EA88Bf,MA98Be,EA+8Bf,MA/8Be,EAg9Bf,SAh9Be,EAi9Bf,KAj9Be,EAk9Bf,MAl9Be,EAm9Bf,KAn9Be,EAo9Bf,QAp9Be,EAq9Bf,MAr9Be,EAs9Bf,SAt9Be,EAu9Bf,MAv9Be,EAw9Bf,KAx9Be,EAy9Bf,SAz9Be,EA09Bf,MA19Be,EA29Bf,QA39Be,EA49Bf,MA59Be,EA69Bf,MA79Be,EA89Bf,OA99Be,EA+9Bf,OA/9Be,EAg+Bf,MAh+Be,EAi+Bf,KAj+Be,EAk+Bf,OAl+Be,EAm+Bf,OAn+Be,EAo+Bf,QAp+Be,EAq+Bf,MAr+Be,EAs+Bf,MAt+Be,EAu+Bf,MAv+Be,EAw+Bf,UAx+Be,EAy+Bf,QAz+Be,EA0+Bf,OA1+Be,EA2+Bf,OA3+Be,EA4+Bf,OA5+Be,EA6+Bf,OA7+Be,EA8+Bf,SA9+Be,EA++Bf,MA/+Be,EAg/Bf,KAh/Be,EAi/Bf,MAj/Be,EAk/Bf,SAl/Be,EAm/Bf,OAn/Be,EAo/Bf,MAp/Be,EAq/Bf,QAr/Be,EAs/Bf,MAt/Be,EAu/Bf,OAv/Be,EAw/Bf,OAx/Be,EAy/Bf,SAz/Be,EA0/Bf,MA1/Be,EA2/Bf,KA3/Be,EA4/Bf,OA5/Be,EA6/Bf,QA7/Be,EA8/Bf,SA9/Be,EA+/Bf,OA//Be,EAggCf,MAhgCe,EAigCf,QAjgCe,EAkgCf,MAlgCe,EAmgCf,SAngCe,EAogCf,QApgCe,EAqgCf,QArgCe,EAsgCf,OAtgCe,EAugCf,MAvgCe,EAwgCf,SAxgCe,EAygCf,SAzgCe,EA0gCf,SA1gCe,EA2gCf,MA3gCe,EA4gCf,MA5gCe,EA6gCf,OA7gCe,EA8gCf,MA9gCe,EA+gCf,MA/gCe,EAghCf,OAhhCe,EAihCf,MAjhCe,EAkhCf,MAlhCe,EAmhCf,QAnhCe,EAohCf,MAphCe,EAqhCf,QArhCe,EAshCf,MAthCe,EAuhCf,QAvhCe,EAwhCf,MAxhCe,EAyhCf,MAzhCe,EA0hCf,SA1hCe,EA2hCf,OA3hCe,EA4hCf,MA5hCe,EA6hCf,OA7hCe,EA8hCf,QA9hCe,EA+hCf,MA/hCe,EAgiCf,MAhiCe,EAiiCf,SAjiCe,EAkiCf,MAliCe,EAmiCf,QAniCe,EAoiCf,MApiCe,EAqiCf,OAriCe,EAsiCf,OAtiCe,EAuiCf,SAviCe,EAwiCf,QAxiCe,EAyiCf,OAziCe,EA0iCf,OA1iCe,EA2iCf,QA3iCe,EA4iCf,QA5iCe,EA6iCf,SA7iCe,EA8iCf,KA9iCe,EA+iCf,OA/iCe,EAgjCf,QAhjCe,EAijCf,MAjjCe,EAkjCf,MAljCe,EAmjCf,MAnjCe,EAojCf,OApjCe,EAqjCf,MArjCe,EAsjCf,QAtjCe,EAujCf,KAvjCe,EAwjCf,QAxjCe,EAyjCf,SAzjCe,EA0jCf,OA1jCe,EA2jCf,SA3jCe,EA4jCf,QA5jCe,EA6jCf,OA7jCe,EA8jCf,QA9jCe,EA+jCf,OA/jCe,EAgkCf,QAhkCe,EAikCf,QAjkCe,EAkkCf,QAlkCe,EAmkCf,UAnkCe,EAokCf,MApkCe,EAqkCf,MArkCe,EAskCf,QAtkCe,EAukCf,OAvkCe,EAwkCf,UAxkCe,EAykCf,MAzkCe,EA0kCf,QA1kCe,EA2kCf,QA3kCe,EA4kCf,SA5kCe,EA6kCf,MA7kCe,EA8kCf,QA9kCe,EA+kCf,MA/kCe,EAglCf,SAhlCe,EAilCf,MAjlCe,EAklCf,UAllCe,EAmlCf,OAnlCe,EAolCf,OAplCe,EAqlCf,QArlCe,EAslCf,MAtlCe,EAulCf,QAvlCe,EAwlCf,QAxlCe,EAylCf,SAzlCe,EA0lCf,MA1lCe,EA2lCf,OA3lCe,EA4lCf,OA5lCe,EA6lCf,OA7lCe,EA8lCf,OA9lCe,EA+lCf,MA/lCe,EAgmCf,SAhmCe,EAimCf,OAjmCe,EAkmCf,QAlmCe,EAmmCf,QAnmCe,EAomCf,UApmCe,EAqmCf,MArmCe,EAsmCf,SAtmCe,EAumCf,OAvmCe,EAwmCf,MAxmCe,EAymCf,SAzmCe,EA0mCf,OA1mCe,EA2mCf,QA3mCe,EA4mCf,SA5mCe,EA6mCf,QA7mCe,EA8mCf,QA9mCe,EA+mCf,MA/mCe,EAgnCf,SAhnCe,EAinCf,KAjnCe,EAknCf,OAlnCe,EAmnCf,SAnnCe,EAonCf,QApnCe,EAqnCf,OArnCe,EAsnCf,QAtnCe,EAunCf,KAvnCe,EAwnCf,QAxnCe,EAynCf,SAznCe,EA0nCf,QA1nCe,EA2nCf,SA3nCe,EA4nCf,OA5nCe,EA6nCf,MA7nCe,EA8nCf,OA9nCe,EA+nCf,MA/nCe,EAgoCf,SAhoCe,EAioCf,UAjoCe,EAkoCf,QAloCe,EAmoCf,QAnoCe,EAooCf,OApoCe,EAqoCf,UAroCe,EAsoCf,OAtoCe,EAuoCf,MAvoCe,EAwoCf,OAxoCe,EAyoCf,MAzoCe,EA0oCf,QA1oCe,EA2oCf,MA3oCe,EA4oCf,UA5oCe,EA6oCf,QA7oCe,EA8oCf,QA9oCe,EA+oCf,UA/oCe,EAgpCf,OAhpCe,EAipCf,MAjpCe,EAkpCf,QAlpCe,EAmpCf,QAnpCe,EAopCf,SAppCe,EAqpCf,MArpCe,EAspCf,OAtpCe,EAupCf,MAvpCe,EAwpCf,QAxpCe,EAypCf,QAzpCe,EA0pCf,OA1pCe,EA2pCf,QA3pCe,EA4pCf,QA5pCe,EA6pCf,MA7pCe,EA8pCf,MA9pCe,EA+pCf,MA/pCe,EAgqCf,UAhqCe,EAiqCf,SAjqCe,EAkqCf,SAlqCe,EAmqCf,QAnqCe,EAoqCf,OApqCe,EAqqCf,MArqCe,EAsqCf,KAtqCe,EAuqCf,SAvqCe,EAwqCf,SAxqCe,EAyqCf,OAzqCe,EA0qCf,MA1qCe,EA2qCf,MA3qCe,EA4qCf,MA5qCe,EA6qCf,OA7qCe,EA8qCf,OA9qCe,EA+qCf,OA/qCe,EAgrCf,SAhrCe,EAirCf,QAjrCe,EAkrCf,QAlrCe,EAmrCf,OAnrCe,EAorCf,MAprCe,EAqrCf,SArrCe,EAsrCf,MAtrCe,EAurCf,SAvrCe,EAwrCf,QAxrCe,EAyrCf,OAzrCe,EA0rCf,KA1rCe,EA2rCf,SA3rCe,EA4rCf,QA5rCe,EA6rCf,OA7rCe,EA8rCf,KA9rCe,EA+rCf,KA/rCe,EAgsCf,MAhsCe,EAisCf,QAjsCe,EAksCf,QAlsCe,EAmsCf,SAnsCe,EAosCf,SApsCe,EAqsCf,QArsCe,EAssCf,SAtsCe,EAusCf,OAvsCe,EAwsCf,OAxsCe,EAysCf,SAzsCe,EA0sCf,MA1sCe,EA2sCf,KA3sCe,EA4sCf,OA5sCe,EA6sCf,QA7sCe,EA8sCf,OA9sCe,EA+sCf,KA/sCe,EAgtCf,MAhtCe,EAitCf,KAjtCe,EAktCf,OAltCe,EAmtCf,SAntCe,EAotCf,MAptCe,EAqtCf,MArtCe,EAstCf,KAttCe,EAutCf,OAvtCe,EAwtCf,QAxtCe,EAytCf,MAztCe,EA0tCf,MA1tCe,EA2tCf,OA3tCe,EA4tCf,SA5tCe,EA6tCf,QA7tCe,EA8tCf,QA9tCe,EA+tCf,QA/tCe,EAguCf,OAhuCe,EAiuCf,SAjuCe,EAkuCf,OAluCe,EAmuCf,UAnuCe,EAouCf,OApuCe,EAquCf,QAruCe,EAsuCf,UAtuCe,EAuuCf,QAvuCe,EAwuCf,SAxuCe,EAyuCf,OAzuCe,EA0uCf,SA1uCe,EA2uCf,OA3uCe,EA4uCf,QA5uCe,EA6uCf,SA7uCe,EA8uCf,MA9uCe,EA+uCf,MA/uCe,EAgvCf,MAhvCe,EAivCf,KAjvCe,EAkvCf,OAlvCe,EAmvCf,QAnvCe,EAovCf,QApvCe,EAqvCf,OArvCe,EAsvCf,MAtvCe,EAuvCf,QAvvCe,EAwvCf,MAxvCe,EAyvCf,MAzvCe,EA0vCf,QA1vCe,EA2vCf,MA3vCe,EA4vCf,OA5vCe,EA6vCf,OA7vCe,EA8vCf,OA9vCe,EA+vCf,SA/vCe,EAgwCf,OAhwCe,EAiwCf,QAjwCe,EAkwCf,QAlwCe,EAmwCf,MAnwCe,EAowCf,QApwCe,EAqwCf,OArwCe,EAswCf,MAtwCe,EAuwCf,OAvwCe,EAwwCf,MAxwCe,EAywCf,SAzwCe,EA0wCf,QA1wCe,EA2wCf,SA3wCe,EA4wCf,OA5wCe,EA6wCf,MA7wCe,EA8wCf,SA9wCe,EA+wCf,OA/wCe,EAgxCf,QAhxCe,EAixCf,MAjxCe,EAkxCf,SAlxCe,EAmxCf,SAnxCe,EAoxCf,KApxCe,EAqxCf,SArxCe,EAsxCf,QAtxCe,EAuxCf,QAvxCe,EAwxCf,QAxxCe,EAyxCf,SAzxCe,EA0xCf,QA1xCe,EA2xCf,QA3xCe,EA4xCf,KA5xCe,EA6xCf,OA7xCe,EA8xCf,OA9xCe,EA+xCf,QA/xCe,EAgyCf,UAhyCe,EAiyCf,OAjyCe,EAkyCf,QAlyCe,EAmyCf,SAnyCe,EAoyCf,OApyCe,EAqyCf,KAryCe,EAsyCf,QAtyCe,EAuyCf,MAvyCe,EAwyCf,OAxyCe,EAyyCf,MAzyCe,EA0yCf,SA1yCe,EA2yCf,MA3yCe,EA4yCf,QA5yCe,EA6yCf,OA7yCe,EA8yCf,OA9yCe,EA+yCf,OA/yCe,EAgzCf,QAhzCe,EAizCf,SAjzCe,EAkzCf,OAlzCe,EAmzCf,MAnzCe,EAozCf,QApzCe,EAqzCf,QArzCe,EAszCf,OAtzCe,EAuzCf,MAvzCe,EAwzCf,QAxzCe,EAyzCf,MAzzCe,EA0zCf,MA1zCe,EA2zCf,OA3zCe,EA4zCf,OA5zCe,EA6zCf,MA7zCe,EA8zCf,QA9zCe,EA+zCf,MA/zCe,EAg0Cf,MAh0Ce,EAi0Cf,MAj0Ce,EAk0Cf,SAl0Ce,EAm0Cf,SAn0Ce,EAo0Cf,UAp0Ce,EAq0Cf,UAr0Ce,EAs0Cf,MAt0Ce,EAu0Cf,QAv0Ce,EAw0Cf,SAx0Ce,EAy0Cf,SAz0Ce,EA00Cf,QA10Ce,EA20Cf,OA30Ce,EA40Cf,UA50Ce,EA60Cf,QA70Ce,EA80Cf,SA90Ce,EA+0Cf,QA/0Ce,EAg1Cf,SAh1Ce,EAi1Cf,SAj1Ce,EAk1Cf,QAl1Ce,EAm1Cf,SAn1Ce,EAo1Cf,OAp1Ce,EAq1Cf,OAr1Ce,EAs1Cf,SAt1Ce,EAu1Cf,OAv1Ce,EAw1Cf,UAx1Ce,EAy1Cf,QAz1Ce,EA01Cf,SA11Ce,EA21Cf,OA31Ce,EA41Cf,SA51Ce,EA61Cf,SA71Ce,EA81Cf,SA91Ce,EA+1Cf,QA/1Ce,EAg2Cf,SAh2Ce,EAi2Cf,SAj2Ce,EAk2Cf,SAl2Ce,EAm2Cf,OAn2Ce,EAo2Cf,UAp2Ce,EAq2Cf,SAr2Ce,EAs2Cf,SAt2Ce,EAu2Cf,OAv2Ce,EAw2Cf,SAx2Ce,EAy2Cf,QAz2Ce,EA02Cf,SA12Ce,EA22Cf,MA32Ce,EA42Cf,MA52Ce,EA62Cf,OA72Ce,EA82Cf,SA92Ce,EA+2Cf,OA/2Ce,EAg3Cf,OAh3Ce,EAi3Cf,OAj3Ce,EAk3Cf,UAl3Ce,EAm3Cf,QAn3Ce,EAo3Cf,SAp3Ce,EAq3Cf,OAr3Ce,EAs3Cf,MAt3Ce,EAu3Cf,KAv3Ce,EAw3Cf,QAx3Ce,EAy3Cf,SAz3Ce,EA03Cf,SA13Ce,EA23Cf,SA33Ce,EA43Cf,SA53Ce,EA63Cf,UA73Ce,EA83Cf,OA93Ce,EA+3Cf,MA/3Ce,EAg4Cf,MAh4Ce,EAi4Cf,OAj4Ce,EAk4Cf,QAl4Ce,EAm4Cf,SAn4Ce,EAo4Cf,MAp4Ce,EAq4Cf,MAr4Ce,EAs4Cf,OAt4Ce,EAu4Cf,OAv4Ce,EAw4Cf,MAx4Ce,EAy4Cf,MAz4Ce,EA04Cf,OA14Ce,EA24Cf,OA34Ce,EA44Cf,MA54Ce,EA64Cf,OA74Ce,EA84Cf,QA94Ce,EA+4Cf,OA/4Ce,EAg5Cf,OAh5Ce,EAi5Cf,MAj5Ce,EAk5Cf,MAl5Ce,EAm5Cf,QAn5Ce,EAo5Cf,OAp5Ce,EAq5Cf,KAr5Ce,EAs5Cf,OAt5Ce,EAu5Cf,OAv5Ce,EAw5Cf,MAx5Ce,EAy5Cf,QAz5Ce,EA05Cf,OA15Ce,EA25Cf,SA35Ce,EA45Cf,QA55Ce,EA65Cf,SA75Ce,EA85Cf,QA95Ce,EA+5Cf,QA/5Ce,EAg6Cf,SAh6Ce,EAi6Cf,QAj6Ce,EAk6Cf,SAl6Ce,EAm6Cf,QAn6Ce,EAo6Cf,QAp6Ce,EAq6Cf,QAr6Ce,EAs6Cf,QAt6Ce,EAu6Cf,SAv6Ce,EAw6Cf,QAx6Ce,EAy6Cf,OAz6Ce,EA06Cf,SA16Ce,EA26Cf,QA36Ce,EA46Cf,MA56Ce,EA66Cf,QA76Ce,EA86Cf,UA96Ce,EA+6Cf,QA/6Ce,EAg7Cf,QAh7Ce,EAi7Cf,QAj7Ce,EAk7Cf,OAl7Ce,EAm7Cf,MAn7Ce,EAo7Cf,QAp7Ce,EAq7Cf,QAr7Ce,EAs7Cf,QAt7Ce,EAu7Cf,SAv7Ce,EAw7Cf,QAx7Ce,EAy7Cf,SAz7Ce,EA07Cf,QA17Ce,EA27Cf,UA37Ce,EA47Cf,QA57Ce,EA67Cf,UA77Ce,EA87Cf,UA97Ce,EA+7Cf,QA/7Ce,EAg8Cf,QAh8Ce,EAi8Cf,SAj8Ce,EAk8Cf,QAl8Ce,EAm8Cf,SAn8Ce,EAo8Cf,QAp8Ce,EAq8Cf,QAr8Ce,EAs8Cf,QAt8Ce,EAu8Cf,QAv8Ce,EAw8Cf,KAx8Ce,EAy8Cf,QAz8Ce,EA08Cf,MA18Ce,EA28Cf,MA38Ce,EA48Cf,MA58Ce,EA68Cf,OA78Ce,EA88Cf,OA98Ce,EA+8Cf,OA/8Ce,EAg9Cf,OAh9Ce,EAi9Cf,MAj9Ce,EAk9Cf,MAl9Ce,EAm9Cf,QAn9Ce,EAo9Cf,MAp9Ce,EAq9Cf,QAr9Ce,EAs9Cf,OAt9Ce,EAu9Cf,OAv9Ce,EAw9Cf,MAx9Ce,EAy9Cf,OAz9Ce,EA09Cf,OA19Ce,EA29Cf,QA39Ce,EA49Cf,QA59Ce,EA69Cf,SA79Ce,EA89Cf,MA99Ce,EA+9Cf,QA/9Ce,EAg+Cf,MAh+Ce,EAi+Cf,MAj+Ce,EAk+Cf,QAl+Ce,EAm+Cf,OAn+Ce,EAo+Cf,OAp+Ce,EAq+Cf,OAr+Ce,EAs+Cf,OAt+Ce,EAu+Cf,QAv+Ce,EAw+Cf,MAx+Ce,EAy+Cf,KAz+Ce,EA0+Cf,MA1+Ce,EA2+Cf,KA3+Ce,EA4+Cf,QA5+Ce,EA6+Cf,OA7+Ce,EA8+Cf,KA9+Ce,EA++Cf,QA/+Ce,EAg/Cf,SAh/Ce,EAi/Cf,MAj/Ce,EAk/Cf,MAl/Ce,EAm/Cf,OAn/Ce,EAo/Cf,QAp/Ce,EAq/Cf,OAr/Ce,EAs/Cf,MAt/Ce,EAu/Cf,QAv/Ce,EAw/Cf,MAx/Ce,EAy/Cf,QAz/Ce,EA0/Cf,MA1/Ce,EA2/Cf,SA3/Ce,EA4/Cf,SA5/Ce,EA6/Cf,OA7/Ce,EA8/Cf,SA9/Ce,EA+/Cf,MA//Ce,EAggDf,KAhgDe,EAigDf,OAjgDe,EAkgDf,MAlgDe,EAmgDf,OAngDe,EAogDf,SApgDe,EAqgDf,OArgDe,EAsgDf,QAtgDe,EAugDf,QAvgDe,EAwgDf,SAxgDe,EAygDf,UAzgDe,EA0gDf,UA1gDe,EA2gDf,OA3gDe,EA4gDf,OA5gDe,EA6gDf,QA7gDe,EA8gDf,QA9gDe,EA+gDf,OA/gDe,EAghDf,KAhhDe,EAihDf,QAjhDe,EAkhDf,QAlhDe,EAmhDf,MAnhDe,EAohDf,QAphDe,EAqhDf,QArhDe,EAshDf,SAthDe,EAuhDf,UAvhDe,EAwhDf,MAxhDe,EAyhDf,MAzhDe,EA0hDf,SA1hDe,EA2hDf,QA3hDe,EA4hDf,MA5hDe,EA6hDf,SA7hDe,EA8hDf,QA9hDe,EA+hDf,OA/hDe,EAgiDf,UAhiDe,EAiiDf,QAjiDe,EAkiDf,SAliDe,EAmiDf,SAniDe,EAoiDf,QApiDe,EAqiDf,OAriDe,EAsiDf,OAtiDe,EAuiDf,QAviDe,EAwiDf,OAxiDe,EAyiDf,SAziDe,EA0iDf,OA1iDe,EA2iDf,MA3iDe,EA4iDf,OA5iDe,EA6iDf,SA7iDe,EA8iDf,QA9iDe,EA+iDf,OA/iDe,EAgjDf,OAhjDe,EAijDf,MAjjDe,EAkjDf,QAljDe,EAmjDf,OAnjDe,EAojDf,MApjDe,EAqjDf,OArjDe,EAsjDf,MAtjDe,EAujDf,OAvjDe,EAwjDf,UAxjDe,EAyjDf,OAzjDe,EA0jDf,QA1jDe,EA2jDf,OA3jDe,EA4jDf,SA5jDe,EA6jDf,KA7jDe,EA8jDf,SA9jDe,EA+jDf,MA/jDe,EAgkDf,MAhkDe,EAikDf,OAjkDe,EAkkDf,OAlkDe,EAmkDf,MAnkDe,EAokDf,QApkDe,EAqkDf,MArkDe,EAskDf,OAtkDe,EAukDf,QAvkDe,EAwkDf,SAxkDe,EAykDf,QAzkDe,EA0kDf,OA1kDe,EA2kDf,MA3kDe,EA4kDf,OA5kDe,EA6kDf,QA7kDe,EA8kDf,SA9kDe,EA+kDf,KA/kDe,EAglDf,MAhlDe,EAilDf,OAjlDe,EAklDf,QAllDe,EAmlDf,KAnlDe,EAolDf,OAplDe,EAqlDf,MArlDe,EAslDf,OAtlDe,EAulDf,OAvlDe,EAwlDf,MAxlDe,EAylDf,MAzlDe,EA0lDf,OA1lDe,EA2lDf,SA3lDe,EA4lDf,OA5lDe,EA6lDf,OA7lDe,EA8lDf,QA9lDe,EA+lDf,MA/lDe,EAgmDf,QAhmDe,EAimDf,MAjmDe,EAkmDf,MAlmDe,EAmmDf,OAnmDe,EAomDf,OApmDe,EAqmDf,OArmDe,EAsmDf,OAtmDe,EAumDf,OAvmDe,EAwmDf,QAxmDe,EAymDf,OAzmDe,EA0mDf,OA1mDe,EA2mDf,MA3mDe,EA4mDf,OA5mDe,EA6mDf,MA7mDe,EA8mDf,MA9mDe,EA+mDf,QA/mDe,EAgnDf,QAhnDe,EAinDf,MAjnDe,EAknDf,MAlnDe,EAmnDf,MAnnDe,EAonDf,OApnDe,EAqnDf,SArnDe,EAsnDf,OAtnDe,EAunDf,UAvnDe,EAwnDf,OAxnDe,EAynDf,SAznDe,EA0nDf,MA1nDe,EA2nDf,MA3nDe,EA4nDf,OA5nDe,EA6nDf,MA7nDe,EA8nDf,MA9nDe,EA+nDf,OA/nDe,EAgoDf,MAhoDe,EAioDf,QAjoDe,EAkoDf,OAloDe,EAmoDf,OAnoDe,EAooDf,OApoDe,EAqoDf,SAroDe,EAsoDf,OAtoDe,EAuoDf,OAvoDe,EAwoDf,SAxoDe,EAyoDf,OAzoDe,EA0oDf,OA1oDe,EA2oDf,OA3oDe,EA4oDf,QA5oDe,EA6oDf,OA7oDe,EA8oDf,QA9oDe,EA+oDf,OA/oDe,EAgpDf,MAhpDe,EAipDf,QAjpDe,EAkpDf,OAlpDe,EAmpDf,OAnpDe,EAopDf,SAppDe,EAqpDf,OArpDe,EAspDf,OAtpDe,EAupDf,MAvpDe,EAwpDf,OAxpDe,EAypDf,QAzpDe,EA0pDf,QA1pDe,EA2pDf,KA3pDe,EA4pDf,QA5pDe,EA6pDf,SA7pDe,EA8pDf,UA9pDe,EA+pDf,QA/pDe,EAgqDf,SAhqDe,EAiqDf,OAjqDe,EAkqDf,OAlqDe,EAmqDf,QAnqDe,EAoqDf,OApqDe,EAqqDf,OArqDe,EAsqDf,OAtqDe,EAuqDf,OAvqDe,EAwqDf,MAxqDe,EAyqDf,OAzqDe,EA0qDf,OA1qDe,EA2qDf,MA3qDe,EA4qDf,MA5qDe,EA6qDf,QA7qDe,EA8qDf,OA9qDe,EA+qDf,OA/qDe,EAgrDf,OAhrDe,EAirDf,OAjrDe,EAkrDf,SAlrDe,EAmrDf,OAnrDe,EAorDf,OAprDe,EAqrDf,OArrDe,EAsrDf,OAtrDe,EAurDf,UAvrDe,EAwrDf,QAxrDe,EAyrDf,QAzrDe,EA0rDf,QA1rDe,EA2rDf,UA3rDe,EA4rDf,SA5rDe,EA6rDf,OA7rDe,EA8rDf,SA9rDe,EA+rDf,OA/rDe,EAgsDf,SAhsDe,EAisDf,QAjsDe,EAksDf,QAlsDe,EAmsDf,SAnsDe,EAosDf,MApsDe,EAqsDf,QArsDe,EAssDf,QAtsDe,EAusDf,OAvsDe,EAwsDf,SAxsDe,EAysDf,MAzsDe,EA0sDf,QA1sDe,EA2sDf,KA3sDe,EA4sDf,OA5sDe,EA6sDf,QA7sDe,EA8sDf,OA9sDe,EA+sDf,QA/sDe,EAgtDf,SAhtDe,EAitDf,MAjtDe,EAktDf,SAltDe,EAmtDf,OAntDe,EAotDf,UAptDe,EAqtDf,UArtDe,EAstDf,QAttDe,EAutDf,SAvtDe,EAwtDf,SAxtDe,EAytDf,SAztDe,EA0tDf,OA1tDe,EA2tDf,MA3tDe,EA4tDf,OA5tDe,EA6tDf,OA7tDe,EA8tDf,OA9tDe,EA+tDf,OA/tDe,EAguDf,MAhuDe,EAiuDf,OAjuDe,EAkuDf,QAluDe,EAmuDf,OAnuDe,EAouDf,QApuDe,EAquDf,SAruDe,EAsuDf,OAtuDe,EAuuDf,QAvuDe,EAwuDf,OAxuDe,EAyuDf,QAzuDe,EA0uDf,KA1uDe,EA2uDf,MA3uDe,EA4uDf,QA5uDe,EA6uDf,MA7uDe,EA8uDf,MA9uDe,EA+uDf,MA/uDe,EAgvDf,QAhvDe,EAivDf,MAjvDe,EAkvDf,OAlvDe,EAmvDf,QAnvDe,EAovDf,MApvDe,EAqvDf,OArvDe,EAsvDf,MAtvDe,EAuvDf,MAvvDe,EAwvDf,KAxvDe,EAyvDf,QAzvDe,EA0vDf,QA1vDe,EA2vDf,MA3vDe,EA4vDf,MA5vDe,EA6vDf,MA7vDe,EA8vDf,MA9vDe,EA+vDf,OA/vDe,EAgwDf,MAhwDe,EAiwDf,OAjwDe,EAkwDf,MAlwDe,EAmwDf,QAnwDe,EAowDf,OApwDe,EAqwDf,MArwDe,EAswDf,OAtwDe,EAuwDf,MAvwDe,EAwwDf,SAxwDe,EAywDf,OAzwDe,EA0wDf,QA1wDe,EA2wDf,OA3wDe,EA4wDf,OA5wDe,EA6wDf,SA7wDe,EA8wDf,QA9wDe,EA+wDf,MA/wDe,EAgxDf,OAhxDe,EAixDf,MAjxDe,EAkxDf,QAlxDe,EAmxDf,MAnxDe,EAoxDf,MApxDe,EAqxDf,KArxDe,EAsxDf,OAtxDe,EAuxDf,QAvxDe,EAwxDf,OAxxDe,EAyxDf,OAzxDe,EA0xDf,SA1xDe,EA2xDf,OA3xDe,EA4xDf,SA5xDe,EA6xDf,KA7xDe,EA8xDf,UA9xDe,EA+xDf,QA/xDe,EAgyDf,OAhyDe,EAiyDf,QAjyDe,EAkyDf,UAlyDe,EAmyDf,MAnyDe,EAoyDf,QApyDe,EAqyDf,SAryDe,EAsyDf,MAtyDe,EAuyDf,OAvyDe,EAwyDf,KAxyDe,EAyyDf,OAzyDe,EA0yDf,QA1yDe,EA2yDf,OA3yDe,EA4yDf,SA5yDe,EA6yDf,UA7yDe,EA8yDf,MA9yDe,EA+yDf,OA/yDe,EAgzDf,SAhzDe,EAizDf,QAjzDe,EAkzDf,OAlzDe,EAmzDf,MAnzDe,EAozDf,KApzDe,EAqzDf,OArzDe,EAszDf,OAtzDe,EAuzDf,SAvzDe,EAwzDf,QAxzDe,EAyzDf,OAzzDe,EA0zDf,UA1zDe,EA2zDf,MA3zDe,EA4zDf,OA5zDe,EA6zDf,QA7zDe,EA8zDf,MA9zDe,EA+zDf,OA/zDe,EAg0Df,MAh0De,EAi0Df,OAj0De,EAk0Df,OAl0De,EAm0Df,OAn0De,EAo0Df,OAp0De,EAq0Df,SAr0De,EAs0Df,MAt0De,EAu0Df,MAv0De,EAw0Df,QAx0De,EAy0Df,SAz0De,EA00Df,OA10De,EA20Df,MA30De,EA40Df,OA50De,EA60Df,SA70De,EA80Df,OA90De,EA+0Df,OA/0De,EAg1Df,KAh1De,EAi1Df,MAj1De,EAk1Df,SAl1De,EAm1Df,QAn1De,EAo1Df,MAp1De,EAq1Df,QAr1De,EAs1Df,QAt1De,EAu1Df,MAv1De,EAw1Df,QAx1De,EAy1Df,QAz1De,EA01Df,QA11De,EA21Df,OA31De,EA41Df,MA51De,EA61Df,OA71De,EA81Df,KA91De,EA+1Df,MA/1De,EAg2Df,SAh2De,EAi2Df,MAj2De,EAk2Df,UAl2De,EAm2Df,QAn2De,EAo2Df,SAp2De,EAq2Df,OAr2De,EAs2Df,SAt2De,EAu2Df,OAv2De,EAw2Df,MAx2De,EAy2Df,QAz2De,EA02Df,QA12De,EA22Df,SA32De,EA42Df,SA52De,EA62Df,QA72De,EA82Df,MA92De,EA+2Df,UA/2De,EAg3Df,SAh3De,EAi3Df,QAj3De,EAk3Df,OAl3De,EAm3Df,SAn3De,EAo3Df,QAp3De,EAq3Df,QAr3De,EAs3Df,SAt3De,EAu3Df,QAv3De,EAw3Df,MAx3De,EAy3Df,OAz3De,EA03Df,OA13De,EA23Df,OA33De,EA43Df,MA53De,EA63Df,OA73De,EA83Df,KA93De,EA+3Df,MA/3De,EAg4Df,QAh4De,EAi4Df,SAj4De,EAk4Df,OAl4De,EAm4Df,SAn4De,EAo4Df,QAp4De,EAq4Df,QAr4De,EAs4Df,OAt4De,EAu4Df,OAv4De,EAw4Df,QAx4De,EAy4Df,OAz4De,EA04Df,KA14De,EA24Df,QA34De,EA44Df,OA54De,EA64Df,SA74De,EA84Df,MA94De,EA+4Df,OA/4De,EAg5Df,SAh5De,EAi5Df,QAj5De,EAk5Df,QAl5De,EAm5Df,SAn5De,EAo5Df,OAp5De,EAq5Df,MAr5De,EAs5Df,QAt5De,EAu5Df,SAv5De,EAw5Df,MAx5De,EAy5Df,QAz5De,EA05Df,SA15De,EA25Df,QA35De,EA45Df,SA55De,EA65Df,SA75De,EA85Df,SA95De,EA+5Df,OA/5De,EAg6Df,MAh6De,EAi6Df,SAj6De,EAk6Df,SAl6De,EAm6Df,QAn6De,EAo6Df,SAp6De,EAq6Df,OAr6De,EAs6Df,MAt6De,EAu6Df,OAv6De,EAw6Df,QAx6De,EAy6Df,OAz6De,EA06Df,OA16De,EA26Df,OA36De,EA46Df,OA56De,EA66Df,MA76De,EA86Df,SA96De,EA+6Df,QA/6De,EAg7Df,MAh7De,EAi7Df,QAj7De,EAk7Df,MAl7De,EAm7Df,OAn7De,EAo7Df,MAp7De,EAq7Df,MAr7De,EAs7Df,MAt7De,EAu7Df,QAv7De,EAw7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1Df,MAn1De,EAo1Df,MAp1De,EAq1Df,KAr1De,EAs1Df,MAt1De,EAu1Df,MAv1De,EAw1Df,MAx1De,EAy1Df,MAz1De,EA01Df,OA11De,EA21Df,MA31De,EA41Df,KA51De,EA61Df,MA71De,EA81Df,MA91De,EA+1Df,MA/1De,EAg2Df,MAh2De,EAi2Df,OAj2De,EAk2Df,KAl2De,EAm2Df,KAn2De,EAo2Df,OAp2De,EAq2Df,KAr2De,EAs2Df,KAt2De,EAu2Df,KAv2De,EAw2Df,MAx2De,EAy2Df,MAz2De,EA02Df,MA12De,EA22Df,QA32De,EA42Df,QA52De,EA62Df,KA72De,EA82Df,KA92De,EA+2Df,MA/2De,EAg3Df,OAh3De,EAi3Df,MAj3De,EAk3Df,KAl3De,EAm3Df,KAn3De,EAo3Df,KAp3De,EAq3Df,MAr3De,EAs3Df,KAt3De,EAu3Df,KAv3De,EAw3Df,KAx3De,EAy3Df,MAz3De,EA03Df,KA13De,EA23Df,OA33De,EA43Df,KA53De,EA63Df,KA73De,EA83Df,KA93De,EA+3Df,KA/3De,EAg4Df,KAh4De,EAi4Df,KAj4De,EAk4Df,MAl4De,EAm4Df,KAn4De,EAo4Df,KAp4De,EAq4Df,OAr4De,EAs4Df,KAt4De,EAu4Df,OAv4De,EAw4Df,KAx4De,EAy4Df,SAz4De,EA04Df,KA14De,EA24Df,MA34De,EA44Df,KA54De,EA64Df,MA74De,EA84Df,KA94De,EA+4Df,KA/4De,EAg5Df,KAh5De,EAi5Df,MAj5De,EAk5Df,KAl5De,EAm5Df,MAn5De,EAo5Df,KAp5De,EAq5Df,KAr5De,EAs5Df,KAt5De,EAu5Df,KAv5De,EAw5Df,KAx5De,EAy5Df,OAz5De,EA05Df,KA15De,EA25Df,KA35De,EA45Df,OA55De,EA65Df,KA75De,EA85Df,KA95De,EA+5Df,KA/5De,EAg6Df,MAh6De,EAi6Df,MAj6De,EAk6Df,KAl6De,EAm6Df,MAn6De,EAo6Df,KAp6De,EAq6Df,MAr6De,EAs6Df,KAt6De,EAu6Df,KAv6De,EAw6Df,KAx6De,EAy6Df,KAz6De,EA06Df,OA16De,EA26Df,KA36De,EA46Df,KA56De,EA66Df,KA76De,EA86Df,MA96De,EA+6Df,MA/6De,EAg7Df,KAh7De,EAi7Df,MAj7De,EAk7Df,KAl7De,EAm7Df,MAn7De,EAo7Df,KAp7De,EAq7Df,OAr7De,EAs7Df,KAt7De,EAu7Df,KAv7De,EAw7Df,KAx7De,EAy7Df,KAz7De,EA07Df,KA17De,EA27Df,KA37De,EA47Df,KA57De,EA67Df,MA77De,EA87Df,MA97De,EA+7Df,MA/7De,EAg8Df,KAh8De,EAi8Df,KAj8De,EAk8Df,KAl8De,EAm8Df,KAn8De,EAo8Df,KAp8De,EAq8Df,KAr8De,EAs8Df,KAt8De,EAu8Df,KAv8De,EAw8Df,KAx8De,EAy8Df,OAz8De,EA08Df,KA18De,EA28Df,MA38De,EA48Df,MA58De,EA68Df,OA78De,EA88Df,MA98De,EA+8Df,KA/8De,EAg9Df,KAh9De,EAi9Df,KAj9De,EAk9Df,KAl9De,EAm9Df,MAn9De,EAo9Df,MAp9De,EAq9Df,KAr9De,EAs9Df,MAt9De,EAu9Df,MAv9De,EAw9Df,OAx9De,EAy9Df,MAz9De,EA09Df,KA19De,EA29Df,MA39De,EA49Df,OA59De,EA69Df,MA79De,EA89Df,MA99De,EA+9Df,KA/9De,EAg+Df,MAh+De,EAi+Df,MAj+De,EAk+Df,MAl+De,EAm+Df,MAn+De,EAo+Df,MAp+De,EAq+Df,OAr+De,EAs+Df,MAt+De,EAu+Df,MAv+De,EAw+Df,KAx+De,EAy+Df,KAz+De,EA0+Df,MA1+De,EA2+Df,MA3+De,EA4+Df,KA5+De,EA6+Df,KA7+De,EA8+Df,MA9+De,EA++Df,MA/+De,EAg/Df,KAh/De,EAi/Df,KAj/De,EAk/Df,KAl/De,EAm/Df,KAn/De,EAo/Df,KAp/De,EAq/Df,KAr/De,EAs/Df,MAt/De,EAu/Df,KAv/De,EAw/Df,KAx/De,EAy/Df,KAz/De,EA0/Df,MA1/De,EA2/Df,MA3/De,EA4/Df,KA5/De,EA6/Df,MA7/De,EA8/Df,OA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"}
\No newline at end of file