From c9a030e495dcf313363040d444b27e3d0753e5a8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 14:17:39 +0000 Subject: [PATCH] Add Solidity QR Code generator implementation Co-authored-by: okwme <964052+okwme@users.noreply.github.com> --- c/.deps/qrcodegen-demo.d | 1 + c/.deps/qrcodegen.d | 1 + c/.deps/timestamp | 0 c/libqrcodegen.a | Bin 0 -> 27696 bytes c/qrcodegen-demo | Bin 0 -> 36024 bytes c/qrcodegen-demo.o | Bin 0 -> 9904 bytes c/qrcodegen-test | Bin 0 -> 58176 bytes c/qrcodegen.o | Bin 0 -> 27208 bytes solidity/.gitignore | 4 + solidity/Readme.markdown | 132 + solidity/contracts/QRCode.sol | 1092 ++++ solidity/contracts/QRCodeDemo.sol | 257 + solidity/hardhat.config.js | 25 + solidity/package-lock.json | 8134 +++++++++++++++++++++++++++++ solidity/package.json | 23 + solidity/scripts/compile.js | 62 + solidity/test/QRCodeTest.js | 227 + 17 files changed, 9958 insertions(+) create mode 100644 c/.deps/qrcodegen-demo.d create mode 100644 c/.deps/qrcodegen.d create mode 100644 c/.deps/timestamp create mode 100644 c/libqrcodegen.a create mode 100755 c/qrcodegen-demo create mode 100644 c/qrcodegen-demo.o create mode 100755 c/qrcodegen-test create mode 100644 c/qrcodegen.o create mode 100644 solidity/.gitignore create mode 100644 solidity/Readme.markdown create mode 100644 solidity/contracts/QRCode.sol create mode 100644 solidity/contracts/QRCodeDemo.sol create mode 100644 solidity/hardhat.config.js create mode 100644 solidity/package-lock.json create mode 100644 solidity/package.json create mode 100644 solidity/scripts/compile.js create mode 100644 solidity/test/QRCodeTest.js diff --git a/c/.deps/qrcodegen-demo.d b/c/.deps/qrcodegen-demo.d new file mode 100644 index 0000000..2bec7c8 --- /dev/null +++ b/c/.deps/qrcodegen-demo.d @@ -0,0 +1 @@ +qrcodegen-demo.o: qrcodegen-demo.c qrcodegen.h diff --git a/c/.deps/qrcodegen.d b/c/.deps/qrcodegen.d new file mode 100644 index 0000000..7579197 --- /dev/null +++ b/c/.deps/qrcodegen.d @@ -0,0 +1 @@ +qrcodegen.o: qrcodegen.c qrcodegen.h diff --git a/c/.deps/timestamp b/c/.deps/timestamp new file mode 100644 index 0000000..e69de29 diff --git a/c/libqrcodegen.a b/c/libqrcodegen.a new file mode 100644 index 0000000000000000000000000000000000000000..9c25c66b5c7ed5e77f21b0bbb04066dd3a0bc9b6 GIT binary patch literal 27696 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 Lx`W7KF<<`QSu7`) literal 0 HcmV?d00001 diff --git a/c/qrcodegen-test b/c/qrcodegen-test new file mode 100755 index 0000000000000000000000000000000000000000..fbe624d142dcde612e5b416d6d6ac8e0221af52c GIT binary patch literal 58176 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 literal 0 HcmV?d00001 diff --git a/c/qrcodegen.o b/c/qrcodegen.o new file mode 100644 index 0000000000000000000000000000000000000000..c0d41a4c3fc0769b8378cb8c2088cb0965526996 GIT binary patch literal 27208 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 0x30 && c <= 0x39, "QRCode: non-digit in numeric segment"); + accumData = accumData * 10 + uint(c - 0x30); + accumCount++; + if (accumCount == 3) { + seg.bitLength = _appendBitsToBuffer(accumData, 10, buf, seg.bitLength); + accumData = 0; + accumCount = 0; + } + } + if (accumCount > 0) + seg.bitLength = _appendBitsToBuffer(accumData, accumCount * 3 + 1, buf, seg.bitLength); + seg.data = buf; + } + + /* + * Returns a segment representing the given text in alphanumeric mode. + * Valid characters: 0–9, A–Z (uppercase only), space, $, %, *, +, -, ., /, : + */ + function makeAlphanumeric(bytes memory text) internal pure returns (Segment memory seg) { + uint len = text.length; + int bl = _calcSegmentBitLength(MODE_ALPHANUMERIC, len); + require(bl != LENGTH_OVERFLOW, "QRCode: alphanumeric segment too long"); + seg.mode = MODE_ALPHANUMERIC; + seg.numChars = len; + seg.bitLength = 0; + + bytes memory buf = new bytes((uint(bl) + 7) / 8); + uint accumData = 0; + uint accumCount = 0; + for (uint i = 0; i < len; i++) { + (bool ok, uint idx) = _alphanumericCharIndex(uint8(text[i])); + require(ok, "QRCode: invalid char in alphanumeric segment"); + accumData = accumData * 45 + idx; + accumCount++; + if (accumCount == 2) { + seg.bitLength = _appendBitsToBuffer(accumData, 11, buf, seg.bitLength); + accumData = 0; + accumCount = 0; + } + } + if (accumCount > 0) + seg.bitLength = _appendBitsToBuffer(accumData, 6, buf, seg.bitLength); + seg.data = buf; + } + + /* + * Returns a segment representing an Extended Channel Interpretation (ECI) designator. + * assignVal must be in [0, 999999]. + */ + function makeEci(uint256 assignVal) internal pure returns (Segment memory seg) { + require(assignVal < 1000000, "QRCode: ECI value out of range"); + seg.mode = MODE_ECI; + seg.numChars = 0; + bytes memory buf; + uint bl; + if (assignVal < (1 << 7)) { + buf = new bytes(1); + bl = _appendBitsToBuffer(assignVal, 8, buf, 0); + } else if (assignVal < (1 << 14)) { + buf = new bytes(2); + bl = _appendBitsToBuffer(2, 2, buf, 0); + bl = _appendBitsToBuffer(assignVal, 14, buf, bl); + } else { + buf = new bytes(3); + bl = _appendBitsToBuffer(6, 3, buf, 0); + bl = _appendBitsToBuffer(assignVal >> 10, 11, buf, bl); + bl = _appendBitsToBuffer(assignVal & 0x3FF, 10, buf, bl); + } + seg.bitLength = bl; + seg.data = buf; + } + + + /*======== QR Code output query functions ========*/ + + /* + * Returns the side length of the QR Code in modules. + * Result is in [21, 177]. qrcode[0] must be nonzero (valid QR Code). + */ + function getSize(bytes memory qrcode) internal pure returns (uint) { + require(qrcode.length > 0 && uint8(qrcode[0]) != 0, "QRCode: invalid qrcode"); + return uint8(qrcode[0]); + } + + /* + * Returns true if and only if the module at coordinates (x, y) is dark. + * Out-of-bounds coordinates return false (light). + */ + function getModule(bytes memory qrcode, uint x, uint y) internal pure returns (bool) { + uint qrsize = uint8(qrcode[0]); + if (x >= qrsize || y >= qrsize) return false; + return _getModuleBounded(qrcode, x, y); + } + + + /*======== Character set helpers ========*/ + + /* + * Returns true iff every byte in text is an ASCII decimal digit (0x30–0x39). + */ + function isNumericBytes(bytes memory text) internal pure returns (bool) { + for (uint i = 0; i < text.length; i++) { + uint8 c = uint8(text[i]); + if (c < 0x30 || c > 0x39) return false; + } + return true; + } + + /* + * Returns true iff every byte in text is a valid alphanumeric-mode character. + * (0–9, A–Z, space, $, %, *, +, -, ., /, :) + */ + function isAlphanumericBytes(bytes memory text) internal pure returns (bool) { + for (uint i = 0; i < text.length; i++) { + (bool ok,) = _alphanumericCharIndex(uint8(text[i])); + if (!ok) return false; + } + return true; + } + + /* + * Returns the number of bytes needed for a segment data buffer containing + * numChars characters in the given mode. Returns type(uint).max on overflow. + */ + function calcSegmentBufferSize(uint8 mode, uint numChars) internal pure returns (uint) { + int temp = _calcSegmentBitLength(mode, numChars); + if (temp == LENGTH_OVERFLOW) return type(uint).max; + return (uint(temp) + 7) / 8; + } + + + /*======== Private: core encode pipeline ========*/ + + // Builds the QR Code symbol from already-determined version and ECC level. + // Split from encodeSegmentsAdvanced to keep stack depth within the EVM 16-slot limit. + function _buildQrCode( + Segment[] memory segs, + uint8 version, + uint8 ecl, + uint8 mask + ) private pure returns (bytes memory) { + uint bufLen = bufferLenForVersion(version); + bytes memory qrcode = new bytes(bufLen); + bytes memory tempBuffer = new bytes(bufLen); + + // 1. Encode all segment bits into qrcode (used as raw data buffer here) + uint bitLen = _appendSegmentBits(segs, version, qrcode); + + // 2. Add terminator bits and padding bytes to reach data capacity + bitLen = _addTerminatorAndPad(qrcode, bitLen, version, ecl); + + // 3. Compute ECC and interleave all codewords into tempBuffer + _addEccAndInterleave(qrcode, version, ecl, tempBuffer); + + // 4. Re-initialise qrcode as a QR module grid (all function modules marked dark) + _initializeFunctionModules(version, qrcode); + + // 5. Draw the interleaved codeword bits into the non-function modules + _drawCodewords(tempBuffer, _getNumRawDataModules(version) / 8, qrcode); + + // 6. Draw the light (white) portions of the function modules + _drawLightFunctionModules(qrcode, version); + + // 7. Re-initialise tempBuffer as the function-module mask for the masking step + _initializeFunctionModules(version, tempBuffer); + + // 8. Select and apply the mask pattern; draw final format bits + if (mask == MASK_AUTO) + mask = _chooseBestMask(tempBuffer, qrcode, ecl); + _applyMask(tempBuffer, qrcode, mask); + _drawFormatBits(ecl, mask, qrcode); + + return qrcode; + } + + // Finds the smallest version in [minVersion, maxVersion] that fits the segments + // at the given ECC level. Returns (false,0,0) if none fits. + function _findMinVersion( + Segment[] memory segs, + uint8 ecl, + uint8 minVersion, + uint8 maxVersion + ) private pure returns (bool success, uint8 version, uint dataUsedBits) { + for (version = minVersion; ; version++) { + uint cap = _getNumDataCodewords(version, ecl) * 8; + int bits = _getTotalBits(segs, version); + if (bits >= 0 && uint(bits) <= cap) { + dataUsedBits = uint(bits); + return (true, version, dataUsedBits); + } + if (version >= maxVersion) return (false, 0, 0); + } + } + + // Optionally boosts the ECC level to the highest that still fits in `version`. + function _boostEccLevel( + uint8 ecl, + uint8 version, + uint dataUsedBits, + bool boostEcl + ) private pure returns (uint8) { + if (!boostEcl) return ecl; + for (uint8 i = ECC_MEDIUM; i <= ECC_HIGH; i++) { + if (dataUsedBits <= _getNumDataCodewords(version, i) * 8) + ecl = i; + } + return ecl; + } + + // Writes all segment header+data bits into `qrcode`. Returns total bits written. + function _appendSegmentBits( + Segment[] memory segs, + uint8 version, + bytes memory qrcode + ) private pure returns (uint bitLen) { + bitLen = 0; + for (uint i = 0; i < segs.length; i++) { + Segment memory seg = segs[i]; + bitLen = _appendBitsToBuffer(uint(seg.mode), 4, qrcode, bitLen); + bitLen = _appendBitsToBuffer(seg.numChars, _numCharCountBits(seg.mode, version), qrcode, bitLen); + for (uint j = 0; j < seg.bitLength; j++) { + uint bit = (uint8(seg.data[j >> 3]) >> (7 - (j & 7))) & 1; + bitLen = _appendBitsToBuffer(bit, 1, qrcode, bitLen); + } + } + } + + // Appends the terminator sequence, zero-pads to the next byte boundary, then + // pads with alternating 0xEC/0x11 bytes to fill the data capacity. + // Returns the new bitLen (always a multiple of 8). + function _addTerminatorAndPad( + bytes memory qrcode, + uint bitLen, + uint8 version, + uint8 ecl + ) private pure returns (uint) { + uint cap = _getNumDataCodewords(version, ecl) * 8; + uint term = cap - bitLen; + if (term > 4) term = 4; + bitLen = _appendBitsToBuffer(0, term, qrcode, bitLen); + bitLen = _appendBitsToBuffer(0, (8 - bitLen % 8) % 8, qrcode, bitLen); + + uint8 padByte = 0xEC; + while (bitLen < cap) { + bitLen = _appendBitsToBuffer(padByte, 8, qrcode, bitLen); + padByte = (padByte == 0xEC) ? 0x11 : 0xEC; + } + return bitLen; + } + + + /*======== Private: ECC computation and interleaving ========*/ + + // Computes ECC for each data block and interleaves all blocks into `result`. + function _addEccAndInterleave( + bytes memory data, + uint8 version, + uint8 ecl, + bytes memory result + ) private pure { + uint numBlocks = _numErrCorrBlocks(ecl, version); + uint blockEccLen = _eccCodewordsPerBlock(ecl, version); + uint rawCodewords = _getNumRawDataModules(version) / 8; + uint dataLen = _getNumDataCodewords(version, ecl); + uint numShortBlocks = numBlocks - rawCodewords % numBlocks; + uint shortBlockDataLen = rawCodewords / numBlocks - blockEccLen; + + bytes memory rsdiv = _reedSolomonComputeDivisor(blockEccLen); + uint datOffset = 0; + + for (uint i = 0; i < numBlocks; i++) { + uint datLen = shortBlockDataLen + (i < numShortBlocks ? 0 : 1); + _interleaveBlock( + data, datOffset, datLen, rsdiv, blockEccLen, + result, i, numBlocks, numShortBlocks, shortBlockDataLen, dataLen + ); + datOffset += datLen; + } + } + + // Computes ECC for one block and copies data + ECC bytes to the correct + // interleaved positions in `result`. + function _interleaveBlock( + bytes memory data, + uint datOffset, + uint datLen, + bytes memory rsdiv, + uint blockEccLen, + bytes memory result, + uint blockIdx, + uint numBlocks, + uint numShortBlocks, + uint shortBlockDataLen, + uint dataLen + ) private pure { + bytes memory ecc = _reedSolomonComputeRemainder(data, datOffset, datLen, rsdiv, blockEccLen); + + for (uint j = 0; j < datLen; j++) { + uint k = blockIdx + j * numBlocks; + if (j >= shortBlockDataLen) k -= numShortBlocks; + result[k] = data[datOffset + j]; + } + for (uint j = 0; j < blockEccLen; j++) + result[dataLen + blockIdx + j * numBlocks] = ecc[j]; + } + + // Number of 8-bit data codewords for the given version and ECC level. + function _getNumDataCodewords(uint8 version, uint8 ecl) private pure returns (uint) { + return _getNumRawDataModules(version) / 8 + - _eccCodewordsPerBlock(ecl, version) * _numErrCorrBlocks(ecl, version); + } + + // Total raw data module count (after excluding all function modules). + function _getNumRawDataModules(uint8 version) private pure returns (uint) { + uint v = version; + uint result = (16 * v + 128) * v + 64; + if (v >= 2) { + uint numAlign = v / 7 + 2; + result -= (25 * numAlign - 10) * numAlign - 55; + if (v >= 7) result -= 36; + } + return result; + } + + + /*======== Private: Reed-Solomon ECC ========*/ + + // Returns the RS generator polynomial of the given degree. + function _reedSolomonComputeDivisor(uint degree) private pure returns (bytes memory result) { + require(degree >= 1 && degree <= 30, "QRCode: RS degree out of range"); + result = new bytes(degree); + result[degree - 1] = 0x01; // Start with the monomial x^0 + + uint8 root = 1; + for (uint i = 0; i < degree; i++) { + for (uint j = 0; j < degree; j++) { + result[j] = bytes1(_reedSolomonMultiply(uint8(result[j]), root)); + if (j + 1 < degree) + result[j] = bytes1(uint8(result[j]) ^ uint8(result[j + 1])); + } + root = _reedSolomonMultiply(root, 0x02); + } + } + + // Returns the RS remainder of data[offset..offset+dataLen-1] divided by the generator. + function _reedSolomonComputeRemainder( + bytes memory data, + uint dataOffset, + uint dataLen, + bytes memory generator, + uint degree + ) private pure returns (bytes memory result) { + result = new bytes(degree); + for (uint i = 0; i < dataLen; i++) { + uint8 factor = uint8(data[dataOffset + i]) ^ uint8(result[0]); + for (uint k = 0; k + 1 < degree; k++) + result[k] = result[k + 1]; + result[degree - 1] = 0x00; + for (uint j = 0; j < degree; j++) + result[j] = bytes1(uint8(result[j]) ^ _reedSolomonMultiply(uint8(generator[j]), factor)); + } + } + + // Returns the product of two GF(2^8) elements modulo the irreducible polynomial 0x11D. + // Uses Russian-peasant multiplication — same algorithm as the C implementation. + function _reedSolomonMultiply(uint8 x, uint8 y) private pure returns (uint8 z) { + z = 0; + for (int i = 7; i >= 0; i--) { + z = uint8((uint(z) << 1) ^ ((uint(z) >> 7) * 0x11D)); + if (((y >> uint(i)) & 1) != 0) z ^= x; + } + } + + + /*======== Private: Function module drawing ========*/ + + // Zeros qrcode, sets qrcode[0] = size, then marks all function modules dark. + function _initializeFunctionModules(uint8 version, bytes memory qrcode) private pure { + uint qrsize = uint(version) * 4 + 17; + for (uint i = 0; i < qrcode.length; i++) qrcode[i] = 0x00; + qrcode[0] = bytes1(uint8(qrsize)); + + // Timing patterns + _fillRectangle(6, 0, 1, qrsize, qrcode); + _fillRectangle(0, 6, qrsize, 1, qrcode); + + // Finder patterns and format bit areas (all three corners) + _fillRectangle(0, 0, 9, 9, qrcode); + _fillRectangle(qrsize - 8, 0, 8, 9, qrcode); + _fillRectangle(0, qrsize - 8, 9, 8, qrcode); + + // Alignment patterns + { + (bytes memory pos, uint n) = _getAlignmentPatternPositions(version); + for (uint i = 0; i < n; i++) { + for (uint j = 0; j < n; j++) { + // Skip the three finder-pattern corners + if ((i == 0 && j == 0) || (i == 0 && j == n - 1) || (i == n - 1 && j == 0)) + continue; + _fillRectangle(uint8(pos[i]) - 2, uint8(pos[j]) - 2, 5, 5, qrcode); + } + } + } + + // Version information blocks (only for version >= 7) + if (version >= 7) { + _fillRectangle(qrsize - 11, 0, 3, 6, qrcode); + _fillRectangle(0, qrsize - 11, 6, 3, qrcode); + } + } + + // Draws the light (white) function modules over the dark ones set by + // _initializeFunctionModules: timing gap modules, finder separators, + // alignment pattern interiors, and version information bits. + function _drawLightFunctionModules(bytes memory qrcode, uint8 version) private pure { + uint qrsize = uint(version) * 4 + 17; + + // Timing pattern: every other module starting at index 7 + { + uint i = 7; + while (i < qrsize - 7) { + _setModuleBounded(qrcode, 6, i, false); + _setModuleBounded(qrcode, i, 6, false); + i += 2; + } + } + + // Finder pattern separator rings (Chebyshev distance 2 and 4 from each center) + for (int dy = -4; dy <= 4; dy++) { + for (int dx = -4; dx <= 4; dx++) { + int adx = dx < 0 ? -dx : dx; + int ady = dy < 0 ? -dy : dy; + int dist = adx > ady ? adx : ady; + if (dist == 2 || dist == 4) { + _setModuleUnbounded(qrcode, int(3) + dx, int(3) + dy, false); + _setModuleUnbounded(qrcode, int(qrsize) - 4 + dx, int(3) + dy, false); + _setModuleUnbounded(qrcode, int(3) + dx, int(qrsize) - 4 + dy, false); + } + } + } + + // Alignment pattern interiors (1-module rings around each centre) + { + (bytes memory ap, uint n) = _getAlignmentPatternPositions(version); + for (uint i = 0; i < n; i++) { + for (uint j = 0; j < n; j++) { + if ((i == 0 && j == 0) || (i == 0 && j == n - 1) || (i == n - 1 && j == 0)) + continue; + for (int dy2 = -1; dy2 <= 1; dy2++) { + for (int dx2 = -1; dx2 <= 1; dx2++) { + _setModuleBounded(qrcode, + uint(int(uint(uint8(ap[i]))) + dx2), + uint(int(uint(uint8(ap[j]))) + dy2), + dx2 == 0 && dy2 == 0); + } + } + } + } + } + + // Version information modules (only for version >= 7) + if (version >= 7) { + uint rem = version; + for (uint i = 0; i < 12; i++) + rem = (rem << 1) ^ ((rem >> 11) * 0x1F25); + uint bits = (uint(version) << 12) | rem; + + for (uint i = 0; i < 6; i++) { + for (uint j = 0; j < 3; j++) { + uint p = qrsize - 11 + j; + _setModuleBounded(qrcode, p, i, (bits & 1) != 0); + _setModuleBounded(qrcode, i, p, (bits & 1) != 0); + bits >>= 1; + } + } + } + } + + // Draws two copies of the 15-bit format information (including its own ECC). + function _drawFormatBits(uint8 ecl, uint8 mask, bytes memory qrcode) private pure { + // Remap ECC level: LOW→1, MEDIUM→0, QUARTILE→3, HIGH→2 + uint8[4] memory table; + table[0] = 1; table[1] = 0; table[2] = 3; table[3] = 2; + uint data = (uint(table[ecl]) << 3) | uint(mask); + uint rem = data; + for (uint i = 0; i < 10; i++) + rem = (rem << 1) ^ ((rem >> 9) * 0x537); + uint bits = (data << 10 | rem) ^ 0x5412; + + // First copy (around the top-left finder) + for (uint i = 0; i <= 5; i++) _setModuleBounded(qrcode, 8, i, _getBit(bits, i)); + _setModuleBounded(qrcode, 8, 7, _getBit(bits, 6)); + _setModuleBounded(qrcode, 8, 8, _getBit(bits, 7)); + _setModuleBounded(qrcode, 7, 8, _getBit(bits, 8)); + for (uint i = 9; i < 15; i++) _setModuleBounded(qrcode, 14 - i, 8, _getBit(bits, i)); + + // Second copy (top-right and bottom-left finders) + uint qrsize = uint8(qrcode[0]); + for (uint i = 0; i < 8; i++) _setModuleBounded(qrcode, qrsize - 1 - i, 8, _getBit(bits, i)); + for (uint i = 8; i < 15; i++) _setModuleBounded(qrcode, 8, qrsize - 15 + i, _getBit(bits, i)); + _setModuleBounded(qrcode, 8, qrsize - 8, true); // Always dark + } + + // Returns the sorted list of alignment pattern centre positions for `version`. + // result[0..numAlign-1] are the positions; the same list is used for x and y. + function _getAlignmentPatternPositions(uint8 version) + private pure returns (bytes memory result, uint numAlign) + { + result = new bytes(7); + if (version == 1) return (result, 0); + numAlign = uint(version) / 7 + 2; + uint step = ((uint(version) * 8 + numAlign * 3 + 5) / (numAlign * 4 - 4)) * 2; + { + uint pos = uint(version) * 4 + 10; + uint i = numAlign - 1; + while (true) { + result[i] = bytes1(uint8(pos)); + if (i == 1) break; + i--; + pos -= step; + } + } + result[0] = 0x06; // Always 6 + } + + // Sets all modules in [left, left+width) × [top, top+height) to dark. + function _fillRectangle(uint left, uint top, uint width, uint height, bytes memory qrcode) private pure { + for (uint dy = 0; dy < height; dy++) + for (uint dx = 0; dx < width; dx++) + _setModuleBounded(qrcode, left + dx, top + dy, true); + } + + + /*======== Private: Codeword drawing and masking ========*/ + + // Writes packed codewords into the non-function modules using the QR zigzag scan. + function _drawCodewords(bytes memory data, uint dataLen, bytes memory qrcode) private pure { + uint qrsize = uint8(qrcode[0]); + uint idx = 0; + + uint right = qrsize - 1; + while (right >= 1) { + if (right == 6) right = 5; + for (uint vert = 0; vert < qrsize; vert++) { + for (uint j = 0; j < 2; j++) { + uint x = right - j; + bool upward = ((right + 1) & 2) == 0; + uint y = upward ? qrsize - 1 - vert : vert; + if (!_getModuleBounded(qrcode, x, y) && idx < dataLen * 8) { + bool dark = _getBit(uint8(data[idx >> 3]), 7 - (idx & 7)); + _setModuleBounded(qrcode, x, y, dark); + idx++; + } + } + } + if (right < 2) break; // prevent uint underflow + right -= 2; + } + } + + // XORs every non-function module with the given mask pattern. + // Calling this twice with the same mask undoes the operation (XOR is self-inverse). + function _applyMask(bytes memory functionModules, bytes memory qrcode, uint8 mask) private pure { + uint qrsize = uint8(qrcode[0]); + for (uint y = 0; y < qrsize; y++) { + for (uint x = 0; x < qrsize; x++) { + if (_getModuleBounded(functionModules, x, y)) continue; + bool inv; + if (mask == 0) inv = (x + y) % 2 == 0; + else if (mask == 1) inv = y % 2 == 0; + else if (mask == 2) inv = x % 3 == 0; + else if (mask == 3) inv = (x + y) % 3 == 0; + else if (mask == 4) inv = (x / 3 + y / 2) % 2 == 0; + else if (mask == 5) inv = x * y % 2 + x * y % 3 == 0; + else if (mask == 6) inv = (x * y % 2 + x * y % 3) % 2 == 0; + else inv = ((x + y) % 2 + x * y % 3) % 2 == 0; + _setModuleBounded(qrcode, x, y, _getModuleBounded(qrcode, x, y) != inv); + } + } + } + + // Evaluates all 8 mask patterns and returns the index with the lowest penalty. + function _chooseBestMask( + bytes memory functionModules, + bytes memory qrcode, + uint8 ecl + ) private pure returns (uint8 bestMask) { + uint minPenalty = type(uint).max; + for (uint8 i = 0; i < 8; i++) { + _applyMask(functionModules, qrcode, i); + _drawFormatBits(ecl, i, qrcode); + uint penalty = _getPenaltyScore(qrcode); + if (penalty < minPenalty) { + bestMask = i; + minPenalty = penalty; + } + _applyMask(functionModules, qrcode, i); // Undo via XOR + } + } + + // Computes the penalty score for the current QR Code state (lower is better). + function _getPenaltyScore(bytes memory qrcode) private pure returns (uint result) { + uint qrsize = uint8(qrcode[0]); + result = 0; + + // N1 + N3: runs of same colour in rows, and finder-like patterns + for (uint y = 0; y < qrsize; y++) result += _penaltyLine(qrcode, y, qrsize, false); + // N1 + N3: same in columns + for (uint x = 0; x < qrsize; x++) result += _penaltyLine(qrcode, x, qrsize, true); + + // N2: 2×2 blocks of same colour + for (uint y = 0; y < qrsize - 1; y++) { + for (uint x = 0; x < qrsize - 1; x++) { + bool color = _getModuleBounded(qrcode, x, y); + if (color == _getModuleBounded(qrcode, x + 1, y) && + color == _getModuleBounded(qrcode, x, y + 1) && + color == _getModuleBounded(qrcode, x + 1, y + 1)) + result += PENALTY_N2; + } + } + + // N4: dark/light balance + uint dark = 0; + for (uint y = 0; y < qrsize; y++) + for (uint x = 0; x < qrsize; x++) + if (_getModuleBounded(qrcode, x, y)) dark++; + uint total = qrsize * qrsize; + uint darkDiff = dark * 20 >= total * 10 ? dark * 20 - total * 10 : total * 10 - dark * 20; + uint c = (darkDiff + total - 1) / total; + uint k = c > 0 ? c - 1 : 0; + result += k * PENALTY_N4; + } + + // Accumulates N1 + N3 penalty for one row (isCol=false) or column (isCol=true). + function _penaltyLine(bytes memory qrcode, uint lineIdx, uint qrsize, bool isCol) + private pure returns (uint score) + { + bool runColor = false; + uint runLen = 0; + uint[7] memory history; + score = 0; + + for (uint pos = 0; pos < qrsize; pos++) { + bool cur = isCol + ? _getModuleBounded(qrcode, lineIdx, pos) + : _getModuleBounded(qrcode, pos, lineIdx); + if (cur == runColor) { + runLen++; + if (runLen == 5) score += PENALTY_N1; + else if (runLen > 5) score++; + } else { + _finderPenaltyAddHistory(runLen, history, qrsize); + if (!runColor) score += _finderPenaltyCountPatterns(history) * PENALTY_N3; + runColor = cur; + runLen = 1; + } + } + score += _finderPenaltyTerminateAndCount(runColor, runLen, history, qrsize) * PENALTY_N3; + } + + function _finderPenaltyCountPatterns(uint[7] memory h) private pure returns (uint) { + uint n = h[1]; + bool core = n > 0 && h[2] == n && h[3] == n * 3 && h[4] == n && h[5] == n; + uint cnt = 0; + if (core && h[0] >= n * 4 && h[6] >= n) cnt++; + if (core && h[6] >= n * 4 && h[0] >= n) cnt++; + return cnt; + } + + function _finderPenaltyTerminateAndCount( + bool runColor, + uint runLen, + uint[7] memory history, + uint qrsize + ) private pure returns (uint) { + if (runColor) { + _finderPenaltyAddHistory(runLen, history, qrsize); + runLen = 0; + } + runLen += qrsize; + _finderPenaltyAddHistory(runLen, history, qrsize); + return _finderPenaltyCountPatterns(history); + } + + function _finderPenaltyAddHistory(uint runLen, uint[7] memory h, uint qrsize) private pure { + if (h[0] == 0) runLen += qrsize; // virtual light border at line start + h[6] = h[5]; h[5] = h[4]; h[4] = h[3]; + h[3] = h[2]; h[2] = h[1]; h[1] = h[0]; + h[0] = runLen; + } + + + /*======== Private: Module access ========*/ + + // Returns the colour of module (x, y). Coordinates must be in bounds. + function _getModuleBounded(bytes memory qrcode, uint x, uint y) private pure returns (bool) { + uint qrsize = uint8(qrcode[0]); + uint index = y * qrsize + x; + return ((uint8(qrcode[(index >> 3) + 1]) >> (index & 7)) & 1) != 0; + } + + // Sets module (x, y) to dark or light. Coordinates must be in bounds. + function _setModuleBounded(bytes memory qrcode, uint x, uint y, bool isDark) private pure { + uint qrsize = uint8(qrcode[0]); + uint index = y * qrsize + x; + uint bitPos = index & 7; + uint bytePos = (index >> 3) + 1; + if (isDark) + qrcode[bytePos] = bytes1(uint8(qrcode[bytePos]) | uint8(1 << bitPos)); + else + qrcode[bytePos] = bytes1(uint8(qrcode[bytePos]) & uint8(0xFF ^ (1 << bitPos))); + } + + // Sets module (x, y) if in bounds; does nothing if x or y is negative or out of range. + function _setModuleUnbounded(bytes memory qrcode, int x, int y, bool isDark) private pure { + uint qrsize = uint8(qrcode[0]); + if (x >= 0 && x < int(qrsize) && y >= 0 && y < int(qrsize)) + _setModuleBounded(qrcode, uint(x), uint(y), isDark); + } + + // Returns true iff bit i of x is set. + function _getBit(uint x, uint i) private pure returns (bool) { + return ((x >> i) & 1) != 0; + } + + + /*======== Private: Segment bit-length calculations ========*/ + + // Returns the number of data bits for a segment, or LENGTH_OVERFLOW on failure. + function _calcSegmentBitLength(uint8 mode, uint numChars) private pure returns (int) { + if (numChars > 32767) return LENGTH_OVERFLOW; + int result = int(numChars); + if (mode == MODE_NUMERIC) result = (result * 10 + 2) / 3; + else if (mode == MODE_ALPHANUMERIC) result = (result * 11 + 1) / 2; + else if (mode == MODE_BYTE) result *= 8; + else if (mode == MODE_KANJI) result *= 13; + else if (mode == MODE_ECI && numChars == 0) result = 3 * 8; + else return LENGTH_OVERFLOW; + if (result > 32767) return LENGTH_OVERFLOW; + return result; + } + + // Returns the total encoded bit length of all segments at the given version, + // or LENGTH_OVERFLOW if any segment overflows its character-count field or + // the total exceeds 32767. + function _getTotalBits(Segment[] memory segs, uint8 version) private pure returns (int) { + int result = 0; + for (uint i = 0; i < segs.length; i++) { + uint ccbits = _numCharCountBits(segs[i].mode, version); + if (segs[i].numChars >= (1 << ccbits)) return LENGTH_OVERFLOW; + result += int(4 + ccbits + segs[i].bitLength); + if (result > 32767) return LENGTH_OVERFLOW; + } + return result; + } + + // Returns the width (in bits) of the character-count field for the given mode and version. + function _numCharCountBits(uint8 mode, uint8 version) private pure returns (uint) { + uint i = (uint(version) + 7) / 17; // 0 for v1–9, 1 for v10–26, 2 for v27–40 + if (mode == MODE_NUMERIC) { if (i == 0) return 10; if (i == 1) return 12; return 14; } + if (mode == MODE_ALPHANUMERIC) { if (i == 0) return 9; if (i == 1) return 11; return 13; } + if (mode == MODE_BYTE) { if (i == 0) return 8; return 16; } + if (mode == MODE_KANJI) { if (i == 0) return 8; if (i == 1) return 10; return 12; } + if (mode == MODE_ECI) return 0; + revert("QRCode: invalid mode"); + } + + + /*======== Private: Bit buffer ========*/ + + // Appends `numBits` bits from val (MSB first) to buffer starting at bit position bitLen. + // Returns the updated bit length. Requires numBits <= 16 and val < 2^numBits. + function _appendBitsToBuffer(uint val, uint numBits, bytes memory buffer, uint bitLen) + private pure returns (uint) + { + for (int i = int(numBits) - 1; i >= 0; i--) { + if (((val >> uint(i)) & 1) != 0) { + uint byteIdx = bitLen >> 3; + uint bitIdx = 7 - (bitLen & 7); + buffer[byteIdx] = bytes1(uint8(buffer[byteIdx]) | uint8(1 << bitIdx)); + } + bitLen++; + } + return bitLen; + } + + + /*======== Private: Alphanumeric character lookup ========*/ + + // Returns (true, index) if c is in the alphanumeric charset, else (false, 0). + // Charset: 0–9 → 0–9, A–Z → 10–35, ' '→36, '$'→37, '%'→38, '*'→39, + // '+'→40, '-'→41, '.'→42, '/'→43, ':'→44 + function _alphanumericCharIndex(uint8 c) private pure returns (bool, uint) { + if (c >= 0x30 && c <= 0x39) return (true, c - 0x30); // '0'–'9' + if (c >= 0x41 && c <= 0x5A) return (true, c - 0x41 + 10); // 'A'–'Z' + if (c == 0x20) return (true, 36); // ' ' + if (c == 0x24) return (true, 37); // '$' + if (c == 0x25) return (true, 38); // '%' + if (c == 0x2A) return (true, 39); // '*' + if (c == 0x2B) return (true, 40); // '+' + if (c == 0x2D) return (true, 41); // '-' + if (c == 0x2E) return (true, 42); // '.' + if (c == 0x2F) return (true, 43); // '/' + if (c == 0x3A) return (true, 44); // ':' + return (false, 0); + } + + + /*======== Private: Lookup tables ========*/ + + /* + * ECC codewords per block, indexed by [ecl][version]. + * Index 0 of each row is unused (version 0 does not exist) and stored as 0xFF. + * Hex literals encode the 41-byte table for each ECC level directly from the + * QR Code specification. + */ + function _eccCodewordsPerBlock(uint8 ecl, uint8 version) private pure returns (uint8) { + // Low : versions 0-40 (index 0 = 0xFF sentinel) + bytes memory LOW = hex"ff070a0f141a1214181e1214181a1e16181c1e1c1c1c1c1e1e1a1c1e1e1e1e1e1e1e1e1e1e1e1e1e1e"; + bytes memory MEDIUM = hex"ff0a101a1218101216161a1e161618181c1c1a1a1a1a1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c"; + bytes memory QUARTILE = hex"ff0d16121a1218121614181c1a18141e181c1c1a1e1c1e1e1e1e1c1e1e1e1e1e1e1e1e1e1e1e1e1e1e"; + bytes memory HIGH = hex"ff111c1610161c1a1a181c181c1618181e1c1c1a1c1e181e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e"; + if (ecl == ECC_LOW) return uint8(LOW[version]); + if (ecl == ECC_MEDIUM) return uint8(MEDIUM[version]); + if (ecl == ECC_QUARTILE) return uint8(QUARTILE[version]); + return uint8(HIGH[version]); + } + + /* + * Number of error-correction blocks, indexed by [ecl][version]. + * Index 0 is unused and stored as 0xFF. + */ + function _numErrCorrBlocks(uint8 ecl, uint8 version) private pure returns (uint8) { + bytes memory LOW = hex"ff01010101010202020204040404040606060607080809090a0c0c0c0d0e0f10111213131415161819"; + bytes memory MEDIUM = hex"ff01010102020404040505050809090a0a0b0d0e10111112141517191a1c1d1f21232526282b2d2f31"; + bytes memory QUARTILE = hex"ff01010202040406060808080a0c100c11101215141717191b1d22222326282b2d303335383b3e4144"; + bytes memory HIGH = hex"ff010102040404050608080b0b101012101315191919221e202325282a2d303336393c3f42464a4d51"; + if (ecl == ECC_LOW) return uint8(LOW[version]); + if (ecl == ECC_MEDIUM) return uint8(MEDIUM[version]); + if (ecl == ECC_QUARTILE) return uint8(QUARTILE[version]); + return uint8(HIGH[version]); + } + +} diff --git a/solidity/contracts/QRCodeDemo.sol b/solidity/contracts/QRCodeDemo.sol new file mode 100644 index 0000000..8f79677 --- /dev/null +++ b/solidity/contracts/QRCodeDemo.sol @@ -0,0 +1,257 @@ +/* + * QR Code generator demo (Solidity) + * + * Copyright (c) Project Nayuki. (MIT License) + * https://www.nayuki.io/page/qr-code-generator-library + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * - The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * - The Software is provided "as is", without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall the + * authors or copyright holders be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising from, + * out of or in connection with the Software or the use or other dealings in the + * Software. + */ + +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "./QRCode.sol"; + +/* + * A demo contract that exercises the QRCode library. + * + * All public functions are pure (no state) and return the raw QR Code bytes. + * Callers can inspect individual modules with QRCode.getModule() or render the + * symbol off-chain. See the Readme.markdown for the output format. + * + * toSvgString() shows how to render a QR Code to an inline SVG string entirely + * on-chain — useful for NFT metadata or other on-chain display. + */ +contract QRCodeDemo { + + // ----------------------------------------------------------------------- + // Demo scenarios + // ----------------------------------------------------------------------- + + // Simple: encode "Hello, world!" with Low ECC, automatic mask. + function doBasicDemo() external pure returns (bytes memory) { + return QRCode.encodeText( + "Hello, world!", + QRCode.ECC_LOW, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_AUTO, + true + ); + } + + // Same as doBasicDemo() but forces mask 2 (the mask AUTO selects for this input). + // Useful for testing when on-chain gas limits prohibit the 8-pass auto-mask scan. + function doBasicDemoFixedMask() external pure returns (bytes memory) { + return QRCode.encodeText( + "Hello, world!", + QRCode.ECC_LOW, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_2, + true + ); + } + + // Numeric mode: digits are encoded with 3.33 bits per digit. + function doNumericDemo() external pure returns (bytes memory) { + return QRCode.encodeText( + "314159265358979323846264338327950288419716939937510", + QRCode.ECC_MEDIUM, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_AUTO, + true + ); + } + + // Same as doNumericDemo() but forces mask 3 (the mask AUTO selects for this input). + // Useful for testing when on-chain gas limits prohibit the 8-pass auto-mask scan. + function doNumericDemoFixedMask() external pure returns (bytes memory) { + return QRCode.encodeText( + "314159265358979323846264338327950288419716939937510", + QRCode.ECC_MEDIUM, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_3, + true + ); + } + + // Alphanumeric mode: uppercase + special chars at 5.5 bits per character. + function doAlphanumericDemo() external pure returns (bytes memory) { + return QRCode.encodeText( + "DOLLAR-AMOUNT:$39.87 PERCENTAGE:100.00% OPERATIONS:+-*/", + QRCode.ECC_HIGH, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_AUTO, + true + ); + } + + // Same as doAlphanumericDemo() but forces mask 0. + // Useful for testing when on-chain gas limits prohibit the 8-pass auto-mask scan. + function doAlphanumericDemoFixedMask() external pure returns (bytes memory) { + return QRCode.encodeText( + "DOLLAR-AMOUNT:$39.87 PERCENTAGE:100.00% OPERATIONS:+-*/", + QRCode.ECC_HIGH, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_0, + true + ); + } + + // Binary / byte mode: arbitrary byte sequences. + function doBinaryDemo() external pure returns (bytes memory) { + bytes memory data = hex"48656c6c6f2c20776f726c6421"; // "Hello, world!" + return QRCode.encodeBinary( + data, + QRCode.ECC_MEDIUM, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_AUTO, + true + ); + } + + // Same as doBinaryDemo() but forces mask 0. + function doBinaryDemoFixedMask() external pure returns (bytes memory) { + bytes memory data = hex"48656c6c6f2c20776f726c6421"; // "Hello, world!" + return QRCode.encodeBinary( + data, + QRCode.ECC_MEDIUM, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_0, + true + ); + } + + // Fixed mask: forces mask pattern 3 instead of auto-selecting. + function doFixedMaskDemo() external pure returns (bytes memory) { + return QRCode.encodeText( + "https://www.nayuki.io/", + QRCode.ECC_HIGH, + QRCode.VERSION_MIN, + QRCode.VERSION_MAX, + QRCode.MASK_3, + true + ); + } + + // Segment API: mix alphanumeric + numeric segments for compact encoding. + function doSegmentDemo() external pure returns (bytes memory) { + QRCode.Segment[] memory segs = new QRCode.Segment[](2); + segs[0] = QRCode.makeAlphanumeric(bytes("THE SQUARE ROOT OF 2 IS 1.")); + segs[1] = QRCode.makeNumeric(bytes("41421356237309504880168872420969807856967187537694")); + return QRCode.encodeSegments(segs, QRCode.ECC_LOW); + } + + // Same as doSegmentDemo() but forces mask 0 to stay within the gas cap. + function doSegmentDemoFixedMask() external pure returns (bytes memory) { + QRCode.Segment[] memory segs = new QRCode.Segment[](2); + segs[0] = QRCode.makeAlphanumeric(bytes("THE SQUARE ROOT OF 2 IS 1.")); + segs[1] = QRCode.makeNumeric(bytes("41421356237309504880168872420969807856967187537694")); + return QRCode.encodeSegmentsAdvanced(segs, QRCode.ECC_LOW, + QRCode.VERSION_MIN, QRCode.VERSION_MAX, QRCode.MASK_0, true); + } + + // ECI segment: marks the payload as UTF-8 (ECI assignment value 26). + function doEciDemo() external pure returns (bytes memory) { + QRCode.Segment[] memory segs = new QRCode.Segment[](2); + segs[0] = QRCode.makeEci(26); + segs[1] = QRCode.makeBytes(hex"e4b8ade69687"); // Chinese "zhongwen" in UTF-8 + return QRCode.encodeSegments(segs, QRCode.ECC_MEDIUM); + } + + // Same as doEciDemo() but forces mask 0 to stay within the gas cap. + function doEciDemoFixedMask() external pure returns (bytes memory) { + QRCode.Segment[] memory segs = new QRCode.Segment[](2); + segs[0] = QRCode.makeEci(26); + segs[1] = QRCode.makeBytes(hex"e4b8ade69687"); // Chinese "zhongwen" in UTF-8 + return QRCode.encodeSegmentsAdvanced(segs, QRCode.ECC_MEDIUM, + QRCode.VERSION_MIN, QRCode.VERSION_MAX, QRCode.MASK_0, true); + } + + // Version-constrained: forces exactly version 5 (37×37 modules), mask 2, no ECC boost. + function doVersionConstraintDemo() external pure returns (bytes memory) { + return QRCode.encodeText( + "3141592653589793238462643383", + QRCode.ECC_HIGH, + 5, 5, + QRCode.MASK_2, + false + ); + } + + // ----------------------------------------------------------------------- + // SVG renderer (on-chain) + // ----------------------------------------------------------------------- + + /* + * Converts a QR Code to a minimal SVG string suitable for embedding in HTML + * or returning as NFT metadata. + * + * `border` is the number of quiet-zone modules to add on each side (the QR + * Code specification recommends at least 4). + */ + function toSvgString(bytes memory qrcode, uint border) + external pure returns (string memory) + { + uint sz = QRCode.getSize(qrcode); + uint total = sz + 2 * border; + + string memory svg = string(abi.encodePacked( + '', + '', + '', + '')); + } + + // Internal helper: convert uint to its decimal string representation. + function _uint2str(uint n) internal pure returns (string memory) { + if (n == 0) return "0"; + uint temp = n; + uint digits = 0; + while (temp != 0) { digits++; temp /= 10; } + bytes memory buf = new bytes(digits); + while (n != 0) { + digits--; + buf[digits] = bytes1(uint8(48 + n % 10)); + n /= 10; + } + return string(buf); + } +} diff --git a/solidity/hardhat.config.js b/solidity/hardhat.config.js new file mode 100644 index 0000000..2d061d5 --- /dev/null +++ b/solidity/hardhat.config.js @@ -0,0 +1,25 @@ +import "@nomicfoundation/hardhat-toolbox"; + +/** @type import('hardhat/config').HardhatUserConfig */ +const config = { + solidity: { + version: "0.8.34", + settings: { + viaIR: true, + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + networks: { + hardhat: { + // QR Code generation requires significant gas. + // blockGasLimit increases the cap for calls; gas is the default per-tx limit. + blockGasLimit: 30_000_000, + allowUnlimitedContractSize: true, + }, + }, +}; + +export default config; diff --git a/solidity/package-lock.json b/solidity/package-lock.json new file mode 100644 index 0000000..2a4f06a --- /dev/null +++ b/solidity/package-lock.json @@ -0,0 +1,8134 @@ +{ + "name": "qrcodegen-solidity", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "qrcodegen-solidity", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "ethers": "^6.16.0", + "hardhat": "^2.28.6", + "solc": "^0.8.34" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", + "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", + "dev": true, + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ethereumjs/util": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz", + "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^5.0.2", + "ethereum-cryptography": "^2.2.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", + "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/properties": "^5.8.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", + "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.8.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", + "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", + "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", + "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", + "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0", + "bech32": "1.1.4", + "ws": "8.18.0" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", + "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", + "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "bn.js": "^5.2.1", + "elliptic": "6.6.1", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", + "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", + "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", + "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/json-wallets": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", + "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nomicfoundation/edr": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.23.tgz", + "integrity": "sha512-F2/6HZh8Q9RsgkOIkRrckldbhPjIZY7d4mT9LYuW68miwGQ5l7CkAgcz9fRRiurA0+YJhtsbx/EyrD9DmX9BOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.23", + "@nomicfoundation/edr-darwin-x64": "0.12.0-next.23", + "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.23", + "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.23", + "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.23", + "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.23", + "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.23" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.23.tgz", + "integrity": "sha512-Amh7mRoDzZyJJ4efqoePqdoZOzharmSOttZuJDlVE5yy07BoE8hL6ZRpa5fNYn0LCqn/KoWs8OHANWxhKDGhvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.23.tgz", + "integrity": "sha512-9wn489FIQm7m0UCD+HhktjWx6vskZzeZD9oDc2k9ZvbBzdXwPp5tiDqUBJ+eQpByAzCDfteAJwRn2lQCE0U+Iw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.23.tgz", + "integrity": "sha512-nlk5EejSzEUfEngv0Jkhqq3/wINIfF2ED9wAofc22w/V1DV99ASh9l3/e/MIHOQFecIZ9MDqt0Em9/oDyB1Uew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.23.tgz", + "integrity": "sha512-SJuPBp3Rc6vM92UtVTUxZQ/QlLhLfwTftt2XUiYohmGKB3RjGzpgduEFMCA0LEnucUckU6UHrJNFHiDm77C4PQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.23.tgz", + "integrity": "sha512-NU+Qs3u7Qt6t3bJFdmmjd5CsvgI2bPPzO31KifM2Ez96/jsXYho5debtTQnimlb5NAqiHTSlxjh/F8ROcptmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.23.tgz", + "integrity": "sha512-F78fZA2h6/ssiCSZOovlgIu0dUeI7ItKPsDDF3UUlIibef052GCXmliMinC90jVPbrjUADMd1BUwjfI0Z8OllQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.23.tgz", + "integrity": "sha512-IfJZQJn7d/YyqhmguBIGoCKjE9dKjbu6V6iNEPApfwf5JyyjHYyyfkLU4rf7hygj57bfH4sl1jtQ6r8HnT62lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.1.2.tgz", + "integrity": "sha512-NlUlde/ycXw2bLzA2gWjjbxQaD9xIRbAF30nsoEprAWzH8dXEI1ILZUKZMyux9n9iygEXTzN0SDVjE6zWDZi9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.1.0", + "chai": "^4.2.0", + "ethers": "^6.14.0", + "hardhat": "^2.26.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ethers": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.3.tgz", + "integrity": "sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.14.0", + "hardhat": "^2.28.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.16.tgz", + "integrity": "sha512-T0JTnuib7QcpsWkHCPLT7Z6F483EjTdcdjb1e00jqS9zTGCPqinPB66LLtR/duDLdvgoiCVS6K8WxTQkA/xR1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nomicfoundation/ignition-core": "^0.15.15", + "@nomicfoundation/ignition-ui": "^0.15.13", + "chalk": "^4.0.0", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "json5": "^2.2.3", + "prompts": "^2.4.2" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-verify": "^2.1.0", + "hardhat": "^2.26.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition-ethers": { + "version": "0.15.17", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.17.tgz", + "integrity": "sha512-io6Wrp1dUsJ94xEI3pw6qkPfhc9TFA+e6/+o16yQ8pvBTFMjgK5x8wIHKrrIHr9L3bkuTMtmDjyN4doqO2IqFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.1.0", + "@nomicfoundation/hardhat-ignition": "^0.15.16", + "@nomicfoundation/ignition-core": "^0.15.15", + "ethers": "^6.14.0", + "hardhat": "^2.26.0" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.1.2.tgz", + "integrity": "sha512-p7HaUVDbLj7ikFivQVNhnfMHUBgiHYMwQWvGn9AriieuopGOELIrwj2KjyM2a6z70zai5YKO264Vwz+3UFJZPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.26.0" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz", + "integrity": "sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-ignition-ethers": "^0.15.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@typechain/ethers-v6": "^0.5.0", + "@typechain/hardhat": "^9.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=18.0.0", + "chai": "^4.2.0", + "ethers": "^6.4.0", + "hardhat": "^2.11.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": ">=8.0.0", + "typechain": "^8.3.0", + "typescript": ">=4.5.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.1.3.tgz", + "integrity": "sha512-danbGjPp2WBhLkJdQy9/ARM3WQIK+7vwzE0urNem1qZJjh9f54Kf5f1xuQv8DvqewUAkuPxVt/7q4Grz5WjqSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "picocolors": "^1.1.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.26.0" + } + }, + "node_modules/@nomicfoundation/ignition-core": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.15.tgz", + "integrity": "sha512-JdKFxYknTfOYtFXMN6iFJ1vALJPednuB+9p9OwGIRdoI6HYSh4ZBzyRURgyXtHFyaJ/SF9lBpsYV9/1zEpcYwg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/address": "5.6.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "cbor": "^9.0.0", + "debug": "^4.3.2", + "ethers": "^6.14.0", + "fs-extra": "^10.0.0", + "immer": "10.0.2", + "lodash": "4.17.21", + "ndjson": "2.0.0" + } + }, + "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "node_modules/@nomicfoundation/ignition-core/node_modules/cbor": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@nomicfoundation/ignition-ui": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.13.tgz", + "integrity": "sha512-HbTszdN1iDHCkUS9hLeooqnLEW2U45FaqFwFEYT8nIno2prFZhG+n68JEERjmfFCB5u0WgbuJwk3CgLoqtSL7Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz", + "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz", + "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz", + "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz", + "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz", + "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz", + "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz", + "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz", + "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" + } + }, + "node_modules/@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@typechain/ethers-v6": "^0.5.1", + "ethers": "^6.1.0", + "hardhat": "^2.9.9", + "typechain": "^8.3.2" + } + }, + "node_modules/@typechain/hardhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/node": { + "version": "25.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.3.tgz", + "integrity": "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/secp256k1": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz", + "integrity": "sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "license": "BSD-3-Clause OR MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/bn.js": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", + "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", + "dev": true, + "license": "WTFPL", + "peer": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cipher-base": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/command-line-usage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/command-line-usage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true, + "peer": true + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/diff": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "peer": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } + } + }, + "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "peer": true + }, + "node_modules/eth-gas-reporter/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", + "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abi": "5.8.0", + "@ethersproject/abstract-provider": "5.8.0", + "@ethersproject/abstract-signer": "5.8.0", + "@ethersproject/address": "5.8.0", + "@ethersproject/base64": "5.8.0", + "@ethersproject/basex": "5.8.0", + "@ethersproject/bignumber": "5.8.0", + "@ethersproject/bytes": "5.8.0", + "@ethersproject/constants": "5.8.0", + "@ethersproject/contracts": "5.8.0", + "@ethersproject/hash": "5.8.0", + "@ethersproject/hdnode": "5.8.0", + "@ethersproject/json-wallets": "5.8.0", + "@ethersproject/keccak256": "5.8.0", + "@ethersproject/logger": "5.8.0", + "@ethersproject/networks": "5.8.0", + "@ethersproject/pbkdf2": "5.8.0", + "@ethersproject/properties": "5.8.0", + "@ethersproject/providers": "5.8.0", + "@ethersproject/random": "5.8.0", + "@ethersproject/rlp": "5.8.0", + "@ethersproject/sha2": "5.8.0", + "@ethersproject/signing-key": "5.8.0", + "@ethersproject/solidity": "5.8.0", + "@ethersproject/strings": "5.8.0", + "@ethersproject/transactions": "5.8.0", + "@ethersproject/units": "5.8.0", + "@ethersproject/wallet": "5.8.0", + "@ethersproject/web": "5.8.0", + "@ethersproject/wordlists": "5.8.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethers": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", + "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" + } + }, + "node_modules/ghost-testrpc/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ghost-testrpc/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ghost-testrpc/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ghost-testrpc/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globby/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hardhat": { + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.28.6.tgz", + "integrity": "sha512-zQze7qe+8ltwHvhX5NQ8sN1N37WWZGw8L63y+2XcPxGwAjc/SMF829z3NS6o1krX0sryhAsVBK/xrwUqlsot4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ethereumjs/util": "^9.1.0", + "@ethersproject/abi": "^5.1.2", + "@nomicfoundation/edr": "0.12.0-next.23", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "boxen": "^5.1.2", + "chokidar": "^4.0.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "find-up": "^5.0.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "json-stream-stringify": "^3.1.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "micro-eth-signer": "^0.14.0", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "picocolors": "^1.1.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.8.26", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.6", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-gas-reporter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", + "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" + } + }, + "node_modules/hardhat/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/hardhat/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/hardhat/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/hardhat/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/hardhat/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat/node_modules/solc": { + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz", + "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solc.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/hardhat/node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/hardhat/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/hardhat/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/hash-base/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hash-base/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hash-base/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/hash-base/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", + "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz", + "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json-stream-stringify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", + "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=7.10.1" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", + "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micro-eth-signer": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", + "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "micro-packed": "~0.7.2" + } + }, + "node_modules/micro-eth-signer/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.2" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/micro-eth-signer/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/micro-packed": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz", + "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ndjson": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", + "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.5", + "readable-stream": "^3.6.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "ndjson": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", + "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true, + "peer": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", + "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ripemd160": "^2.0.3", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.12", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "peer": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/recursive-readdir/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "req-from": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/ripemd160": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sc-istanbul/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sc-istanbul/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/secp256k1": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "peer": true, + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shelljs/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/solc": { + "version": "0.8.34", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.34.tgz", + "integrity": "sha512-qf8HajA1sHhXRV0hMSDXLjVbc4v3Q+SQbL9zok+1WmgVj7Z4oMjMHxaysCzfGtFVqjZdfDDJWyZI+tcx5bO7Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solidity-coverage": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.17.tgz", + "integrity": "sha512-5P8vnB6qVX9tt1MfuONtCTEaEGO/O4WuEidPHIAJjx4sktHHKhO3rFvnE0q8L30nWJPTrcqGQMT7jpE29B2qow==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.20.1", + "chalk": "^2.4.2", + "death": "^1.1.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.21", + "mocha": "^10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" + } + }, + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz", + "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/solidity-coverage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/solidity-coverage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/solidity-coverage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/solidity-coverage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solidity-coverage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "license": "WTFPL OR MIT", + "peer": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", + "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true, + "license": "MIT" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typechain/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/web3-utils": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", + "dev": true, + "license": "LGPL-3.0", + "peer": true, + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/web3-utils/node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/web3-utils/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/solidity/package.json b/solidity/package.json new file mode 100644 index 0000000..6a90409 --- /dev/null +++ b/solidity/package.json @@ -0,0 +1,23 @@ +{ + "name": "qrcodegen-solidity", + "version": "1.0.0", + "description": "QR Code generator library — Solidity port", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "hardhat test", + "compile": "node scripts/compile.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "module", + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "ethers": "^6.16.0", + "hardhat": "^2.28.6", + "solc": "^0.8.34" + } +} diff --git a/solidity/scripts/compile.js b/solidity/scripts/compile.js new file mode 100644 index 0000000..ed3e763 --- /dev/null +++ b/solidity/scripts/compile.js @@ -0,0 +1,62 @@ +#!/usr/bin/env node +/** + * Compile script — uses the bundled solc npm package (no internet required). + * Outputs compiled JSON artifacts to the artifacts/ directory. + * + * Usage: node scripts/compile.js + * or: npm run compile + */ + +import { readFileSync, writeFileSync, mkdirSync } from "fs"; +import { createRequire } from "module"; +import { resolve, dirname } from "path"; +import { fileURLToPath } from "url"; + +const require = createRequire(import.meta.url); +const __dirname = dirname(fileURLToPath(import.meta.url)); +const solc = require("solc"); + +const contractsDir = resolve(__dirname, "../contracts"); +const artifactsDir = resolve(__dirname, "../artifacts"); +mkdirSync(artifactsDir, { recursive: true }); + +const input = { + language: "Solidity", + sources: { + "QRCode.sol": { content: readFileSync(`${contractsDir}/QRCode.sol`, "utf8") }, + "QRCodeDemo.sol": { content: readFileSync(`${contractsDir}/QRCodeDemo.sol`, "utf8") }, + }, + settings: { + viaIR: true, + optimizer: { enabled: true, runs: 200 }, + outputSelection: { + "*": { "*": ["abi", "evm.bytecode.object", "evm.deployedBytecode.object"] }, + }, + }, +}; + +console.log(`Compiling with solc ${solc.version()} …`); +const output = JSON.parse(solc.compile(JSON.stringify(input))); + +let hasError = false; +for (const e of output.errors || []) { + const msg = `[${e.severity.toUpperCase()}] ${e.formattedMessage}`; + if (e.severity === "error") { console.error(msg); hasError = true; } + else { console.warn(msg); } +} +if (hasError) process.exit(1); + +for (const [, contracts] of Object.entries(output.contracts || {})) { + for (const [name, data] of Object.entries(contracts)) { + const artifact = { + contractName: name, + abi: data.abi, + bytecode: "0x" + data.evm.bytecode.object, + deployedBytecode: "0x" + data.evm.deployedBytecode.object, + }; + const outPath = `${artifactsDir}/${name}.json`; + writeFileSync(outPath, JSON.stringify(artifact, null, 2)); + console.log(` ✓ ${name} → artifacts/${name}.json`); + } +} +console.log("Compilation successful."); diff --git a/solidity/test/QRCodeTest.js b/solidity/test/QRCodeTest.js new file mode 100644 index 0000000..dd17fe4 --- /dev/null +++ b/solidity/test/QRCodeTest.js @@ -0,0 +1,227 @@ +/* + * QR Code generator test suite (Solidity) + * + * Deploys QRCodeDemo to a local Hardhat network and validates the output of + * every demo function against known-good values produced by the C reference + * implementation in this repository. + * + * Run with: npx hardhat test + * or: npm test + * + * Gas note: On-chain QR Code generation for small inputs costs 3–9 million gas. + * Auto-mask selection evaluates all 8 mask patterns and can exceed Hardhat's + * default per-transaction gas cap (16 777 216 gas, `FUSAKA_TRANSACTION_GAS_LIMIT` + * in hardhat/src/internal/constants.ts). The fixed-mask demo functions + * (doBasicDemoFixedMask, doNumericDemoFixedMask, etc.) are provided specifically + * to allow byte-exact comparison against the C reference output without triggering + * the 8-pass auto-mask penalty scoring. + * + * The expected byte strings were obtained by compiling and running the C reference + * implementation (c/qrcodegen.c) with identical parameters. + */ + +import { expect } from "chai"; +import hre from "hardhat"; + +// --------------------------------------------------------------------------- +// Utility: read a single module from raw QR Code bytes (JS-side helper) +// --------------------------------------------------------------------------- +function getModule(buf, x, y) { + const size = buf[0]; + if (x < 0 || x >= size || y < 0 || y >= size) return false; + const index = y * size + x; + const byteIdx = (index >> 3) + 1; // +1 because buf[0] is the size + const bitIdx = index & 7; + return ((buf[byteIdx] >> bitIdx) & 1) !== 0; +} + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- +function hexToBytes(hex) { + const h = hex.startsWith("0x") ? hex.slice(2) : hex; + return Buffer.from(h, "hex"); +} + +// --------------------------------------------------------------------------- +// Test suite +// --------------------------------------------------------------------------- +describe("QRCode library", function () { + + let demo; + + before(async function () { + const Demo = await hre.ethers.getContractFactory("QRCodeDemo"); + demo = await Demo.deploy(); + await demo.waitForDeployment(); + }); + + + // ----------------------------------------------------------------------- + // 1. Byte-for-byte comparison against C reference output + // (all use explicit fixed masks to stay within the ~16 M gas cap) + // ----------------------------------------------------------------------- + + it("'Hello, world!' ECC_LOW MASK_2 matches C reference", async function () { + // C: qrcodegen_encodeText("Hello, world!", …, Ecc_LOW, 1, 40, Mask_2, true) + // MASK_AUTO also selects mask 2 for this input (verified with C reference). + const expected = "157fd03f48097675ddaea0db3575839ee05ff50728007dce0733e622dd39535eb3170d01c2c79f3d0baa755d7bb9ab70747d93209af3b79400"; + const qr = await demo.doBasicDemoFixedMask(); + expect(hexToBytes(qr).toString("hex")).to.equal(expected); + }); + + it("50-digit π string ECC_MEDIUM MASK_3 matches C reference", async function () { + // MASK_AUTO also selects mask 3 for this input (verified with C reference). + const expected = "197f41fc83ea0a7611d7eddaa9db254f3748a2e05f557f805c00edcaa4617a999dd9898804a9aaad4452e225bb57d5dcc4bb4fcc2fbf006a23fd7d540aba8ad6a5fbbb6ba668d7eead20c1617fd14e01"; + const qr = await demo.doNumericDemoFixedMask(); + expect(hexToBytes(qr).toString("hex")).to.equal(expected); + }); + + it("version-5 HIGH MASK_2 no-boost matches C reference", async function () { + const expected = "257f6508cf3f68a7ef0b76d55b29dd2e744aa6db45deac748376fdbee05f5555f507a8bfda005ce991fd9c56ef6a79bb0b047f44571c56f6bd2fdcd60729a7e6d607fb4ef64f6d0de054fc70fa2cadfe0049104b434d6803d3564d9e3aa5a6151aa557908cc828520456b6cbd5f0e92f5e4ab1c06ae47eee8f7667cc18ba8e62973892567445bf00e64f32f61fc408d60de234ab085d4516f1b52bb7cf93765dfcded820496061fe874add2601"; + const qr = await demo.doVersionConstraintDemo(); + expect(hexToBytes(qr).toString("hex")).to.equal(expected); + }); + + it("'https://www.nayuki.io/' ECC_HIGH MASK_3 matches C reference", async function () { + const expected = "1d7f90d53fc8bc0b76c951dd2ee7afdb55aa7483a0b0e05f55f507987000cc016961224f2cbe770339c40188488dcbeb3b9591ad9c95ee96c5f9dbcdfbb45bc469d014f35c0b1057f52b9e4cdf015630f65ffc560b229c085d60f7b76b01e175c556c220cab8f5a7c48b00"; + const qr = await demo.doFixedMaskDemo(); + expect(hexToBytes(qr).toString("hex")).to.equal(expected); + }); + + it("binary 'Hello, world!' ECC_MEDIUM MASK_0 matches C reference", async function () { + const expected = "157fd63f680a7669dd2eacdb557583ace05ff507e000550869272153c1fe024274661100b2db1f4c0f62045dbda88bb77565d42086f4d78801"; + const qr = await demo.doBinaryDemoFixedMask(); + expect(hexToBytes(qr).toString("hex")).to.equal(expected); + }); + + it("mixed alphanumeric+numeric segment ECC_LOW MASK_0 matches C reference", async function () { + const expected = "1d7fc4cd3f68280b76e104dd2ea0acdb75d87583809de05f55f507b0a00055e00849c1cc499d5da07ccf6115830593916751f86e70bc0e548c7038efad85dd322d311707051055dd499ec7645f012e2cca1fc9d50fc29c285d15f4ad8bb19d75955ede202034fe37173401"; + const qr = await demo.doSegmentDemoFixedMask(); + expect(hexToBytes(qr).toString("hex")).to.equal(expected); + }); + + it("ECI(26)+UTF-8 bytes ECC_MEDIUM MASK_0 matches C reference", async function () { + const expected = "157fc93f88097609ddaea3db657583ace05ff507c000742df291a763e1e7504154374201c6df1fe30eaaf15d53a48bfb748dc720ccfa07ea01"; + const qr = await demo.doEciDemoFixedMask(); + expect(hexToBytes(qr).toString("hex")).to.equal(expected); + }); + + + // ----------------------------------------------------------------------- + // 2. Size / structural invariants for fixed-mask functions + // ----------------------------------------------------------------------- + + it("doBasicDemoFixedMask: size is 21 modules (version 1)", async function () { + const qr = await demo.doBasicDemoFixedMask(); + const size = hexToBytes(qr)[0]; + expect(size).to.equal(21); + }); + + it("doNumericDemoFixedMask: size is 25 modules (version 2)", async function () { + const qr = await demo.doNumericDemoFixedMask(); + const size = hexToBytes(qr)[0]; + expect(size).to.equal(25); + }); + + it("doVersionConstraintDemo: size is 37 modules (version 5)", async function () { + const qr = await demo.doVersionConstraintDemo(); + const size = hexToBytes(qr)[0]; + expect(size).to.equal(37); + }); + + it("doFixedMaskDemo: size is 29 modules (version 3)", async function () { + const qr = await demo.doFixedMaskDemo(); + const size = hexToBytes(qr)[0]; + expect(size).to.equal(29); + }); + + it("doSegmentDemoFixedMask: size is 29 modules (version 3)", async function () { + const qr = await demo.doSegmentDemoFixedMask(); + const size = hexToBytes(qr)[0]; + expect(size).to.equal(29); + }); + + it("doEciDemoFixedMask: size is 21 modules (version 1)", async function () { + const qr = await demo.doEciDemoFixedMask(); + const size = hexToBytes(qr)[0]; + expect(size).to.equal(21); + }); + + + // ----------------------------------------------------------------------- + // 3. Buffer-length invariant: length == 1 + ceil(size² / 8) + // ----------------------------------------------------------------------- + + const lengthCheckCases = [ + ["doBasicDemoFixedMask", (d) => d.doBasicDemoFixedMask()], + ["doNumericDemoFixedMask", (d) => d.doNumericDemoFixedMask()], + ["doVersionConstraintDemo", (d) => d.doVersionConstraintDemo()], + ["doFixedMaskDemo", (d) => d.doFixedMaskDemo()], + ["doSegmentDemoFixedMask", (d) => d.doSegmentDemoFixedMask()], + ["doEciDemoFixedMask", (d) => d.doEciDemoFixedMask()], + ]; + + for (const [name, fn] of lengthCheckCases) { + it(`${name}: buffer length equals 1 + ceil(size² / 8)`, async function () { + const qr = await fn(demo); + const buf = hexToBytes(qr); + const size = buf[0]; + const expected = 1 + Math.ceil(size * size / 8); + expect(buf.length).to.equal(expected); + }); + } + + + // ----------------------------------------------------------------------- + // 4. Finder-pattern module checks (version 1, top-left corner) + // ----------------------------------------------------------------------- + + it("finder pattern: outer corners dark, separator ring light, centre dark", async function () { + const qr = await demo.doBasicDemoFixedMask(); + const buf = hexToBytes(qr); + + // Top-left finder outer corners must be dark + expect(getModule(buf, 0, 0)).to.be.true; + expect(getModule(buf, 6, 0)).to.be.true; + expect(getModule(buf, 0, 6)).to.be.true; + expect(getModule(buf, 6, 6)).to.be.true; + + // Inner dark 3×3 centre + expect(getModule(buf, 3, 3)).to.be.true; + + // Separator ring (Chebyshev distance 2 from centre (3,3)) must be light + expect(getModule(buf, 1, 1)).to.be.false; + expect(getModule(buf, 5, 1)).to.be.false; + expect(getModule(buf, 1, 5)).to.be.false; + expect(getModule(buf, 5, 5)).to.be.false; + }); + + + // ----------------------------------------------------------------------- + // 5. Determinism: calling the same function twice gives the same output + // ----------------------------------------------------------------------- + + it("encodeText is deterministic", async function () { + const qr1 = await demo.doBasicDemoFixedMask(); + const qr2 = await demo.doBasicDemoFixedMask(); + expect(qr1).to.equal(qr2); + }); + + + // ----------------------------------------------------------------------- + // 6. SVG output + // ----------------------------------------------------------------------- + + it("toSvgString returns well-formed SVG", async function () { + const qr = await demo.doBasicDemoFixedMask(); + const svg = await demo.toSvgString(qr, 4); + expect(svg).to.include(''); + expect(svg).to.include('fill="#000000"'); + expect(svg).to.include('fill="#FFFFFF"'); + // viewBox = size + 2*border = 21 + 8 = 29 + expect(svg).to.include('viewBox="0 0 29 29"'); + }); + +});